From: Chris Duncan Date: Fri, 29 Nov 2024 10:20:00 +0000 (-0800) Subject: Start adding typings to nano-nacl. X-Git-Url: https://zoso.dev/?a=commitdiff_plain;h=b8070be5ed1cee3d1086928501579ebd22a02b40;p=libnemo.git Start adding typings to nano-nacl. --- diff --git a/src/lib/workers/nano-nacl.ts b/src/lib/workers/nano-nacl.ts index fa6abcf..c0571eb 100644 --- a/src/lib/workers/nano-nacl.ts +++ b/src/lib/workers/nano-nacl.ts @@ -1,6 +1,5 @@ // SPDX-FileCopyrightText: 2024 Chris Duncan // SPDX-License-Identifier: GPL-3.0-or-later -//@ts-nocheck 'use strict'; @@ -34,7 +33,7 @@ var gf = function(init?: any) { }; // Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; +var randombytes = function(x, n) { throw new Error('no PRNG'); }; var gf0 = gf(), gf1 = gf([1]), @@ -605,7 +604,7 @@ function scalarbase(p, s) { scalarmult(p, q, s); } -function crypto_sign_keypair (pk, sk, seeded?) { +function crypto_sign_keypair (pk, sk, seeded?: boolean) { var d = new Uint8Array(64); var p = [gf(), gf(), gf(), gf()]; var i; @@ -768,18 +767,18 @@ var crypto_sign_BYTES = 64, /* High-level API */ -function checkArrayTypes() { - for (var i = 0; i < arguments.length; i++) { - if (!(arguments[i] instanceof Uint8Array)) - throw new TypeError('unexpected type, use Uint8Array'); +function checkArrayTypes (...args: Uint8Array[]) { + for (var i = 0; i < args.length; i++) { + if (!(args[i] instanceof Uint8Array)) + throw new TypeError(`expected Uint8Array; received ${args[i].constructor?.name ?? typeof args[i]}`); } } -function cleanup(arr) { +function cleanup(arr: Uint8Array | any[]) { for (var i = 0; i < arr.length; i++) arr[i] = 0; } -const sign = function(msg, secretKey) { + const sign = function (msg: Uint8Array, secretKey: Uint8Array) { checkArrayTypes(msg, secretKey); if (secretKey.length !== crypto_sign_SECRETKEYBYTES) throw new Error('bad secret key size'); @@ -788,7 +787,7 @@ const sign = function(msg, secretKey) { return signedMsg; }; -const open = function(signedMsg, publicKey) { +const open = function(signedMsg: Uint8Array, publicKey: Uint8Array) { checkArrayTypes(signedMsg, publicKey); if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) throw new Error('bad public key size'); @@ -800,14 +799,14 @@ const open = function(signedMsg, publicKey) { return m; }; -const detached = function(msg, secretKey) { +const detached = function (msg: Uint8Array, secretKey: Uint8Array) { var signedMsg = sign(msg, secretKey); var sig = new Uint8Array(crypto_sign_BYTES); for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; return sig; }; -const verify = function(msg, sig, publicKey) { +const verify = function(msg: Uint8Array, sig: Uint8Array, publicKey: Uint8Array) { checkArrayTypes(msg, sig, publicKey); if (sig.length !== crypto_sign_BYTES) throw new Error('bad signature size'); @@ -829,7 +828,7 @@ const keyPair = { return {publicKey: pk, secretKey: sk}; }, - fromSecretKey(secretKey) { + fromSecretKey(secretKey: Uint8Array) { checkArrayTypes(secretKey); if (secretKey.length !== crypto_sign_SECRETKEYBYTES) throw new Error('bad secret key size'); @@ -838,7 +837,7 @@ const keyPair = { return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; }, - fromSeed (seed) { + fromSeed (seed: Uint8Array) { checkArrayTypes(seed); if (seed.length !== crypto_sign_SEEDBYTES) throw new Error('bad seed size'); @@ -862,7 +861,7 @@ const setPRNG = function(fn) { (function() { // Initialize PRNG if environment provides CSPRNG. // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + var crypto = self?.crypto ?? null; if (crypto && crypto.getRandomValues) { // Browsers. var QUOTA = 65536;