@solana/webcrypto-ed25519-polyfill 3.0.0 → 4.0.0-canary-20250903000115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../crypto-impl/src/index.node.ts","../../../node_modules/.pnpm/@noble+ed25519@2.3.0/node_modules/@noble/ed25519/index.js","../src/secrets.ts","../src/install.ts"],"names":["index_node_default","crypto","C","G","P","_"],"mappings":"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","file":"index.node.cjs","sourcesContent":["// When building the browser bundle, this import gets replaced by `globalThis.crypto`.\nimport crypto from 'node:crypto';\n\nexport default crypto;\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 4KB JS implementation of ed25519 EdDSA signatures.\n * Compliant with RFC8032, FIPS 186-5 & ZIP215.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const privKey = ed.utils.randomPrivateKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(privKey); // Sync methods are also present\n const signature = await ed.signAsync(message, privKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. ed25519 is twisted edwards curve. Equation is −x² + y² = -a + dx²y².\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // group order, amount of curve points\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n */\nconst ed25519_CURVE = {\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n};\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d } = ed25519_CURVE;\nconst h = 8n; // cofactor\nconst L = 32; // field / group byte length\nconst L2 = 64;\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\n// error helper, messes-up stack trace\nconst err = (m = '') => {\n throw new Error(m);\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\nconst isBytes = (a) => a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n/** assert is Uint8Array (of specific length) */\nconst abytes = (a, l) => !isBytes(a) || (typeof l === 'number' && l > 0 && a.length !== l)\n ? err('Uint8Array expected')\n : a;\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\nconst u8fr = (buf) => Uint8Array.from(buf);\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\n/** normalize hex or ui8a to ui8a */\nconst toU8 = (a, len) => abytes(isStr(a) ? hexToBytes(a) : u8fr(abytes(a)), len);\nconst cr = () => globalThis?.crypto; // WebCrypto is available in all modern environments\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + abytes(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Will throw when not available. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\nconst arange = (n, min, max, msg = 'bad number: out of range') => isBig(n) && min <= n && n < max ? n : err(msg);\n/** modular division */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\nconst modN = (a) => M(a, N);\n/** Modular inversion using eucledian GCD (non-CT). No negative exponent for now. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst callHash = (name) => {\n // @ts-ignore\n const fn = etc[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\nconst B256 = 2n ** 256n;\n/** Point in XYZT extended coordinates. */\nclass Point {\n static BASE;\n static ZERO;\n ex;\n ey;\n ez;\n et;\n constructor(ex, ey, ez, et) {\n const max = B256;\n this.ex = arange(ex, 0n, max);\n this.ey = arange(ey, 0n, max);\n this.ez = arange(ez, 1n, max);\n this.et = arange(et, 0n, max);\n Object.freeze(this);\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, M(p.x * p.y));\n }\n /** RFC8032 5.1.3: Uint8Array to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumLE(normed);\n // zip215=true: 0 <= y < 2^256\n // zip215=false, RFC8032: 0 <= y < 2^255-19\n const max = zip215 ? B256 : P;\n arange(y, 0n, max);\n const y2 = M(y * y); // y²\n const u = M(y2 - 1n); // u=y²-1\n const v = M(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, M(x * y)); // Z=1, T=xy\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n if (p.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = p;\n const X2 = M(X * X); // X²\n const Y2 = M(Y * Y); // Y²\n const Z2 = M(Z * Z); // Z²\n const Z4 = M(Z2 * Z2); // Z⁴\n const aX2 = M(X2 * a); // aX²\n const left = M(Z2 * M(aX2 + Y2)); // (aX² + Y²)Z²\n const right = M(Z4 + M(d * M(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = M(X * Y);\n const ZT = M(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = apoint(other); // checks class equality\n const X1Z2 = M(X1 * Z2);\n const X2Z1 = M(X2 * Z1);\n const Y1Z2 = M(Y1 * Z2);\n const Y2Z1 = M(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.ex), this.ey, this.ez, M(-this.et));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = M(X1 * X1);\n const B = M(Y1 * Y1);\n const C = M(2n * M(Z1 * Z1));\n const D = M(a * A);\n const x1y1 = X1 + Y1;\n const E = M(M(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = M(X1 * X2);\n const B = M(Y1 * Y2);\n const C = M(T1 * d * T2);\n const D = M(Z1 * Z2);\n const E = M((X1 + Y1) * (X2 + Y2) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - a * A);\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /**\n * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n scalar by which point is multiplied\n * @param safe safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n if (!safe && (n === 0n || this.is0()))\n return I;\n arange(n, 1n, N);\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */\n toAffine() {\n const { ex: x, ey: y, ez: z } = this;\n // fast-paths for ZERO point OR Z=1\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (M(z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n return { x: M(x * iz), y: M(y * iz) };\n }\n toBytes() {\n const { x, y } = this.assertValidity().toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n } // encode to hex string\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // multiply by big number CURVE.n\n let p = this.multiply(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(toU8(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n toRawBytes() {\n return this.toBytes();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(arange(num, 0n, B256), L2)).reverse();\nconst bytesToNumLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // √-1\n// for sqrt comp\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = M(v * v * v); // v³\n const v7 = M(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = M(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = M(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = M(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// N == L, just weird naming\nconst modL_LE = (hash) => modN(bytesToNumLE(hash)); // modulo L; but little-endian\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => callHash('sha512Sync')(...m);\n// RFC8032 5.1.5\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const head = hashed.slice(0, L);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(L, L2); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, L)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, L)));\n/** Creates 32-byte ed25519 public key from 32-byte private key. Async. */\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then((p) => p.pointBytes);\n/** Creates 32-byte ed25519 public key from 32-byte private key. To use, set `etc.sha512Sync` first. */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\nconst _sign = (e, rBytes, msg) => {\n // sign() shared code\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), L2); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message (NOT message hash) using private key. Async.\n * Follows RFC8032 5.1.6.\n */\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg);\n const e = await getExtendedPublicKeyAsync(privKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message (NOT message hash) using private key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n */\nconst sign = (msg, privKey) => {\n const m = toU8(msg);\n const e = getExtendedPublicKey(privKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst veriOpts = { zip215: true };\nconst _verify = (sig, msg, pub, opts = veriOpts) => {\n sig = toU8(sig, L2); // Signature hex str/Bytes, must be 64 bytes\n msg = toU8(msg); // Message hex str/Bytes\n pub = toU8(pub, L);\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A;\n let R;\n let s;\n let SB;\n let hashable = Uint8Array.of();\n try {\n A = Point.fromHex(pub, zip215); // public key A decoded\n R = Point.fromHex(sig.slice(0, L), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = bytesToNumLE(sig.slice(L, L2)); // Decode second half as an integer S\n SB = G.multiply(s, false); // in the range 0 <= s < L\n hashable = concatBytes(R.toBytes(), A.toBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.multiply(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n/** Verifies signature on message and public key. Async. Follows RFC8032 5.1.7. */\nconst verifyAsync = async (s, m, p, opts = veriOpts) => hashFinishA(_verify(s, m, p, opts));\n/** Verifies signature on message and public key. To use, set `hashes.sha512` first. Follows RFC8032 5.1.7. */\nconst verify = (s, m, p, opts = veriOpts) => hashFinishS(_verify(s, m, p, opts));\n/** Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves. */\nconst etc = {\n sha512Async: async (...messages) => {\n const s = subtle();\n const m = concatBytes(...messages);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined,\n bytesToHex: bytesToHex,\n hexToBytes: hexToBytes,\n concatBytes: concatBytes,\n mod: M,\n invert: invert,\n randomBytes: randomBytes,\n};\n/** ed25519-specific key utilities. */\nconst utils = {\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomPrivateKey: () => randomBytes(L),\n precompute: (w = 8, p = G) => {\n p.multiply(3n);\n w;\n return p;\n }, // no-op\n};\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // precomputes for base point G\n// const-time negate\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { ed25519_CURVE as CURVE, etc, Point as ExtendedPoint, getPublicKey, getPublicKeyAsync, Point, sign, signAsync, utils, verify, verifyAsync, };\n","/**\n * HEY! <== SECRET KEY KOALA\n * |/ <== WOULD LIKE YOUR\n * ʕ·͡ᴥ·ʔ <== ATTENTION PLEASE\n *\n * Key material generated in this module must stay in this module. So long as the secrets cache and\n * the methods that interact with it are not exported from `@solana/webcrypto-ed25519-polyfill`,\n * accidental logging of the actual bytes of a secret key (eg. to the console, or to a remote\n * server) should not be possible.\n *\n * WARNING: This does not imply that the secrets cache is secure against supply-chain attacks.\n * Untrusted code in your JavaScript context can easily override `WeakMap.prototype.set` to steal\n * private keys as they are written to the cache, without alerting you to its presence or affecting\n * the regular operation of the cache.\n */\nimport { getPublicKeyAsync, signAsync, utils, verifyAsync } from '@noble/ed25519';\n\nconst PROHIBITED_KEY_USAGES = new Set<KeyUsage>([\n 'decrypt',\n 'deriveBits',\n 'deriveKey',\n 'encrypt',\n 'unwrapKey',\n 'wrapKey',\n]);\n\nconst ED25519_PKCS8_HEADER =\n // prettier-ignore\n [\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n ];\n\nfunction bufferSourceToUint8Array(data: BufferSource): Uint8Array {\n return data instanceof Uint8Array ? data : new Uint8Array(ArrayBuffer.isView(data) ? data.buffer : data);\n}\n\nlet storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT: WeakMap<CryptoKey, Uint8Array> | undefined;\n\n// Map of public key bytes. These are the result of calling `getPublicKey`\nlet publicKeyBytesStore: WeakMap<CryptoKey, Uint8Array> | undefined;\n\nfunction createKeyPairFromBytes(\n bytes: Uint8Array,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n const keyPair = createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(extractable, keyUsages);\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(keyPair.privateKey, bytes);\n cache.set(keyPair.publicKey, bytes);\n return keyPair;\n}\n\nfunction createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n if (keyUsages.length === 0) {\n throw new DOMException('Usages cannot be empty when creating a key.', 'SyntaxError');\n }\n if (keyUsages.some(usage => PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for an Ed25519 key.', 'SyntaxError');\n }\n const base = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n };\n const privateKey = {\n ...base,\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n const publicKey = {\n ...base,\n extractable: true,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n return Object.freeze({\n privateKey: Object.freeze(privateKey),\n publicKey: Object.freeze(publicKey),\n });\n}\n\nfunction getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key: CryptoKey): Uint8Array {\n const secretKeyBytes = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.get(key);\n if (secretKeyBytes === undefined) {\n throw new Error('Could not find secret key material associated with this `CryptoKey`');\n }\n return secretKeyBytes;\n}\n\nasync function getPublicKeyBytes(key: CryptoKey): Promise<Uint8Array> {\n // Try to find the key in the public key store first\n const publicKeyStore = (publicKeyBytesStore ||= new WeakMap());\n const fromPublicStore = publicKeyStore.get(key);\n if (fromPublicStore) return fromPublicStore;\n\n // If not available, get the key from the secrets store instead\n const publicKeyBytes = await getPublicKeyAsync(getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key));\n\n // Store the public key bytes in the public key store for next time\n publicKeyStore.set(key, publicKeyBytes);\n return publicKeyBytes;\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n return btoa(Array.from(bytes, b => String.fromCharCode(b)).join(''))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\n\nfunction base64UrlDecode(value: string): Uint8Array {\n const m = value.length % 4;\n const base64Value = value\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n .padEnd(value.length + (m === 0 ? 0 : 4 - m), '=');\n return Uint8Array.from(atob(base64Value), c => c.charCodeAt(0));\n}\n\nexport async function exportKeyPolyfill(format: 'jwk', key: CryptoKey): Promise<JsonWebKey>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n if (key.extractable === false) {\n throw new DOMException('key is not extractable', 'InvalidAccessException');\n }\n switch (format) {\n case 'raw': {\n if (key.type !== 'public') {\n throw new DOMException(`Unable to export a raw Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n return publicKeyBytes;\n }\n case 'pkcs8': {\n if (key.type !== 'private') {\n throw new DOMException(`Unable to export a pkcs8 Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);\n }\n case 'jwk': {\n const publicKeyBytes = await getPublicKeyBytes(key);\n const base = {\n crv /* curve */: 'Ed25519',\n ext /* extractable */: key.extractable,\n key_ops /* key operations */: key.usages,\n kty /* key type */: 'OKP' /* octet key pair */,\n x /* public key x-coordinate (base64-URL encoded) */: base64UrlEncode(publicKeyBytes),\n };\n if (key.type === 'private') {\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return Object.freeze({\n ...base,\n d /* private key (base64-URL encoded) */: base64UrlEncode(secretKeyBytes),\n });\n }\n return Object.freeze({ ...base });\n }\n default:\n throw new Error(`Exporting polyfilled Ed25519 keys in the \"${format}\" format is unimplemented`);\n }\n}\n\n/**\n * This function generates a key pair and stores the secret bytes associated with it in a\n * module-private cache. Instead of vending the actual secret bytes, it returns a `CryptoKeyPair`\n * that you can use with other methods in this package to produce signatures and derive public keys\n * associated with the secret.\n */\nexport function generateKeyPolyfill(extractable: boolean, keyUsages: readonly KeyUsage[]): CryptoKeyPair {\n const privateKeyBytes = utils.randomPrivateKey();\n const keyPair = createKeyPairFromBytes(privateKeyBytes, extractable, keyUsages);\n return keyPair;\n}\n\nexport function isPolyfilledKey(key: CryptoKey): boolean {\n return !!storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.has(key) || !!publicKeyBytesStore?.has(key);\n}\n\nexport async function signPolyfill(key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n if (key.type !== 'private' || !key.usages.includes('sign')) {\n throw new DOMException('Unable to use this key to sign', 'InvalidAccessError');\n }\n const privateKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n const payload = bufferSourceToUint8Array(data);\n const signature = await signAsync(payload, privateKeyBytes);\n return signature;\n}\n\nexport async function verifyPolyfill(key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean> {\n if (key.type !== 'public' || !key.usages.includes('verify')) {\n throw new DOMException('Unable to use this key to verify', 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n try {\n return await verifyAsync(bufferSourceToUint8Array(signature), bufferSourceToUint8Array(data), publicKeyBytes);\n } catch {\n return false;\n }\n}\n\nfunction assertValidKeyUsages(keyUsages: readonly KeyUsage[], type: 'private' | 'public') {\n const prohibitedKeyUses = new Set<KeyUsage>([\n ...((type === 'private' ? ['verify'] : ['sign']) as KeyUsage[]),\n ...PROHIBITED_KEY_USAGES,\n ]);\n if (keyUsages.some(usage => prohibitedKeyUses.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n}\n\nexport function importKeyPolyfill(\n format: 'jwk',\n keyData: JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: Exclude<KeyFormat, 'jwk'>,\n keyData: BufferSource,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: KeyFormat,\n keyData: BufferSource | JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey {\n if (format === 'raw') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'public');\n if (bytes.length !== 32) {\n throw new DOMException('Ed25519 raw keys must be exactly 32-bytes', 'DataError');\n }\n const publicKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(publicKey, bytes);\n\n return publicKey;\n }\n\n if (format === 'pkcs8') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'private');\n // 48 bytes: 16-byte PKCS8 header + 32 byte secret key\n if (bytes.length !== 48) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n // Must start with exactly the Ed25519 pkcs8 header\n const header = bytes.slice(0, 16);\n if (!header.every((val, i) => val === ED25519_PKCS8_HEADER[i])) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n const secretKeyBytes = bytes.slice(16);\n\n const privateKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(privateKey, secretKeyBytes);\n\n return privateKey;\n }\n\n if (format === 'jwk') {\n const jwk = keyData as JsonWebKey;\n const type = 'd' in jwk ? 'private' : 'public';\n assertValidKeyUsages(keyUsages, type);\n const keyOps = new Set(jwk.key_ops ?? []);\n const sameKeyUsages = keyUsages.length === keyOps.size && [...keyUsages].every(x => keyOps.has(x));\n if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519' || jwk.ext !== extractable || !sameKeyUsages) {\n throw new DOMException('Invalid Ed25519 JWK', 'DataError');\n }\n if (type === 'public' && !jwk.x) {\n throw new DOMException('Ed25519 JWK is missing public key coordinates', 'DataError');\n }\n if (type === 'private' && !jwk.d) {\n throw new DOMException('Ed25519 JWK is missing private key coordinates', 'DataError');\n }\n const usageToKeep = type === 'public' ? 'verify' : 'sign';\n const key = Object.freeze({\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type,\n usages: Object.freeze(keyUsages.filter(usage => usage === usageToKeep)) as KeyUsage[],\n }) as CryptoKey;\n\n if (type === 'public') {\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.x!));\n } else {\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.d!));\n }\n\n return key;\n }\n\n throw new Error(`Importing Ed25519 keys in the \"${format}\" format is unimplemented`);\n}\n","import cryptoImpl from '@solana/crypto-impl';\n\nimport {\n exportKeyPolyfill,\n generateKeyPolyfill,\n importKeyPolyfill,\n isPolyfilledKey,\n signPolyfill,\n verifyPolyfill,\n} from './secrets';\n\nfunction isAlgorithmEd25519(putativeEd25519Algorithm: AlgorithmIdentifier): boolean {\n const name =\n typeof putativeEd25519Algorithm === 'string' ? putativeEd25519Algorithm : putativeEd25519Algorithm.name;\n return name.localeCompare('Ed25519', 'en-US', { sensitivity: 'base' }) === 0;\n}\n\n/**\n * Polyfills methods on `globalThis.SubtleCrypto` to add support for the Ed25519 algorithm.\n *\n * @example\n * ```ts\n * import { install } from '@solana/webcrypto-ed25519-polyfill';\n *\n * // Calling this will shim methods on `SubtleCrypto`, adding Ed25519 support.\n * install();\n *\n * // Now you can do this, in environments that do not otherwise support Ed25519.\n * const keyPair = await crypto.subtle.generateKey({ name: 'Ed25519' }, false, ['sign']);\n * const publicKeyBytes = await crypto.subtle.exportKey('raw', keyPair.publicKey);\n * const data = new Uint8Array([1, 2, 3]);\n * const signature = await crypto.subtle.sign({ name: 'Ed25519' }, keyPair.privateKey, data);\n * if (await crypto.subtle.verify({ name: 'Ed25519' }, keyPair.publicKey, signature, data)) {\n * console.log('Data was signed using the private key associated with this public key');\n * } else {\n * throw new Error('Signature verification error');\n * }\n * ```\n */\nexport function install() {\n if (__NODEJS__) {\n /**\n * Node only sets the `crypto` global variable when run with `--experimental-global-webcrypto`.\n * Let's set it unconditionally here.\n */\n globalThis.crypto ||= cryptoImpl;\n }\n\n if (!__BROWSER__ || globalThis.isSecureContext) {\n /**\n * Create `crypto.subtle` if it doesn't exist.\n */\n const originalCryptoObject = (globalThis.crypto ||= {} as Crypto);\n const originalSubtleCrypto = ((originalCryptoObject as Crypto & { subtle: SubtleCrypto }).subtle ||=\n {} as SubtleCrypto);\n\n /**\n * Override `SubtleCrypto#exportKey`\n */\n const originalExportKey = originalSubtleCrypto.exportKey as SubtleCrypto['exportKey'] | undefined;\n originalSubtleCrypto.exportKey = (async (...args: Parameters<SubtleCrypto['exportKey']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n return await exportKeyPolyfill(...args);\n } else if (originalExportKey) {\n return await originalExportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `exportKey` function exists to handle this call');\n }\n }) as SubtleCrypto['exportKey'];\n\n /**\n * Override `SubtleCrypto#generateKey`\n */\n const originalGenerateKey = originalSubtleCrypto.generateKey as SubtleCrypto['generateKey'] | undefined;\n let originalGenerateKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.generateKey = (async (...args: Parameters<SubtleCrypto['generateKey']>) => {\n const [algorithm] = args;\n if (!isAlgorithmEd25519(algorithm)) {\n if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n }\n let optimisticallyGeneratedKeyPair;\n if (originalGenerateKeySupportsEd25519 === undefined) {\n originalGenerateKeySupportsEd25519 = new Promise(resolve => {\n if (!originalGenerateKey) {\n resolve((originalGenerateKeySupportsEd25519 = false));\n return;\n }\n originalGenerateKey\n .apply(originalSubtleCrypto, args)\n .then(keyPair => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was installed in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider installing this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.generateKey !== originalGenerateKey) {\n originalSubtleCrypto.generateKey = originalGenerateKey;\n }\n optimisticallyGeneratedKeyPair = keyPair;\n resolve((originalGenerateKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalGenerateKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalGenerateKeySupportsEd25519 === 'boolean'\n ? originalGenerateKeySupportsEd25519\n : await originalGenerateKeySupportsEd25519\n ) {\n if (optimisticallyGeneratedKeyPair) {\n return optimisticallyGeneratedKeyPair;\n } else if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n } else {\n const [_, extractable, keyUsages] = args;\n return generateKeyPolyfill(extractable, keyUsages);\n }\n }) as SubtleCrypto['generateKey'];\n\n /**\n * Override `SubtleCrypto#sign`\n */\n const originalSign = originalSubtleCrypto.sign as SubtleCrypto['sign'] | undefined;\n originalSubtleCrypto.sign = (async (...args: Parameters<SubtleCrypto['sign']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await signPolyfill(...rest);\n } else if (originalSign) {\n return await originalSign.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `sign` function exists to handle this call');\n }\n }) as SubtleCrypto['sign'];\n\n /**\n * Override `SubtleCrypto#verify`\n */\n const originalVerify = originalSubtleCrypto.verify as SubtleCrypto['verify'] | undefined;\n originalSubtleCrypto.verify = (async (...args: Parameters<SubtleCrypto['verify']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await verifyPolyfill(...rest);\n } else if (originalVerify) {\n return await originalVerify.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `verify` function exists to handle this call');\n }\n }) as SubtleCrypto['verify'];\n\n /**\n * Override `SubtleCrypto#importKey`\n */\n const originalImportKey = originalSubtleCrypto.importKey as SubtleCrypto['importKey'] | undefined;\n let originalImportKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.importKey = (async (...args: Parameters<SubtleCrypto['importKey']>) => {\n const [format, keyData, algorithm] = args;\n if (!isAlgorithmEd25519(algorithm)) {\n if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n }\n let optimisticallyImportedKey;\n if (originalImportKeySupportsEd25519 === undefined) {\n originalImportKeySupportsEd25519 = new Promise(resolve => {\n if (!originalImportKey) {\n resolve((originalImportKeySupportsEd25519 = false));\n return;\n }\n originalImportKey\n .apply(originalSubtleCrypto, args)\n .then(key => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was included in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider including this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.importKey !== originalImportKey) {\n originalSubtleCrypto.importKey = originalImportKey;\n }\n optimisticallyImportedKey = key;\n resolve((originalImportKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalImportKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalImportKey === 'boolean'\n ? originalImportKeySupportsEd25519\n : await originalImportKeySupportsEd25519\n ) {\n if (optimisticallyImportedKey) {\n return optimisticallyImportedKey;\n } else if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n } else {\n const [_format, _keyData, _algorithm, extractable, keyUsages] = args;\n return importKeyPolyfill(format, keyData, extractable, keyUsages);\n }\n }) as SubtleCrypto['importKey'];\n }\n}\n"]}
1
+ {"version":3,"sources":["../../crypto-impl/src/index.node.ts","../../../node_modules/.pnpm/@noble+ed25519@3.0.0/node_modules/@noble/ed25519/index.js","../src/secrets.ts","../src/install.ts"],"names":["index_node_default","crypto","C","G","P","_"],"mappings":"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","file":"index.node.cjs","sourcesContent":["// When building the browser bundle, this import gets replaced by `globalThis.crypto`.\nimport crypto from 'node:crypto';\n\nexport default crypto;\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 5KB JS implementation of ed25519 EdDSA signatures.\n * Compliant with RFC8032, FIPS 186-5 & ZIP215.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const secretKey = ed.utils.randomSecretKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(secretKey); // Sync methods are also present\n const signature = await ed.signAsync(message, secretKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. ed25519 is twisted edwards curve. Equation is −x² + y² = -a + dx²y².\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // group order, amount of curve points\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n */\nconst ed25519_CURVE = {\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n};\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d, h } = ed25519_CURVE;\nconst L = 32; // field / group byte length\nconst L2 = 64;\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\nconst captureTrace = (...args) => {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n};\nconst err = (message = '') => {\n const e = new Error(message);\n captureTrace(e, err);\n throw e;\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\nconst isBytes = (a) => a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n/** Asserts something is Uint8Array. */\nconst abytes = (value, length, title = '') => {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n err(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n};\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\nconst u8fr = (buf) => Uint8Array.from(buf);\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\nconst cr = () => globalThis?.crypto; // WebCrypto is available in all modern environments\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined, consider polyfill');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + abytes(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Will throw when not available. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\nconst assertRange = (n, min, max, msg = 'bad number: out of range') => (isBig(n) && min <= n && n < max ? n : err(msg));\n/** modular division */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\nconst modN = (a) => M(a, N);\n/** Modular inversion using euclidean GCD (non-CT). No negative exponent for now. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst callHash = (name) => {\n // @ts-ignore\n const fn = hashes[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\nconst hash = (msg) => callHash('sha512')(msg);\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\nconst B256 = 2n ** 256n;\n/** Point in XYZT extended coordinates. */\nclass Point {\n static BASE;\n static ZERO;\n X;\n Y;\n Z;\n T;\n constructor(X, Y, Z, T) {\n const max = B256;\n this.X = assertRange(X, 0n, max);\n this.Y = assertRange(Y, 0n, max);\n this.Z = assertRange(Z, 1n, max);\n this.T = assertRange(T, 0n, max);\n Object.freeze(this);\n }\n static CURVE() {\n return ed25519_CURVE;\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, M(p.x * p.y));\n }\n /** RFC8032 5.1.3: Uint8Array to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumLE(normed);\n // zip215=true: 0 <= y < 2^256\n // zip215=false, RFC8032: 0 <= y < 2^255-19\n const max = zip215 ? B256 : P;\n assertRange(y, 0n, max);\n const y2 = M(y * y); // y²\n const u = M(y2 - 1n); // u=y²-1\n const v = M(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, M(x * y)); // Z=1, T=xy\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(hexToBytes(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n if (p.is0())\n return err('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { X, Y, Z, T } = p;\n const X2 = M(X * X); // X²\n const Y2 = M(Y * Y); // Y²\n const Z2 = M(Z * Z); // Z²\n const Z4 = M(Z2 * Z2); // Z⁴\n const aX2 = M(X2 * a); // aX²\n const left = M(Z2 * M(aX2 + Y2)); // (aX² + Y²)Z²\n const right = M(Z4 + M(d * M(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n return err('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = M(X * Y);\n const ZT = M(Z * T);\n if (XY !== ZT)\n return err('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = apoint(other); // checks class equality\n const X1Z2 = M(X1 * Z2);\n const X2Z1 = M(X2 * Z1);\n const Y1Z2 = M(Y1 * Z2);\n const Y2Z1 = M(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.X), this.Y, this.Z, M(-this.T));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = M(X1 * X1);\n const B = M(Y1 * Y1);\n const C = M(2n * M(Z1 * Z1));\n const D = M(a * A);\n const x1y1 = X1 + Y1;\n const E = M(M(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n const { X: X2, Y: Y2, Z: Z2, T: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = M(X1 * X2);\n const B = M(Y1 * Y2);\n const C = M(T1 * d * T2);\n const D = M(Z1 * Z2);\n const E = M((X1 + Y1) * (X2 + Y2) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - a * A);\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(apoint(other).negate());\n }\n /**\n * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n scalar by which point is multiplied\n * @param safe safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n if (!safe && (n === 0n || this.is0()))\n return I;\n assertRange(n, 1n, N);\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n multiplyUnsafe(scalar) {\n return this.multiply(scalar, false);\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */\n toAffine() {\n const { X, Y, Z } = this;\n // fast-paths for ZERO point OR Z=1\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(Z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (M(Z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n const x = M(X * iz);\n const y = M(Y * iz);\n return { x, y };\n }\n toBytes() {\n const { x, y } = this.assertValidity().toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n }\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // Multiply by big number N. We can't `mul(N)` because of checks. Instead, we `mul(N/2)*2+1`\n let p = this.multiply(N / 2n, false).double();\n if (N % 2n)\n p = p.add(this);\n return p.is0();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(assertRange(num, 0n, B256), L2)).reverse();\nconst bytesToNumLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // √-1\n// for sqrt comp\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = M(v * v * v); // v³\n const v7 = M(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = M(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = M(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = M(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// N == L, just weird naming\nconst modL_LE = (hash) => modN(bytesToNumLE(hash)); // modulo L; but little-endian\n/** hashes.sha512 should conform to the interface. */\n// TODO: rename\nconst sha512a = (...m) => hashes.sha512Async(concatBytes(...m)); // Async SHA512\nconst sha512s = (...m) => callHash('sha512')(concatBytes(...m));\n// RFC8032 5.1.5\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const head = hashed.slice(0, L);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(L, L2); // secret key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (secretKey) => sha512a(abytes(secretKey, L)).then(hash2extK);\nconst getExtendedPublicKey = (secretKey) => hash2extK(sha512s(abytes(secretKey, L)));\n/** Creates 32-byte ed25519 public key from 32-byte secret key. Async. */\nconst getPublicKeyAsync = (secretKey) => getExtendedPublicKeyAsync(secretKey).then((p) => p.pointBytes);\n/** Creates 32-byte ed25519 public key from 32-byte secret key. To use, set `hashes.sha512` first. */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\n// Code, shared between sync & async sign\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), L2); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message using secret key. Async.\n * Follows RFC8032 5.1.6.\n */\nconst signAsync = async (message, secretKey) => {\n const m = abytes(message);\n const e = await getExtendedPublicKeyAsync(secretKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message using secret key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n */\nconst sign = (message, secretKey) => {\n const m = abytes(message);\n const e = getExtendedPublicKey(secretKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst defaultVerifyOpts = { zip215: true };\nconst _verify = (sig, msg, pub, opts = defaultVerifyOpts) => {\n sig = abytes(sig, L2); // Signature hex str/Bytes, must be 64 bytes\n msg = abytes(msg); // Message hex str/Bytes\n pub = abytes(pub, L);\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A;\n let R;\n let s;\n let SB;\n let hashable = Uint8Array.of();\n try {\n A = Point.fromBytes(pub, zip215); // public key A decoded\n R = Point.fromBytes(sig.slice(0, L), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = bytesToNumLE(sig.slice(L, L2)); // Decode second half as an integer S\n SB = G.multiply(s, false); // in the range 0 <= s < L\n hashable = concatBytes(R.toBytes(), A.toBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.multiply(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n/** Verifies signature on message and public key. Async. Follows RFC8032 5.1.7. */\nconst verifyAsync = async (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishA(_verify(signature, message, publicKey, opts));\n/** Verifies signature on message and public key. To use, set `hashes.sha512` first. Follows RFC8032 5.1.7. */\nconst verify = (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishS(_verify(signature, message, publicKey, opts));\n/** Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves. */\nconst etc = {\n bytesToHex: bytesToHex,\n hexToBytes: hexToBytes,\n concatBytes: concatBytes,\n mod: M,\n invert: invert,\n randomBytes: randomBytes,\n};\nconst hashes = {\n sha512Async: async (message) => {\n const s = subtle();\n const m = concatBytes(message);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512: undefined,\n};\n// FIPS 186 B.4.1 compliant key generation produces private keys\n// with modulo bias being neglible. takes >N+16 bytes, returns (hash mod n-1)+1\nconst randomSecretKey = (seed = randomBytes(L)) => seed;\nconst keygen = (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = getPublicKey(secretKey);\n return { secretKey, publicKey };\n};\nconst keygenAsync = async (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = await getPublicKeyAsync(secretKey);\n return { secretKey, publicKey };\n};\n/** ed25519-specific key utilities. */\nconst utils = {\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomSecretKey: randomSecretKey,\n};\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8, NOT 32 - see wNAF loop\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // precomputes for base point G\n// const-time negate\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n // We use negative indexes to reduce size of precomputed table by 2x.\n // Instead of needing precomputes 0..256, we only calculate them for 0..128.\n // If an index > 128 is found, we do (256-index) - where 256 is next window.\n // Naive: index +127 => 127, +224 => 224\n // Optimized: index +127 => 127, +224 => 256-32\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n }\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n if (n !== 0n)\n err('invalid wnaf');\n return { p, f }; // return both real and fake points for JIT\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { etc, getPublicKey, getPublicKeyAsync, hash, hashes, keygen, keygenAsync, Point, sign, signAsync, utils, verify, verifyAsync, };\n","/**\n * HEY! <== SECRET KEY KOALA\n * |/ <== WOULD LIKE YOUR\n * ʕ·͡ᴥ·ʔ <== ATTENTION PLEASE\n *\n * Key material generated in this module must stay in this module. So long as the secrets cache and\n * the methods that interact with it are not exported from `@solana/webcrypto-ed25519-polyfill`,\n * accidental logging of the actual bytes of a secret key (eg. to the console, or to a remote\n * server) should not be possible.\n *\n * WARNING: This does not imply that the secrets cache is secure against supply-chain attacks.\n * Untrusted code in your JavaScript context can easily override `WeakMap.prototype.set` to steal\n * private keys as they are written to the cache, without alerting you to its presence or affecting\n * the regular operation of the cache.\n */\nimport { getPublicKeyAsync, signAsync, utils, verifyAsync } from '@noble/ed25519';\n\nconst PROHIBITED_KEY_USAGES = new Set<KeyUsage>([\n 'decrypt',\n 'deriveBits',\n 'deriveKey',\n 'encrypt',\n 'unwrapKey',\n 'wrapKey',\n]);\n\nconst ED25519_PKCS8_HEADER =\n // prettier-ignore\n [\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n ];\n\nfunction bufferSourceToUint8Array(data: BufferSource): Uint8Array {\n return data instanceof Uint8Array ? data : new Uint8Array(ArrayBuffer.isView(data) ? data.buffer : data);\n}\n\nlet storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT: WeakMap<CryptoKey, Uint8Array> | undefined;\n\n// Map of public key bytes. These are the result of calling `getPublicKey`\nlet publicKeyBytesStore: WeakMap<CryptoKey, Uint8Array> | undefined;\n\nfunction createKeyPairFromBytes(\n bytes: Uint8Array,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n const keyPair = createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(extractable, keyUsages);\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(keyPair.privateKey, bytes);\n cache.set(keyPair.publicKey, bytes);\n return keyPair;\n}\n\nfunction createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n if (keyUsages.length === 0) {\n throw new DOMException('Usages cannot be empty when creating a key.', 'SyntaxError');\n }\n if (keyUsages.some(usage => PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for an Ed25519 key.', 'SyntaxError');\n }\n const base = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n };\n const privateKey = {\n ...base,\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n const publicKey = {\n ...base,\n extractable: true,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n return Object.freeze({\n privateKey: Object.freeze(privateKey),\n publicKey: Object.freeze(publicKey),\n });\n}\n\nfunction getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key: CryptoKey): Uint8Array {\n const secretKeyBytes = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.get(key);\n if (secretKeyBytes === undefined) {\n throw new Error('Could not find secret key material associated with this `CryptoKey`');\n }\n return secretKeyBytes;\n}\n\nasync function getPublicKeyBytes(key: CryptoKey): Promise<Uint8Array> {\n // Try to find the key in the public key store first\n const publicKeyStore = (publicKeyBytesStore ||= new WeakMap());\n const fromPublicStore = publicKeyStore.get(key);\n if (fromPublicStore) return fromPublicStore;\n\n // If not available, get the key from the secrets store instead\n const publicKeyBytes = await getPublicKeyAsync(getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key));\n\n // Store the public key bytes in the public key store for next time\n publicKeyStore.set(key, publicKeyBytes);\n return publicKeyBytes;\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n return btoa(Array.from(bytes, b => String.fromCharCode(b)).join(''))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\n\nfunction base64UrlDecode(value: string): Uint8Array {\n const m = value.length % 4;\n const base64Value = value\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n .padEnd(value.length + (m === 0 ? 0 : 4 - m), '=');\n return Uint8Array.from(atob(base64Value), c => c.charCodeAt(0));\n}\n\nexport async function exportKeyPolyfill(format: 'jwk', key: CryptoKey): Promise<JsonWebKey>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n if (key.extractable === false) {\n throw new DOMException('key is not extractable', 'InvalidAccessException');\n }\n switch (format) {\n case 'raw': {\n if (key.type !== 'public') {\n throw new DOMException(`Unable to export a raw Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n return publicKeyBytes.buffer as ArrayBuffer;\n }\n case 'pkcs8': {\n if (key.type !== 'private') {\n throw new DOMException(`Unable to export a pkcs8 Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n const result = new Uint8Array(ED25519_PKCS8_HEADER.length + secretKeyBytes.length);\n result.set(ED25519_PKCS8_HEADER, 0);\n result.set(secretKeyBytes, ED25519_PKCS8_HEADER.length);\n return result.buffer;\n }\n case 'jwk': {\n const publicKeyBytes = await getPublicKeyBytes(key);\n const base = {\n crv /* curve */: 'Ed25519',\n ext /* extractable */: key.extractable,\n key_ops /* key operations */: key.usages,\n kty /* key type */: 'OKP' /* octet key pair */,\n x /* public key x-coordinate (base64-URL encoded) */: base64UrlEncode(publicKeyBytes),\n };\n if (key.type === 'private') {\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return Object.freeze({\n ...base,\n d /* private key (base64-URL encoded) */: base64UrlEncode(secretKeyBytes),\n });\n }\n return Object.freeze({ ...base });\n }\n default:\n throw new Error(`Exporting polyfilled Ed25519 keys in the \"${format}\" format is unimplemented`);\n }\n}\n\n/**\n * This function generates a key pair and stores the secret bytes associated with it in a\n * module-private cache. Instead of vending the actual secret bytes, it returns a `CryptoKeyPair`\n * that you can use with other methods in this package to produce signatures and derive public keys\n * associated with the secret.\n */\nexport function generateKeyPolyfill(extractable: boolean, keyUsages: readonly KeyUsage[]): CryptoKeyPair {\n const privateKeyBytes = utils.randomSecretKey();\n const keyPair = createKeyPairFromBytes(privateKeyBytes, extractable, keyUsages);\n return keyPair;\n}\n\nexport function isPolyfilledKey(key: CryptoKey): boolean {\n return !!storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.has(key) || !!publicKeyBytesStore?.has(key);\n}\n\nexport async function signPolyfill(key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n if (key.type !== 'private' || !key.usages.includes('sign')) {\n throw new DOMException('Unable to use this key to sign', 'InvalidAccessError');\n }\n const privateKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n const payload = bufferSourceToUint8Array(data);\n const signature = await signAsync(payload, privateKeyBytes);\n return signature.buffer as ArrayBuffer;\n}\n\nexport async function verifyPolyfill(key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean> {\n if (key.type !== 'public' || !key.usages.includes('verify')) {\n throw new DOMException('Unable to use this key to verify', 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n try {\n return await verifyAsync(bufferSourceToUint8Array(signature), bufferSourceToUint8Array(data), publicKeyBytes);\n } catch {\n return false;\n }\n}\n\nfunction assertValidKeyUsages(keyUsages: readonly KeyUsage[], type: 'private' | 'public') {\n const prohibitedKeyUses = new Set<KeyUsage>([\n ...((type === 'private' ? ['verify'] : ['sign']) as KeyUsage[]),\n ...PROHIBITED_KEY_USAGES,\n ]);\n if (keyUsages.some(usage => prohibitedKeyUses.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n}\n\nexport function importKeyPolyfill(\n format: 'jwk',\n keyData: JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: Exclude<KeyFormat, 'jwk'>,\n keyData: BufferSource,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: KeyFormat,\n keyData: BufferSource | JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey {\n if (format === 'raw') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'public');\n if (bytes.length !== 32) {\n throw new DOMException('Ed25519 raw keys must be exactly 32-bytes', 'DataError');\n }\n const publicKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(publicKey, bytes);\n\n return publicKey;\n }\n\n if (format === 'pkcs8') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'private');\n // 48 bytes: 16-byte PKCS8 header + 32 byte secret key\n if (bytes.length !== 48) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n // Must start with exactly the Ed25519 pkcs8 header\n const header = bytes.slice(0, 16);\n if (!header.every((val, i) => val === ED25519_PKCS8_HEADER[i])) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n const secretKeyBytes = bytes.slice(16);\n\n const privateKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(privateKey, secretKeyBytes);\n\n return privateKey;\n }\n\n if (format === 'jwk') {\n const jwk = keyData as JsonWebKey;\n const type = 'd' in jwk ? 'private' : 'public';\n assertValidKeyUsages(keyUsages, type);\n const keyOps = new Set(jwk.key_ops ?? []);\n const sameKeyUsages = keyUsages.length === keyOps.size && [...keyUsages].every(x => keyOps.has(x));\n if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519' || jwk.ext !== extractable || !sameKeyUsages) {\n throw new DOMException('Invalid Ed25519 JWK', 'DataError');\n }\n if (type === 'public' && !jwk.x) {\n throw new DOMException('Ed25519 JWK is missing public key coordinates', 'DataError');\n }\n if (type === 'private' && !jwk.d) {\n throw new DOMException('Ed25519 JWK is missing private key coordinates', 'DataError');\n }\n const usageToKeep = type === 'public' ? 'verify' : 'sign';\n const key = Object.freeze({\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type,\n usages: Object.freeze(keyUsages.filter(usage => usage === usageToKeep)) as KeyUsage[],\n }) as CryptoKey;\n\n if (type === 'public') {\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.x!));\n } else {\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.d!));\n }\n\n return key;\n }\n\n throw new Error(`Importing Ed25519 keys in the \"${format}\" format is unimplemented`);\n}\n","import cryptoImpl from '@solana/crypto-impl';\n\nimport {\n exportKeyPolyfill,\n generateKeyPolyfill,\n importKeyPolyfill,\n isPolyfilledKey,\n signPolyfill,\n verifyPolyfill,\n} from './secrets';\n\nfunction isAlgorithmEd25519(putativeEd25519Algorithm: AlgorithmIdentifier): boolean {\n const name =\n typeof putativeEd25519Algorithm === 'string' ? putativeEd25519Algorithm : putativeEd25519Algorithm.name;\n return name.localeCompare('Ed25519', 'en-US', { sensitivity: 'base' }) === 0;\n}\n\n/**\n * Polyfills methods on `globalThis.SubtleCrypto` to add support for the Ed25519 algorithm.\n *\n * @example\n * ```ts\n * import { install } from '@solana/webcrypto-ed25519-polyfill';\n *\n * // Calling this will shim methods on `SubtleCrypto`, adding Ed25519 support.\n * install();\n *\n * // Now you can do this, in environments that do not otherwise support Ed25519.\n * const keyPair = await crypto.subtle.generateKey({ name: 'Ed25519' }, false, ['sign']);\n * const publicKeyBytes = await crypto.subtle.exportKey('raw', keyPair.publicKey);\n * const data = new Uint8Array([1, 2, 3]);\n * const signature = await crypto.subtle.sign({ name: 'Ed25519' }, keyPair.privateKey, data);\n * if (await crypto.subtle.verify({ name: 'Ed25519' }, keyPair.publicKey, signature, data)) {\n * console.log('Data was signed using the private key associated with this public key');\n * } else {\n * throw new Error('Signature verification error');\n * }\n * ```\n */\nexport function install() {\n if (__NODEJS__) {\n /**\n * Node only sets the `crypto` global variable when run with `--experimental-global-webcrypto`.\n * Let's set it unconditionally here.\n */\n globalThis.crypto ||= cryptoImpl;\n }\n\n if (!__BROWSER__ || globalThis.isSecureContext) {\n /**\n * Create `crypto.subtle` if it doesn't exist.\n */\n const originalCryptoObject = (globalThis.crypto ||= {} as Crypto);\n const originalSubtleCrypto = ((originalCryptoObject as Crypto & { subtle: SubtleCrypto }).subtle ||=\n {} as SubtleCrypto);\n\n /**\n * Override `SubtleCrypto#exportKey`\n */\n const originalExportKey = originalSubtleCrypto.exportKey as SubtleCrypto['exportKey'] | undefined;\n originalSubtleCrypto.exportKey = (async (...args: Parameters<SubtleCrypto['exportKey']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n return await exportKeyPolyfill(...args);\n } else if (originalExportKey) {\n return await originalExportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `exportKey` function exists to handle this call');\n }\n }) as SubtleCrypto['exportKey'];\n\n /**\n * Override `SubtleCrypto#generateKey`\n */\n const originalGenerateKey = originalSubtleCrypto.generateKey as SubtleCrypto['generateKey'] | undefined;\n let originalGenerateKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.generateKey = (async (...args: Parameters<SubtleCrypto['generateKey']>) => {\n const [algorithm] = args;\n if (!isAlgorithmEd25519(algorithm)) {\n if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n }\n let optimisticallyGeneratedKeyPair;\n if (originalGenerateKeySupportsEd25519 === undefined) {\n originalGenerateKeySupportsEd25519 = new Promise(resolve => {\n if (!originalGenerateKey) {\n resolve((originalGenerateKeySupportsEd25519 = false));\n return;\n }\n originalGenerateKey\n .apply(originalSubtleCrypto, args)\n .then(keyPair => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was installed in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider installing this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.generateKey !== originalGenerateKey) {\n originalSubtleCrypto.generateKey = originalGenerateKey;\n }\n optimisticallyGeneratedKeyPair = keyPair;\n resolve((originalGenerateKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalGenerateKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalGenerateKeySupportsEd25519 === 'boolean'\n ? originalGenerateKeySupportsEd25519\n : await originalGenerateKeySupportsEd25519\n ) {\n if (optimisticallyGeneratedKeyPair) {\n return optimisticallyGeneratedKeyPair;\n } else if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n } else {\n const [_, extractable, keyUsages] = args;\n return generateKeyPolyfill(extractable, keyUsages);\n }\n }) as SubtleCrypto['generateKey'];\n\n /**\n * Override `SubtleCrypto#sign`\n */\n const originalSign = originalSubtleCrypto.sign as SubtleCrypto['sign'] | undefined;\n originalSubtleCrypto.sign = (async (...args: Parameters<SubtleCrypto['sign']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await signPolyfill(...rest);\n } else if (originalSign) {\n return await originalSign.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `sign` function exists to handle this call');\n }\n }) as SubtleCrypto['sign'];\n\n /**\n * Override `SubtleCrypto#verify`\n */\n const originalVerify = originalSubtleCrypto.verify as SubtleCrypto['verify'] | undefined;\n originalSubtleCrypto.verify = (async (...args: Parameters<SubtleCrypto['verify']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await verifyPolyfill(...rest);\n } else if (originalVerify) {\n return await originalVerify.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `verify` function exists to handle this call');\n }\n }) as SubtleCrypto['verify'];\n\n /**\n * Override `SubtleCrypto#importKey`\n */\n const originalImportKey = originalSubtleCrypto.importKey as SubtleCrypto['importKey'] | undefined;\n let originalImportKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.importKey = (async (...args: Parameters<SubtleCrypto['importKey']>) => {\n const [format, keyData, algorithm] = args;\n if (!isAlgorithmEd25519(algorithm)) {\n if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n }\n let optimisticallyImportedKey;\n if (originalImportKeySupportsEd25519 === undefined) {\n originalImportKeySupportsEd25519 = new Promise(resolve => {\n if (!originalImportKey) {\n resolve((originalImportKeySupportsEd25519 = false));\n return;\n }\n originalImportKey\n .apply(originalSubtleCrypto, args)\n .then(key => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was included in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider including this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.importKey !== originalImportKey) {\n originalSubtleCrypto.importKey = originalImportKey;\n }\n optimisticallyImportedKey = key;\n resolve((originalImportKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalImportKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalImportKey === 'boolean'\n ? originalImportKeySupportsEd25519\n : await originalImportKeySupportsEd25519\n ) {\n if (optimisticallyImportedKey) {\n return optimisticallyImportedKey;\n } else if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n } else {\n const [_format, _keyData, _algorithm, extractable, keyUsages] = args;\n return importKeyPolyfill(format, keyData, extractable, keyUsages);\n }\n }) as SubtleCrypto['importKey'];\n }\n}\n"]}
@@ -130,14 +130,17 @@ async function exportKeyPolyfill(format, key) {
130
130
  throw new DOMException(`Unable to export a raw Ed25519 ${key.type} key`, "InvalidAccessError");
131
131
  }
