import nacl from './build/nano-nacl.wasm'
type Derive = (k0: bigint, k1: bigint, k2: bigint, k3: bigint) => Uint8Array
type Sign = (h0: bigint, h1: bigint, h2: bigint, h3: bigint, k0: bigint, k1: bigint, k2: bigint, k3: bigint) => Uint8Array
-type Verify = (h0: bigint, h1: bigint, h2: bigint, h3: bigint, s0: bigint, s1: bigint, s2: bigint, s3: bigint, k0: bigint, k1: bigint, k2: bigint, k3: bigint) => boolean
+type Verify = (h0: bigint, h1: bigint, h2: bigint, h3: bigint, s0: bigint, s1: bigint, s2: bigint, s3: bigint, s4: bigint, s5: bigint, s6: bigint, s7: bigint, k0: bigint, k1: bigint, k2: bigint, k3: bigint) => boolean
type Data = {
action: string
hash?: string
console.error('Wasm abort:', `msg ${msg}`, `file ${file}`, `row ${row}`, `col ${col}`)
throw new Error(`Wasm abort: ${msg}`)
},
- trace: (message: any, n: any, a0: any, a1: any, a2: any, a3: any, a4: any) => {
+ trace: (message: any, n?: number, a0?: number, a1?: number, a2?: number, a3?: number, a4?: number) => {
// ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void
message = __liftString(message >>> 0);
(() => {
return string + String.fromCharCode(...memoryU16.subarray(start, end))
}
- //@ts-ignore
- let __dataview = new DataView(memory.buffer)
- function __getU32 (pointer: number) {
- try {
- return __dataview.getUint32(pointer, true)
- } catch {
- //@ts-ignore
- __dataview = new DataView(memory.buffer)
- return __dataview.getUint32(pointer, true)
- }
- }
function __liftTypedArray (pointer: number) {
if (!pointer) throw new Error('bad pointer')
- return new Uint8Array(
- //@ts-ignore
- memory.buffer,
- __getU32(pointer + 4),
- __dataview.getUint32(pointer + 8, true) / Uint8Array.BYTES_PER_ELEMENT
- ).slice()
+ const membuf = new DataView(memory.buffer)
+ const offset = membuf.getUint32(pointer + 4, true)
+ const length = membuf.getUint32(pointer + 8, true)
+ return new Uint8Array(memory.buffer, offset, length).slice()
}
+
+ derive = function (k0, k1, k2, k3) {
+ // assembly/nano-nacl/derive(u64, u64, u64, u64) => ~lib/typedarray/Uint8Array
+ k0 = k0 || 0n
+ k1 = k1 || 0n
+ k2 = k2 || 0n
+ k3 = k3 || 0n
+ return __liftTypedArray(exports.derive(k0, k1, k2, k3) >>> 0)
+ }
+
sign = function (h0, h1, h2, h3, k0, k1, k2, k3) {
// assembly/nano-nacl/sign(u64, u64, u64, u64, u64, u64, u64, u64) => ~lib/typedarray/Uint8Array
h0 = h0 || 0n
k2 = k2 || 0n
k3 = k3 || 0n
return __liftTypedArray(exports.sign(h0, h1, h2, h3, k0, k1, k2, k3) >>> 0)
- },
- isReady = true
+ }
+
+ isReady = true
} catch (err) {
throw new Error('Error instantiating WebAssembly', { cause: err })
}
const u64 = signature.slice(i, i + 16)
signatureView.setBigUint64(i / 2, BigInt(`0x${u64}`))
}
- const isVerified = verify(hashArray[0], hashArray[1], hashArray[2], hashArray[3], privateKeyArray[0], privateKeyArray[1], privateKeyArray[2], privateKeyArray[3], signatureArray[0], signatureArray[1], signatureArray[2], signatureArray[3])
+ const isVerified = verify(hashArray[0], hashArray[1], hashArray[2], hashArray[3], signatureArray[0], signatureArray[1], signatureArray[2], signatureArray[3], signatureArray[4], signatureArray[5], signatureArray[6], signatureArray[7], publicKeyArray[0], publicKeyArray[1], publicKeyArray[2], publicKeyArray[3])
if (isVerified == null) {
throw new TypeError('Invalid verification response from WASM')
}