132
132
  const publicKeyBytes = await getPublicKeyBytes(key);
133
- return publicKeyBytes;
133
+ return publicKeyBytes.buffer;
134
134
  }
135
135
  case "pkcs8": {
136
136
  if (key.type !== "private") {
137
137
  throw new DOMException(`Unable to export a pkcs8 Ed25519 ${key.type} key`, "InvalidAccessError");
138
138
  }
139
139
  const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
140
- return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);
140
+ const result = new Uint8Array(ED25519_PKCS8_HEADER.length + secretKeyBytes.length);
141
+ result.set(ED25519_PKCS8_HEADER, 0);
142
+ result.set(secretKeyBytes, ED25519_PKCS8_HEADER.length);
143
+ return result.buffer;
141
144
  }
142
145
  case "jwk": {
143
146
  const publicKeyBytes = await getPublicKeyBytes(key);
@@ -162,7 +165,7 @@ async function exportKeyPolyfill(format, key) {
162
165
  }
163
166
  }
164
167
  function generateKeyPolyfill(extractable, keyUsages) {
165
- const privateKeyBytes = utils.randomPrivateKey();
168
+ const privateKeyBytes = utils.randomSecretKey();
166
169
  const keyPair = createKeyPairFromBytes(privateKeyBytes, extractable, keyUsages);
167
170
  return keyPair;
168
171
  }
@@ -176,7 +179,7 @@ async function signPolyfill(key, data) {
176
179
  const privateKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
177
180
  const payload = bufferSourceToUint8Array(data);
178
181
  const signature = await signAsync(payload, privateKeyBytes);
179
- return signature;
182
+ return signature.buffer;
180
183
  }
181
184
  async function verifyPolyfill(key, signature, data) {
182
185
  if (key.type !== "public" || !key.usages.includes("verify")) {