diff --git a/export/index.template.html b/export/index.template.html index c2c6047..63cecd8 100644 --- a/export/index.template.html +++ b/export/index.template.html @@ -180,6 +180,315 @@

Message log

var parentFrameMessageChannelPort = null; + /** + * Bech32 character set as defined in BIP173. + * Reference: https://github.com/bitcoinjs/bech32/blob/5ceb0e3d4625561a459c85643ca6947739b2d83c/src/index.ts#L2 + * The alphabet excludes '1', 'b', 'i', and 'o' to avoid confusion with similar-looking characters. + */ + const BECH32_CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; + + /** + * Map each bech32 character to its 5-bit value (0-31). + * Used for decoding bech32 strings. + */ + const BECH32_CHAR_MAP = (() => { + const map = {}; + for (let i = 0; i < BECH32_CHARSET.length; i++) { + map[BECH32_CHARSET[i]] = i; + } + return map; + })(); + + /** + * Internal function that computes the Bech32 checksum polymod. + * This implements the BCH code checksum as specified in BIP173. + * Reference: https://en.bitcoin.it/wiki/Bech32 + * + * The generator polynomial constants are derived from the BCH code generator. + * The function processes 5-bit values and XORs them with generator values + * based on the top 5 bits of the current checksum state. + * + * @param {number[]} values - Array of 5-bit values to process + * @returns {number} - The checksum polymod result + */ + function bech32Polymod(values) { + let chk = 1; + // Generator polynomial constants for BCH code (BIP173) (see https://github.com/bitcoinjs/bech32/blob/5ceb0e3d4625561a459c85643ca6947739b2d83c/src/index.ts#L10) + const GEN = [ + 0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3, + ]; + for (let p = 0; p < values.length; p++) { + const v = values[p]; + const top = chk >>> 25; // Extract top 5 bits + chk = ((chk & 0x1ffffff) << 5) ^ v; // Shift left and XOR with value + for (let i = 0; i < 5; i++) { + if (((top >>> i) & 1) !== 0) { + chk ^= GEN[i]; // XOR with generator if bit is set + } + } + } + return chk; + } + + /** + * Expand the Human-Readable Part (HRP) for Bech32 checksum computation. + * Reference: https://en.bitcoin.it/wiki/Bech32 + * + * The HRP is expanded by taking: + * 1. The upper 3 bits of each character (right-shifted by 5) + * 2. A separator (0) + * 3. The lower 5 bits of each character (masked with 31) + * + * For example, "bc" becomes [3, 3, 0, 2, 3] where: + * - 'b' (0x62) → upper: 3, lower: 2 + * - 'c' (0x63) → upper: 3, lower: 3 + * + * @param {string} hrp - Human-Readable Part (e.g., "bc", "suiprivkey") + * @returns {number[]} - Expanded array of 5-bit values + */ + function bech32HrpExpand(hrp) { + const ret = []; + // Extract upper 3 bits of each character + for (let i = 0; i < hrp.length; i++) { + const c = hrp.charCodeAt(i); + ret.push(c >> 5); + } + ret.push(0); // Separator + // Extract lower 5 bits of each character + for (let i = 0; i < hrp.length; i++) { + const c = hrp.charCodeAt(i); + ret.push(c & 31); + } + return ret; + } + + /** + * Create a Bech32 checksum (6 characters). + * Reference: https://en.bitcoin.it/wiki/Bech32 + * + * The checksum is computed by: + * 1. Expanding the HRP and concatenating with the data + * 2. Appending six zero values + * 3. Computing the polymod + * 4. XORing with the bech32 constant (1) + * 5. Extracting six 5-bit values from the result + * + * Note: This uses the bech32 constant (1). For bech32m (BIP350), the constant is 0x2bc830a3. + * + * @param {string} hrp - Human-Readable Part + * @param {number[]} data - Array of 5-bit values representing the payload + * @returns {number[]} - Array of 6 checksum values (5-bit each) + */ + function bech32CreateChecksum(hrp, data) { + const values = bech32HrpExpand(hrp).concat(data); + const polymod = bech32Polymod(values.concat([0, 0, 0, 0, 0, 0])) ^ 1; // bech32 const = 1 + const checksum = []; + for (let i = 0; i < 6; i++) { + checksum.push((polymod >> (5 * (5 - i))) & 31); // Extract 5 bits + } + return checksum; + } + + /** + * Convert from 8-bit bytes to 5-bit words (groups). + * Reference: https://en.bitcoin.it/wiki/Bech32 + * + * This function repacks data from 8-bit bytes to 5-bit groups. + * Since 8 and 5 don't evenly divide, we use an accumulator to handle the conversion. + * + * For example, 2 bytes (16 bits) → 3.2 groups (16/5), so we pad to 4 groups (20 bits). + * The final group may have zero-padding in the lower bits. + * + * @param {Uint8Array} bytes - Input data as 8-bit bytes + * @returns {number[]} - Array of 5-bit values (0-31) + */ + function bech32ToWords(bytes) { + const fromBits = 8; + const toBits = 5; + const pad = true; + + let acc = 0; + let bits = 0; + const maxv = (1 << toBits) - 1; + const result = []; + + for (let i = 0; i < bytes.length; i++) { + const value = bytes[i]; + if (value < 0 || value > 255) { + throw new Error("invalid byte value for bech32"); + } + acc = (acc << fromBits) | value; + bits += fromBits; + while (bits >= toBits) { + bits -= toBits; + result.push((acc >> bits) & maxv); + } + } + + if (pad) { + if (bits > 0) { + result.push((acc << (toBits - bits)) & maxv); + } + } else { + if (bits >= fromBits) { + throw new Error("excess padding in bech32 data"); + } + if ((acc & ((1 << bits) - 1)) !== 0) { + throw new Error("non-zero padding in bech32 data"); + } + } + + return result; + } + + /** + * Convert from 5-bit words (groups) back to 8-bit bytes. + * Reference: https://en.bitcoin.it/wiki/Bech32 + * + * This is the inverse of bech32ToWords. It repacks 5-bit groups back to 8-bit bytes. + * Unlike encoding, decoding does NOT add padding (pad = false) to ensure the data + * length is exact and any trailing bits are validated to be zero. + * + * The maxAcc limit prevents accumulator overflow during bit manipulation. + * + * @param {number[]} words - Array of 5-bit values (0-31) + * @returns {Uint8Array} - Output data as 8-bit bytes + */ + function bech32FromWords(words) { + const fromBits = 5; + const toBits = 8; + const pad = false; + + let acc = 0; + let bits = 0; + const maxv = (1 << toBits) - 1; + const maxAcc = (1 << (fromBits + toBits - 1)) - 1; + const result = []; + + for (let i = 0; i < words.length; i++) { + const value = words[i]; + if (value < 0 || value >> fromBits !== 0) { + throw new Error("invalid bech32 word"); + } + acc = ((acc << fromBits) | value) & maxAcc; + bits += fromBits; + while (bits >= toBits) { + bits -= toBits; + result.push((acc >> bits) & maxv); + } + } + + if (pad) { + if (bits > 0) { + result.push((acc << (toBits - bits)) & maxv); + } + } else { + if (bits >= fromBits) { + throw new Error("excess padding in bech32 data"); + } + if ((acc & ((1 << bits) - 1)) !== 0) { + throw new Error("non-zero padding in bech32 data"); + } + } + + return new Uint8Array(result); + } + + /** + * Encode bytes into a Bech32 string. + * Reference: https://en.bitcoin.it/wiki/Bech32 + * + * Creates a complete bech32-encoded string in the format: hrp + "1" + data + checksum + * For example: "suiprivkey1" + encoded_data + 6_checksum_chars + * + * The separator "1" is used because it's not part of the bech32 character set. + * + * @param {string} hrp - Human-Readable Part (e.g., "suiprivkey") + * @param {Uint8Array} bytes - Raw bytes to encode + * @returns {string} - Complete bech32-encoded string + */ + function encodeBech32(hrp, bytes) { + const words = bech32ToWords(bytes); + const checksum = bech32CreateChecksum(hrp, words); + const combined = words.concat(checksum); + + let out = hrp + "1"; + for (let i = 0; i < combined.length; i++) { + out += BECH32_CHARSET[combined[i]]; + } + return out; + } + + /** + * Decode a Bech32 or Bech32m string. + * Reference: https://en.bitcoin.it/wiki/Bech32 + * + * This function: + * 1. Splits the string at the last "1" separator into HRP and data + * 2. Validates the character set + * 3. Computes and verifies the checksum + * 4. Returns the HRP, data words (without checksum), and variant + * + * Supports both bech32 (const=1) and bech32m (const=0x2bc830a3) variants. + * The variant is determined by the checksum validation. + * + * @param {string} str - Bech32-encoded string + * @returns {{hrp: string, words: number[], variant: string}} - Decoded components + */ + function decodeBech32(str) { + // Enforce lower-case (Sui uses lowercase) + const s = str.toLowerCase(); + + // Split HRP and data at last '1' + const pos = s.lastIndexOf("1"); + if (pos <= 0 || pos + 7 > s.length) { + throw new Error("invalid bech32: bad separator or too short"); + } + + const hrp = s.slice(0, pos); + const dataPart = s.slice(pos + 1); + + if (!hrp || hrp.length < 1) { + throw new Error("invalid bech32: HRP too short"); + } + + const data = []; + for (let i = 0; i < dataPart.length; i++) { + const c = dataPart[i]; + const v = BECH32_CHAR_MAP[c]; + if (v == null) { + throw new Error(`invalid bech32 character: '${c}'`); + } + data.push(v); + } + + if (data.length < 6) { + throw new Error( + "invalid bech32: data too short (no room for checksum)" + ); + } + + const values = bech32HrpExpand(hrp).concat(data); + const polymod = bech32Polymod(values); + + // bech32 checksum = 1, bech32m checksum = 0x2bc830a3 + const BECH32_CONST = 1; + const BECH32M_CONST = 0x2bc830a3; + + if (polymod !== BECH32_CONST && polymod !== BECH32M_CONST) { + throw new Error("invalid bech32: checksum mismatch"); + } + + // strip checksum (last 6 words) + const words = data.slice(0, data.length - 6); + + return { + hrp, + words, + variant: polymod === BECH32_CONST ? "bech32" : "bech32m", + }; + } + /* * Loads the quorum public key as a CryptoKey. */ @@ -343,6 +652,28 @@

Message log

.join(""); } + /** + * Encodes a Uint8Array into a base58-check-encoded string + * Throws an error if the input is invalid or the checksum is invalid. + * @param {Uint8Array} payload The base58-check-encoded payload. + * @return {Uint8Array} The decoded buffer. + */ + async function base58CheckEncode(payload) { + const hash1Buf = await crypto.subtle.digest("SHA-256", payload); + const hash1 = new Uint8Array(hash1Buf); + + const hash2Buf = await crypto.subtle.digest("SHA-256", hash1); + const hash2 = new Uint8Array(hash2Buf); + + const checksum = hash2.slice(0, 4); + + const full = new Uint8Array(payload.length + 4); + full.set(payload, 0); + full.set(checksum, payload.length); + + return base58Encode(full); + } + /** * Function to normalize padding of byte array with 0's to a target length */ @@ -650,7 +981,7 @@

Message log

* the encoding and format specified by `keyFormat`. Defaults to * hex-encoding if `keyFormat` isn't passed. * @param {Uint8Array} privateKeyBytes - * @param {string} keyFormat Can be "HEXADECIMAL" or "SOLANA" + * @param {string} keyFormat Can be "HEXADECIMAL", "SUI_BECH32", "BITCOIN_MAINNET_WIF", "BITCOIN_TESTNET_WIF" or "SOLANA" */ async function encodeKey(privateKeyBytes, keyFormat, publicKeyBytes) { switch (keyFormat) { @@ -676,6 +1007,47 @@

Message log

return base58Encode(concatenatedBytes); case "HEXADECIMAL": return "0x" + uint8arrayToHexString(privateKeyBytes); + case "BITCOIN_MAINNET_WIF": + if (privateKeyBytes.length !== 32) { + throw new Error( + `invalid private key length. Expected 32 bytes. Got ${privateKeyBytes.length}.` + ); + } + + const mainnetVersion = 0x80; // mainnet version byte + const wifPayload = new Uint8Array(1 + 32 + 1); + wifPayload[0] = mainnetVersion; + wifPayload.set(privateKeyBytes, 1); + wifPayload[33] = 0x01; // compressed flag + + return await base58CheckEncode(wifPayload); + case "BITCOIN_TESTNET_WIF": + if (privateKeyBytes.length !== 32) { + throw new Error( + `invalid private key length. Expected 32 bytes. Got ${privateKeyBytes.length}.` + ); + } + + const testnetVersion = 0xef; // testnet version byte + const testnetWifPayload = new Uint8Array(1 + 32 + 1); + testnetWifPayload[0] = testnetVersion; + testnetWifPayload.set(privateKeyBytes, 1); + testnetWifPayload[33] = 0x01; // compressed flag + + return await base58CheckEncode(testnetWifPayload); + case "SUI_BECH32": + if (privateKeyBytes.length !== 32) { + throw new Error( + `invalid private key length. Expected 32 bytes. Got ${privateKeyBytes.length}.` + ); + } + + const schemeFlag = 0x00; // ED25519 | We only support ED25519 keys for Sui currently + const bech32Payload = new Uint8Array(1 + 32); + bech32Payload[0] = schemeFlag; + bech32Payload.set(privateKeyBytes, 1); + + return encodeBech32("suiprivkey", bech32Payload); default: console.warn( `invalid key format: ${keyFormat}. Defaulting to HEXADECIMAL.` @@ -842,7 +1214,10 @@

Message log

p256JWKPrivateToPublic, base58Encode, base58Decode, + decodeBech32, + bech32FromWords, encodeKey, + encodeBech32, encodeWallet, sendMessageUp, logMessage, diff --git a/export/index.test.js b/export/index.test.js index abe9230..79648fe 100644 --- a/export/index.test.js +++ b/export/index.test.js @@ -120,6 +120,67 @@ describe("TKHQ", () => { expect(encodedKey).toEqual(keySol); }); + it("encodes bitcoin WIF private key correctly", async () => { + const keyWif = "L1sF5SF3CnCN9gA7vh7MAtbiVu9igdr3C1BYPKZduw4yaezdeCTV"; + const keyWifBytes = TKHQ.base58Decode(keyWif).subarray(0, -4); // remove 4 byte checksum + expect(keyWifBytes.length).toEqual(34); // 1 byte version + 32 byte privkey + 1 byte compressed flag + const keyPrivBytes = keyWifBytes.subarray(1, 33); + const encodedKey = await TKHQ.encodeKey( + keyPrivBytes, + "BITCOIN_MAINNET_WIF" + ); + expect(encodedKey).toEqual(keyWif); + }); + + // Bitcoin WIF export negative tests + it("rejects bitcoin WIF encoding with wrong private key length", async () => { + const tooShortKey = new Uint8Array(31).fill(0x42); + await expect( + TKHQ.encodeKey(tooShortKey, "BITCOIN_MAINNET_WIF") + ).rejects.toThrow("invalid private key length. Expected 32 bytes. Got 31."); + + const tooLongKey = new Uint8Array(33).fill(0x42); + await expect( + TKHQ.encodeKey(tooLongKey, "BITCOIN_MAINNET_WIF") + ).rejects.toThrow("invalid private key length. Expected 32 bytes. Got 33."); + }); + + // Encodes Testnet WIF correctly + it("encodes bitcoin Testnet WIF private key correctly", async () => { + const keyWif = "cTVYYVnHVzNepyxZhB7fzRuneC6RVDJETJdGAoDc4RrirgghQxyR"; + const keyWifBytes = TKHQ.base58Decode(keyWif).subarray(0, -4); // remove 4 byte checksum + expect(keyWifBytes.length).toEqual(34); // 1 byte version + 32 byte privkey + 1 byte compressed flag + const keyPrivBytes = keyWifBytes.subarray(1, 33); + const encodedKey = await TKHQ.encodeKey( + keyPrivBytes, + "BITCOIN_TESTNET_WIF" + ); + expect(encodedKey).toEqual(keyWif); + }); + + it("encodes sui bech32 private key correctly", async () => { + const keySui = + "suiprivkey1qpj5xd9396rxsu7h45tzccalhuf95e4pygls3ps9txszn9ywpwsnznaeq0l"; + const { words } = TKHQ.decodeBech32(keySui); + const keySuiBytes = TKHQ.bech32FromWords(words).subarray(1); // remove 1 byte scheme flag + expect(keySuiBytes.length).toEqual(32); + const encodedKey = await TKHQ.encodeKey(keySuiBytes, "SUI_BECH32"); + expect(encodedKey).toEqual(keySui); + }); + + // SUI Bech32 export negative tests + it("rejects sui bech32 encoding with wrong private key length", async () => { + const tooShortKey = new Uint8Array(31).fill(0x42); + await expect(TKHQ.encodeKey(tooShortKey, "SUI_BECH32")).rejects.toThrow( + "invalid private key length. Expected 32 bytes. Got 31." + ); + + const tooLongKey = new Uint8Array(33).fill(0x42); + await expect(TKHQ.encodeKey(tooLongKey, "SUI_BECH32")).rejects.toThrow( + "invalid private key length. Expected 32 bytes. Got 33." + ); + }); + it("encodes wallet with only mnemonic correctly", async () => { const mnemonic = "suffer surround soup duck goose patrol add unveil appear eye neglect hurry alpha project tomorrow embody hen wish twenty join notable amused burden treat"; diff --git a/import/dist/common.bundle.33a2ded2831a9b0e3d8a.js b/import/dist/common.bundle.33a2ded2831a9b0e3d8a.js new file mode 100644 index 0000000..d7f9449 --- /dev/null +++ b/import/dist/common.bundle.33a2ded2831a9b0e3d8a.js @@ -0,0 +1,3 @@ +/*! For license information please see common.bundle.33a2ded2831a9b0e3d8a.js.LICENSE.txt */ +"use strict";(self.webpackChunkimport=self.webpackChunkimport||[]).push([[76],{482:(e,r,t)=>{t.r(r),t.d(r,{additionalAssociatedData:()=>B,applySettings:()=>q,base58CheckDecode:()=>F,base58Decode:()=>W,decodeKey:()=>K,fromDerSignature:()=>Y,getSettings:()=>P,getTargetEmbeddedKey:()=>_,loadTargetKey:()=>A,normalizePadding:()=>M,resetTargetEmbeddedKey:()=>U,sendMessageUp:()=>V,setCryptoProvider:()=>I,setParentFrameMessageChannelPort:()=>H,setSettings:()=>j,setTargetEmbeddedKey:()=>O,uint8arrayFromHexString:()=>$,uint8arrayToHexString:()=>R,validateStyles:()=>J,verifyEnclaveSignature:()=>L});var n=t(343);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function a(){var e=f(),r=e.m(a),t=(Object.getPrototypeOf?Object.getPrototypeOf(r):r.__proto__).constructor;function n(e){var r="function"==typeof e&&e.constructor;return!!r&&(r===t||"GeneratorFunction"===(r.displayName||r.name))}var o={throw:1,return:2,break:3,continue:3};function d(e){var r,t;return function(n){r||(r={stop:function(){return t(n.a,2)},catch:function(){return n.v},abrupt:function(e,r){return t(n.a,o[e],r)},delegateYield:function(e,o,a){return r.resultName=o,t(n.d,i(e),a)},finish:function(e){return t(n.f,e)}},t=function(e,t,o){n.p=r.prev,n.n=r.next;try{return e(t,o)}finally{r.next=n.n}}),r.resultName&&(r[r.resultName]=n.v,r.resultName=void 0),r.sent=n.v,r.next=n.n;try{return e.call(this,r)}finally{n.p=r.prev,n.n=r.next}}}return(a=function(){return{wrap:function(r,t,n,o){return e.w(d(r),t,n,o&&o.reverse())},isGeneratorFunction:n,mark:e.m,awrap:function(e,r){return new p(e,r)},AsyncIterator:l,async:function(e,r,t,o,a){return(n(r)?s:u)(d(e),r,t,o,a)},keys:c,values:i}})()}function i(e){if(null!=e){var r=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],t=0;if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}}throw new TypeError(o(e)+" is not iterable")}function c(e){var r=Object(e),t=[];for(var n in r)t.unshift(n);return function e(){for(;t.length;)if((n=t.pop())in r)return e.value=n,e.done=!1,e;return e.done=!0,e}}function u(e,r,t,n,o){var a=s(e,r,t,n,o);return a.next().then(function(e){return e.done?e.value:a.next()})}function s(e,r,t,n,o){return new l(f().w(e,r,t,n),o||Promise)}function l(e,r){function t(n,o,a,i){try{var c=e[n](o),u=c.value;return u instanceof p?r.resolve(u.v).then(function(e){t("next",e,a,i)},function(e){t("throw",e,a,i)}):r.resolve(u).then(function(e){c.value=e,a(c)},function(e){return t("throw",e,a,i)})}catch(e){i(e)}}var n;this.next||(d(l.prototype),d(l.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),d(this,"_invoke",function(e,o,a){function i(){return new r(function(r,n){t(e,a,r,n)})}return n=n?n.then(i,i):i()},!0)}function f(){var e,r,t="function"==typeof Symbol?Symbol:{},n=t.iterator||"@@iterator",o=t.toStringTag||"@@toStringTag";function a(t,n,o,a){var u=n&&n.prototype instanceof c?n:c,s=Object.create(u.prototype);return d(s,"_invoke",function(t,n,o){var a,c,u,s=0,l=o||[],f=!1,d={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(r,t){return a=r,c=0,u=e,d.n=t,i}};function p(t,n){for(c=t,u=n,r=0;!f&&s&&!o&&r3?(o=y===n)&&(u=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=e):a[0]<=p&&((o=t<2&&pn||n>y)&&(a[4]=t,a[5]=n,d.n=y,c=0))}if(o||t>1)return i;throw f=!0,n}return function(o,l,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===l&&p(l,y),c=l,u=y;(r=c<2?e:u)||!f;){a||(c?c<3?(c>1&&(d.n=-1),p(c,u)):d.n=u:d.v=u);try{if(s=2,a){if(c||(o="next"),r=a[o]){if(!(r=r.call(a,u)))throw TypeError("iterator result is not an object");if(!r.done)return r;u=r.value,c<2&&(c=0)}else 1===c&&(r=a.return)&&r.call(a),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=e}else if((r=(f=d.n<0)?u:t.call(n,d))!==i)break}catch(r){a=e,c=1,u=r}finally{s=1}}return{value:r,done:f}}}(t,o,a),!0),s}var i={};function c(){}function u(){}function s(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(d(r={},n,function(){return this}),r),p=s.prototype=c.prototype=Object.create(l);function y(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,d(e,o,"GeneratorFunction")),e.prototype=Object.create(p),e}return u.prototype=s,d(p,"constructor",s),d(s,"constructor",u),u.displayName="GeneratorFunction",d(s,o,"GeneratorFunction"),d(p),d(p,o,"Generator"),d(p,n,function(){return this}),d(p,"toString",function(){return"[object Generator]"}),(f=function(){return{w:a,m:y}})()}function d(e,r,t,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}d=function(e,r,t,n){function a(r,t){d(e,r,function(e){return this._invoke(r,t,e)})}r?o?o(e,r,{value:t,enumerable:!n,configurable:!n,writable:!n}):e[r]=t:(a("next",0),a("throw",1),a("return",2))},d(e,r,t,n)}function p(e,r){this.v=e,this.k=r}function y(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,a,i,c=[],u=!0,s=!1;try{if(a=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;u=!1}else for(;!(u=(n=a.call(t)).done)&&(c.push(n.value),c.length!==r);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(s)throw o}}return c}}(e,r)||h(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,r){if(e){if("string"==typeof e)return m(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,r):void 0}}function m(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t0;){var c=t[i];a=(c=void 0===c?a:58*c+a)>>8,t[i]=c%256,i++}}var u=n.concat(t.reverse());return new Uint8Array(u)}function F(e){return D.apply(this,arguments)}function D(){return(D=w(a().mark(function e(r){var t,n,o,i,c,u,s,l,f,d;return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!((t=W(r)).length<5)){e.next=3;break}throw new Error("invalid base58check length: expected at least 5 bytes, got ".concat(t.length));case 3:if(n=t.subarray(0,t.length-4),o=t.subarray(t.length-4),i=S()){e.next=8;break}throw new Error("WebCrypto subtle API is unavailable");case 8:return e.next=10,i.digest("SHA-256",n);case 10:return c=e.sent,u=new Uint8Array(c),e.next=14,i.digest("SHA-256",u);case 14:s=e.sent,l=new Uint8Array(s),f=l.subarray(0,4),d=0;case 18:if(!(d<4)){e.next=24;break}if(o[d]===f[d]){e.next=21;break}throw new Error("invalid base58check checksum");case 21:d++,e.next=18;break;case 24:return e.abrupt("return",n);case 25:case"end":return e.stop()}},e)}))).apply(this,arguments)}function K(e,r){return G.apply(this,arguments)}function G(){return(G=w(a().mark(function e(r,t){var o,i,c,u,s,l,f,d,p,y;return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=t,e.next="SOLANA"===e.t0?3:"HEXADECIMAL"===e.t0?7:"BITCOIN_MAINNET_WIF"===e.t0||"BITCOIN_TESTNET_WIF"===e.t0?10:"SUI_BECH32"===e.t0?22:33;break;case 3:if(64===(o=W(r)).length){e.next=6;break}throw new Error("invalid key length. Expected 64 bytes. Got ".concat(o.length(),"."));case 6:return e.abrupt("return",o.subarray(0,32));case 7:if(!r.startsWith("0x")){e.next=9;break}return e.abrupt("return",$(r.slice(2)));case 9:case 36:return e.abrupt("return",$(r));case 10:return e.next=12,F(r);case 12:if(i=e.sent,c=i[0],u=i.subarray(1),128===c||239===c){e.next=17;break}throw new Error("invalid WIF version byte: ".concat(c,". Expected 0x80 (mainnet) or 0xEF (testnet)."));case 17:if(32!==u.length){e.next=19;break}throw new Error("uncompressed WIF not supported; please use a compressed WIF key");case 19:if(33!==u.length||1!==u[32]){e.next=21;break}return e.abrupt("return",u.subarray(0,32));case 21:throw new Error("invalid WIF payload format");case 22:if(s=n.I.decode(r),l=s.prefix,f=s.words,"suiprivkey"===l){e.next=25;break}throw new Error('invalid SUI private key human-readable part (HRP): expected "suiprivkey"');case 25:if(33===(d=n.I.fromWords(f)).length){e.next=28;break}throw new Error("invalid SUI private key length: expected 33 bytes, got ".concat(d.length));case 28:if(p=d[0],y=d.slice(1),0===p){e.next=32;break}throw new Error("invalid SUI private key scheme flag: expected 0 (Ed25519). Turnkey only supports Ed25519 keys for SUI.");case 32:return e.abrupt("return",new Uint8Array(y));case 33:if(console.warn("invalid key format: ".concat(t,". Defaulting to HEXADECIMAL.")),!r.startsWith("0x")){e.next=36;break}return e.abrupt("return",$(r.slice(2)));case 37:case"end":return e.stop()}},e)}))).apply(this,arguments)}function H(e){E=e}function M(e,r){var t=r-e.length;if(t>0){var n=new Uint8Array(t).fill(0);return new Uint8Array([].concat(b(n),b(e)))}if(t<0){for(var o=-1*t,a=0,i=0;i]*$',color:"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)|hsla?\\(\\d{1,3}, \\d{1,3}%, \\d{1,3}%(, \\d?(\\.\\d{1,2})?)?\\))$",labelColor:"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)|hsla?\\(\\d{1,3}, \\d{1,3}%, \\d{1,3}%(, \\d?(\\.\\d{1,2})?)?\\))$",backgroundColor:"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)|hsla?\\(\\d{1,3}, \\d{1,3}%, \\d{1,3}%(, \\d?(\\.\\d{1,2})?)?\\))$",width:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$",height:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$",maxWidth:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$",maxHeight:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$",lineHeight:"^(\\d+(\\.\\d+)?(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|normal)$",boxShadow:"^(none|(\\d+(px|em|rem) ?){2,4} (#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)) ?(inset)?)$",textAlign:"^(left|right|center|justify|initial|inherit)$",overflowWrap:"^(normal|break-word|anywhere)$",wordWrap:"^(normal|break-word)$",resize:"^(none|both|horizontal|vertical|block|inline)$"};return Object.entries(e).forEach(function(e){var r=y(e,2),o=r[0],a=r[1],i=o.trim();if(0===i.length)throw new Error("css style property cannot be empty");var c=n[i];if(!c)throw new Error('invalid or unsupported css style property: "'.concat(i,'"'));var u=new RegExp(c),s=a.trim();if(0==s.length)throw new Error('css style for "'.concat(i,'" is empty'));if(!u.test(s))throw new Error('invalid css style value for property "'.concat(i,'"'));t[i]=s}),t}function q(e){var r={},t=JSON.parse(e),n=document.getElementById("passphrase-label"),o=document.getElementById("mnemonic-label"),a=document.getElementById("passphrase");if(!n||!a)throw new Error("no passphrase HTML elements found to apply settings to.");var i=document.getElementById("plaintext");if(!i)throw new Error("no plaintext textarea HTML element found to apply settings to.");if(!0===t.enablePassphrase?(n.style.display="inline-block",a.style.display="inline-block",a.style.border="solid 1px #ccc",a.style.borderRadius="4px",o.style.display="inline-block",i.style.border="solid 1px #ccc",i.style.borderRadius="4px",r.enablePassphrase=!0):(n.style.display="none",a.style.display="none",o.style.display="none",i.style.border="none",r.enablePassphrase=!1),t.styles){var c=J(t.styles);Object.entries(c).forEach(function(e){var r=y(e,2),t=r[0],n=r[1];i.style[t]=n}),c.backgroundColor&&(document.documentElement.style.backgroundColor=c.backgroundColor,document.body.style.backgroundColor=c.backgroundColor),c.labelColor&&(document.getElementById("mnemonic-label").style.color=c.labelColor),r.styles=c}if(t.passphraseStyles){var u=J(t.passphraseStyles);Object.entries(u).forEach(function(e){var r=y(e,2),t=r[0],n=r[1];a.style[t]=n}),u.labelColor&&(document.getElementById("passphrase-label").style.color=u.labelColor),r.passphraseStyles=u}return JSON.stringify(r)}function V(e,r,t){var n={type:e,value:r};t&&(n.requestId=t),E?E.postMessage(n):window.parent!==window&&window.parent.postMessage({type:e,value:r},"*")}}}]); +//# sourceMappingURL=common.bundle.33a2ded2831a9b0e3d8a.js.map \ No newline at end of file diff --git a/import/dist/common.bundle.9407f0e3109ed80fba97.js.LICENSE.txt b/import/dist/common.bundle.33a2ded2831a9b0e3d8a.js.LICENSE.txt similarity index 100% rename from import/dist/common.bundle.9407f0e3109ed80fba97.js.LICENSE.txt rename to import/dist/common.bundle.33a2ded2831a9b0e3d8a.js.LICENSE.txt diff --git a/import/dist/common.bundle.33a2ded2831a9b0e3d8a.js.map b/import/dist/common.bundle.33a2ded2831a9b0e3d8a.js.map new file mode 100644 index 0000000..370e1e6 --- /dev/null +++ b/import/dist/common.bundle.33a2ded2831a9b0e3d8a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"common.bundle.33a2ded2831a9b0e3d8a.js","mappings":"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","sources":["webpack://import/./src/turnkey-core.js"],"sourcesContent":["import { bech32 } from \"bech32\";\n\n/** constants for LocalStorage */\nconst TURNKEY_TARGET_EMBEDDED_KEY = \"TURNKEY_TARGET_EMBEDDED_KEY\";\nconst TURNKEY_SETTINGS = \"TURNKEY_SETTINGS\";\n\nvar parentFrameMessageChannelPort = null;\nvar cryptoProviderOverride = null;\n\n/*\n * Returns a reference to the WebCrypto subtle interface regardless of the host environment.\n */\nfunction getSubtleCrypto() {\n if (cryptoProviderOverride && cryptoProviderOverride.subtle) {\n return cryptoProviderOverride.subtle;\n }\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.crypto &&\n globalThis.crypto.subtle\n ) {\n return globalThis.crypto.subtle;\n }\n if (typeof window !== \"undefined\" && window.crypto && window.crypto.subtle) {\n return window.crypto.subtle;\n }\n if (typeof global !== \"undefined\" && global.crypto && global.crypto.subtle) {\n return global.crypto.subtle;\n }\n if (typeof crypto !== \"undefined\" && crypto.subtle) {\n return crypto.subtle;\n }\n\n return null;\n}\n\n/*\n * Allows tests to explicitly set the crypto provider (e.g. crypto.webcrypto) when the runtime\n * environment does not expose one on the global/window objects.\n */\nfunction setCryptoProvider(cryptoProvider) {\n cryptoProviderOverride = cryptoProvider || null;\n}\n\n/*\n * Load a key to encrypt to as a CryptoKey and return it as a JSON Web Key.\n */\nasync function loadTargetKey(targetPublic) {\n const subtle = getSubtleCrypto();\n if (!subtle) {\n throw new Error(\"WebCrypto subtle API is unavailable\");\n }\n const targetKey = await subtle.importKey(\n \"raw\",\n targetPublic,\n {\n name: \"ECDH\",\n namedCurve: \"P-256\",\n },\n true,\n []\n );\n\n return await subtle.exportKey(\"jwk\", targetKey);\n}\n\n/*\n * Loads the quorum public key as a CryptoKey.\n */\nasync function loadQuorumKey(quorumPublic) {\n const subtle = getSubtleCrypto();\n if (!subtle) {\n throw new Error(\"WebCrypto subtle API is unavailable\");\n }\n return await subtle.importKey(\n \"raw\",\n quorumPublic,\n {\n name: \"ECDSA\",\n namedCurve: \"P-256\",\n },\n true,\n [\"verify\"]\n );\n}\n\n/**\n * Gets the current target embedded private key JWK. Returns `null` if not found.\n */\nfunction getTargetEmbeddedKey() {\n const jwtKey = window.localStorage.getItem(TURNKEY_TARGET_EMBEDDED_KEY);\n return jwtKey ? JSON.parse(jwtKey) : null;\n}\n\n/**\n * Sets the target embedded public key JWK.\n * @param {JsonWebKey} targetKey\n */\nfunction setTargetEmbeddedKey(targetKey) {\n window.localStorage.setItem(\n TURNKEY_TARGET_EMBEDDED_KEY,\n JSON.stringify(targetKey)\n );\n}\n\n/**\n * Resets the current target embedded private key JWK.\n */\nfunction resetTargetEmbeddedKey() {\n window.localStorage.removeItem(TURNKEY_TARGET_EMBEDDED_KEY);\n}\n\n/**\n * Gets the current settings.\n */\nfunction getSettings() {\n const settings = window.localStorage.getItem(TURNKEY_SETTINGS);\n return settings ? JSON.parse(settings) : null;\n}\n\n/**\n * Sets the settings object.\n * @param {Object} settings\n */\nfunction setSettings(settings) {\n window.localStorage.setItem(TURNKEY_SETTINGS, JSON.stringify(settings));\n}\n\n/**\n * Takes a hex string (e.g. \"e4567ab\") and returns an array buffer (Uint8Array)\n * @param {string} hexString\n * @returns {Uint8Array}\n */\nfunction uint8arrayFromHexString(hexString) {\n var hexRegex = /^[0-9A-Fa-f]+$/;\n if (!hexString || hexString.length % 2 != 0 || !hexRegex.test(hexString)) {\n throw new Error(\"cannot create uint8array from invalid hex string\");\n }\n return new Uint8Array(hexString.match(/../g).map((h) => parseInt(h, 16)));\n}\n\n/**\n * Takes a Uint8Array and returns a hex string\n * @param {Uint8Array} buffer\n * @return {string}\n */\nfunction uint8arrayToHexString(buffer) {\n return [...buffer].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Decodes a base58-encoded string into a buffer\n * This function throws an error when the string contains invalid characters.\n * @param {string} s The base58-encoded string.\n * @return {Uint8Array} The decoded buffer.\n */\nfunction base58Decode(s) {\n // See https://en.bitcoin.it/wiki/Base58Check_encoding\n var alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\n var decodedBytes = [];\n var leadingZeros = [];\n for (var i = 0; i < s.length; i++) {\n if (alphabet.indexOf(s[i]) === -1) {\n throw new Error(`cannot base58-decode: ${s[i]} isn't a valid character`);\n }\n var carry = alphabet.indexOf(s[i]);\n\n // If the current base58 digit is 0, append a 0 byte.\n // \"i == leadingZeros.length\" can only be true if we have not seen non-zero bytes so far.\n // If we had seen a non-zero byte, carry wouldn't be 0, and i would be strictly more than `leadingZeros.length`\n if (carry == 0 && i === leadingZeros.length) {\n leadingZeros.push(0);\n }\n\n var j = 0;\n while (j < decodedBytes.length || carry > 0) {\n var currentByte = decodedBytes[j];\n\n // shift the current byte 58 units and add the carry amount\n // (or just add the carry amount if this is a new byte -- undefined case)\n if (currentByte === undefined) {\n currentByte = carry;\n } else {\n currentByte = currentByte * 58 + carry;\n }\n\n // find the new carry amount (1-byte shift of current byte value)\n carry = currentByte >> 8;\n // reset the current byte to the remainder (the carry amount will pass on the overflow)\n decodedBytes[j] = currentByte % 256;\n j++;\n }\n }\n\n var result = leadingZeros.concat(decodedBytes.reverse());\n return new Uint8Array(result);\n}\n\n/**\n * Decodes a base58check-encoded string and verifies the checksum.\n * Base58Check encoding includes a 4-byte checksum at the end to detect errors.\n * The checksum is the first 4 bytes of SHA256(SHA256(payload)).\n * This function throws an error if the checksum is invalid.\n * @param {string} s The base58check-encoded string.\n * @return {Promise} The decoded payload (without checksum).\n */\nasync function base58CheckDecode(s) {\n const decoded = base58Decode(s);\n\n if (decoded.length < 5) {\n throw new Error(\n `invalid base58check length: expected at least 5 bytes, got ${decoded.length}`\n );\n }\n\n const payload = decoded.subarray(0, decoded.length - 4);\n const checksum = decoded.subarray(decoded.length - 4);\n\n const subtle = getSubtleCrypto();\n if (!subtle) {\n throw new Error(\"WebCrypto subtle API is unavailable\");\n }\n\n // Compute double SHA256 hash\n const hash1Buf = await subtle.digest(\"SHA-256\", payload);\n const hash1 = new Uint8Array(hash1Buf);\n const hash2Buf = await subtle.digest(\"SHA-256\", hash1);\n const hash2 = new Uint8Array(hash2Buf);\n const computedChecksum = hash2.subarray(0, 4);\n\n // Verify checksum\n for (let i = 0; i < 4; i++) {\n if (checksum[i] !== computedChecksum[i]) {\n throw new Error(\"invalid base58check checksum\");\n }\n }\n\n return payload;\n}\n\n/**\n * Returns private key bytes from a private key, represented in\n * the encoding and format specified by `keyFormat`. Defaults to\n * hex-encoding if `keyFormat` isn't passed.\n * @param {string} privateKey\n * @param {string} keyFormat Can be \"HEXADECIMAL\", \"SUI_BECH32\", \"BITCOIN_MAINNET_WIF\", \"BITCOIN_TESTNET_WIF\" or \"SOLANA\"\n * @return {Promise}\n */\nasync function decodeKey(privateKey, keyFormat) {\n switch (keyFormat) {\n case \"SOLANA\": {\n const decodedKeyBytes = base58Decode(privateKey);\n if (decodedKeyBytes.length !== 64) {\n throw new Error(\n `invalid key length. Expected 64 bytes. Got ${decodedKeyBytes.length()}.`\n );\n }\n return decodedKeyBytes.subarray(0, 32);\n }\n case \"HEXADECIMAL\":\n if (privateKey.startsWith(\"0x\")) {\n return uint8arrayFromHexString(privateKey.slice(2));\n }\n return uint8arrayFromHexString(privateKey);\n case \"BITCOIN_MAINNET_WIF\":\n case \"BITCOIN_TESTNET_WIF\": {\n const payload = await base58CheckDecode(privateKey);\n\n const version = payload[0];\n const keyAndFlags = payload.subarray(1);\n\n // 0x80 = mainnet, 0xEF = testnet\n if (version !== 0x80 && version !== 0xef) {\n throw new Error(\n `invalid WIF version byte: ${version}. Expected 0x80 (mainnet) or 0xEF (testnet).`\n );\n }\n\n if (keyAndFlags.length === 32) {\n throw new Error(\n \"uncompressed WIF not supported; please use a compressed WIF key\"\n );\n }\n\n if (keyAndFlags.length === 33 && keyAndFlags[32] === 0x01) {\n return keyAndFlags.subarray(0, 32);\n }\n\n throw new Error(\"invalid WIF payload format\");\n }\n case \"SUI_BECH32\": {\n const { prefix, words } = bech32.decode(privateKey);\n\n if (prefix !== \"suiprivkey\") {\n throw new Error(\n `invalid SUI private key human-readable part (HRP): expected \"suiprivkey\"`\n );\n }\n\n const bytes = bech32.fromWords(words);\n if (bytes.length !== 33) {\n throw new Error(\n `invalid SUI private key length: expected 33 bytes, got ${bytes.length}`\n );\n }\n\n const schemeFlag = bytes[0];\n const privkey = bytes.slice(1);\n\n // schemeFlag = 0 is Ed25519; We currently only support Ed25519 keys for SUI.\n if (schemeFlag !== 0) {\n throw new Error(\n `invalid SUI private key scheme flag: expected 0 (Ed25519). Turnkey only supports Ed25519 keys for SUI.`\n );\n }\n\n return new Uint8Array(privkey);\n }\n default:\n console.warn(\n `invalid key format: ${keyFormat}. Defaulting to HEXADECIMAL.`\n );\n if (privateKey.startsWith(\"0x\")) {\n return uint8arrayFromHexString(privateKey.slice(2));\n }\n return uint8arrayFromHexString(privateKey);\n }\n}\n\nfunction setParentFrameMessageChannelPort(port) {\n parentFrameMessageChannelPort = port;\n}\n\n/**\n * Function to normalize padding of byte array with 0's to a target length\n */\nfunction normalizePadding(byteArray, targetLength) {\n const paddingLength = targetLength - byteArray.length;\n\n // Add leading 0's to array\n if (paddingLength > 0) {\n const padding = new Uint8Array(paddingLength).fill(0);\n return new Uint8Array([...padding, ...byteArray]);\n }\n\n // Remove leading 0's from array\n if (paddingLength < 0) {\n const expectedZeroCount = paddingLength * -1;\n let zeroCount = 0;\n for (let i = 0; i < expectedZeroCount && i < byteArray.length; i++) {\n if (byteArray[i] === 0) {\n zeroCount++;\n }\n }\n // Check if the number of zeros found equals the number of zeroes expected\n if (zeroCount !== expectedZeroCount) {\n throw new Error(\n `invalid number of starting zeroes. Expected number of zeroes: ${expectedZeroCount}. Found: ${zeroCount}.`\n );\n }\n return byteArray.slice(expectedZeroCount, expectedZeroCount + targetLength);\n }\n return byteArray;\n}\n\n/**\n * Additional Associated Data (AAD) in the format dictated by the enclave_encrypt crate.\n */\nfunction additionalAssociatedData(senderPubBuf, receiverPubBuf) {\n const s = Array.from(new Uint8Array(senderPubBuf));\n const r = Array.from(new Uint8Array(receiverPubBuf));\n return new Uint8Array([...s, ...r]);\n}\n\n/**\n * Converts an ASN.1 DER-encoded ECDSA signature to the raw format that WebCrypto uses.\n */\nfunction fromDerSignature(derSignature) {\n const derSignatureBuf = uint8arrayFromHexString(derSignature);\n\n // Check and skip the sequence tag (0x30)\n let index = 2;\n\n // Parse 'r' and check for integer tag (0x02)\n if (derSignatureBuf[index] !== 0x02) {\n throw new Error(\n \"failed to convert DER-encoded signature: invalid tag for r\"\n );\n }\n index++; // Move past the INTEGER tag\n const rLength = derSignatureBuf[index];\n index++; // Move past the length byte\n const r = derSignatureBuf.slice(index, index + rLength);\n index += rLength; // Move to the start of s\n\n // Parse 's' and check for integer tag (0x02)\n if (derSignatureBuf[index] !== 0x02) {\n throw new Error(\n \"failed to convert DER-encoded signature: invalid tag for s\"\n );\n }\n index++; // Move past the INTEGER tag\n const sLength = derSignatureBuf[index];\n index++; // Move past the length byte\n const s = derSignatureBuf.slice(index, index + sLength);\n\n // Normalize 'r' and 's' to 32 bytes each\n const rPadded = normalizePadding(r, 32);\n const sPadded = normalizePadding(s, 32);\n\n // Concatenate and return the raw signature\n return new Uint8Array([...rPadded, ...sPadded]);\n}\n\n/**\n * Function to verify enclave signature on import bundle received from the server.\n * @param {string} enclaveQuorumPublic uncompressed public key for the quorum key which produced the signature\n * @param {string} publicSignature signature bytes encoded as a hexadecimal string\n * @param {string} signedData signed bytes encoded as a hexadecimal string. This could be public key bytes directly, or JSON-encoded bytes\n */\nasync function verifyEnclaveSignature(\n enclaveQuorumPublic,\n publicSignature,\n signedData\n) {\n /** Turnkey Signer enclave's public keys */\n const TURNKEY_SIGNERS_ENCLAVES = {\n prod: \"04cf288fe433cc4e1aa0ce1632feac4ea26bf2f5a09dcfe5a42c398e06898710330f0572882f4dbdf0f5304b8fc8703acd69adca9a4bbf7f5d00d20a5e364b2569\",\n preprod:\n \"04f3422b8afbe425d6ece77b8d2469954715a2ff273ab7ac89f1ed70e0a9325eaa1698b4351fd1b23734e65c0b6a86b62dd49d70b37c94606aac402cbd84353212\",\n };\n\n const environment =\n (typeof window !== \"undefined\" && window.__TURNKEY_SIGNER_ENVIRONMENT__) ||\n \"__TURNKEY_SIGNER_ENVIRONMENT__\";\n const TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY =\n TURNKEY_SIGNERS_ENCLAVES[environment];\n if (TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY === undefined) {\n throw new Error(\n \"Configuration error: TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY is undefined\"\n );\n }\n\n // todo(olivia): throw error if enclave quorum public is null once server changes are deployed\n if (enclaveQuorumPublic) {\n if (enclaveQuorumPublic !== TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY) {\n throw new Error(\n `enclave quorum public keys from client and bundle do not match. Client: ${TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY}. Bundle: ${enclaveQuorumPublic}.`\n );\n }\n }\n\n const encryptionQuorumPublicBuf = new Uint8Array(\n uint8arrayFromHexString(TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY)\n );\n const quorumKey = await loadQuorumKey(encryptionQuorumPublicBuf);\n if (!quorumKey) {\n throw new Error(\"failed to load quorum key\");\n }\n\n // The ECDSA signature is ASN.1 DER encoded but WebCrypto uses raw format\n const publicSignatureBuf = fromDerSignature(publicSignature);\n const signedDataBuf = uint8arrayFromHexString(signedData);\n const subtle = getSubtleCrypto();\n if (!subtle) {\n throw new Error(\"WebCrypto subtle API is unavailable\");\n }\n return await subtle.verify(\n { name: \"ECDSA\", hash: \"SHA-256\" },\n quorumKey,\n publicSignatureBuf,\n signedDataBuf\n );\n}\n\n/**\n * Function to validate and sanitize the styles object using the accepted map of style keys and values (as regular expressions).\n * Any invalid style throws an error. Returns an object of valid styles.\n * @param {Object} styles\n * @return {Object}\n */\nfunction validateStyles(styles, element) {\n const validStyles = {};\n\n const cssValidationRegex = {\n padding: \"^(\\\\d+(px|em|%|rem) ?){1,4}$\",\n margin: \"^(\\\\d+(px|em|%|rem) ?){1,4}$\",\n borderWidth: \"^(\\\\d+(px|em|rem) ?){1,4}$\",\n borderStyle:\n \"^(none|solid|dashed|dotted|double|groove|ridge|inset|outset)$\",\n borderColor:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n borderRadius: \"^(\\\\d+(px|em|%|rem) ?){1,4}$\",\n fontSize: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax))$\",\n fontWeight: \"^(normal|bold|bolder|lighter|\\\\d{3})$\",\n fontFamily: '^[^\";<>]*$', // checks for the absence of some characters that could lead to CSS/HTML injection\n color:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n labelColor:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n backgroundColor:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n width: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$\",\n height: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$\",\n maxWidth: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$\",\n maxHeight:\n \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$\",\n lineHeight:\n \"^(\\\\d+(\\\\.\\\\d+)?(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|normal)$\",\n boxShadow:\n \"^(none|(\\\\d+(px|em|rem) ?){2,4} (#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)) ?(inset)?)$\",\n textAlign: \"^(left|right|center|justify|initial|inherit)$\",\n overflowWrap: \"^(normal|break-word|anywhere)$\",\n wordWrap: \"^(normal|break-word)$\",\n resize: \"^(none|both|horizontal|vertical|block|inline)$\",\n };\n\n Object.entries(styles).forEach(([property, value]) => {\n const styleProperty = property.trim();\n if (styleProperty.length === 0) {\n throw new Error(\"css style property cannot be empty\");\n }\n const styleRegexStr = cssValidationRegex[styleProperty];\n if (!styleRegexStr) {\n throw new Error(\n `invalid or unsupported css style property: \"${styleProperty}\"`\n );\n }\n const styleRegex = new RegExp(styleRegexStr);\n const styleValue = value.trim();\n if (styleValue.length == 0) {\n throw new Error(`css style for \"${styleProperty}\" is empty`);\n }\n const isValidStyle = styleRegex.test(styleValue);\n if (!isValidStyle) {\n throw new Error(\n `invalid css style value for property \"${styleProperty}\"`\n );\n }\n validStyles[styleProperty] = styleValue;\n });\n\n return validStyles;\n}\n\n/**\n * Function to apply settings on this page. For now, the only settings that can be applied\n * are for \"styles\". Upon successful application, return the valid, sanitized settings JSON string.\n * @param {string} settings\n * @return {string}\n */\nfunction applySettings(settings) {\n const validSettings = {};\n const settingsObj = JSON.parse(settings);\n\n const passphraseLabel = document.getElementById(\"passphrase-label\");\n const mnemonicLabel = document.getElementById(\"mnemonic-label\");\n const passphraseTextarea = document.getElementById(\"passphrase\");\n\n if (!passphraseLabel || !passphraseTextarea) {\n throw new Error(\"no passphrase HTML elements found to apply settings to.\");\n }\n const plaintextTextarea = document.getElementById(\"plaintext\");\n if (!plaintextTextarea) {\n throw new Error(\n \"no plaintext textarea HTML element found to apply settings to.\"\n );\n }\n\n // Apply enablePassphrase setting\n if (settingsObj.enablePassphrase === true) {\n passphraseLabel.style.display = \"inline-block\";\n passphraseTextarea.style.display = \"inline-block\";\n passphraseTextarea.style.border = \"solid 1px #ccc\";\n passphraseTextarea.style.borderRadius = \"4px\";\n\n mnemonicLabel.style.display = \"inline-block\";\n plaintextTextarea.style.border = \"solid 1px #ccc\";\n plaintextTextarea.style.borderRadius = \"4px\";\n\n validSettings[\"enablePassphrase\"] = true;\n } else {\n passphraseLabel.style.display = \"none\";\n passphraseTextarea.style.display = \"none\";\n mnemonicLabel.style.display = \"none\";\n\n plaintextTextarea.style.border = \"none\";\n validSettings[\"enablePassphrase\"] = false;\n }\n\n if (settingsObj.styles) {\n // Validate, sanitize, and apply the styles to the \"plaintext\" textarea.\n const validStyles = validateStyles(settingsObj.styles);\n Object.entries(validStyles).forEach(([key, value]) => {\n plaintextTextarea.style[key] = value;\n });\n\n if (validStyles.backgroundColor) {\n // Apply background color to document and body as well.\n document.documentElement.style.backgroundColor =\n validStyles.backgroundColor;\n document.body.style.backgroundColor = validStyles.backgroundColor;\n }\n\n if (validStyles.labelColor) {\n document.getElementById(\"mnemonic-label\").style.color =\n validStyles.labelColor;\n }\n\n validSettings[\"styles\"] = validStyles;\n }\n\n if (settingsObj.passphraseStyles) {\n // Validate, sanitize, and apply the styles to the \"passphrase\" textarea.\n const validStyles = validateStyles(settingsObj.passphraseStyles);\n Object.entries(validStyles).forEach(([key, value]) => {\n passphraseTextarea.style[key] = value;\n });\n\n if (validStyles.labelColor) {\n document.getElementById(\"passphrase-label\").style.color =\n validStyles.labelColor;\n }\n\n validSettings[\"passphraseStyles\"] = validStyles;\n }\n\n return JSON.stringify(validSettings);\n}\n\n/**\n * Function to send a message.\n *\n * If this page is embedded as an iframe we'll send a postMessage\n * in one of two ways depending on the version of @turnkey/iframe-stamper:\n * 1. newer versions (>=v2.1.0) pass a MessageChannel MessagePort from the parent frame for postMessages.\n * 2. older versions ({function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(){var e=s(),t=e.m(o),r=(Object.getPrototypeOf?Object.getPrototypeOf(t):t.__proto__).constructor;function n(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===r||"GeneratorFunction"===(t.displayName||t.name))}var f={throw:1,return:2,break:3,continue:3};function p(e){var t,r;return function(n){t||(t={stop:function(){return r(n.a,2)},catch:function(){return n.v},abrupt:function(e,t){return r(n.a,f[e],t)},delegateYield:function(e,o,i){return t.resultName=o,r(n.d,a(e),i)},finish:function(e){return r(n.f,e)}},r=function(e,r,o){n.p=t.prev,n.n=t.next;try{return e(r,o)}finally{t.next=n.n}}),t.resultName&&(t[t.resultName]=n.v,t.resultName=void 0),t.sent=n.v,t.next=n.n;try{return e.call(this,t)}finally{n.p=t.prev,n.n=t.next}}}return(o=function(){return{wrap:function(t,r,n,o){return e.w(p(t),r,n,o&&o.reverse())},isGeneratorFunction:n,mark:e.m,awrap:function(e,t){return new d(e,t)},AsyncIterator:l,async:function(e,t,r,o,a){return(n(t)?u:c)(p(e),t,r,o,a)},keys:i,values:a}})()}function a(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}throw new TypeError(n(e)+" is not iterable")}function i(e){var t=Object(e),r=[];for(var n in t)r.unshift(n);return function e(){for(;r.length;)if((n=r.pop())in t)return e.value=n,e.done=!1,e;return e.done=!0,e}}function c(e,t,r,n,o){var a=u(e,t,r,n,o);return a.next().then(function(e){return e.done?e.value:a.next()})}function u(e,t,r,n,o){return new l(s().w(e,t,r,n),o||Promise)}function l(e,t){function r(n,o,a,i){try{var c=e[n](o),u=c.value;return u instanceof d?t.resolve(u.v).then(function(e){r("next",e,a,i)},function(e){r("throw",e,a,i)}):t.resolve(u).then(function(e){c.value=e,a(c)},function(e){return r("throw",e,a,i)})}catch(e){i(e)}}var n;this.next||(f(l.prototype),f(l.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),f(this,"_invoke",function(e,o,a){function i(){return new t(function(t,n){r(e,a,t,n)})}return n=n?n.then(i,i):i()},!0)}function s(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof c?n:c,l=Object.create(u.prototype);return f(l,"_invoke",function(r,n,o){var a,c,u,l=0,s=o||[],f=!1,d={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,r){return a=t,c=0,u=e,d.n=r,i}};function p(r,n){for(c=r,u=n,t=0;!f&&l&&!o&&t3?(o=y===n)&&(u=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=e):a[0]<=p&&((o=r<2&&pn||n>y)&&(a[4]=r,a[5]=n,d.n=y,c=0))}if(o||r>1)return i;throw f=!0,n}return function(o,s,y){if(l>1)throw TypeError("Generator is already running");for(f&&1===s&&p(s,y),c=s,u=y;(t=c<2?e:u)||!f;){a||(c?c<3?(c>1&&(d.n=-1),p(c,u)):d.n=u:d.v=u);try{if(l=2,a){if(c||(o="next"),t=a[o]){if(!(t=t.call(a,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=a.return)&&t.call(a),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=e}else if((t=(f=d.n<0)?u:r.call(n,d))!==i)break}catch(t){a=e,c=1,u=t}finally{l=1}}return{value:t,done:f}}}(r,o,a),!0),l}var i={};function c(){}function u(){}function l(){}t=Object.getPrototypeOf;var d=[][n]?t(t([][n]())):(f(t={},n,function(){return this}),t),p=l.prototype=c.prototype=Object.create(d);function y(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,f(e,o,"GeneratorFunction")),e.prototype=Object.create(p),e}return u.prototype=l,f(p,"constructor",l),f(l,"constructor",u),u.displayName="GeneratorFunction",f(l,o,"GeneratorFunction"),f(p),f(p,o,"Generator"),f(p,n,function(){return this}),f(p,"toString",function(){return"[object Generator]"}),(s=function(){return{w:a,m:y}})()}function f(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}f=function(e,t,r,n){function a(t,r){f(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(a("next",0),a("throw",1),a("return",2))},f(e,t,r,n)}function d(e,t){this.v=e,this.k=t}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,c=[],u=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(e,t)||m(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||m(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){if(e){if("string"==typeof e)return b(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(e,t):void 0}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rM,applySettings:()=>Y,base58Decode:()=>R,decodeKey:()=>K,fromDerSignature:()=>B,getSettings:()=>j,getTargetEmbeddedKey:()=>N,loadTargetKey:()=>A,normalizePadding:()=>G,resetTargetEmbeddedKey:()=>_,sendMessageUp:()=>L,setCryptoProvider:()=>k,setParentFrameMessageChannelPort:()=>D,setSettings:()=>$,setTargetEmbeddedKey:()=>T,uint8arrayFromHexString:()=>P,uint8arrayToHexString:()=>U,validateStyles:()=>W,verifyEnclaveSignature:()=>F});var w="TURNKEY_TARGET_EMBEDDED_KEY",g="TURNKEY_SETTINGS",x=null,E=null;function S(){return E&&E.subtle?E.subtle:"undefined"!=typeof globalThis&&globalThis.crypto&&globalThis.crypto.subtle?globalThis.crypto.subtle:"undefined"!=typeof window&&window.crypto&&window.crypto.subtle?window.crypto.subtle:void 0!==r.g&&r.g.crypto&&r.g.crypto.subtle?r.g.crypto.subtle:"undefined"!=typeof crypto&&crypto.subtle?crypto.subtle:null}function k(e){E=e||null}function A(e){return I.apply(this,arguments)}function I(){return(I=h(o().mark(function e(t){var r,n;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=S()){e.next=3;break}throw new Error("WebCrypto subtle API is unavailable");case 3:return e.next=5,r.importKey("raw",t,{name:"ECDH",namedCurve:"P-256"},!0,[]);case 5:return n=e.sent,e.next=8,r.exportKey("jwk",n);case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}function O(e){return C.apply(this,arguments)}function C(){return(C=h(o().mark(function e(t){var r;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=S()){e.next=3;break}throw new Error("WebCrypto subtle API is unavailable");case 3:return e.next=5,r.importKey("raw",t,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function N(){var e=window.localStorage.getItem(w);return e?JSON.parse(e):null}function T(e){window.localStorage.setItem(w,JSON.stringify(e))}function _(){window.localStorage.removeItem(w)}function j(){var e=window.localStorage.getItem(g);return e?JSON.parse(e):null}function $(e){window.localStorage.setItem(g,JSON.stringify(e))}function P(e){if(!e||e.length%2!=0||!/^[0-9A-Fa-f]+$/.test(e))throw new Error("cannot create uint8array from invalid hex string");return new Uint8Array(e.match(/../g).map(function(e){return parseInt(e,16)}))}function U(e){return y(e).map(function(e){return e.toString(16).padStart(2,"0")}).join("")}function R(e){for(var t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",r=(BigInt(0),[]),n=[],o=0;o0;){var c=r[i];a=(c=void 0===c?a:58*c+a)>>8,r[i]=c%256,i++}}var u=n.concat(r.reverse());return new Uint8Array(u)}function K(e,t){switch(t){case"SOLANA":var r=R(e);if(64!==r.length)throw new Error("invalid key length. Expected 64 bytes. Got ".concat(r.length(),"."));return r.subarray(0,32);case"HEXADECIMAL":return e.startsWith("0x")?P(e.slice(2)):P(e);default:return console.warn("invalid key format: ".concat(t,". Defaulting to HEXADECIMAL.")),e.startsWith("0x")?P(e.slice(2)):P(e)}}function D(e){x=e}function G(e,t){var r=t-e.length;if(r>0){var n=new Uint8Array(r).fill(0);return new Uint8Array([].concat(y(n),y(e)))}if(r<0){for(var o=-1*r,a=0,i=0;i]*$',color:"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)|hsla?\\(\\d{1,3}, \\d{1,3}%, \\d{1,3}%(, \\d?(\\.\\d{1,2})?)?\\))$",labelColor:"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)|hsla?\\(\\d{1,3}, \\d{1,3}%, \\d{1,3}%(, \\d?(\\.\\d{1,2})?)?\\))$",backgroundColor:"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)|hsla?\\(\\d{1,3}, \\d{1,3}%, \\d{1,3}%(, \\d?(\\.\\d{1,2})?)?\\))$",width:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$",height:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$",maxWidth:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$",maxHeight:"^(\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$",lineHeight:"^(\\d+(\\.\\d+)?(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|normal)$",boxShadow:"^(none|(\\d+(px|em|rem) ?){2,4} (#[0-9a-f]{3,8}|rgba?\\(\\d{1,3}, \\d{1,3}, \\d{1,3}(, \\d?(\\.\\d{1,2})?)?\\)) ?(inset)?)$",textAlign:"^(left|right|center|justify|initial|inherit)$",overflowWrap:"^(normal|break-word|anywhere)$",wordWrap:"^(normal|break-word)$",resize:"^(none|both|horizontal|vertical|block|inline)$"};return Object.entries(e).forEach(function(e){var t=p(e,2),o=t[0],a=t[1],i=o.trim();if(0===i.length)throw new Error("css style property cannot be empty");var c=n[i];if(!c)throw new Error('invalid or unsupported css style property: "'.concat(i,'"'));var u=new RegExp(c),l=a.trim();if(0==l.length)throw new Error('css style for "'.concat(i,'" is empty'));if(!u.test(l))throw new Error('invalid css style value for property "'.concat(i,'"'));r[i]=l}),r}function Y(e){var t={},r=JSON.parse(e),n=document.getElementById("passphrase-label"),o=document.getElementById("mnemonic-label"),a=document.getElementById("passphrase");if(!n||!a)throw new Error("no passphrase HTML elements found to apply settings to.");var i=document.getElementById("plaintext");if(!i)throw new Error("no plaintext textarea HTML element found to apply settings to.");if(!0===r.enablePassphrase?(n.style.display="inline-block",a.style.display="inline-block",a.style.border="solid 1px #ccc",a.style.borderRadius="4px",o.style.display="inline-block",i.style.border="solid 1px #ccc",i.style.borderRadius="4px",t.enablePassphrase=!0):(n.style.display="none",a.style.display="none",o.style.display="none",i.style.border="none",t.enablePassphrase=!1),r.styles){var c=W(r.styles);Object.entries(c).forEach(function(e){var t=p(e,2),r=t[0],n=t[1];i.style[r]=n}),c.backgroundColor&&(document.documentElement.style.backgroundColor=c.backgroundColor,document.body.style.backgroundColor=c.backgroundColor),c.labelColor&&(document.getElementById("mnemonic-label").style.color=c.labelColor),t.styles=c}if(r.passphraseStyles){var u=W(r.passphraseStyles);Object.entries(u).forEach(function(e){var t=p(e,2),r=t[0],n=t[1];a.style[r]=n}),u.labelColor&&(document.getElementById("passphrase-label").style.color=u.labelColor),t.passphraseStyles=u}return JSON.stringify(t)}function L(e,t,r){var n={type:e,value:t};r&&(n.requestId=r),x?x.postMessage(n):window.parent!==window&&window.parent.postMessage({type:e,value:t},"*")}}}]); -//# sourceMappingURL=common.bundle.9407f0e3109ed80fba97.js.map \ No newline at end of file diff --git a/import/dist/common.bundle.9407f0e3109ed80fba97.js.map b/import/dist/common.bundle.9407f0e3109ed80fba97.js.map deleted file mode 100644 index cb57925..0000000 --- a/import/dist/common.bundle.9407f0e3109ed80fba97.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"common.bundle.9407f0e3109ed80fba97.js","mappings":"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","sources":["webpack://import/./src/turnkey-core.js"],"sourcesContent":["/** constants for LocalStorage */\nconst TURNKEY_TARGET_EMBEDDED_KEY = \"TURNKEY_TARGET_EMBEDDED_KEY\";\nconst TURNKEY_SETTINGS = \"TURNKEY_SETTINGS\";\n\nvar parentFrameMessageChannelPort = null;\nvar cryptoProviderOverride = null;\n\n/*\n * Returns a reference to the WebCrypto subtle interface regardless of the host environment.\n */\nfunction getSubtleCrypto() {\n if (cryptoProviderOverride && cryptoProviderOverride.subtle) {\n return cryptoProviderOverride.subtle;\n }\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.crypto &&\n globalThis.crypto.subtle\n ) {\n return globalThis.crypto.subtle;\n }\n if (typeof window !== \"undefined\" && window.crypto && window.crypto.subtle) {\n return window.crypto.subtle;\n }\n if (typeof global !== \"undefined\" && global.crypto && global.crypto.subtle) {\n return global.crypto.subtle;\n }\n if (typeof crypto !== \"undefined\" && crypto.subtle) {\n return crypto.subtle;\n }\n\n return null;\n}\n\n/*\n * Allows tests to explicitly set the crypto provider (e.g. crypto.webcrypto) when the runtime\n * environment does not expose one on the global/window objects.\n */\nfunction setCryptoProvider(cryptoProvider) {\n cryptoProviderOverride = cryptoProvider || null;\n}\n\n/*\n * Load a key to encrypt to as a CryptoKey and return it as a JSON Web Key.\n */\nasync function loadTargetKey(targetPublic) {\n const subtle = getSubtleCrypto();\n if (!subtle) {\n throw new Error(\"WebCrypto subtle API is unavailable\");\n }\n const targetKey = await subtle.importKey(\n \"raw\",\n targetPublic,\n {\n name: \"ECDH\",\n namedCurve: \"P-256\",\n },\n true,\n []\n );\n\n return await subtle.exportKey(\"jwk\", targetKey);\n}\n\n/*\n * Loads the quorum public key as a CryptoKey.\n */\nasync function loadQuorumKey(quorumPublic) {\n const subtle = getSubtleCrypto();\n if (!subtle) {\n throw new Error(\"WebCrypto subtle API is unavailable\");\n }\n return await subtle.importKey(\n \"raw\",\n quorumPublic,\n {\n name: \"ECDSA\",\n namedCurve: \"P-256\",\n },\n true,\n [\"verify\"]\n );\n}\n\n/**\n * Gets the current target embedded private key JWK. Returns `null` if not found.\n */\nfunction getTargetEmbeddedKey() {\n const jwtKey = window.localStorage.getItem(TURNKEY_TARGET_EMBEDDED_KEY);\n return jwtKey ? JSON.parse(jwtKey) : null;\n}\n\n/**\n * Sets the target embedded public key JWK.\n * @param {JsonWebKey} targetKey\n */\nfunction setTargetEmbeddedKey(targetKey) {\n window.localStorage.setItem(\n TURNKEY_TARGET_EMBEDDED_KEY,\n JSON.stringify(targetKey)\n );\n}\n\n/**\n * Resets the current target embedded private key JWK.\n */\nfunction resetTargetEmbeddedKey() {\n window.localStorage.removeItem(TURNKEY_TARGET_EMBEDDED_KEY);\n}\n\n/**\n * Gets the current settings.\n */\nfunction getSettings() {\n const settings = window.localStorage.getItem(TURNKEY_SETTINGS);\n return settings ? JSON.parse(settings) : null;\n}\n\n/**\n * Sets the settings object.\n * @param {Object} settings\n */\nfunction setSettings(settings) {\n window.localStorage.setItem(TURNKEY_SETTINGS, JSON.stringify(settings));\n}\n\n/**\n * Takes a hex string (e.g. \"e4567ab\") and returns an array buffer (Uint8Array)\n * @param {string} hexString\n * @returns {Uint8Array}\n */\nfunction uint8arrayFromHexString(hexString) {\n var hexRegex = /^[0-9A-Fa-f]+$/;\n if (!hexString || hexString.length % 2 != 0 || !hexRegex.test(hexString)) {\n throw new Error(\"cannot create uint8array from invalid hex string\");\n }\n return new Uint8Array(hexString.match(/../g).map((h) => parseInt(h, 16)));\n}\n\n/**\n * Takes a Uint8Array and returns a hex string\n * @param {Uint8Array} buffer\n * @return {string}\n */\nfunction uint8arrayToHexString(buffer) {\n return [...buffer].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Decodes a base58-encoded string into a buffer\n * This function throws an error when the string contains invalid characters.\n * @param {string} s The base58-encoded string.\n * @return {Uint8Array} The decoded buffer.\n */\nfunction base58Decode(s) {\n // See https://en.bitcoin.it/wiki/Base58Check_encoding\n var alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\n var decoded = BigInt(0);\n var decodedBytes = [];\n var leadingZeros = [];\n for (var i = 0; i < s.length; i++) {\n if (alphabet.indexOf(s[i]) === -1) {\n throw new Error(`cannot base58-decode: ${s[i]} isn't a valid character`);\n }\n var carry = alphabet.indexOf(s[i]);\n\n // If the current base58 digit is 0, append a 0 byte.\n // \"i == leadingZeros.length\" can only be true if we have not seen non-zero bytes so far.\n // If we had seen a non-zero byte, carry wouldn't be 0, and i would be strictly more than `leadingZeros.length`\n if (carry == 0 && i === leadingZeros.length) {\n leadingZeros.push(0);\n }\n\n var j = 0;\n while (j < decodedBytes.length || carry > 0) {\n var currentByte = decodedBytes[j];\n\n // shift the current byte 58 units and add the carry amount\n // (or just add the carry amount if this is a new byte -- undefined case)\n if (currentByte === undefined) {\n currentByte = carry;\n } else {\n currentByte = currentByte * 58 + carry;\n }\n\n // find the new carry amount (1-byte shift of current byte value)\n carry = currentByte >> 8;\n // reset the current byte to the remainder (the carry amount will pass on the overflow)\n decodedBytes[j] = currentByte % 256;\n j++;\n }\n }\n\n var result = leadingZeros.concat(decodedBytes.reverse());\n return new Uint8Array(result);\n}\n\n/**\n * Returns private key bytes from a private key, represented in\n * the encoding and format specified by `keyFormat`. Defaults to\n * hex-encoding if `keyFormat` isn't passed.\n * @param {string} privateKey\n * @param {string} keyFormat Can be \"HEXADECIMAL\" or \"SOLANA\"\n */\nfunction decodeKey(privateKey, keyFormat) {\n switch (keyFormat) {\n case \"SOLANA\": {\n const decodedKeyBytes = base58Decode(privateKey);\n if (decodedKeyBytes.length !== 64) {\n throw new Error(\n `invalid key length. Expected 64 bytes. Got ${decodedKeyBytes.length()}.`\n );\n }\n return decodedKeyBytes.subarray(0, 32);\n }\n case \"HEXADECIMAL\":\n if (privateKey.startsWith(\"0x\")) {\n return uint8arrayFromHexString(privateKey.slice(2));\n }\n return uint8arrayFromHexString(privateKey);\n default:\n console.warn(\n `invalid key format: ${keyFormat}. Defaulting to HEXADECIMAL.`\n );\n if (privateKey.startsWith(\"0x\")) {\n return uint8arrayFromHexString(privateKey.slice(2));\n }\n return uint8arrayFromHexString(privateKey);\n }\n}\n\nfunction setParentFrameMessageChannelPort(port) {\n parentFrameMessageChannelPort = port;\n}\n\n/**\n * Function to normalize padding of byte array with 0's to a target length\n */\nfunction normalizePadding(byteArray, targetLength) {\n const paddingLength = targetLength - byteArray.length;\n\n // Add leading 0's to array\n if (paddingLength > 0) {\n const padding = new Uint8Array(paddingLength).fill(0);\n return new Uint8Array([...padding, ...byteArray]);\n }\n\n // Remove leading 0's from array\n if (paddingLength < 0) {\n const expectedZeroCount = paddingLength * -1;\n let zeroCount = 0;\n for (let i = 0; i < expectedZeroCount && i < byteArray.length; i++) {\n if (byteArray[i] === 0) {\n zeroCount++;\n }\n }\n // Check if the number of zeros found equals the number of zeroes expected\n if (zeroCount !== expectedZeroCount) {\n throw new Error(\n `invalid number of starting zeroes. Expected number of zeroes: ${expectedZeroCount}. Found: ${zeroCount}.`\n );\n }\n return byteArray.slice(expectedZeroCount, expectedZeroCount + targetLength);\n }\n return byteArray;\n}\n\n/**\n * Additional Associated Data (AAD) in the format dictated by the enclave_encrypt crate.\n */\nfunction additionalAssociatedData(senderPubBuf, receiverPubBuf) {\n const s = Array.from(new Uint8Array(senderPubBuf));\n const r = Array.from(new Uint8Array(receiverPubBuf));\n return new Uint8Array([...s, ...r]);\n}\n\n/**\n * Converts an ASN.1 DER-encoded ECDSA signature to the raw format that WebCrypto uses.\n */\nfunction fromDerSignature(derSignature) {\n const derSignatureBuf = uint8arrayFromHexString(derSignature);\n\n // Check and skip the sequence tag (0x30)\n let index = 2;\n\n // Parse 'r' and check for integer tag (0x02)\n if (derSignatureBuf[index] !== 0x02) {\n throw new Error(\n \"failed to convert DER-encoded signature: invalid tag for r\"\n );\n }\n index++; // Move past the INTEGER tag\n const rLength = derSignatureBuf[index];\n index++; // Move past the length byte\n const r = derSignatureBuf.slice(index, index + rLength);\n index += rLength; // Move to the start of s\n\n // Parse 's' and check for integer tag (0x02)\n if (derSignatureBuf[index] !== 0x02) {\n throw new Error(\n \"failed to convert DER-encoded signature: invalid tag for s\"\n );\n }\n index++; // Move past the INTEGER tag\n const sLength = derSignatureBuf[index];\n index++; // Move past the length byte\n const s = derSignatureBuf.slice(index, index + sLength);\n\n // Normalize 'r' and 's' to 32 bytes each\n const rPadded = normalizePadding(r, 32);\n const sPadded = normalizePadding(s, 32);\n\n // Concatenate and return the raw signature\n return new Uint8Array([...rPadded, ...sPadded]);\n}\n\n/**\n * Function to verify enclave signature on import bundle received from the server.\n * @param {string} enclaveQuorumPublic uncompressed public key for the quorum key which produced the signature\n * @param {string} publicSignature signature bytes encoded as a hexadecimal string\n * @param {string} signedData signed bytes encoded as a hexadecimal string. This could be public key bytes directly, or JSON-encoded bytes\n */\nasync function verifyEnclaveSignature(\n enclaveQuorumPublic,\n publicSignature,\n signedData\n) {\n /** Turnkey Signer enclave's public keys */\n const TURNKEY_SIGNERS_ENCLAVES = {\n prod: \"04cf288fe433cc4e1aa0ce1632feac4ea26bf2f5a09dcfe5a42c398e06898710330f0572882f4dbdf0f5304b8fc8703acd69adca9a4bbf7f5d00d20a5e364b2569\",\n preprod:\n \"04f3422b8afbe425d6ece77b8d2469954715a2ff273ab7ac89f1ed70e0a9325eaa1698b4351fd1b23734e65c0b6a86b62dd49d70b37c94606aac402cbd84353212\",\n };\n\n const environment =\n (typeof window !== \"undefined\" && window.__TURNKEY_SIGNER_ENVIRONMENT__) ||\n \"__TURNKEY_SIGNER_ENVIRONMENT__\";\n const TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY =\n TURNKEY_SIGNERS_ENCLAVES[environment];\n if (TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY === undefined) {\n throw new Error(\n \"Configuration error: TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY is undefined\"\n );\n }\n\n // todo(olivia): throw error if enclave quorum public is null once server changes are deployed\n if (enclaveQuorumPublic) {\n if (enclaveQuorumPublic !== TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY) {\n throw new Error(\n `enclave quorum public keys from client and bundle do not match. Client: ${TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY}. Bundle: ${enclaveQuorumPublic}.`\n );\n }\n }\n\n const encryptionQuorumPublicBuf = new Uint8Array(\n uint8arrayFromHexString(TURNKEY_SIGNER_ENCLAVE_QUORUM_PUBLIC_KEY)\n );\n const quorumKey = await loadQuorumKey(encryptionQuorumPublicBuf);\n if (!quorumKey) {\n throw new Error(\"failed to load quorum key\");\n }\n\n // The ECDSA signature is ASN.1 DER encoded but WebCrypto uses raw format\n const publicSignatureBuf = fromDerSignature(publicSignature);\n const signedDataBuf = uint8arrayFromHexString(signedData);\n const subtle = getSubtleCrypto();\n if (!subtle) {\n throw new Error(\"WebCrypto subtle API is unavailable\");\n }\n return await subtle.verify(\n { name: \"ECDSA\", hash: \"SHA-256\" },\n quorumKey,\n publicSignatureBuf,\n signedDataBuf\n );\n}\n\n/**\n * Function to validate and sanitize the styles object using the accepted map of style keys and values (as regular expressions).\n * Any invalid style throws an error. Returns an object of valid styles.\n * @param {Object} styles\n * @return {Object}\n */\nfunction validateStyles(styles, element) {\n const validStyles = {};\n\n const cssValidationRegex = {\n padding: \"^(\\\\d+(px|em|%|rem) ?){1,4}$\",\n margin: \"^(\\\\d+(px|em|%|rem) ?){1,4}$\",\n borderWidth: \"^(\\\\d+(px|em|rem) ?){1,4}$\",\n borderStyle:\n \"^(none|solid|dashed|dotted|double|groove|ridge|inset|outset)$\",\n borderColor:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n borderRadius: \"^(\\\\d+(px|em|%|rem) ?){1,4}$\",\n fontSize: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax))$\",\n fontWeight: \"^(normal|bold|bolder|lighter|\\\\d{3})$\",\n fontFamily: '^[^\";<>]*$', // checks for the absence of some characters that could lead to CSS/HTML injection\n color:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n labelColor:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n backgroundColor:\n \"^(transparent|inherit|initial|#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)|hsla?\\\\(\\\\d{1,3}, \\\\d{1,3}%, \\\\d{1,3}%(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\))$\",\n width: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$\",\n height: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|auto)$\",\n maxWidth: \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$\",\n maxHeight:\n \"^(\\\\d+(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|none)$\",\n lineHeight:\n \"^(\\\\d+(\\\\.\\\\d+)?(px|em|rem|%|vh|vw|in|cm|mm|pt|pc|ex|ch|vmin|vmax)|normal)$\",\n boxShadow:\n \"^(none|(\\\\d+(px|em|rem) ?){2,4} (#[0-9a-f]{3,8}|rgba?\\\\(\\\\d{1,3}, \\\\d{1,3}, \\\\d{1,3}(, \\\\d?(\\\\.\\\\d{1,2})?)?\\\\)) ?(inset)?)$\",\n textAlign: \"^(left|right|center|justify|initial|inherit)$\",\n overflowWrap: \"^(normal|break-word|anywhere)$\",\n wordWrap: \"^(normal|break-word)$\",\n resize: \"^(none|both|horizontal|vertical|block|inline)$\",\n };\n\n Object.entries(styles).forEach(([property, value]) => {\n const styleProperty = property.trim();\n if (styleProperty.length === 0) {\n throw new Error(\"css style property cannot be empty\");\n }\n const styleRegexStr = cssValidationRegex[styleProperty];\n if (!styleRegexStr) {\n throw new Error(\n `invalid or unsupported css style property: \"${styleProperty}\"`\n );\n }\n const styleRegex = new RegExp(styleRegexStr);\n const styleValue = value.trim();\n if (styleValue.length == 0) {\n throw new Error(`css style for \"${styleProperty}\" is empty`);\n }\n const isValidStyle = styleRegex.test(styleValue);\n if (!isValidStyle) {\n throw new Error(\n `invalid css style value for property \"${styleProperty}\"`\n );\n }\n validStyles[styleProperty] = styleValue;\n });\n\n return validStyles;\n}\n\n/**\n * Function to apply settings on this page. For now, the only settings that can be applied\n * are for \"styles\". Upon successful application, return the valid, sanitized settings JSON string.\n * @param {string} settings\n * @return {string}\n */\nfunction applySettings(settings) {\n const validSettings = {};\n const settingsObj = JSON.parse(settings);\n\n const passphraseLabel = document.getElementById(\"passphrase-label\");\n const mnemonicLabel = document.getElementById(\"mnemonic-label\");\n const passphraseTextarea = document.getElementById(\"passphrase\");\n\n if (!passphraseLabel || !passphraseTextarea) {\n throw new Error(\"no passphrase HTML elements found to apply settings to.\");\n }\n const plaintextTextarea = document.getElementById(\"plaintext\");\n if (!plaintextTextarea) {\n throw new Error(\n \"no plaintext textarea HTML element found to apply settings to.\"\n );\n }\n\n // Apply enablePassphrase setting\n if (settingsObj.enablePassphrase === true) {\n passphraseLabel.style.display = \"inline-block\";\n passphraseTextarea.style.display = \"inline-block\";\n passphraseTextarea.style.border = \"solid 1px #ccc\";\n passphraseTextarea.style.borderRadius = \"4px\";\n\n mnemonicLabel.style.display = \"inline-block\";\n plaintextTextarea.style.border = \"solid 1px #ccc\";\n plaintextTextarea.style.borderRadius = \"4px\";\n\n validSettings[\"enablePassphrase\"] = true;\n } else {\n passphraseLabel.style.display = \"none\";\n passphraseTextarea.style.display = \"none\";\n mnemonicLabel.style.display = \"none\";\n\n plaintextTextarea.style.border = \"none\";\n validSettings[\"enablePassphrase\"] = false;\n }\n\n if (settingsObj.styles) {\n // Validate, sanitize, and apply the styles to the \"plaintext\" textarea.\n const validStyles = validateStyles(settingsObj.styles);\n Object.entries(validStyles).forEach(([key, value]) => {\n plaintextTextarea.style[key] = value;\n });\n\n if (validStyles.backgroundColor) {\n // Apply background color to document and body as well.\n document.documentElement.style.backgroundColor =\n validStyles.backgroundColor;\n document.body.style.backgroundColor = validStyles.backgroundColor;\n }\n\n if (validStyles.labelColor) {\n document.getElementById(\"mnemonic-label\").style.color =\n validStyles.labelColor;\n }\n\n validSettings[\"styles\"] = validStyles;\n }\n\n if (settingsObj.passphraseStyles) {\n // Validate, sanitize, and apply the styles to the \"passphrase\" textarea.\n const validStyles = validateStyles(settingsObj.passphraseStyles);\n Object.entries(validStyles).forEach(([key, value]) => {\n passphraseTextarea.style[key] = value;\n });\n\n if (validStyles.labelColor) {\n document.getElementById(\"passphrase-label\").style.color =\n validStyles.labelColor;\n }\n\n validSettings[\"passphraseStyles\"] = validStyles;\n }\n\n return JSON.stringify(validSettings);\n}\n\n/**\n * Function to send a message.\n *\n * If this page is embedded as an iframe we'll send a postMessage\n * in one of two ways depending on the version of @turnkey/iframe-stamper:\n * 1. newer versions (>=v2.1.0) pass a MessageChannel MessagePort from the parent frame for postMessages.\n * 2. older versions ({"use strict";var e,t,r,n,a,o={954:(e,t,r)=>{var n=r(255),a=r(482);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function u(e){for(var t=1;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}throw new TypeError(o(e)+" is not iterable")}function p(e){var t=Object(e),r=[];for(var n in t)r.unshift(n);return function e(){for(;r.length;)if((n=r.pop())in t)return e.value=n,e.done=!1,e;return e.done=!0,e}}function l(e,t,r,n,a){var o=d(e,t,r,n,a);return o.next().then(function(e){return e.done?e.value:o.next()})}function d(e,t,r,n,a){return new v(y().w(e,t,r,n),a||Promise)}function v(e,t){function r(n,a,o,i){try{var u=e[n](a),c=u.value;return c instanceof m?t.resolve(c.v).then(function(e){r("next",e,o,i)},function(e){r("throw",e,o,i)}):t.resolve(c).then(function(e){u.value=e,o(u)},function(e){return r("throw",e,o,i)})}catch(e){i(e)}}var n;this.next||(b(v.prototype),b(v.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),b(this,"_invoke",function(e,a,o){function i(){return new t(function(t,n){r(e,o,t,n)})}return n=n?n.then(i,i):i()},!0)}function y(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function o(r,n,a,o){var c=n&&n.prototype instanceof u?n:u,s=Object.create(c.prototype);return b(s,"_invoke",function(r,n,a){var o,u,c,s=0,f=a||[],p=!1,l={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return o=t,u=0,c=e,l.n=r,i}};function d(r,n){for(u=r,c=n,t=0;!p&&s&&!a&&t3?(a=v===n)&&(c=o[(u=o[4])?5:(u=3,3)],o[4]=o[5]=e):o[0]<=d&&((a=r<2&&dn||n>v)&&(o[4]=r,o[5]=n,l.n=v,u=0))}if(a||r>1)return i;throw p=!0,n}return function(a,f,v){if(s>1)throw TypeError("Generator is already running");for(p&&1===f&&d(f,v),u=f,c=v;(t=u<2?e:c)||!p;){o||(u?u<3?(u>1&&(l.n=-1),d(u,c)):l.n=c:l.v=c);try{if(s=2,o){if(u||(a="next"),t=o[a]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=o.return)&&t.call(o),u<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),u=1);o=e}else if((t=(p=l.n<0)?c:r.call(n,l))!==i)break}catch(t){o=e,u=1,c=t}finally{s=1}}return{value:t,done:p}}}(r,a,o),!0),s}var i={};function u(){}function c(){}function s(){}t=Object.getPrototypeOf;var f=[][n]?t(t([][n]())):(b(t={},n,function(){return this}),t),p=s.prototype=u.prototype=Object.create(f);function l(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,b(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=s,b(p,"constructor",s),b(s,"constructor",c),c.displayName="GeneratorFunction",b(s,a,"GeneratorFunction"),b(p),b(p,a,"Generator"),b(p,n,function(){return this}),b(p,"toString",function(){return"[object Generator]"}),(y=function(){return{w:o,m:l}})()}function b(e,t,r,n){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}b=function(e,t,r,n){function o(t,r){b(e,t,function(e){return this._invoke(t,r,e)})}t?a?a(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(o("next",0),o("throw",1),o("return",2))},b(e,t,r,n)}function m(e,t){this.v=e,this.k=t}function h(e,t,r,n,a,o,i){try{var u=e[o](i),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,a)}function w(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function i(e){h(o,n,a,i,u,"next",e)}function u(e){h(o,n,a,i,u,"throw",e)}i(void 0)})}}window.TKHQ=a;var g=null,x=new AbortController,E=new AbortController,k=function(){var e=w(s().mark(function e(t){return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.data||"INJECT_IMPORT_BUNDLE"!=t.data.type){e.next=9;break}return e.prev=1,e.next=4,S(t.data.value,t.data.organizationId,t.data.userId,t.data.requestId);case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),a.sendMessageUp("ERROR",e.t0.toString(),t.data.requestId);case 9:if(!t.data||"EXTRACT_WALLET_ENCRYPTED_BUNDLE"!=t.data.type){e.next=18;break}return e.prev=10,e.next=13,T(t.data.requestId);case 13:e.next=18;break;case 15:e.prev=15,e.t1=e.catch(10),a.sendMessageUp("ERROR",e.t1.toString(),t.data.requestId);case 18:if(!t.data||"EXTRACT_KEY_ENCRYPTED_BUNDLE"!=t.data.type){e.next=27;break}return e.prev=19,e.next=22,_(t.data.keyFormat,t.data.requestId);case 22:e.next=27;break;case 24:e.prev=24,e.t2=e.catch(19),a.sendMessageUp("ERROR",e.t2.toString(),t.data.requestId);case 27:if(!t.data||"APPLY_SETTINGS"!=t.data.type){e.next=36;break}return e.prev=28,e.next=31,N(t.data.value,t.data.requestId);case 31:e.next=36;break;case 33:e.prev=33,e.t3=e.catch(28),a.sendMessageUp("ERROR",e.t3.toString(),t.data.requestId);case 36:case"end":return e.stop()}},e,null,[[1,6],[10,15],[19,24],[28,33]])}));return function(t){return e.apply(this,arguments)}}();function O(e){if(e.includes("\n--PASS--\n"))throw new Error('mnemonic cannot include the string "\\n--PASS--\\n"');if(e.includes("\n"))throw new Error("mnemonic cannot include newline characters")}function S(e,t,r,n){return P.apply(this,arguments)}function P(){return(P=w(s().mark(function e(t,r,n,o){var i,u,c,f;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:u=JSON.parse(t),e.t0=u.version,e.next="v1.0.0"===e.t0?4:34;break;case 4:if(u.data){e.next=6;break}throw new Error('missing "data" in bundle');case 6:if(u.dataSignature){e.next=8;break}throw new Error('missing "dataSignature" in bundle');case 8:if(u.enclaveQuorumPublic){e.next=10;break}throw new Error('missing "enclaveQuorumPublic" in bundle');case 10:if(a.verifyEnclaveSignature){e.next=12;break}throw new Error("method not loaded");case 12:return e.next=14,a.verifyEnclaveSignature(u.enclaveQuorumPublic,u.dataSignature,u.data);case 14:if(e.sent){e.next=17;break}throw new Error("failed to verify enclave signature: ".concat(t));case 17:if(c=JSON.parse((new TextDecoder).decode(a.uint8arrayFromHexString(u.data))),r){e.next=22;break}console.warn('we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass "organizationId" for security purposes.'),e.next=24;break;case 22:if(c.organizationId&&c.organizationId===r){e.next=24;break}throw new Error("organization id does not match expected value. Expected: ".concat(r,". Found: ").concat(c.organizationId,"."));case 24:if(n){e.next=28;break}console.warn('we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass "userId" for security purposes.'),e.next=30;break;case 28:if(c.userId&&c.userId===n){e.next=30;break}throw new Error("user id does not match expected value. Expected: ".concat(n,". Found: ").concat(c.userId,"."));case 30:if(c.targetPublic){e.next=32;break}throw new Error('missing "targetPublic" in bundle signed data');case 32:return i=a.uint8arrayFromHexString(c.targetPublic),e.abrupt("break",35);case 34:throw new Error("unsupported version: ".concat(u.version));case 35:return e.next=37,a.loadTargetKey(new Uint8Array(i));case 37:f=e.sent,a.setTargetEmbeddedKey(f),a.sendMessageUp("BUNDLE_INJECTED",!0,o);case 40:case"end":return e.stop()}},e)}))).apply(this,arguments)}function T(e){return j.apply(this,arguments)}function j(){return(j=w(s().mark(function e(t){var r,n,o,i,u,c;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(r=a.getTargetEmbeddedKey())){e.next=3;break}throw new Error("no target key found");case 3:if(n=document.getElementById("plaintext").value.trim()){e.next=6;break}throw new Error("no wallet mnemonic entered");case 6:return o=document.getElementById("passphrase").value,O(n),i=""===o?n:"".concat(n,"\n--PASS--\n").concat(o),u=(new TextEncoder).encode(i),e.next=12,C({plaintextBuf:u,receiverPubJwk:r});case 12:c=e.sent,a.resetTargetEmbeddedKey(),a.sendMessageUp("ENCRYPTED_BUNDLE_EXTRACTED",c,t);case 15:case"end":return e.stop()}},e)}))).apply(this,arguments)}function _(e,t){return I.apply(this,arguments)}function I(){return(I=w(s().mark(function e(t,r){var n,o,i,u;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(n=a.getTargetEmbeddedKey())){e.next=3;break}throw new Error("no target key found");case 3:if(o=document.getElementById("plaintext").value.trim()){e.next=6;break}throw new Error("no private key entered");case 6:return i=a.decodeKey(o,t),e.next=9,C({plaintextBuf:i,receiverPubJwk:n});case 9:u=e.sent,a.resetTargetEmbeddedKey(),a.sendMessageUp("ENCRYPTED_BUNDLE_EXTRACTED",u,r);case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}function N(e,t){return A.apply(this,arguments)}function A(){return(A=w(s().mark(function e(t,r){var n;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=a.applySettings(t),a.setSettings(n),a.sendMessageUp("SETTINGS_APPLIED",!0,r);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function C(e){return R.apply(this,arguments)}function R(){return(R=w(s().mark(function e(t){var r,o,i,c,f,p,l,d,v,y,b,m,h,w,g;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.plaintextBuf,o=t.receiverPubJwk,i=new n.RG,e.next=4,i.importKey("jwk",u({},o),!0);case 4:return c=e.sent,f=new n.GR({kem:i,kdf:new n.v7,aead:new n.ws}),e.next=8,f.createSenderContext({recipientPublicKey:c,info:(new TextEncoder).encode("turnkey_hpke")});case 8:return p=e.sent,e.next=11,crypto.subtle.importKey("jwk",o,{name:"ECDSA",namedCurve:"P-256"},!0,[]);case 11:return l=e.sent,e.next=14,crypto.subtle.exportKey("raw",l);case 14:return d=e.sent,v=new Uint8Array(d),y=new Uint8Array(p.enc),b=a.additionalAssociatedData(y,v),e.prev=18,e.next=21,p.seal(r,b);case 21:m=e.sent,e.next=27;break;case 24:throw e.prev=24,e.t0=e.catch(18),new Error("failed to encrypt import bundle: "+e.t0.toString());case 27:return h=a.uint8arrayToHexString(new Uint8Array(m)),w=a.uint8arrayToHexString(y),g=JSON.stringify({encappedPublic:w,ciphertext:h}),e.abrupt("return",g);case 31:case"end":return e.stop()}},e,null,[[18,24]])}))).apply(this,arguments)}document.addEventListener("DOMContentLoaded",w(s().mark(function e(){var t,r;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(window.addEventListener("message",k,{capture:!1,signal:x.signal}),x.signal.aborted){e.next=9;break}if((t=a.getSettings())&&a.applySettings(t),a.sendMessageUp("PUBLIC_KEY_READY",""),r=document.getElementById("plaintext")){e.next=8;break}return e.abrupt("return");case 8:r.addEventListener("paste",w(s().mark(function e(){var t;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.permissions.query({name:"clipboard-write"}).catch(function(){return null});case 3:if("granted"!==(null==(t=e.sent)?void 0:t.state)&&"prompt"!==(null==t?void 0:t.state)){e.next=7;break}return e.next=7,navigator.clipboard.writeText("");case 7:e.next=11;break;case 9:e.prev=9,e.t0=e.catch(0);case 11:case"end":return e.stop()}},e,null,[[0,9]])})));case 9:case"end":return e.stop()}},e)})),!1),window.addEventListener("message",function(){var e=w(s().mark(function e(t){var r;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t.data&&"TURNKEY_INIT_MESSAGE_CHANNEL"==t.data.type&&null!==(r=t.ports)&&void 0!==r&&r[0]&&(x.abort(),(g=t.ports[0]).onmessage=k,a.setParentFrameMessageChannelPort(g),a.sendMessageUp("PUBLIC_KEY_READY",""),E.abort());case 1:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),{signal:E.signal})}},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={exports:{}};return o[e](r,r.exports,u),r.exports}u.m=o,e=[],u.O=(t,r,n,a)=>{if(!r){var o=1/0;for(f=0;f=a)&&Object.keys(u.O).every(e=>u.O[e](r[c]))?r.splice(c--,1):(i=!1,a0&&e[f-1][2]>a;f--)e[f]=e[f-1];e[f]=[r,n,a]},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,u.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var a=Object.create(null);u.r(a);var o={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;("object"==typeof i||"function"==typeof i)&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(t=>o[t]=()=>e[t]);return o.default=()=>e,u.d(a,o),a},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.f={},u.e=e=>Promise.all(Object.keys(u.f).reduce((t,r)=>(u.f[r](e,t),t),[])),u.u=e=>e+".bundle."+{291:"b62abe64ba4ebf68e89b",825:"3a4aff0e743a7540fe25"}[e]+".js",u.miniCssF=e=>{},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},a="import:",u.l=(e,t,r,o)=>{if(n[e])n[e].push(t);else{var i,c;if(void 0!==r)for(var s=document.getElementsByTagName("script"),f=0;f{i.onerror=i.onload=null,clearTimeout(d);var a=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach(e=>e(r)),t)return t(r)},d=setTimeout(l.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=l.bind(null,i.onerror),i.onload=l.bind(null,i.onload),c&&document.head.appendChild(i)}},u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.p="/",(()=>{var e={57:0};u.f.j=(t,r)=>{var n=u.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var a=new Promise((r,a)=>n=e[t]=[r,a]);r.push(n[2]=a);var o=u.p+u.u(t),i=new Error;u.l(o,r=>{if(u.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",i.name="ChunkLoadError",i.type=a,i.request=o,n[1](i)}},"chunk-"+t,t)}},u.O.j=t=>0===e[t];var t=(t,r)=>{var n,a,[o,i,c]=r,s=0;if(o.some(t=>0!==e[t])){for(n in i)u.o(i,n)&&(u.m[n]=i[n]);if(c)var f=c(u)}for(t&&t(r);su(954));c=u.O(c)})(); -//# sourceMappingURL=index.bundle.fa4b8f8eab66cd51d789.js.map \ No newline at end of file +/*! For license information please see index.bundle.5eade4e4daa25d7588e3.js.LICENSE.txt */ +(()=>{"use strict";var e,t,r,n,a,o={954:(e,t,r)=>{var n=r(255),a=r(482);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function u(e){for(var t=1;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}throw new TypeError(o(e)+" is not iterable")}function p(e){var t=Object(e),r=[];for(var n in t)r.unshift(n);return function e(){for(;r.length;)if((n=r.pop())in t)return e.value=n,e.done=!1,e;return e.done=!0,e}}function l(e,t,r,n,a){var o=d(e,t,r,n,a);return o.next().then(function(e){return e.done?e.value:o.next()})}function d(e,t,r,n,a){return new v(y().w(e,t,r,n),a||Promise)}function v(e,t){function r(n,a,o,i){try{var u=e[n](a),c=u.value;return c instanceof m?t.resolve(c.v).then(function(e){r("next",e,o,i)},function(e){r("throw",e,o,i)}):t.resolve(c).then(function(e){u.value=e,o(u)},function(e){return r("throw",e,o,i)})}catch(e){i(e)}}var n;this.next||(b(v.prototype),b(v.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),b(this,"_invoke",function(e,a,o){function i(){return new t(function(t,n){r(e,o,t,n)})}return n=n?n.then(i,i):i()},!0)}function y(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function o(r,n,a,o){var c=n&&n.prototype instanceof u?n:u,s=Object.create(c.prototype);return b(s,"_invoke",function(r,n,a){var o,u,c,s=0,f=a||[],p=!1,l={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return o=t,u=0,c=e,l.n=r,i}};function d(r,n){for(u=r,c=n,t=0;!p&&s&&!a&&t3?(a=v===n)&&(c=o[(u=o[4])?5:(u=3,3)],o[4]=o[5]=e):o[0]<=d&&((a=r<2&&dn||n>v)&&(o[4]=r,o[5]=n,l.n=v,u=0))}if(a||r>1)return i;throw p=!0,n}return function(a,f,v){if(s>1)throw TypeError("Generator is already running");for(p&&1===f&&d(f,v),u=f,c=v;(t=u<2?e:c)||!p;){o||(u?u<3?(u>1&&(l.n=-1),d(u,c)):l.n=c:l.v=c);try{if(s=2,o){if(u||(a="next"),t=o[a]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=o.return)&&t.call(o),u<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),u=1);o=e}else if((t=(p=l.n<0)?c:r.call(n,l))!==i)break}catch(t){o=e,u=1,c=t}finally{s=1}}return{value:t,done:p}}}(r,a,o),!0),s}var i={};function u(){}function c(){}function s(){}t=Object.getPrototypeOf;var f=[][n]?t(t([][n]())):(b(t={},n,function(){return this}),t),p=s.prototype=u.prototype=Object.create(f);function l(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,b(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=s,b(p,"constructor",s),b(s,"constructor",c),c.displayName="GeneratorFunction",b(s,a,"GeneratorFunction"),b(p),b(p,a,"Generator"),b(p,n,function(){return this}),b(p,"toString",function(){return"[object Generator]"}),(y=function(){return{w:o,m:l}})()}function b(e,t,r,n){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}b=function(e,t,r,n){function o(t,r){b(e,t,function(e){return this._invoke(t,r,e)})}t?a?a(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(o("next",0),o("throw",1),o("return",2))},b(e,t,r,n)}function m(e,t){this.v=e,this.k=t}function h(e,t,r,n,a,o,i){try{var u=e[o](i),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,a)}function w(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function i(e){h(o,n,a,i,u,"next",e)}function u(e){h(o,n,a,i,u,"throw",e)}i(void 0)})}}window.TKHQ=a;var g=null,x=new AbortController,E=new AbortController,k=function(){var e=w(s().mark(function e(t){return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.data||"INJECT_IMPORT_BUNDLE"!=t.data.type){e.next=9;break}return e.prev=1,e.next=4,S(t.data.value,t.data.organizationId,t.data.userId,t.data.requestId);case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),a.sendMessageUp("ERROR",e.t0.toString(),t.data.requestId);case 9:if(!t.data||"EXTRACT_WALLET_ENCRYPTED_BUNDLE"!=t.data.type){e.next=18;break}return e.prev=10,e.next=13,T(t.data.requestId);case 13:e.next=18;break;case 15:e.prev=15,e.t1=e.catch(10),a.sendMessageUp("ERROR",e.t1.toString(),t.data.requestId);case 18:if(!t.data||"EXTRACT_KEY_ENCRYPTED_BUNDLE"!=t.data.type){e.next=27;break}return e.prev=19,e.next=22,_(t.data.keyFormat,t.data.requestId);case 22:e.next=27;break;case 24:e.prev=24,e.t2=e.catch(19),a.sendMessageUp("ERROR",e.t2.toString(),t.data.requestId);case 27:if(!t.data||"APPLY_SETTINGS"!=t.data.type){e.next=36;break}return e.prev=28,e.next=31,N(t.data.value,t.data.requestId);case 31:e.next=36;break;case 33:e.prev=33,e.t3=e.catch(28),a.sendMessageUp("ERROR",e.t3.toString(),t.data.requestId);case 36:case"end":return e.stop()}},e,null,[[1,6],[10,15],[19,24],[28,33]])}));return function(t){return e.apply(this,arguments)}}();function O(e){if(e.includes("\n--PASS--\n"))throw new Error('mnemonic cannot include the string "\\n--PASS--\\n"');if(e.includes("\n"))throw new Error("mnemonic cannot include newline characters")}function S(e,t,r,n){return P.apply(this,arguments)}function P(){return(P=w(s().mark(function e(t,r,n,o){var i,u,c,f;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:u=JSON.parse(t),e.t0=u.version,e.next="v1.0.0"===e.t0?4:34;break;case 4:if(u.data){e.next=6;break}throw new Error('missing "data" in bundle');case 6:if(u.dataSignature){e.next=8;break}throw new Error('missing "dataSignature" in bundle');case 8:if(u.enclaveQuorumPublic){e.next=10;break}throw new Error('missing "enclaveQuorumPublic" in bundle');case 10:if(a.verifyEnclaveSignature){e.next=12;break}throw new Error("method not loaded");case 12:return e.next=14,a.verifyEnclaveSignature(u.enclaveQuorumPublic,u.dataSignature,u.data);case 14:if(e.sent){e.next=17;break}throw new Error("failed to verify enclave signature: ".concat(t));case 17:if(c=JSON.parse((new TextDecoder).decode(a.uint8arrayFromHexString(u.data))),r){e.next=22;break}console.warn('we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass "organizationId" for security purposes.'),e.next=24;break;case 22:if(c.organizationId&&c.organizationId===r){e.next=24;break}throw new Error("organization id does not match expected value. Expected: ".concat(r,". Found: ").concat(c.organizationId,"."));case 24:if(n){e.next=28;break}console.warn('we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass "userId" for security purposes.'),e.next=30;break;case 28:if(c.userId&&c.userId===n){e.next=30;break}throw new Error("user id does not match expected value. Expected: ".concat(n,". Found: ").concat(c.userId,"."));case 30:if(c.targetPublic){e.next=32;break}throw new Error('missing "targetPublic" in bundle signed data');case 32:return i=a.uint8arrayFromHexString(c.targetPublic),e.abrupt("break",35);case 34:throw new Error("unsupported version: ".concat(u.version));case 35:return e.next=37,a.loadTargetKey(new Uint8Array(i));case 37:f=e.sent,a.setTargetEmbeddedKey(f),a.sendMessageUp("BUNDLE_INJECTED",!0,o);case 40:case"end":return e.stop()}},e)}))).apply(this,arguments)}function T(e){return j.apply(this,arguments)}function j(){return(j=w(s().mark(function e(t){var r,n,o,i,u,c;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(r=a.getTargetEmbeddedKey())){e.next=3;break}throw new Error("no target key found");case 3:if(n=document.getElementById("plaintext").value.trim()){e.next=6;break}throw new Error("no wallet mnemonic entered");case 6:return o=document.getElementById("passphrase").value,O(n),i=""===o?n:"".concat(n,"\n--PASS--\n").concat(o),u=(new TextEncoder).encode(i),e.next=12,C({plaintextBuf:u,receiverPubJwk:r});case 12:c=e.sent,a.resetTargetEmbeddedKey(),a.sendMessageUp("ENCRYPTED_BUNDLE_EXTRACTED",c,t);case 15:case"end":return e.stop()}},e)}))).apply(this,arguments)}function _(e,t){return I.apply(this,arguments)}function I(){return(I=w(s().mark(function e(t,r){var n,o,i,u;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(n=a.getTargetEmbeddedKey())){e.next=3;break}throw new Error("no target key found");case 3:if(o=document.getElementById("plaintext").value.trim()){e.next=6;break}throw new Error("no private key entered");case 6:return e.next=8,a.decodeKey(o,t);case 8:return i=e.sent,e.next=11,C({plaintextBuf:i,receiverPubJwk:n});case 11:u=e.sent,a.resetTargetEmbeddedKey(),a.sendMessageUp("ENCRYPTED_BUNDLE_EXTRACTED",u,r);case 14:case"end":return e.stop()}},e)}))).apply(this,arguments)}function N(e,t){return A.apply(this,arguments)}function A(){return(A=w(s().mark(function e(t,r){var n;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=a.applySettings(t),a.setSettings(n),a.sendMessageUp("SETTINGS_APPLIED",!0,r);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function C(e){return R.apply(this,arguments)}function R(){return(R=w(s().mark(function e(t){var r,o,i,c,f,p,l,d,v,y,b,m,h,w,g;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.plaintextBuf,o=t.receiverPubJwk,i=new n.RG,e.next=4,i.importKey("jwk",u({},o),!0);case 4:return c=e.sent,f=new n.GR({kem:i,kdf:new n.v7,aead:new n.ws}),e.next=8,f.createSenderContext({recipientPublicKey:c,info:(new TextEncoder).encode("turnkey_hpke")});case 8:return p=e.sent,e.next=11,crypto.subtle.importKey("jwk",o,{name:"ECDSA",namedCurve:"P-256"},!0,[]);case 11:return l=e.sent,e.next=14,crypto.subtle.exportKey("raw",l);case 14:return d=e.sent,v=new Uint8Array(d),y=new Uint8Array(p.enc),b=a.additionalAssociatedData(y,v),e.prev=18,e.next=21,p.seal(r,b);case 21:m=e.sent,e.next=27;break;case 24:throw e.prev=24,e.t0=e.catch(18),new Error("failed to encrypt import bundle: "+e.t0.toString());case 27:return h=a.uint8arrayToHexString(new Uint8Array(m)),w=a.uint8arrayToHexString(y),g=JSON.stringify({encappedPublic:w,ciphertext:h}),e.abrupt("return",g);case 31:case"end":return e.stop()}},e,null,[[18,24]])}))).apply(this,arguments)}document.addEventListener("DOMContentLoaded",w(s().mark(function e(){var t,r;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(window.addEventListener("message",k,{capture:!1,signal:x.signal}),x.signal.aborted){e.next=9;break}if((t=a.getSettings())&&a.applySettings(t),a.sendMessageUp("PUBLIC_KEY_READY",""),r=document.getElementById("plaintext")){e.next=8;break}return e.abrupt("return");case 8:r.addEventListener("paste",w(s().mark(function e(){var t;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.permissions.query({name:"clipboard-write"}).catch(function(){return null});case 3:if("granted"!==(null==(t=e.sent)?void 0:t.state)&&"prompt"!==(null==t?void 0:t.state)){e.next=7;break}return e.next=7,navigator.clipboard.writeText("");case 7:e.next=11;break;case 9:e.prev=9,e.t0=e.catch(0);case 11:case"end":return e.stop()}},e,null,[[0,9]])})));case 9:case"end":return e.stop()}},e)})),!1),window.addEventListener("message",function(){var e=w(s().mark(function e(t){var r;return s().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t.data&&"TURNKEY_INIT_MESSAGE_CHANNEL"==t.data.type&&null!==(r=t.ports)&&void 0!==r&&r[0]&&(x.abort(),(g=t.ports[0]).onmessage=k,a.setParentFrameMessageChannelPort(g),a.sendMessageUp("PUBLIC_KEY_READY",""),E.abort());case 1:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),{signal:E.signal})}},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={exports:{}};return o[e](r,r.exports,u),r.exports}u.m=o,e=[],u.O=(t,r,n,a)=>{if(!r){var o=1/0;for(f=0;f=a)&&Object.keys(u.O).every(e=>u.O[e](r[c]))?r.splice(c--,1):(i=!1,a0&&e[f-1][2]>a;f--)e[f]=e[f-1];e[f]=[r,n,a]},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,u.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var a=Object.create(null);u.r(a);var o={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;("object"==typeof i||"function"==typeof i)&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(t=>o[t]=()=>e[t]);return o.default=()=>e,u.d(a,o),a},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.f={},u.e=e=>Promise.all(Object.keys(u.f).reduce((t,r)=>(u.f[r](e,t),t),[])),u.u=e=>e+".bundle."+{291:"b62abe64ba4ebf68e89b",825:"3a4aff0e743a7540fe25"}[e]+".js",u.miniCssF=e=>{},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},a="import:",u.l=(e,t,r,o)=>{if(n[e])n[e].push(t);else{var i,c;if(void 0!==r)for(var s=document.getElementsByTagName("script"),f=0;f{i.onerror=i.onload=null,clearTimeout(d);var a=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach(e=>e(r)),t)return t(r)},d=setTimeout(l.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=l.bind(null,i.onerror),i.onload=l.bind(null,i.onload),c&&document.head.appendChild(i)}},u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.p="/",(()=>{var e={57:0};u.f.j=(t,r)=>{var n=u.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var a=new Promise((r,a)=>n=e[t]=[r,a]);r.push(n[2]=a);var o=u.p+u.u(t),i=new Error;u.l(o,r=>{if(u.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",i.name="ChunkLoadError",i.type=a,i.request=o,n[1](i)}},"chunk-"+t,t)}},u.O.j=t=>0===e[t];var t=(t,r)=>{var n,a,[o,i,c]=r,s=0;if(o.some(t=>0!==e[t])){for(n in i)u.o(i,n)&&(u.m[n]=i[n]);if(c)var f=c(u)}for(t&&t(r);su(954));c=u.O(c)})(); +//# sourceMappingURL=index.bundle.5eade4e4daa25d7588e3.js.map \ No newline at end of file diff --git a/import/dist/index.bundle.fa4b8f8eab66cd51d789.js.LICENSE.txt b/import/dist/index.bundle.5eade4e4daa25d7588e3.js.LICENSE.txt similarity index 100% rename from import/dist/index.bundle.fa4b8f8eab66cd51d789.js.LICENSE.txt rename to import/dist/index.bundle.5eade4e4daa25d7588e3.js.LICENSE.txt diff --git a/import/dist/index.bundle.5eade4e4daa25d7588e3.js.map b/import/dist/index.bundle.5eade4e4daa25d7588e3.js.map new file mode 100644 index 0000000..235c2c6 --- /dev/null +++ b/import/dist/index.bundle.5eade4e4daa25d7588e3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.bundle.5eade4e4daa25d7588e3.js","mappings":";uBAAIA,ECCAC,EADAC,ECAAC,EACAC,E,i1GCAJ,IAAAC,EAAAC,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,aAAA,yBAAAC,EAAAN,EAAAE,EAAAE,EAAAE,GAAA,IAAAC,EAAAL,GAAAA,EAAAM,qBAAAC,EAAAP,EAAAO,EAAAC,EAAAC,OAAAC,OAAAL,EAAAC,WAAA,OAAAK,EAAAH,EAAA,mBAAAV,EAAAE,EAAAE,GAAA,IAAAE,EAAAC,EAAAG,EAAAI,EAAA,EAAAC,EAAAX,GAAA,GAAAY,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAAb,EAAA,EAAAgB,EAAApB,EAAAqB,EAAAC,EAAAN,EAAAM,EAAAC,KAAAvB,EAAA,GAAAsB,EAAA,SAAArB,EAAAC,GAAA,OAAAM,EAAAP,EAAAQ,EAAA,EAAAG,EAAAZ,EAAAmB,EAAAf,EAAAF,EAAAmB,CAAA,YAAAC,EAAApB,EAAAE,GAAA,IAAAK,EAAAP,EAAAU,EAAAR,EAAAH,EAAA,GAAAiB,GAAAF,IAAAV,GAAAL,EAAAgB,EAAAO,OAAAvB,IAAA,KAAAK,EAAAE,EAAAS,EAAAhB,GAAAqB,EAAAH,EAAAF,EAAAQ,EAAAjB,EAAA,GAAAN,EAAA,GAAAI,EAAAmB,IAAArB,KAAAQ,EAAAJ,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAAR,GAAAQ,EAAA,IAAAc,KAAAhB,EAAAJ,EAAA,GAAAoB,EAAAd,EAAA,KAAAC,EAAA,EAAAU,EAAAC,EAAAhB,EAAAe,EAAAf,EAAAI,EAAA,IAAAc,EAAAG,IAAAnB,EAAAJ,EAAA,GAAAM,EAAA,GAAAJ,GAAAA,EAAAqB,KAAAjB,EAAA,GAAAN,EAAAM,EAAA,GAAAJ,EAAAe,EAAAf,EAAAqB,EAAAhB,EAAA,OAAAH,GAAAJ,EAAA,SAAAmB,EAAA,MAAAH,GAAA,EAAAd,CAAA,iBAAAE,EAAAW,EAAAQ,GAAA,GAAAT,EAAA,QAAAU,UAAA,oCAAAR,GAAA,IAAAD,GAAAK,EAAAL,EAAAQ,GAAAhB,EAAAQ,EAAAL,EAAAa,GAAAxB,EAAAQ,EAAA,EAAAT,EAAAY,KAAAM,GAAA,CAAAV,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAU,EAAAf,GAAA,GAAAkB,EAAAb,EAAAG,IAAAO,EAAAf,EAAAQ,EAAAO,EAAAC,EAAAR,GAAA,OAAAI,EAAA,EAAAR,EAAA,IAAAC,IAAAH,EAAA,QAAAL,EAAAO,EAAAF,GAAA,MAAAL,EAAAA,EAAA0B,KAAAnB,EAAAI,IAAA,MAAAc,UAAA,wCAAAzB,EAAA2B,KAAA,OAAA3B,EAAAW,EAAAX,EAAA4B,MAAApB,EAAA,IAAAA,EAAA,YAAAA,IAAAR,EAAAO,EAAA,SAAAP,EAAA0B,KAAAnB,GAAAC,EAAA,IAAAG,EAAAc,UAAA,oCAAApB,EAAA,YAAAG,EAAA,GAAAD,EAAAR,CAAA,UAAAC,GAAAiB,EAAAC,EAAAf,EAAA,GAAAQ,EAAAV,EAAAyB,KAAAvB,EAAAe,MAAAE,EAAA,YAAApB,GAAAO,EAAAR,EAAAS,EAAA,EAAAG,EAAAX,CAAA,SAAAe,EAAA,UAAAa,MAAA5B,EAAA2B,KAAAV,EAAA,GAAAhB,EAAAI,EAAAE,IAAA,GAAAI,CAAA,KAAAS,EAAA,YAAAV,IAAA,UAAAmB,IAAA,UAAAC,IAAA,CAAA9B,EAAAY,OAAAmB,eAAA,IAAAvB,EAAA,GAAAL,GAAAH,EAAAA,EAAA,GAAAG,QAAAW,EAAAd,EAAA,GAAAG,EAAA,yBAAAH,GAAAW,EAAAmB,EAAArB,UAAAC,EAAAD,UAAAG,OAAAC,OAAAL,GAAA,SAAAO,EAAAhB,GAAA,OAAAa,OAAAoB,eAAApB,OAAAoB,eAAAjC,EAAA+B,IAAA/B,EAAAkC,UAAAH,EAAAhB,EAAAf,EAAAM,EAAA,sBAAAN,EAAAU,UAAAG,OAAAC,OAAAF,GAAAZ,CAAA,QAAA8B,EAAApB,UAAAqB,EAAAhB,EAAAH,EAAA,cAAAmB,GAAAhB,EAAAgB,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAApB,EAAAgB,EAAAzB,EAAA,qBAAAS,EAAAH,GAAAG,EAAAH,EAAAN,EAAA,aAAAS,EAAAH,EAAAR,EAAA,yBAAAW,EAAAH,EAAA,oDAAAwB,EAAA,kBAAAC,EAAA7B,EAAA8B,EAAAtB,EAAA,cAAAD,EAAAf,EAAAE,EAAAE,EAAAH,GAAA,IAAAO,EAAAK,OAAA0B,eAAA,IAAA/B,EAAA,gBAAAR,GAAAQ,EAAA,EAAAO,EAAA,SAAAf,EAAAE,EAAAE,EAAAH,GAAA,SAAAK,EAAAJ,EAAAE,GAAAW,EAAAf,EAAAE,EAAA,SAAAF,GAAA,YAAAwC,QAAAtC,EAAAE,EAAAJ,EAAA,GAAAE,EAAAM,EAAAA,EAAAR,EAAAE,EAAA,CAAA2B,MAAAzB,EAAAqC,YAAAxC,EAAAyC,cAAAzC,EAAA0C,UAAA1C,IAAAD,EAAAE,GAAAE,GAAAE,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAS,EAAAf,EAAAE,EAAAE,EAAAH,EAAA,UAAA2C,EAAA5C,EAAAsB,GAAA,KAAAF,EAAApB,EAAA,KAAA6C,EAAAvB,CAAA,UAAAwB,EAAA1C,EAAAH,EAAAD,EAAAE,EAAAI,EAAAe,EAAAZ,GAAA,QAAAD,EAAAJ,EAAAiB,GAAAZ,GAAAG,EAAAJ,EAAAqB,KAAA,OAAAzB,GAAA,YAAAJ,EAAAI,EAAA,CAAAI,EAAAoB,KAAA3B,EAAAW,GAAAmC,QAAAC,QAAApC,GAAAqC,KAAA/C,EAAAI,EAAA,UAAA4C,EAAA9C,GAAA,sBAAAH,EAAA,KAAAD,EAAAmD,UAAA,WAAAJ,QAAA,SAAA7C,EAAAI,GAAA,IAAAe,EAAAjB,EAAAgD,MAAAnD,EAAAD,GAAA,SAAAqD,EAAAjD,GAAA0C,EAAAzB,EAAAnB,EAAAI,EAAA+C,EAAAC,EAAA,OAAAlD,EAAA,UAAAkD,EAAAlD,GAAA0C,EAAAzB,EAAAnB,EAAAI,EAAA+C,EAAAC,EAAA,QAAAlD,EAAA,CAAAiD,OAAA,MAIAE,OAAOC,KAAOA,EAGd,IAAIC,EAAoB,KAGlBC,EAA4B,IAAIC,gBAChCC,EAAwB,IAAID,gBAK9BE,EAAoB,eAAAC,EAAAZ,EAAAa,IAAAC,KAAG,SAAAC,EAAgBC,GAAK,OAAAH,IAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WAC1CJ,EAAMK,MAA8B,wBAAtBL,EAAMK,KAAW,KAA2B,CAAAH,EAAAE,KAAA,eAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEpDE,EACJN,EAAMK,KAAY,MAClBL,EAAMK,KAAqB,eAC3BL,EAAMK,KAAa,OACnBL,EAAMK,KAAgB,WACvB,OAAAH,EAAAE,KAAA,eAAAF,EAAAC,KAAA,EAAAD,EAAAK,GAAAL,EAAA,SAEDZ,EAAAA,cAAmB,QAASY,EAAAK,GAAEC,WAAYR,EAAMK,KAAgB,WAAG,WAGnEL,EAAMK,MAA8B,mCAAtBL,EAAMK,KAAW,KAAsC,CAAAH,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,GAAAD,EAAAE,KAAA,GAE/DK,EAA+BT,EAAMK,KAAgB,WAAE,QAAAH,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAQ,GAAAR,EAAA,UAE7DZ,EAAAA,cAAmB,QAASY,EAAAQ,GAAEF,WAAYR,EAAMK,KAAgB,WAAG,YAGnEL,EAAMK,MAA8B,gCAAtBL,EAAMK,KAAW,KAAmC,CAAAH,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,GAAAD,EAAAE,KAAA,GAE5DO,EACJX,EAAMK,KAAgB,UACtBL,EAAMK,KAAgB,WACvB,QAAAH,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAU,GAAAV,EAAA,UAEDZ,EAAAA,cAAmB,QAASY,EAAAU,GAAEJ,WAAYR,EAAMK,KAAgB,WAAG,YAGnEL,EAAMK,MAA8B,kBAAtBL,EAAMK,KAAW,KAAqB,CAAAH,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,GAAAD,EAAAE,KAAA,GAE9CS,EAAgBb,EAAMK,KAAY,MAAGL,EAAMK,KAAgB,WAAE,QAAAH,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAY,GAAAZ,EAAA,UAEnEZ,EAAAA,cAAmB,QAASY,EAAAY,GAAEN,WAAYR,EAAMK,KAAgB,WAAG,yBAAAH,EAAAa,OAAA,EAAAhB,EAAA,yCAGxE,gBArCuBiB,GAAA,OAAApB,EAAAV,MAAA,KAAAD,UAAA,KAgIxB,SAASgC,EAAiBC,GACxB,GAAIA,EAASC,SAAS,gBACpB,MAAM,IAAIC,MAAM,uDAElB,GAAIF,EAASC,SAAS,MACpB,MAAM,IAAIC,MAAM,6CAEpB,CAEA,SAUed,EAAoBe,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,EAAAvC,MAAC,KAADD,UAAA,CAoFnC,SAAAwC,IAFC,OAEDA,EAAAzC,EAAAa,IAAAC,KApFA,SAAA4B,EAAoCC,EAAQC,EAAgBC,EAAQC,GAAS,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAArC,IAAAI,KAAA,SAAAkC,GAAA,cAAAA,EAAAhC,KAAAgC,EAAA/B,MAAA,OAKrE4B,EAAYI,KAAKC,MAAMV,GAAOQ,EAAA5B,GAE5ByB,EAAUM,QAAOH,EAAA/B,KAClB,WADkB+B,EAAA5B,GACV,qBAENyB,EAAU3B,KAAM,CAAF8B,EAAA/B,KAAA,cACX,IAAIgB,MAAM,4BAA2B,UAExCY,EAAUO,cAAe,CAAFJ,EAAA/B,KAAA,cACpB,IAAIgB,MAAM,qCAAoC,UAEjDY,EAAUQ,oBAAqB,CAAFL,EAAA/B,KAAA,eAC1B,IAAIgB,MAAM,2CAA0C,WAIvD9B,EAAAA,uBAA6B,CAAF6C,EAAA/B,KAAA,eACxB,IAAIgB,MAAM,qBAAoB,eAAAe,EAAA/B,KAAA,GAErBd,EAAAA,uBACf0C,EAAUQ,oBACVR,EAAUO,cACVP,EAAU3B,MACX,QAJO,GAAA8B,EAAAM,KAKO,CAAFN,EAAA/B,KAAA,eACL,IAAIgB,MAAM,uCAADsB,OAAwCf,IAAS,QAQlE,GAJMM,EAAaG,KAAKC,OACtB,IAAIM,aAAcC,OAAOtD,EAAAA,wBAA6B0C,EAAU3B,QAI7DuB,EAAgB,CAAFO,EAAA/B,KAAA,SAEjByC,QAAQC,KACN,sHACAX,EAAA/B,KAAA,oBAED6B,EAAWL,gBACZK,EAAWL,iBAAmBA,EAAc,CAAAO,EAAA/B,KAAA,eAEtC,IAAIgB,MAAM,4DAADsB,OAC+Cd,EAAc,aAAAc,OAAYT,EAAWL,eAAc,MAChH,WAEEC,EAAQ,CAAFM,EAAA/B,KAAA,SAETyC,QAAQC,KACN,8GACAX,EAAA/B,KAAA,oBACQ6B,EAAWJ,QAAUI,EAAWJ,SAAWA,EAAM,CAAAM,EAAA/B,KAAA,eACrD,IAAIgB,MAAM,oDAADsB,OACuCb,EAAM,aAAAa,OAAYT,EAAWJ,OAAM,MACxF,WAGEI,EAAWc,aAAc,CAAFZ,EAAA/B,KAAA,eACpB,IAAIgB,MAAM,gDAA+C,QAIO,OAAxEW,EAAkBzC,EAAAA,wBAA6B2C,EAAWc,cAAcZ,EAAAa,OAAA,0BAIlE,IAAI5B,MAAM,wBAADsB,OAAyBV,EAAUM,UAAU,eAAAH,EAAA/B,KAAA,GAG/Bd,EAAAA,cAC/B,IAAI2D,WAAWlB,IAChB,QAFKG,EAAkBC,EAAAM,KAGxBnD,EAAAA,qBAA0B4C,GAG1B5C,EAAAA,cAAmB,mBAAmB,EAAMwC,GAAW,yBAAAK,EAAApB,OAAA,EAAAW,EAAA,KACxDxC,MAAA,KAAAD,UAAA,UAYcwB,EAA8ByC,GAAA,OAAAC,EAAAjE,MAAC,KAADD,UAAA,CAkC7C,SAAAkE,IAFC,OAEDA,EAAAnE,EAAAa,IAAAC,KAlCA,SAAAsD,EAA8CtB,GAAS,IAAAI,EAAAmB,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA5D,IAAAI,KAAA,SAAAyD,GAAA,cAAAA,EAAAvD,KAAAuD,EAAAtD,MAAA,OAEC,GAC5B,OADpB8B,EAAqB5C,EAAAA,wBACG,CAAAoE,EAAAtD,KAAA,cACtB,IAAIgB,MAAM,uBAAsB,OAI2B,GAA7DiC,EAAYM,SAASC,eAAe,aAAajG,MAAMkG,OAC7C,CAAFH,EAAAtD,KAAA,cACN,IAAIgB,MAAM,8BAA6B,OAW/C,OARMkC,EAAaK,SAASC,eAAe,cAAcjG,MAEzDsD,EAAiBoC,GAEXE,EACW,KAAfD,EAAoBD,EAAY,GAAHX,OAAMW,EAAS,gBAAAX,OAAeY,GACvDE,GAAe,IAAIM,aAAcC,OAAOR,GAE9CG,EAAAtD,KAAA,GAC8B4D,EAAY,CACxCR,aAAAA,EACAS,eAAgB/B,IAChB,QAHIuB,EAAeC,EAAAjB,KAMrBnD,EAAAA,yBAGAA,EAAAA,cAAmB,6BAA8BmE,EAAiB3B,GAAW,yBAAA4B,EAAA3C,OAAA,EAAAqC,EAAA,KAC9ElE,MAAA,KAAAD,UAAA,UAac0B,EAA2BuD,EAAAC,GAAA,OAAAC,EAAAlF,MAAC,KAADD,UAAA,CA2B1C,SAAAmF,IAFC,OAEDA,EAAApF,EAAAa,IAAAC,KA3BA,SAAAuE,EAA2CC,EAAWxC,GAAS,IAAAI,EAAAmB,EAAAG,EAAAC,EAAA,OAAA5D,IAAAI,KAAA,SAAAsE,GAAA,cAAAA,EAAApE,KAAAoE,EAAAnE,MAAA,OAEP,GAC5B,OADpB8B,EAAqB5C,EAAAA,wBACG,CAAAiF,EAAAnE,KAAA,cACtB,IAAIgB,MAAM,uBAAsB,OAI2B,GAA7DiC,EAAYM,SAASC,eAAe,aAAajG,MAAMkG,OAC7C,CAAFU,EAAAnE,KAAA,cACN,IAAIgB,MAAM,0BAAyB,cAAAmD,EAAAnE,KAAA,EAEhBd,EAAAA,UAAe+D,EAAWiB,GAAU,OAA7C,OAAZd,EAAYe,EAAA9B,KAAA8B,EAAAnE,KAAG,GAGS4D,EAAY,CACxCR,aAAAA,EACAS,eAAgB/B,IAChB,QAHIuB,EAAec,EAAA9B,KAMrBnD,EAAAA,yBAGAA,EAAAA,cAAmB,6BAA8BmE,EAAiB3B,GAAW,yBAAAyC,EAAAxD,OAAA,EAAAsD,EAAA,KAC9EnF,MAAA,KAAAD,UAAA,UAUc4B,EAAe2D,EAAAC,GAAA,OAAAC,EAAAxF,MAAC,KAADD,UAAA,UAAAyF,IAS7B,OAT6BA,EAAA1F,EAAAa,IAAAC,KAA9B,SAAA6E,EAA+BC,EAAU9C,GAAS,IAAA+C,EAAA,OAAAhF,IAAAI,KAAA,SAAA6E,GAAA,cAAAA,EAAA3E,KAAA2E,EAAA1E,MAAA,OAE1CyE,EAAgBvF,EAAAA,cAAmBsF,GAGzCtF,EAAAA,YAAiBuF,GAGjBvF,EAAAA,cAAmB,oBAAoB,EAAMwC,GAAW,wBAAAgD,EAAA/D,OAAA,EAAA4D,EAAA,KACzDzF,MAAA,KAAAD,UAAA,UAEc+E,EAAWe,GAAA,OAAAC,EAAA9F,MAAC,KAADD,UAAA,UAAA+F,IAyDzB,OAzDyBA,EAAAhG,EAAAa,IAAAC,KAA1B,SAAAmF,EAAAC,GAAA,IAAA1B,EAAAS,EAAAkB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAArC,EAAA,OAAA5D,IAAAI,KAAA,SAAA8F,GAAA,cAAAA,EAAA5F,KAAA4F,EAAA3F,MAAA,OACmD,OADtBoD,EAAY0B,EAAZ1B,aAAcS,EAAciB,EAAdjB,eACnCkB,EAAa,IAAIa,EAAAA,GAA0BD,EAAA3F,KAAA,EACvB+E,EAAWc,UACnC,MAAKC,EAAA,GACAjC,IACL,GACD,OAMC,OAVImB,EAAWW,EAAAtD,KAMX4C,EAAQ,IAAIW,EAAAA,GAAiB,CACjCG,IAAKhB,EACLiB,IAAK,IAAIJ,EAAAA,GACTK,KAAM,IAAIL,EAAAA,KACVD,EAAA3F,KAAA,EAEsBiF,EAAMiB,oBAAoB,CAChDC,mBAAoBnB,EACpBoB,MAAM,IAAI1C,aAAcC,OAAO,kBAC/B,OAHa,OAATuB,EAASS,EAAAtD,KAAAsD,EAAA3F,KAAG,GAOiBqG,OAAOC,OAAOT,UAC/C,MACAhC,EACA,CACE0C,KAAM,QACNC,WAAY,UAEd,EACA,IACD,QATyB,OAApBrB,EAAoBQ,EAAAtD,KAAAsD,EAAA3F,KAAG,GAUAqG,OAAOC,OAAOG,UACzC,MACAtB,GACD,QAKwE,OARnEC,EAAcO,EAAAtD,KAIdgD,EAAiB,IAAIxC,WAAWuC,GAEhCE,EAAiB,IAAIzC,WAAWqC,EAAUwB,KAE1CnB,EAAMrG,EAAAA,yBAA8BoG,EAAgBD,GAAeM,EAAA5F,KAAA,GAAA4F,EAAA3F,KAAA,GAIjDkF,EAAUyB,KAAKvD,EAAcmC,GAAI,QAAvDC,EAAaG,EAAAtD,KAAAsD,EAAA3F,KAAG,GAAH,oBAAA2F,EAAA5F,KAAG,GAAH4F,EAAAxF,GAAAwF,EAAA,UAEP,IAAI3E,MAAM,oCAAsC2E,EAAAxF,GAAEC,YAAW,QAUnE,OAPIqF,EAAgBvG,EAAAA,sBACpB,IAAI2D,WAAW2C,IAEXE,EAAoBxG,EAAAA,sBAA2BoG,GAC/CjC,EAAkBrB,KAAK4E,UAAU,CACrCC,eAAgBnB,EAChBoB,WAAYrB,IACZE,EAAA/C,OAAA,SACKS,GAAe,yBAAAsC,EAAAhF,OAAA,EAAAkE,EAAA,oBACvB/F,MAAA,KAAAD,UAAA,CA3VD0E,SAASwD,iBACP,mBAAkBnI,EAAAa,IAAAC,KAClB,SAAAsH,IAAA,IAAAC,EAAAC,EAAA,OAAAzH,IAAAI,KAAA,SAAAsH,GAAA,cAAAA,EAAApH,KAAAoH,EAAAnH,MAAA,OAIK,GAHHf,OAAO8H,iBAAiB,UAAWxH,EAAsB,CACvD6H,SAAS,EACTC,OAAQjI,EAA0BiI,SAG/BjI,EAA0BiI,OAAOC,QAAS,CAAFH,EAAAnH,KAAA,QAamB,IAXxDiH,EAAgB/H,EAAAA,gBAEpBA,EAAAA,cAAmB+H,GAOrB/H,EAAAA,cAAmB,mBAAoB,IAEjCgI,EAAoB3D,SAASC,eAAe,aAC1B,CAAF2D,EAAAnH,KAAA,eAAAmH,EAAAvE,OAAA,iBAGtBsE,EAAkBH,iBAAiB,QAAOnI,EAAAa,IAAAC,KAAE,SAAA6H,IAAA,IAAAC,EAAA,OAAA/H,IAAAI,KAAA,SAAA4H,GAAA,cAAAA,EAAA1H,KAAA0H,EAAAzH,MAAA,cAAAyH,EAAA1H,KAAA,EAAA0H,EAAAzH,KAAA,EAIf0H,UAAUC,YAChCC,MAAM,CAAErB,KAAM,oBAAqB,MAC7B,kBAAM,IAAI,GAAC,OAFJ,GAMQ,aAAtBiB,OANIA,EAAUC,EAAApF,WAMJ,EAAVmF,EAAYK,QACU,YAAtBL,aAAU,EAAVA,EAAYK,OAAkB,CAAAJ,EAAAzH,KAAA,eAAAyH,EAAAzH,KAAA,EAExB0H,UAAUI,UAAUC,UAAU,IAAG,OAAAN,EAAAzH,KAAA,gBAAAyH,EAAA1H,KAAA,EAAA0H,EAAAtH,GAAAsH,EAAA,kCAAAA,EAAA9G,OAAA,EAAA4G,EAAA,kBAK1C,wBAAAJ,EAAAxG,OAAA,EAAAqG,EAAA,KAGP,GAGF/H,OAAO8H,iBACL,UAAS,eAAAiB,EAAApJ,EAAAa,IAAAC,KACT,SAAAuI,EAAgBrI,GAAK,IAAAsI,EAAA,OAAAzI,IAAAI,KAAA,SAAAsI,GAAA,cAAAA,EAAApI,KAAAoI,EAAAnI,MAAA,OAQjBJ,EAAMK,MACgB,gCAAtBL,EAAMK,KAAW,MACN,QADyCiI,EACpDtI,EAAMwI,aAAK,IAAAF,GAAXA,EAAc,KAGd9I,EAA0BiJ,SAE1BlJ,EAAoBS,EAAMwI,MAAM,IACdE,UAAY/I,EAE9BL,EAAAA,iCAAsCC,GAOtCD,EAAAA,cAAmB,mBAAoB,IAGvCI,EAAsB+I,SACvB,wBAAAF,EAAAxH,OAAA,EAAAsH,EAAA,IACF,gBAAAM,GAAA,OAAAP,EAAAlJ,MAAA,KAAAD,UAAA,EA/BQ,GAgCT,CAAEwI,OAAQ/H,EAAsB+H,Q,GC5I9BmB,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CAGAJ,EAAoBzK,EAAI+K,EJzBpB1N,EAAW,GACfoN,EAAoBO,EAAI,CAACC,EAAQC,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASpN,EAAI,EAAGA,EAAIb,EAAS6B,OAAQhB,IAAK,CAGzC,IAFA,IAAKgN,EAAUC,EAAIC,GAAY/N,EAASa,GACpCqN,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAAShM,OAAQsM,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAa7M,OAAOkN,KAAKhB,EAAoBO,GAAGU,MAAOC,GAASlB,EAAoBO,EAAEW,GAAKT,EAASM,KAC9IN,EAASU,OAAOJ,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACblO,EAASuO,OAAO1N,IAAK,GACrB,IAAIN,EAAIuN,SACEP,IAANhN,IAAiBqN,EAASrN,EAC/B,CACD,CACA,OAAOqN,CAnBP,CAJCG,EAAWA,GAAY,EACvB,IAAI,IAAIlN,EAAIb,EAAS6B,OAAQhB,EAAI,GAAKb,EAASa,EAAI,GAAG,GAAKkN,EAAUlN,IAAKb,EAASa,GAAKb,EAASa,EAAI,GACrGb,EAASa,GAAK,CAACgN,EAAUC,EAAIC,ICL3B7N,EAAWgB,OAAOmB,eAAkBmM,GAAStN,OAAOmB,eAAemM,GAASA,GAASA,EAAa,UAQtGpB,EAAoB9M,EAAI,SAAS4B,EAAOuM,GAEvC,GADU,EAAPA,IAAUvM,EAAQwM,KAAKxM,IAChB,EAAPuM,EAAU,OAAOvM,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPuM,GAAavM,EAAMyM,WAAY,OAAOzM,EAC1C,GAAW,GAAPuM,GAAoC,mBAAfvM,EAAMoB,KAAqB,OAAOpB,CAC5D,CACA,IAAI0M,EAAK1N,OAAOC,OAAO,MACvBiM,EAAoB7M,EAAEqO,GACtB,IAAIC,EAAM,CAAC,EACX5O,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI4O,EAAiB,EAAPL,GAAYvM,GAA0B,iBAAX4M,GAAyC,mBAAXA,MAA4B7O,EAAe8O,QAAQD,GAAUA,EAAU5O,EAAS4O,GAC1J5N,OAAO8N,oBAAoBF,GAASG,QAASX,GAASO,EAAIP,GAAO,IAAOpM,EAAMoM,IAI/E,OAFAO,EAAa,QAAI,IAAM,EACvBzB,EAAoBzL,EAAEiN,EAAIC,GACnBD,CACR,EIxBAxB,EAAoBzL,EAAI,CAAC6L,EAAS0B,KACjC,IAAI,IAAIZ,KAAOY,EACX9B,EAAoBzM,EAAEuO,EAAYZ,KAASlB,EAAoBzM,EAAE6M,EAASc,IAC5EpN,OAAO0B,eAAe4K,EAASc,EAAK,CAAExL,YAAY,EAAMqM,IAAKD,EAAWZ,MCJ3ElB,EAAoB/L,EAAI,CAAC,EAGzB+L,EAAoB/M,EAAK+O,GACjBhM,QAAQiM,IAAInO,OAAOkN,KAAKhB,EAAoB/L,GAAGiO,OAAO,CAACC,EAAUjB,KACvElB,EAAoB/L,EAAEiN,GAAKc,EAASG,GAC7BA,GACL,KCNJnC,EAAoBnM,EAAKmO,GAEZA,EAAU,WAAa,CAAC,IAAM,uBAAuB,IAAM,wBAAwBA,GAAW,MCF3GhC,EAAoBoC,SAAYJ,MCDhChC,EAAoBqC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOhB,MAAQ,IAAIiB,SAAS,cAAb,EAChB,CAAE,MAAOtP,GACR,GAAsB,iBAAXuD,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBwJ,EAAoBzM,EAAI,CAAC6N,EAAKoB,IAAU1O,OAAOH,UAAU8O,eAAe7N,KAAKwM,EAAKoB,GRA9EzP,EAAa,CAAC,EACdC,EAAoB,UAExBgN,EAAoBtL,EAAI,CAACgO,EAAK7N,EAAMqM,EAAKc,KACxC,GAAGjP,EAAW2P,GAAQ3P,EAAW2P,GAAKC,KAAK9N,OAA3C,CACA,IAAI+N,EAAQC,EACZ,QAAW1C,IAARe,EAEF,IADA,IAAI4B,EAAUhI,SAASiI,qBAAqB,UACpCtP,EAAI,EAAGA,EAAIqP,EAAQrO,OAAQhB,IAAK,CACvC,IAAIuP,EAAIF,EAAQrP,GAChB,GAAGuP,EAAEC,aAAa,QAAUP,GAAOM,EAAEC,aAAa,iBAAmBjQ,EAAoBkO,EAAK,CAAE0B,EAASI,EAAG,KAAO,CACpH,CAEGJ,IACHC,GAAa,GACbD,EAAS9H,SAASoI,cAAc,WAEzBC,QAAU,QACbnD,EAAoBoD,IACvBR,EAAOS,aAAa,QAASrD,EAAoBoD,IAElDR,EAAOS,aAAa,eAAgBrQ,EAAoBkO,GAExD0B,EAAOU,IAAMZ,GAEd3P,EAAW2P,GAAO,CAAC7N,GACnB,IAAI0O,EAAmB,CAACjM,EAAMH,KAE7ByL,EAAOY,QAAUZ,EAAOa,OAAS,KACjCC,aAAaC,GACb,IAAIC,EAAU7Q,EAAW2P,GAIzB,UAHO3P,EAAW2P,GAClBE,EAAOiB,YAAcjB,EAAOiB,WAAWC,YAAYlB,GACnDgB,GAAWA,EAAQ/B,QAASnB,GAAQA,EAAGvJ,IACpCG,EAAM,OAAOA,EAAKH,IAElBwM,EAAUI,WAAWR,EAAiB/O,KAAK,UAAM2L,EAAW,CAAE6D,KAAM,UAAWC,OAAQrB,IAAW,MACtGA,EAAOY,QAAUD,EAAiB/O,KAAK,KAAMoO,EAAOY,SACpDZ,EAAOa,OAASF,EAAiB/O,KAAK,KAAMoO,EAAOa,QACnDZ,GAAc/H,SAASoJ,KAAKC,YAAYvB,EAnCkB,GSH3D5C,EAAoB7M,EAAKiN,IACH,oBAAXhN,QAA0BA,OAAOI,aAC1CM,OAAO0B,eAAe4K,EAAShN,OAAOI,YAAa,CAAEsB,MAAO,WAE7DhB,OAAO0B,eAAe4K,EAAS,aAAc,CAAEtL,OAAO,KCLvDkL,EAAoB9L,EAAI,I,MCKxB,IAAIkQ,EAAkB,CACrB,GAAI,GAGLpE,EAAoB/L,EAAE8M,EAAI,CAACiB,EAASG,KAElC,IAAIkC,EAAqBrE,EAAoBzM,EAAE6Q,EAAiBpC,GAAWoC,EAAgBpC,QAAW7B,EACtG,GAA0B,IAAvBkE,EAGF,GAAGA,EACFlC,EAASQ,KAAK0B,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAItO,QAAQ,CAACC,EAASsO,IAAYF,EAAqBD,EAAgBpC,GAAW,CAAC/L,EAASsO,IAC1GpC,EAASQ,KAAK0B,EAAmB,GAAKC,GAGtC,IAAI5B,EAAM1C,EAAoB9L,EAAI8L,EAAoBnM,EAAEmO,GAEpDwC,EAAQ,IAAIjM,MAgBhByH,EAAoBtL,EAAEgO,EAfFvL,IACnB,GAAG6I,EAAoBzM,EAAE6Q,EAAiBpC,KAEf,KAD1BqC,EAAqBD,EAAgBpC,MACRoC,EAAgBpC,QAAW7B,GACrDkE,GAAoB,CACtB,IAAII,EAAYtN,IAAyB,SAAfA,EAAM6M,KAAkB,UAAY7M,EAAM6M,MAChEU,EAAUvN,GAASA,EAAM8M,QAAU9M,EAAM8M,OAAOX,IACpDkB,EAAMG,QAAU,iBAAmB3C,EAAU,cAAgByC,EAAY,KAAOC,EAAU,IAC1FF,EAAM1G,KAAO,iBACb0G,EAAMR,KAAOS,EACbD,EAAMI,QAAUF,EAChBL,EAAmB,GAAGG,EACvB,GAGuC,SAAWxC,EAASA,EAE/D,GAYHhC,EAAoBO,EAAEQ,EAAKiB,GAA0C,IAA7BoC,EAAgBpC,GAGxD,IAAI6C,EAAuB,CAACC,EAA4BtN,KACvD,IAGIyI,EAAU+B,GAHTvB,EAAUsE,EAAaC,GAAWxN,EAGhB/D,EAAI,EAC3B,GAAGgN,EAASwE,KAAMC,GAAgC,IAAxBd,EAAgBc,IAAa,CACtD,IAAIjF,KAAY8E,EACZ/E,EAAoBzM,EAAEwR,EAAa9E,KACrCD,EAAoBzK,EAAE0K,GAAY8E,EAAY9E,IAGhD,GAAG+E,EAAS,IAAIxE,EAASwE,EAAQhF,EAClC,CAEA,IADG8E,GAA4BA,EAA2BtN,GACrD/D,EAAIgN,EAAShM,OAAQhB,IACzBuO,EAAUvB,EAAShN,GAChBuM,EAAoBzM,EAAE6Q,EAAiBpC,IAAYoC,EAAgBpC,IACrEoC,EAAgBpC,GAAS,KAE1BoC,EAAgBpC,GAAW,EAE5B,OAAOhC,EAAoBO,EAAEC,IAG1B2E,EAAqBC,KAAyB,mBAAIA,KAAyB,oBAAK,GACpFD,EAAmBtD,QAAQgD,EAAqBrQ,KAAK,KAAM,IAC3D2Q,EAAmBxC,KAAOkC,EAAqBrQ,KAAK,KAAM2Q,EAAmBxC,KAAKnO,KAAK2Q,G,KClFvF,IAAIE,EAAsBrF,EAAoBO,OAAEJ,EAAW,CAAC,GAAG,IAAK,IAAOH,EAAoB,MAC/FqF,EAAsBrF,EAAoBO,EAAE8E,E","sources":["webpack://import/webpack/runtime/chunk loaded","webpack://import/webpack/runtime/create fake namespace object","webpack://import/webpack/runtime/load script","webpack://import/./src/index.js","webpack://import/webpack/bootstrap","webpack://import/webpack/runtime/define property getters","webpack://import/webpack/runtime/ensure chunk","webpack://import/webpack/runtime/get javascript chunk filename","webpack://import/webpack/runtime/get mini-css chunk filename","webpack://import/webpack/runtime/global","webpack://import/webpack/runtime/hasOwnProperty shorthand","webpack://import/webpack/runtime/make namespace object","webpack://import/webpack/runtime/publicPath","webpack://import/webpack/runtime/jsonp chunk loading","webpack://import/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"import:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import \"./styles.css\";\nimport * as hpke from \"@hpke/core\";\nimport * as TKHQ from \"./turnkey-core.js\";\n\n// Make TKHQ available globally for backwards compatibility\nwindow.TKHQ = TKHQ;\n\n// persist the MessageChannel object so we can use it to communicate with the parent window\nvar iframeMessagePort = null;\n\n// controllers to remove event listeners\nconst messageListenerController = new AbortController();\nconst turnkeyInitController = new AbortController();\n\n/**\n * Message Event Handlers to process messages from the parent frame\n */\nvar messageEventListener = async function (event) {\n if (event.data && event.data[\"type\"] == \"INJECT_IMPORT_BUNDLE\") {\n try {\n await onInjectImportBundle(\n event.data[\"value\"],\n event.data[\"organizationId\"],\n event.data[\"userId\"],\n event.data[\"requestId\"]\n );\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n if (event.data && event.data[\"type\"] == \"EXTRACT_WALLET_ENCRYPTED_BUNDLE\") {\n try {\n await onExtractWalletEncryptedBundle(event.data[\"requestId\"]);\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n if (event.data && event.data[\"type\"] == \"EXTRACT_KEY_ENCRYPTED_BUNDLE\") {\n try {\n await onExtractKeyEncryptedBundle(\n event.data[\"keyFormat\"],\n event.data[\"requestId\"]\n );\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n if (event.data && event.data[\"type\"] == \"APPLY_SETTINGS\") {\n try {\n await onApplySettings(event.data[\"value\"], event.data[\"requestId\"]);\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n};\n\n/**\n * Broadcast that the frame is ready and set up the message event listeners\n */\ndocument.addEventListener(\n \"DOMContentLoaded\",\n async function () {\n window.addEventListener(\"message\", messageEventListener, {\n capture: false,\n signal: messageListenerController.signal,\n });\n\n if (!messageListenerController.signal.aborted) {\n // If styles are saved in local storage, sanitize and apply them.\n const styleSettings = TKHQ.getSettings();\n if (styleSettings) {\n TKHQ.applySettings(styleSettings);\n }\n // This is a workaround for how @turnkey/iframe-stamper is initialized. Currently,\n // init() waits for a public key to be initialized that can be used to send to the server\n // which will encrypt messages to this public key.\n // In the case of import, this public key is not used because the client encrypts messages\n // to the server's public key.\n TKHQ.sendMessageUp(\"PUBLIC_KEY_READY\", \"\");\n\n const plaintextTextarea = document.getElementById(\"plaintext\");\n if (!plaintextTextarea) return;\n // Clear clipboard after paste to avoid sensitive data lingering in clipboard.\n\n plaintextTextarea.addEventListener(\"paste\", async () => {\n // Let the paste happen first\n try {\n // Check clipboard-write permission first. In new versions of iframe-stamper, we add this permission when creating the iframe. In older versions, this permission is not added.\n const permStatus = await navigator.permissions\n .query({ name: \"clipboard-write\" }) // This is required to avoid error on clipboard write\n .catch(() => null);\n\n // Proceed only if granted or promptable\n if (\n permStatus?.state === \"granted\" ||\n permStatus?.state === \"prompt\"\n ) {\n await navigator.clipboard.writeText(\"\");\n }\n } catch {\n // Silently ignore any errors — no warnings or console noise\n }\n });\n }\n },\n false\n);\n\nwindow.addEventListener(\n \"message\",\n async function (event) {\n /**\n * @turnkey/iframe-stamper >= v2.1.0 is using a MessageChannel to communicate with the parent frame.\n * The parent frame sends a TURNKEY_INIT_MESSAGE_CHANNEL event with the MessagePort.\n * If we receive this event, we want to remove the message event listener that was added in the DOMContentLoaded event to avoid processing messages twice.\n * We persist the MessagePort so we can use it to communicate with the parent window in subsequent calls to TKHQ.sendMessageUp\n */\n if (\n event.data &&\n event.data[\"type\"] == \"TURNKEY_INIT_MESSAGE_CHANNEL\" &&\n event.ports?.[0]\n ) {\n // remove the message event listener that was added in the DOMContentLoaded event\n messageListenerController.abort();\n\n iframeMessagePort = event.ports[0];\n iframeMessagePort.onmessage = messageEventListener;\n\n TKHQ.setParentFrameMessageChannelPort(iframeMessagePort);\n\n // This is a workaround for how @turnkey/iframe-stamper is initialized. Currently,\n // init() waits for a public key to be initialized that can be used to send to the server\n // which will encrypt messages to this public key.\n // In the case of import, this public key is not used because the client encrypts messages\n // to the server's public key.\n TKHQ.sendMessageUp(\"PUBLIC_KEY_READY\", \"\");\n\n // remove the listener for TURNKEY_INIT_MESSAGE_CHANNEL after it's been processed\n turnkeyInitController.abort();\n }\n },\n { signal: turnkeyInitController.signal }\n);\n\n// make sure the mnemonic does not include our splitter (\\n--PASS--\\n) string or \\n characters\nfunction validateMnemonic(mnemonic) {\n if (mnemonic.includes(\"\\n--PASS--\\n\")) {\n throw new Error('mnemonic cannot include the string \"\\\\n--PASS--\\\\n\"');\n }\n if (mnemonic.includes(\"\\n\")) {\n throw new Error(\"mnemonic cannot include newline characters\");\n }\n}\n\n/**\n * Function triggered when INJECT_IMPORT_BUNDLE event is received.\n * Parses the `import_bundle` and stores the target public key as a JWK\n * in local storage. Sends true upon success.\n * @param {string} bundle\n * Example bundle: {\"targetPublic\":\"0491ccb68758b822a6549257f87769eeed37c6cb68a6c6255c5f238e2b6e6e61838c8ac857f2e305970a6435715f84e5a2e4b02a4d1e5289ba7ec7910e47d2d50f\",\"targetPublicSignature\":\"3045022100cefc333c330c9fa300d1aa10a439a76539b4d6967301638ab9edc9fd9468bfdb0220339bba7e2b00b45d52e941d068ecd3bfd16fd1926da69dd7769893268990d62f\",\"enclaveQuorumPublic\":\"04cf288fe433cc4e1aa0ce1632feac4ea26bf2f5a09dcfe5a42c398e06898710330f0572882f4dbdf0f5304b8fc8703acd69adca9a4bbf7f5d00d20a5e364b2569\"}\n * @param {string} organizationId\n * @param {string} userId\n * @param {string} requestId\n */\nasync function onInjectImportBundle(bundle, organizationId, userId, requestId) {\n let targetPublicBuf;\n let verified;\n\n // Parse the import bundle\n const bundleObj = JSON.parse(bundle);\n\n switch (bundleObj.version) {\n case \"v1.0.0\": {\n // Validate fields exist\n if (!bundleObj.data) {\n throw new Error('missing \"data\" in bundle');\n }\n if (!bundleObj.dataSignature) {\n throw new Error('missing \"dataSignature\" in bundle');\n }\n if (!bundleObj.enclaveQuorumPublic) {\n throw new Error('missing \"enclaveQuorumPublic\" in bundle');\n }\n\n // Verify enclave signature\n if (!TKHQ.verifyEnclaveSignature) {\n throw new Error(\"method not loaded\");\n }\n verified = await TKHQ.verifyEnclaveSignature(\n bundleObj.enclaveQuorumPublic,\n bundleObj.dataSignature,\n bundleObj.data\n );\n if (!verified) {\n throw new Error(`failed to verify enclave signature: ${bundle}`);\n }\n\n // Parse the signed data. The data is produced by JSON encoding followed by hex encoding. We reverse this here.\n const signedData = JSON.parse(\n new TextDecoder().decode(TKHQ.uint8arrayFromHexString(bundleObj.data))\n );\n\n // Validate fields match\n if (!organizationId) {\n // TODO: throw error if organization id is undefined once we've fully transitioned to v1.0.0 server messages and v2.0.0 iframe-stamper\n console.warn(\n 'we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass \"organizationId\" for security purposes.'\n );\n } else if (\n !signedData.organizationId ||\n signedData.organizationId !== organizationId\n ) {\n throw new Error(\n `organization id does not match expected value. Expected: ${organizationId}. Found: ${signedData.organizationId}.`\n );\n }\n if (!userId) {\n // TODO: throw error if user id is undefined once we've fully transitioned to v1.0.0 server messages and v2.0.0 iframe-stamper\n console.warn(\n 'we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass \"userId\" for security purposes.'\n );\n } else if (!signedData.userId || signedData.userId !== userId) {\n throw new Error(\n `user id does not match expected value. Expected: ${userId}. Found: ${signedData.userId}.`\n );\n }\n\n if (!signedData.targetPublic) {\n throw new Error('missing \"targetPublic\" in bundle signed data');\n }\n\n // Load target public key generated from enclave and set in local storage\n targetPublicBuf = TKHQ.uint8arrayFromHexString(signedData.targetPublic);\n break;\n }\n default:\n throw new Error(`unsupported version: ${bundleObj.version}`);\n }\n\n const targetPublicKeyJwk = await TKHQ.loadTargetKey(\n new Uint8Array(targetPublicBuf)\n );\n TKHQ.setTargetEmbeddedKey(targetPublicKeyJwk);\n\n // Send up BUNDLE_INJECTED message\n TKHQ.sendMessageUp(\"BUNDLE_INJECTED\", true, requestId);\n}\n\n/**\n * Function triggered when EXTRACT_WALLET_ENCRYPTED_BUNDLE event is received.\n * Prerequisite: This function uses the target public key in local storage that is imported\n * from the INJECT_IMPORT_BUNDLE event.\n * Uses the target public key in local storage to encrypt the text entered in the\n * `plaintext` textarea element. Upon successful encryption, sends\n * an `encrypted_bundle` containing the ciphertext and encapped public key.\n * Example bundle: {\"encappedPublic\":\"0497f33f3306f67f4402d4824e15b63b04786b6558d417aac2fef69051e46fa7bfbe776b142e4ded4f02097617a7588e93c53b71f900a4a8831a31be6f95e5f60f\",\"ciphertext\":\"c17c3085505f3c094f0fa61791395b83ab1d8c90bdf9f12a64fc6e2e9cba266beb528f65c88bd933e36e6203752a9b63e6a92290a0ab6bf0ed591cf7bfa08006001e2cc63870165dc99ec61554ffdc14dea7d567e62cceed29314ae6c71a013843f5c06146dee5bf9c1d\"}\n * @param {string} requestId\n */\nasync function onExtractWalletEncryptedBundle(requestId) {\n // Get target embedded key from previous step (onInjectImportBundle)\n const targetPublicKeyJwk = TKHQ.getTargetEmbeddedKey();\n if (targetPublicKeyJwk == null) {\n throw new Error(\"no target key found\");\n }\n\n // Get plaintext wallet mnemonic\n const plaintext = document.getElementById(\"plaintext\").value.trim();\n if (!plaintext) {\n throw new Error(\"no wallet mnemonic entered\");\n }\n\n const passphrase = document.getElementById(\"passphrase\").value;\n\n validateMnemonic(plaintext);\n\n const combined =\n passphrase === \"\" ? plaintext : `${plaintext}\\n--PASS--\\n${passphrase}`;\n const plaintextBuf = new TextEncoder().encode(combined);\n\n // Encrypt the bundle using the enclave target public key\n const encryptedBundle = await HpkeEncrypt({\n plaintextBuf,\n receiverPubJwk: targetPublicKeyJwk,\n });\n\n // Reset target embedded key after using for encryption\n TKHQ.resetTargetEmbeddedKey();\n\n // Send up ENCRYPTED_BUNDLE_EXTRACTED message\n TKHQ.sendMessageUp(\"ENCRYPTED_BUNDLE_EXTRACTED\", encryptedBundle, requestId);\n}\n\n/**\n * Function triggered when EXTRACT_KEY_ENCRYPTED_BUNDLE event is received.\n * Prerequisite: This function uses the target public key in local storage that is imported\n * from the INJECT_IMPORT_BUNDLE event.\n * Uses the target public key in local storage to encrypt the text entered in the\n * `plaintext` textarea element. Upon successful encryption, sends\n * an `encrypted_bundle` containing the ciphertext and encapped public key.\n * Example bundle: {\"encappedPublic\":\"0497f33f3306f67f4402d4824e15b63b04786b6558d417aac2fef69051e46fa7bfbe776b142e4ded4f02097617a7588e93c53b71f900a4a8831a31be6f95e5f60f\",\"ciphertext\":\"c17c3085505f3c094f0fa61791395b83ab1d8c90bdf9f12a64fc6e2e9cba266beb528f65c88bd933e36e6203752a9b63e6a92290a0ab6bf0ed591cf7bfa08006001e2cc63870165dc99ec61554ffdc14dea7d567e62cceed29314ae6c71a013843f5c06146dee5bf9c1d\"}\n * @param {string} keyFormat\n * @param {string} requestId\n */\nasync function onExtractKeyEncryptedBundle(keyFormat, requestId) {\n // Get target embedded key from previous step (onInjectImportBundle)\n const targetPublicKeyJwk = TKHQ.getTargetEmbeddedKey();\n if (targetPublicKeyJwk == null) {\n throw new Error(\"no target key found\");\n }\n\n // Get plaintext private key\n const plaintext = document.getElementById(\"plaintext\").value.trim();\n if (!plaintext) {\n throw new Error(\"no private key entered\");\n }\n const plaintextBuf = await TKHQ.decodeKey(plaintext, keyFormat);\n\n // Encrypt the bundle using the enclave target public key\n const encryptedBundle = await HpkeEncrypt({\n plaintextBuf,\n receiverPubJwk: targetPublicKeyJwk,\n });\n\n // Reset target embedded key after using for encryption\n TKHQ.resetTargetEmbeddedKey();\n\n // Send up ENCRYPTED_BUNDLE_EXTRACTED message\n TKHQ.sendMessageUp(\"ENCRYPTED_BUNDLE_EXTRACTED\", encryptedBundle, requestId);\n}\n\n/**\n * Function triggered when APPLY_SETTINGS event is received.\n * For now, the only settings that can be applied are for \"styles\".\n * Persist them in local storage so they can be applied on every\n * page load.\n * @param {string} settings: JSON-stringified settings\n * @param {string} requestId\n */\nasync function onApplySettings(settings, requestId) {\n // Apply settings\n const validSettings = TKHQ.applySettings(settings);\n\n // Persist in local storage\n TKHQ.setSettings(validSettings);\n\n // Send up SETTINGS_APPLIED message\n TKHQ.sendMessageUp(\"SETTINGS_APPLIED\", true, requestId);\n}\n\nasync function HpkeEncrypt({ plaintextBuf, receiverPubJwk }) {\n const kemContext = new hpke.DhkemP256HkdfSha256();\n const receiverPub = await kemContext.importKey(\n \"jwk\",\n { ...receiverPubJwk },\n true\n );\n\n const suite = new hpke.CipherSuite({\n kem: kemContext,\n kdf: new hpke.HkdfSha256(),\n aead: new hpke.Aes256Gcm(),\n });\n\n const senderCtx = await suite.createSenderContext({\n recipientPublicKey: receiverPub,\n info: new TextEncoder().encode(\"turnkey_hpke\"),\n });\n\n // Need to import the key again as a JWK to export as a raw key, the format needed to\n // create the aad with the newly generated raw encapped key.\n const receiverPubCryptoKey = await crypto.subtle.importKey(\n \"jwk\",\n receiverPubJwk,\n {\n name: \"ECDSA\",\n namedCurve: \"P-256\",\n },\n true,\n []\n );\n const receiverPubRaw = await crypto.subtle.exportKey(\n \"raw\",\n receiverPubCryptoKey\n );\n const receiverPubBuf = new Uint8Array(receiverPubRaw);\n\n const encappedKeyBuf = new Uint8Array(senderCtx.enc);\n\n const aad = TKHQ.additionalAssociatedData(encappedKeyBuf, receiverPubBuf);\n\n var ciphertextBuf;\n try {\n ciphertextBuf = await senderCtx.seal(plaintextBuf, aad);\n } catch (e) {\n throw new Error(\"failed to encrypt import bundle: \" + e.toString());\n }\n\n const ciphertextHex = TKHQ.uint8arrayToHexString(\n new Uint8Array(ciphertextBuf)\n );\n const encappedKeyBufHex = TKHQ.uint8arrayToHexString(encappedKeyBuf);\n const encryptedBundle = JSON.stringify({\n encappedPublic: encappedKeyBufHex,\n ciphertext: ciphertextHex,\n });\n return encryptedBundle;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.\" + {\"291\":\"b62abe64ba4ebf68e89b\",\"825\":\"3a4aff0e743a7540fe25\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkimport\"] = self[\"webpackChunkimport\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [96,76], () => (__webpack_require__(954)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","_OverloadYield","k","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","window","TKHQ","iframeMessagePort","messageListenerController","AbortController","turnkeyInitController","messageEventListener","_ref","_regeneratorRuntime","mark","_callee","event","wrap","_context","prev","next","data","onInjectImportBundle","t0","toString","onExtractWalletEncryptedBundle","t1","onExtractKeyEncryptedBundle","t2","onApplySettings","t3","stop","_x","validateMnemonic","mnemonic","includes","Error","_x3","_x4","_x5","_x6","_onInjectImportBundle","_callee5","bundle","organizationId","userId","requestId","targetPublicBuf","bundleObj","signedData","targetPublicKeyJwk","_context5","JSON","parse","version","dataSignature","enclaveQuorumPublic","sent","concat","TextDecoder","decode","console","warn","targetPublic","abrupt","Uint8Array","_x7","_onExtractWalletEncryptedBundle","_callee6","plaintext","passphrase","combined","plaintextBuf","encryptedBundle","_context6","document","getElementById","trim","TextEncoder","encode","HpkeEncrypt","receiverPubJwk","_x8","_x9","_onExtractKeyEncryptedBundle","_callee7","keyFormat","_context7","_x10","_x11","_onApplySettings","_callee8","settings","validSettings","_context8","_x12","_HpkeEncrypt","_callee9","_ref5","kemContext","receiverPub","suite","senderCtx","receiverPubCryptoKey","receiverPubRaw","receiverPubBuf","encappedKeyBuf","aad","ciphertextBuf","ciphertextHex","encappedKeyBufHex","_context9","hpke","importKey","_objectSpread","kem","kdf","aead","createSenderContext","recipientPublicKey","info","crypto","subtle","name","namedCurve","exportKey","enc","seal","stringify","encappedPublic","ciphertext","addEventListener","_callee3","styleSettings","plaintextTextarea","_context3","capture","signal","aborted","_callee2","permStatus","_context2","navigator","permissions","query","state","clipboard","writeText","_ref4","_callee4","_event$ports","_context4","ports","abort","onmessage","_x2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","key","splice","obj","mode","this","__esModule","ns","def","current","indexOf","getOwnPropertyNames","forEach","definition","get","chunkId","all","reduce","promises","miniCssF","g","globalThis","Function","prop","hasOwnProperty","url","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","type","target","head","appendChild","installedChunks","installedChunkData","promise","reject","error","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/import/dist/index.bundle.fa4b8f8eab66cd51d789.js.map b/import/dist/index.bundle.fa4b8f8eab66cd51d789.js.map deleted file mode 100644 index e25d4ce..0000000 --- a/import/dist/index.bundle.fa4b8f8eab66cd51d789.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.bundle.fa4b8f8eab66cd51d789.js","mappings":"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","sources":["webpack://import/webpack/runtime/chunk loaded","webpack://import/webpack/runtime/create fake namespace object","webpack://import/webpack/runtime/load script","webpack://import/./src/index.js","webpack://import/webpack/bootstrap","webpack://import/webpack/runtime/define property getters","webpack://import/webpack/runtime/ensure chunk","webpack://import/webpack/runtime/get javascript chunk filename","webpack://import/webpack/runtime/get mini-css chunk filename","webpack://import/webpack/runtime/global","webpack://import/webpack/runtime/hasOwnProperty shorthand","webpack://import/webpack/runtime/make namespace object","webpack://import/webpack/runtime/publicPath","webpack://import/webpack/runtime/jsonp chunk loading","webpack://import/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"import:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import \"./styles.css\";\nimport * as hpke from \"@hpke/core\";\nimport * as TKHQ from \"./turnkey-core.js\";\n\n// Make TKHQ available globally for backwards compatibility\nwindow.TKHQ = TKHQ;\n\n// persist the MessageChannel object so we can use it to communicate with the parent window\nvar iframeMessagePort = null;\n\n// controllers to remove event listeners\nconst messageListenerController = new AbortController();\nconst turnkeyInitController = new AbortController();\n\n/**\n * Message Event Handlers to process messages from the parent frame\n */\nvar messageEventListener = async function (event) {\n if (event.data && event.data[\"type\"] == \"INJECT_IMPORT_BUNDLE\") {\n try {\n await onInjectImportBundle(\n event.data[\"value\"],\n event.data[\"organizationId\"],\n event.data[\"userId\"],\n event.data[\"requestId\"]\n );\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n if (event.data && event.data[\"type\"] == \"EXTRACT_WALLET_ENCRYPTED_BUNDLE\") {\n try {\n await onExtractWalletEncryptedBundle(event.data[\"requestId\"]);\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n if (event.data && event.data[\"type\"] == \"EXTRACT_KEY_ENCRYPTED_BUNDLE\") {\n try {\n await onExtractKeyEncryptedBundle(\n event.data[\"keyFormat\"],\n event.data[\"requestId\"]\n );\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n if (event.data && event.data[\"type\"] == \"APPLY_SETTINGS\") {\n try {\n await onApplySettings(event.data[\"value\"], event.data[\"requestId\"]);\n } catch (e) {\n TKHQ.sendMessageUp(\"ERROR\", e.toString(), event.data[\"requestId\"]);\n }\n }\n};\n\n/**\n * Broadcast that the frame is ready and set up the message event listeners\n */\ndocument.addEventListener(\n \"DOMContentLoaded\",\n async function () {\n window.addEventListener(\"message\", messageEventListener, {\n capture: false,\n signal: messageListenerController.signal,\n });\n\n if (!messageListenerController.signal.aborted) {\n // If styles are saved in local storage, sanitize and apply them.\n const styleSettings = TKHQ.getSettings();\n if (styleSettings) {\n TKHQ.applySettings(styleSettings);\n }\n // This is a workaround for how @turnkey/iframe-stamper is initialized. Currently,\n // init() waits for a public key to be initialized that can be used to send to the server\n // which will encrypt messages to this public key.\n // In the case of import, this public key is not used because the client encrypts messages\n // to the server's public key.\n TKHQ.sendMessageUp(\"PUBLIC_KEY_READY\", \"\");\n\n const plaintextTextarea = document.getElementById(\"plaintext\");\n if (!plaintextTextarea) return;\n // Clear clipboard after paste to avoid sensitive data lingering in clipboard.\n\n plaintextTextarea.addEventListener(\"paste\", async () => {\n // Let the paste happen first\n try {\n // Check clipboard-write permission first. In new versions of iframe-stamper, we add this permission when creating the iframe. In older versions, this permission is not added.\n const permStatus = await navigator.permissions\n .query({ name: \"clipboard-write\" }) // This is required to avoid error on clipboard write\n .catch(() => null);\n\n // Proceed only if granted or promptable\n if (\n permStatus?.state === \"granted\" ||\n permStatus?.state === \"prompt\"\n ) {\n await navigator.clipboard.writeText(\"\");\n }\n } catch {\n // Silently ignore any errors — no warnings or console noise\n }\n });\n }\n },\n false\n);\n\nwindow.addEventListener(\n \"message\",\n async function (event) {\n /**\n * @turnkey/iframe-stamper >= v2.1.0 is using a MessageChannel to communicate with the parent frame.\n * The parent frame sends a TURNKEY_INIT_MESSAGE_CHANNEL event with the MessagePort.\n * If we receive this event, we want to remove the message event listener that was added in the DOMContentLoaded event to avoid processing messages twice.\n * We persist the MessagePort so we can use it to communicate with the parent window in subsequent calls to TKHQ.sendMessageUp\n */\n if (\n event.data &&\n event.data[\"type\"] == \"TURNKEY_INIT_MESSAGE_CHANNEL\" &&\n event.ports?.[0]\n ) {\n // remove the message event listener that was added in the DOMContentLoaded event\n messageListenerController.abort();\n\n iframeMessagePort = event.ports[0];\n iframeMessagePort.onmessage = messageEventListener;\n\n TKHQ.setParentFrameMessageChannelPort(iframeMessagePort);\n\n // This is a workaround for how @turnkey/iframe-stamper is initialized. Currently,\n // init() waits for a public key to be initialized that can be used to send to the server\n // which will encrypt messages to this public key.\n // In the case of import, this public key is not used because the client encrypts messages\n // to the server's public key.\n TKHQ.sendMessageUp(\"PUBLIC_KEY_READY\", \"\");\n\n // remove the listener for TURNKEY_INIT_MESSAGE_CHANNEL after it's been processed\n turnkeyInitController.abort();\n }\n },\n { signal: turnkeyInitController.signal }\n);\n\n// make sure the mnemonic does not include our splitter (\\n--PASS--\\n) string or \\n characters\nfunction validateMnemonic(mnemonic) {\n if (mnemonic.includes(\"\\n--PASS--\\n\")) {\n throw new Error('mnemonic cannot include the string \"\\\\n--PASS--\\\\n\"');\n }\n if (mnemonic.includes(\"\\n\")) {\n throw new Error(\"mnemonic cannot include newline characters\");\n }\n}\n\n/**\n * Function triggered when INJECT_IMPORT_BUNDLE event is received.\n * Parses the `import_bundle` and stores the target public key as a JWK\n * in local storage. Sends true upon success.\n * @param {string} bundle\n * Example bundle: {\"targetPublic\":\"0491ccb68758b822a6549257f87769eeed37c6cb68a6c6255c5f238e2b6e6e61838c8ac857f2e305970a6435715f84e5a2e4b02a4d1e5289ba7ec7910e47d2d50f\",\"targetPublicSignature\":\"3045022100cefc333c330c9fa300d1aa10a439a76539b4d6967301638ab9edc9fd9468bfdb0220339bba7e2b00b45d52e941d068ecd3bfd16fd1926da69dd7769893268990d62f\",\"enclaveQuorumPublic\":\"04cf288fe433cc4e1aa0ce1632feac4ea26bf2f5a09dcfe5a42c398e06898710330f0572882f4dbdf0f5304b8fc8703acd69adca9a4bbf7f5d00d20a5e364b2569\"}\n * @param {string} organizationId\n * @param {string} userId\n * @param {string} requestId\n */\nasync function onInjectImportBundle(bundle, organizationId, userId, requestId) {\n let targetPublicBuf;\n let verified;\n\n // Parse the import bundle\n const bundleObj = JSON.parse(bundle);\n\n switch (bundleObj.version) {\n case \"v1.0.0\": {\n // Validate fields exist\n if (!bundleObj.data) {\n throw new Error('missing \"data\" in bundle');\n }\n if (!bundleObj.dataSignature) {\n throw new Error('missing \"dataSignature\" in bundle');\n }\n if (!bundleObj.enclaveQuorumPublic) {\n throw new Error('missing \"enclaveQuorumPublic\" in bundle');\n }\n\n // Verify enclave signature\n if (!TKHQ.verifyEnclaveSignature) {\n throw new Error(\"method not loaded\");\n }\n verified = await TKHQ.verifyEnclaveSignature(\n bundleObj.enclaveQuorumPublic,\n bundleObj.dataSignature,\n bundleObj.data\n );\n if (!verified) {\n throw new Error(`failed to verify enclave signature: ${bundle}`);\n }\n\n // Parse the signed data. The data is produced by JSON encoding followed by hex encoding. We reverse this here.\n const signedData = JSON.parse(\n new TextDecoder().decode(TKHQ.uint8arrayFromHexString(bundleObj.data))\n );\n\n // Validate fields match\n if (!organizationId) {\n // TODO: throw error if organization id is undefined once we've fully transitioned to v1.0.0 server messages and v2.0.0 iframe-stamper\n console.warn(\n 'we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass \"organizationId\" for security purposes.'\n );\n } else if (\n !signedData.organizationId ||\n signedData.organizationId !== organizationId\n ) {\n throw new Error(\n `organization id does not match expected value. Expected: ${organizationId}. Found: ${signedData.organizationId}.`\n );\n }\n if (!userId) {\n // TODO: throw error if user id is undefined once we've fully transitioned to v1.0.0 server messages and v2.0.0 iframe-stamper\n console.warn(\n 'we highly recommend a version of @turnkey/iframe-stamper >= v2.0.0 to pass \"userId\" for security purposes.'\n );\n } else if (!signedData.userId || signedData.userId !== userId) {\n throw new Error(\n `user id does not match expected value. Expected: ${userId}. Found: ${signedData.userId}.`\n );\n }\n\n if (!signedData.targetPublic) {\n throw new Error('missing \"targetPublic\" in bundle signed data');\n }\n\n // Load target public key generated from enclave and set in local storage\n targetPublicBuf = TKHQ.uint8arrayFromHexString(signedData.targetPublic);\n break;\n }\n default:\n throw new Error(`unsupported version: ${bundleObj.version}`);\n }\n\n const targetPublicKeyJwk = await TKHQ.loadTargetKey(\n new Uint8Array(targetPublicBuf)\n );\n TKHQ.setTargetEmbeddedKey(targetPublicKeyJwk);\n\n // Send up BUNDLE_INJECTED message\n TKHQ.sendMessageUp(\"BUNDLE_INJECTED\", true, requestId);\n}\n\n/**\n * Function triggered when EXTRACT_WALLET_ENCRYPTED_BUNDLE event is received.\n * Prerequisite: This function uses the target public key in local storage that is imported\n * from the INJECT_IMPORT_BUNDLE event.\n * Uses the target public key in local storage to encrypt the text entered in the\n * `plaintext` textarea element. Upon successful encryption, sends\n * an `encrypted_bundle` containing the ciphertext and encapped public key.\n * Example bundle: {\"encappedPublic\":\"0497f33f3306f67f4402d4824e15b63b04786b6558d417aac2fef69051e46fa7bfbe776b142e4ded4f02097617a7588e93c53b71f900a4a8831a31be6f95e5f60f\",\"ciphertext\":\"c17c3085505f3c094f0fa61791395b83ab1d8c90bdf9f12a64fc6e2e9cba266beb528f65c88bd933e36e6203752a9b63e6a92290a0ab6bf0ed591cf7bfa08006001e2cc63870165dc99ec61554ffdc14dea7d567e62cceed29314ae6c71a013843f5c06146dee5bf9c1d\"}\n * @param {string} requestId\n */\nasync function onExtractWalletEncryptedBundle(requestId) {\n // Get target embedded key from previous step (onInjectImportBundle)\n const targetPublicKeyJwk = TKHQ.getTargetEmbeddedKey();\n if (targetPublicKeyJwk == null) {\n throw new Error(\"no target key found\");\n }\n\n // Get plaintext wallet mnemonic\n const plaintext = document.getElementById(\"plaintext\").value.trim();\n if (!plaintext) {\n throw new Error(\"no wallet mnemonic entered\");\n }\n\n const passphrase = document.getElementById(\"passphrase\").value;\n\n validateMnemonic(plaintext);\n\n const combined =\n passphrase === \"\" ? plaintext : `${plaintext}\\n--PASS--\\n${passphrase}`;\n const plaintextBuf = new TextEncoder().encode(combined);\n\n // Encrypt the bundle using the enclave target public key\n const encryptedBundle = await HpkeEncrypt({\n plaintextBuf,\n receiverPubJwk: targetPublicKeyJwk,\n });\n\n // Reset target embedded key after using for encryption\n TKHQ.resetTargetEmbeddedKey();\n\n // Send up ENCRYPTED_BUNDLE_EXTRACTED message\n TKHQ.sendMessageUp(\"ENCRYPTED_BUNDLE_EXTRACTED\", encryptedBundle, requestId);\n}\n\n/**\n * Function triggered when EXTRACT_KEY_ENCRYPTED_BUNDLE event is received.\n * Prerequisite: This function uses the target public key in local storage that is imported\n * from the INJECT_IMPORT_BUNDLE event.\n * Uses the target public key in local storage to encrypt the text entered in the\n * `plaintext` textarea element. Upon successful encryption, sends\n * an `encrypted_bundle` containing the ciphertext and encapped public key.\n * Example bundle: {\"encappedPublic\":\"0497f33f3306f67f4402d4824e15b63b04786b6558d417aac2fef69051e46fa7bfbe776b142e4ded4f02097617a7588e93c53b71f900a4a8831a31be6f95e5f60f\",\"ciphertext\":\"c17c3085505f3c094f0fa61791395b83ab1d8c90bdf9f12a64fc6e2e9cba266beb528f65c88bd933e36e6203752a9b63e6a92290a0ab6bf0ed591cf7bfa08006001e2cc63870165dc99ec61554ffdc14dea7d567e62cceed29314ae6c71a013843f5c06146dee5bf9c1d\"}\n * @param {string} keyFormat\n * @param {string} requestId\n */\nasync function onExtractKeyEncryptedBundle(keyFormat, requestId) {\n // Get target embedded key from previous step (onInjectImportBundle)\n const targetPublicKeyJwk = TKHQ.getTargetEmbeddedKey();\n if (targetPublicKeyJwk == null) {\n throw new Error(\"no target key found\");\n }\n\n // Get plaintext private key\n const plaintext = document.getElementById(\"plaintext\").value.trim();\n if (!plaintext) {\n throw new Error(\"no private key entered\");\n }\n const plaintextBuf = TKHQ.decodeKey(plaintext, keyFormat);\n\n // Encrypt the bundle using the enclave target public key\n const encryptedBundle = await HpkeEncrypt({\n plaintextBuf,\n receiverPubJwk: targetPublicKeyJwk,\n });\n\n // Reset target embedded key after using for encryption\n TKHQ.resetTargetEmbeddedKey();\n\n // Send up ENCRYPTED_BUNDLE_EXTRACTED message\n TKHQ.sendMessageUp(\"ENCRYPTED_BUNDLE_EXTRACTED\", encryptedBundle, requestId);\n}\n\n/**\n * Function triggered when APPLY_SETTINGS event is received.\n * For now, the only settings that can be applied are for \"styles\".\n * Persist them in local storage so they can be applied on every\n * page load.\n * @param {string} settings: JSON-stringified settings\n * @param {string} requestId\n */\nasync function onApplySettings(settings, requestId) {\n // Apply settings\n const validSettings = TKHQ.applySettings(settings);\n\n // Persist in local storage\n TKHQ.setSettings(validSettings);\n\n // Send up SETTINGS_APPLIED message\n TKHQ.sendMessageUp(\"SETTINGS_APPLIED\", true, requestId);\n}\n\nasync function HpkeEncrypt({ plaintextBuf, receiverPubJwk }) {\n const kemContext = new hpke.DhkemP256HkdfSha256();\n const receiverPub = await kemContext.importKey(\n \"jwk\",\n { ...receiverPubJwk },\n true\n );\n\n const suite = new hpke.CipherSuite({\n kem: kemContext,\n kdf: new hpke.HkdfSha256(),\n aead: new hpke.Aes256Gcm(),\n });\n\n const senderCtx = await suite.createSenderContext({\n recipientPublicKey: receiverPub,\n info: new TextEncoder().encode(\"turnkey_hpke\"),\n });\n\n // Need to import the key again as a JWK to export as a raw key, the format needed to\n // create the aad with the newly generated raw encapped key.\n const receiverPubCryptoKey = await crypto.subtle.importKey(\n \"jwk\",\n receiverPubJwk,\n {\n name: \"ECDSA\",\n namedCurve: \"P-256\",\n },\n true,\n []\n );\n const receiverPubRaw = await crypto.subtle.exportKey(\n \"raw\",\n receiverPubCryptoKey\n );\n const receiverPubBuf = new Uint8Array(receiverPubRaw);\n\n const encappedKeyBuf = new Uint8Array(senderCtx.enc);\n\n const aad = TKHQ.additionalAssociatedData(encappedKeyBuf, receiverPubBuf);\n\n var ciphertextBuf;\n try {\n ciphertextBuf = await senderCtx.seal(plaintextBuf, aad);\n } catch (e) {\n throw new Error(\"failed to encrypt import bundle: \" + e.toString());\n }\n\n const ciphertextHex = TKHQ.uint8arrayToHexString(\n new Uint8Array(ciphertextBuf)\n );\n const encappedKeyBufHex = TKHQ.uint8arrayToHexString(encappedKeyBuf);\n const encryptedBundle = JSON.stringify({\n encappedPublic: encappedKeyBufHex,\n ciphertext: ciphertextHex,\n });\n return encryptedBundle;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.\" + {\"291\":\"b62abe64ba4ebf68e89b\",\"825\":\"3a4aff0e743a7540fe25\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkimport\"] = self[\"webpackChunkimport\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [96,76], () => (__webpack_require__(954)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","_OverloadYield","k","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","window","TKHQ","iframeMessagePort","messageListenerController","AbortController","turnkeyInitController","messageEventListener","_ref","_regeneratorRuntime","mark","_callee","event","wrap","_context","prev","next","data","onInjectImportBundle","t0","toString","onExtractWalletEncryptedBundle","t1","onExtractKeyEncryptedBundle","t2","onApplySettings","t3","stop","_x","validateMnemonic","mnemonic","includes","Error","_x3","_x4","_x5","_x6","_onInjectImportBundle","_callee5","bundle","organizationId","userId","requestId","targetPublicBuf","bundleObj","signedData","targetPublicKeyJwk","_context5","JSON","parse","version","dataSignature","enclaveQuorumPublic","sent","concat","TextDecoder","decode","console","warn","targetPublic","abrupt","Uint8Array","_x7","_onExtractWalletEncryptedBundle","_callee6","plaintext","passphrase","combined","plaintextBuf","encryptedBundle","_context6","document","getElementById","trim","TextEncoder","encode","HpkeEncrypt","receiverPubJwk","_x8","_x9","_onExtractKeyEncryptedBundle","_callee7","keyFormat","_context7","_x10","_x11","_onApplySettings","_callee8","settings","validSettings","_context8","_x12","_HpkeEncrypt","_callee9","_ref5","kemContext","receiverPub","suite","senderCtx","receiverPubCryptoKey","receiverPubRaw","receiverPubBuf","encappedKeyBuf","aad","ciphertextBuf","ciphertextHex","encappedKeyBufHex","_context9","hpke","importKey","_objectSpread","kem","kdf","aead","createSenderContext","recipientPublicKey","info","crypto","subtle","name","namedCurve","exportKey","enc","seal","stringify","encappedPublic","ciphertext","addEventListener","_callee3","styleSettings","plaintextTextarea","_context3","capture","signal","aborted","_callee2","permStatus","_context2","navigator","permissions","query","state","clipboard","writeText","_ref4","_callee4","_event$ports","_context4","ports","abort","onmessage","_x2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","key","splice","obj","mode","this","__esModule","ns","def","current","indexOf","getOwnPropertyNames","forEach","definition","get","chunkId","all","reduce","promises","miniCssF","g","globalThis","Function","prop","hasOwnProperty","url","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","type","target","head","appendChild","installedChunks","installedChunkData","promise","reject","error","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/import/dist/index.html b/import/dist/index.html index 68d559f..10e2a43 100644 --- a/import/dist/index.html +++ b/import/dist/index.html @@ -1 +1 @@ -Turnkey Import
\ No newline at end of file +Turnkey Import
\ No newline at end of file diff --git a/import/dist/standalone.html b/import/dist/standalone.html index 499ed50..a882b31 100644 --- a/import/dist/standalone.html +++ b/import/dist/standalone.html @@ -1 +1 @@ -Turnkey Import (Standalone Mode)

Initialize Import




Import Wallet


Import Private Key



Message log

Below we display a log of the messages sent / received. The forms above send messages, and the code communicates results by sending events via the postMessage API.

\ No newline at end of file +Turnkey Import (Standalone Mode)

Initialize Import




Import Wallet


Import Private Key



Message log

Below we display a log of the messages sent / received. The forms above send messages, and the code communicates results by sending events via the postMessage API.

\ No newline at end of file diff --git a/import/dist/vendors.bundle.21bb724fa18b849859c6.js b/import/dist/vendors.bundle.21bb724fa18b849859c6.js deleted file mode 100644 index 45c5b81..0000000 --- a/import/dist/vendors.bundle.21bb724fa18b849859c6.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkimport=self.webpackChunkimport||[]).push([[96],{255:(e,t,i)=>{i.d(t,{ws:()=>W,GR:()=>be,RG:()=>fe,v7:()=>pe});class r extends Error{constructor(e){let t;t=e instanceof Error?e.message:"string"==typeof e?e:"",super(t),this.name=this.constructor.name}}class a extends r{}class n extends r{}class s extends r{}class o extends r{}class c extends r{}class h extends r{}class l extends r{}class u extends r{}class d extends r{}class y extends r{}class w extends r{}const b=(f=globalThis,p={},new Proxy(f,{get:(e,t,i)=>t in p?p[t]:f[t],set:(e,t,i)=>(t in p&&delete p[t],f[t]=i,!0),deleteProperty(e,t){let i=!1;return t in p&&(delete p[t],i=!0),t in f&&(delete f[t],i=!0),i},ownKeys(e){const t=Reflect.ownKeys(f),i=Reflect.ownKeys(p),r=new Set(i);return[...t.filter(e=>!r.has(e)),...i]},defineProperty:(e,t,i)=>(t in p&&delete p[t],Reflect.defineProperty(f,t,i),!0),getOwnPropertyDescriptor:(e,t)=>t in p?Reflect.getOwnPropertyDescriptor(p,t):Reflect.getOwnPropertyDescriptor(f,t),has:(e,t)=>t in p||t in f}));var f,p;class _{constructor(){Object.defineProperty(this,"_api",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}async _setup(){void 0===this._api&&(this._api=await async function(){if(void 0!==b&&void 0!==globalThis.crypto)return globalThis.crypto.subtle;try{const{webcrypto:e}=await i.e(825).then(i.t.bind(i,825,19));return e.subtle}catch(e){throw new w(e)}}())}}const g=8192,m=new Uint8Array(0),v=new Uint8Array([75,69,77,0,0]),k=e=>"object"==typeof e&&null!==e&&"object"==typeof e.privateKey&&"object"==typeof e.publicKey;function P(e,t){if(t<=0)throw new Error("i2Osp: too small size");if(e>=256**t)throw new Error("i2Osp: too large integer");const i=new Uint8Array(t);for(let r=0;r>=8;return i}function K(e,t){const i=new Uint8Array(e.length+t.length);return i.set(e,0),i.set(t,e.length),i}const A=new Uint8Array([101,97,101,95,112,114,107]),x=new Uint8Array([115,104,97,114,101,100,95,115,101,99,114,101,116]);class S{constructor(e,t,i){Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"secretSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"encSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"publicKeySize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"privateKeySize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_prim",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_kdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.id=e,this._prim=t,this._kdf=i;const r=new Uint8Array(v);r.set(P(this.id,2),3),this._kdf.init(r)}async serializePublicKey(e){return await this._prim.serializePublicKey(e)}async deserializePublicKey(e){return await this._prim.deserializePublicKey(e)}async serializePrivateKey(e){return await this._prim.serializePrivateKey(e)}async deserializePrivateKey(e){return await this._prim.deserializePrivateKey(e)}async importKey(e,t,i=!0){return await this._prim.importKey(e,t,i)}async generateKeyPair(){return await this._prim.generateKeyPair()}async deriveKeyPair(e){if(e.byteLength>g)throw new a("Too long ikm");return await this._prim.deriveKeyPair(e)}async encap(e){let t;t=void 0===e.ekm?await this.generateKeyPair():k(e.ekm)?e.ekm:await this.deriveKeyPair(e.ekm);const i=await this._prim.serializePublicKey(t.publicKey),r=await this._prim.serializePublicKey(e.recipientPublicKey);try{let a,n;if(void 0===e.senderKey)a=new Uint8Array(await this._prim.dh(t.privateKey,e.recipientPublicKey));else{const i=k(e.senderKey)?e.senderKey.privateKey:e.senderKey;a=K(new Uint8Array(await this._prim.dh(t.privateKey,e.recipientPublicKey)),new Uint8Array(await this._prim.dh(i,e.recipientPublicKey)))}if(void 0===e.senderKey)n=K(new Uint8Array(i),new Uint8Array(r));else{const t=k(e.senderKey)?e.senderKey.publicKey:await this._prim.derivePublicKey(e.senderKey),a=await this._prim.serializePublicKey(t);n=function(e,t,i){const r=new Uint8Array(e.length+t.length+i.length);return r.set(e,0),r.set(t,e.length),r.set(i,e.length+t.length),r}(new Uint8Array(i),new Uint8Array(r),new Uint8Array(a))}return{enc:i,sharedSecret:await this._generateSharedSecret(a,n)}}catch(e){throw new o(e)}}async decap(e){const t=await this._prim.deserializePublicKey(e.enc),i=k(e.recipientKey)?e.recipientKey.privateKey:e.recipientKey,r=k(e.recipientKey)?e.recipientKey.publicKey:await this._prim.derivePublicKey(e.recipientKey),a=await this._prim.serializePublicKey(r);try{let r,n;if(void 0===e.senderPublicKey)r=new Uint8Array(await this._prim.dh(i,t));else{r=K(new Uint8Array(await this._prim.dh(i,t)),new Uint8Array(await this._prim.dh(i,e.senderPublicKey)))}if(void 0===e.senderPublicKey)n=K(new Uint8Array(e.enc),new Uint8Array(a));else{const t=await this._prim.serializePublicKey(e.senderPublicKey);n=new Uint8Array(e.enc.byteLength+a.byteLength+t.byteLength),n.set(new Uint8Array(e.enc),0),n.set(new Uint8Array(a),e.enc.byteLength),n.set(new Uint8Array(t),e.enc.byteLength+a.byteLength)}return await this._generateSharedSecret(r,n)}catch(e){throw new c(e)}}async _generateSharedSecret(e,t){const i=this._kdf.buildLabeledIkm(A,e),r=this._kdf.buildLabeledInfo(x,t,this.secretSize);return await this._kdf.extractAndExpand(m.buffer,i.buffer,r.buffer,this.secretSize)}}const U=["deriveBits"],j=new Uint8Array([100,107,112,95,112,114,107]);new Uint8Array([115,107]);class E{constructor(e){Object.defineProperty(this,"_num",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._num=new Uint8Array(e)}val(){return this._num}reset(){this._num.fill(0)}set(e){if(e.length!==this._num.length)throw new Error("Bignum.set: invalid argument");this._num.set(e)}isZero(){for(let e=0;ee[t])return!1}return!1}}const O=new Uint8Array([99,97,110,100,105,100,97,116,101]),z=new Uint8Array([255,255,255,255,0,0,0,0,255,255,255,255,255,255,255,255,188,230,250,173,167,23,158,132,243,185,202,194,252,99,37,81]),I=new Uint8Array([255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,199,99,77,129,244,55,45,223,88,26,13,178,72,176,167,122,236,236,25,106,204,197,41,115]),L=new Uint8Array([1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,81,134,135,131,191,47,150,107,127,204,1,72,247,9,165,208,59,181,201,184,137,156,71,174,187,111,183,30,145,56,100,9]),C=new Uint8Array([48,65,2,1,0,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,4,39,48,37,2,1,1,4,32]),T=new Uint8Array([48,78,2,1,0,48,16,6,7,42,134,72,206,61,2,1,6,5,43,129,4,0,34,4,55,48,53,2,1,1,4,48]),H=new Uint8Array([48,96,2,1,0,48,16,6,7,42,134,72,206,61,2,1,6,5,43,129,4,0,35,4,73,48,71,2,1,1,4,66]);class R extends _{constructor(e,t){switch(super(),Object.defineProperty(this,"_hkdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_alg",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nPk",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nSk",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nDh",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_order",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_bitmask",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pkcs8AlgId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._hkdf=t,e){case 16:this._alg={name:"ECDH",namedCurve:"P-256"},this._nPk=65,this._nSk=32,this._nDh=32,this._order=z,this._bitmask=255,this._pkcs8AlgId=C;break;case 17:this._alg={name:"ECDH",namedCurve:"P-384"},this._nPk=97,this._nSk=48,this._nDh=48,this._order=I,this._bitmask=255,this._pkcs8AlgId=T;break;default:this._alg={name:"ECDH",namedCurve:"P-521"},this._nPk=133,this._nSk=66,this._nDh=66,this._order=L,this._bitmask=1,this._pkcs8AlgId=H}}async serializePublicKey(e){await this._setup();try{return await this._api.exportKey("raw",e)}catch(e){throw new n(e)}}async deserializePublicKey(e){await this._setup();try{return await this._importRawKey(e,!0)}catch(e){throw new s(e)}}async serializePrivateKey(e){await this._setup();try{const t=await this._api.exportKey("jwk",e);if(!("d"in t))throw new Error("Not private key");return function(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),i=atob(t),r=new Uint8Array(i.length);for(let e=0;e255)throw new Error("Faild to derive a key pair");const r=new Uint8Array(await this._hkdf.labeledExpand(t,O,P(e,1),this._nSk));r[0]=r[0]&this._bitmask,i.set(r)}const r=await this._deserializePkcs8Key(i.val());return i.reset(),{privateKey:r,publicKey:await this.derivePublicKey(r)}}catch(e){throw new y(e)}}async derivePublicKey(e){await this._setup();try{const t=await this._api.exportKey("jwk",e);return delete t.d,delete t.key_ops,await this._api.importKey("jwk",t,this._alg,!0,[])}catch(e){throw new s(e)}}async dh(e,t){try{return await this._setup(),await this._api.deriveBits({name:"ECDH",public:t},e,8*this._nDh)}catch(e){throw new n(e)}}async _importRawKey(e,t){if(t&&e.byteLength!==this._nPk)throw new Error("Invalid public key for the ciphersuite");if(!t&&e.byteLength!==this._nSk)throw new Error("Invalid private key for the ciphersuite");return t?await this._api.importKey("raw",e,this._alg,!0,[]):await this._deserializePkcs8Key(new Uint8Array(e))}async _importJWK(e,t){if(void 0===e.crv||e.crv!==this._alg.namedCurve)throw new Error(`Invalid crv: ${e.crv}`);if(t){if(void 0!==e.d)throw new Error("Invalid key: `d` should not be set");return await this._api.importKey("jwk",e,this._alg,!0,[])}if(void 0===e.d)throw new Error("Invalid key: `d` not found");return await this._api.importKey("jwk",e,this._alg,!0,U)}async _deserializePkcs8Key(e){const t=new Uint8Array(this._pkcs8AlgId.length+e.length);return t.set(this._pkcs8AlgId,0),t.set(e,this._pkcs8AlgId.length),await this._api.importKey("pkcs8",t,this._alg,!0,U)}}const D=new Uint8Array([72,80,75,69,45,118,49]);class N extends _{constructor(){super(),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"hashSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_suiteId",{enumerable:!0,configurable:!0,writable:!0,value:m}),Object.defineProperty(this,"algHash",{enumerable:!0,configurable:!0,writable:!0,value:{name:"HMAC",hash:"SHA-256",length:256}})}init(e){this._suiteId=e}buildLabeledIkm(e,t){this._checkInit();const i=new Uint8Array(7+this._suiteId.byteLength+e.byteLength+t.byteLength);return i.set(D,0),i.set(this._suiteId,7),i.set(e,7+this._suiteId.byteLength),i.set(t,7+this._suiteId.byteLength+e.byteLength),i}buildLabeledInfo(e,t,i){this._checkInit();const r=new Uint8Array(9+this._suiteId.byteLength+e.byteLength+t.byteLength);return r.set(new Uint8Array([0,i]),0),r.set(D,2),r.set(this._suiteId,9),r.set(e,9+this._suiteId.byteLength),r.set(t,9+this._suiteId.byteLength+e.byteLength),r}async extract(e,t){if(await this._setup(),0===e.byteLength&&(e=new ArrayBuffer(this.hashSize)),e.byteLength!==this.hashSize)throw new a("The salt length must be the same as the hashSize");const i=await this._api.importKey("raw",e,this.algHash,!1,["sign"]);return await this._api.sign("HMAC",i,t)}async expand(e,t,i){await this._setup();const r=await this._api.importKey("raw",e,this.algHash,!1,["sign"]),a=new ArrayBuffer(i),n=new Uint8Array(a);let s=m;const o=new Uint8Array(t),c=new Uint8Array(1);if(i>255*this.hashSize)throw new Error("Entropy limit reached");const h=new Uint8Array(this.hashSize+o.length+1);for(let e=1,t=0;t=s.length?(n.set(s,t),t+=s.length):(n.set(s.slice(0,n.length-t),t),t+=n.length-t);return a}async extractAndExpand(e,t,i,r){await this._setup();const a=await this._api.importKey("raw",t,"HKDF",!1,["deriveBits"]);return await this._api.deriveBits({name:"HKDF",hash:this.algHash.hash,salt:e,info:i},a,8*r)}async labeledExtract(e,t,i){return await this.extract(e,this.buildLabeledIkm(t,i).buffer)}async labeledExpand(e,t,i,r){return await this.expand(e,this.buildLabeledInfo(t,i,r).buffer,r)}_checkInit(){if(this._suiteId===m)throw new Error("Not initialized. Call init()")}}class B extends N{constructor(){super(...arguments),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"hashSize",{enumerable:!0,configurable:!0,writable:!0,value:32}),Object.defineProperty(this,"algHash",{enumerable:!0,configurable:!0,writable:!0,value:{name:"HMAC",hash:"SHA-256",length:256}})}}const M=["encrypt","decrypt"];BigInt(0),BigInt(1),BigInt(2);class q extends _{constructor(e){super(),Object.defineProperty(this,"_rawKey",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_key",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._rawKey=e}async seal(e,t,i){await this._setupKey();const r={name:"AES-GCM",iv:e,additionalData:i};return await this._api.encrypt(r,this._key,t)}async open(e,t,i){await this._setupKey();const r={name:"AES-GCM",iv:e,additionalData:i};return await this._api.decrypt(r,this._key,t)}async _setupKey(){if(void 0!==this._key)return;await this._setup();const e=await this._importKey(this._rawKey);new Uint8Array(this._rawKey).fill(0),this._key=e}async _importKey(e){return await this._api.importKey("raw",e,{name:"AES-GCM"},!0,M)}}class G{constructor(){Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"keySize",{enumerable:!0,configurable:!0,writable:!0,value:16}),Object.defineProperty(this,"nonceSize",{enumerable:!0,configurable:!0,writable:!0,value:12}),Object.defineProperty(this,"tagSize",{enumerable:!0,configurable:!0,writable:!0,value:16})}createEncryptionContext(e){return new q(e)}}class W extends G{constructor(){super(...arguments),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:2}),Object.defineProperty(this,"keySize",{enumerable:!0,configurable:!0,writable:!0,value:32}),Object.defineProperty(this,"nonceSize",{enumerable:!0,configurable:!0,writable:!0,value:12}),Object.defineProperty(this,"tagSize",{enumerable:!0,configurable:!0,writable:!0,value:16})}}function F(){return new Promise((e,t)=>{t(new w("Not supported"))})}const J=new Uint8Array([115,101,99]);class Z{constructor(e,t,i){Object.defineProperty(this,"_api",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"exporterSecret",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_kdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._api=e,this._kdf=t,this.exporterSecret=i}async seal(e,t){return await F()}async open(e,t){return await F()}async export(e,t){if(e.byteLength>g)throw new a("Too long exporter context");try{return await this._kdf.labeledExpand(this.exporterSecret,J,new Uint8Array(e),t)}catch(e){throw new h(e)}}}class X extends Z{}class $ extends Z{constructor(e,t,i,r){super(e,t,i),Object.defineProperty(this,"enc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.enc=r}}class Q extends Z{constructor(e,t,i){if(super(e,t,i.exporterSecret),Object.defineProperty(this,"_aead",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nK",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nN",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nT",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_ctx",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),void 0===i.key||void 0===i.baseNonce||void 0===i.seq)throw new Error("Required parameters are missing");this._aead=i.aead,this._nK=this._aead.keySize,this._nN=this._aead.nonceSize,this._nT=this._aead.tagSize;const r=this._aead.createEncryptionContext(i.key);this._ctx={key:r,baseNonce:i.baseNonce,seq:i.seq}}computeNonce(e){const t=P(e.seq,e.baseNonce.byteLength);return function(e,t){if(e.byteLength!==t.byteLength)throw new Error("xor: different length inputs");const i=new Uint8Array(e.byteLength);for(let r=0;rNumber.MAX_SAFE_INTEGER)throw new d("Message limit reached");e.seq+=1}}var V;class Y{constructor(){V.set(this,Promise.resolve())}async lock(){let e;const t=new Promise(t=>{e=t}),i=function(e,t,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(e):r?r.value:t.get(e)}(this,V,"f");return function(e,t,i,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?a.call(e,i):a?a.value=i:t.set(e,i)}(this,V,t,"f"),await i,e}}V=new WeakMap;var ee,te=function(e,t,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(e):r?r.value:t.get(e)};class ie extends Q{constructor(){super(...arguments),ee.set(this,void 0)}async open(e,t=m.buffer){!function(e,t,i,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?a.call(e,i):a?a.value=i:t.set(e,i)}(this,ee,te(this,ee,"f")??new Y,"f");const i=await te(this,ee,"f").lock();let r;try{r=await this._ctx.key.open(this.computeNonce(this._ctx),e,t)}catch(e){throw new u(e)}finally{i()}return this.incrementSeq(this._ctx),r}}ee=new WeakMap;var re,ae=function(e,t,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(e):r?r.value:t.get(e)};class ne extends Q{constructor(e,t,i,r){super(e,t,i),Object.defineProperty(this,"enc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),re.set(this,void 0),this.enc=r}async seal(e,t=m.buffer){!function(e,t,i,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?a.call(e,i):a?a.value=i:t.set(e,i)}(this,re,ae(this,re,"f")??new Y,"f");const i=await ae(this,re,"f").lock();let r;try{r=await this._ctx.key.seal(this.computeNonce(this._ctx),e,t)}catch(e){throw new l(e)}finally{i()}return this.incrementSeq(this._ctx),r}}re=new WeakMap;const se=new Uint8Array([98,97,115,101,95,110,111,110,99,101]),oe=new Uint8Array([101,120,112]),ce=new Uint8Array([105,110,102,111,95,104,97,115,104]),he=new Uint8Array([107,101,121]),le=new Uint8Array([112,115,107,95,105,100,95,104,97,115,104]),ue=new Uint8Array([115,101,99,114,101,116]),de=new Uint8Array([72,80,75,69,0,0,0,0,0,0]);class ye extends _{constructor(e){if(super(),Object.defineProperty(this,"_kem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_kdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_aead",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_suiteId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),"number"==typeof e.kem)throw new a("KemId cannot be used");if(this._kem=e.kem,"number"==typeof e.kdf)throw new a("KdfId cannot be used");if(this._kdf=e.kdf,"number"==typeof e.aead)throw new a("AeadId cannot be used");this._aead=e.aead,this._suiteId=new Uint8Array(de),this._suiteId.set(P(this._kem.id,2),4),this._suiteId.set(P(this._kdf.id,2),6),this._suiteId.set(P(this._aead.id,2),8),this._kdf.init(this._suiteId)}get kem(){return this._kem}get kdf(){return this._kdf}get aead(){return this._aead}async createSenderContext(e){this._validateInputLength(e),await this._setup();const t=await this._kem.encap(e);let i;return i=void 0!==e.psk?void 0!==e.senderKey?3:1:void 0!==e.senderKey?2:0,await this._keyScheduleS(i,t.sharedSecret,t.enc,e)}async createRecipientContext(e){this._validateInputLength(e),await this._setup();const t=await this._kem.decap(e);let i;return i=void 0!==e.psk?void 0!==e.senderPublicKey?3:1:void 0!==e.senderPublicKey?2:0,await this._keyScheduleR(i,t,e)}async seal(e,t,i=m.buffer){const r=await this.createSenderContext(e);return{ct:await r.seal(t,i),enc:r.enc}}async open(e,t,i=m.buffer){const r=await this.createRecipientContext(e);return await r.open(t,i)}async _keySchedule(e,t,i){const r=void 0===i.psk?m:new Uint8Array(i.psk.id),a=await this._kdf.labeledExtract(m.buffer,le,r),n=void 0===i.info?m:new Uint8Array(i.info),s=await this._kdf.labeledExtract(m.buffer,ce,n),o=new Uint8Array(1+a.byteLength+s.byteLength);o.set(new Uint8Array([e]),0),o.set(new Uint8Array(a),1),o.set(new Uint8Array(s),1+a.byteLength);const c=void 0===i.psk?m:new Uint8Array(i.psk.key),h=this._kdf.buildLabeledIkm(ue,c).buffer,l=this._kdf.buildLabeledInfo(oe,o,this._kdf.hashSize).buffer,u=await this._kdf.extractAndExpand(t,h,l,this._kdf.hashSize);if(65535===this._aead.id)return{aead:this._aead,exporterSecret:u};const d=this._kdf.buildLabeledInfo(he,o,this._aead.keySize).buffer,y=await this._kdf.extractAndExpand(t,h,d,this._aead.keySize),w=this._kdf.buildLabeledInfo(se,o,this._aead.nonceSize).buffer,b=await this._kdf.extractAndExpand(t,h,w,this._aead.nonceSize);return{aead:this._aead,exporterSecret:u,key:y,baseNonce:new Uint8Array(b),seq:0}}async _keyScheduleS(e,t,i,r){const a=await this._keySchedule(e,t,r);return void 0===a.key?new $(this._api,this._kdf,a.exporterSecret,i):new ne(this._api,this._kdf,a,i)}async _keyScheduleR(e,t,i){const r=await this._keySchedule(e,t,i);return void 0===r.key?new X(this._api,this._kdf,r.exporterSecret):new ie(this._api,this._kdf,r)}_validateInputLength(e){if(void 0!==e.info&&e.info.byteLength>65536)throw new a("Too long info");if(void 0!==e.psk){if(e.psk.key.byteLength<32)throw new a("PSK must have at least 32 bytes");if(e.psk.key.byteLength>g)throw new a("Too long psk.key");if(e.psk.id.byteLength>g)throw new a("Too long psk.id")}}}class we extends S{constructor(){const e=new B;super(16,new R(16,e),e),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:16}),Object.defineProperty(this,"secretSize",{enumerable:!0,configurable:!0,writable:!0,value:32}),Object.defineProperty(this,"encSize",{enumerable:!0,configurable:!0,writable:!0,value:65}),Object.defineProperty(this,"publicKeySize",{enumerable:!0,configurable:!0,writable:!0,value:65}),Object.defineProperty(this,"privateKeySize",{enumerable:!0,configurable:!0,writable:!0,value:32})}}class be extends ye{}class fe extends we{}class pe extends B{}new Uint8Array([48,46,2,1,0,48,5,6,3,43,101,110,4,34,4,32]),new Uint8Array([48,70,2,1,0,48,5,6,3,43,101,111,4,58,4,56])}}]); -//# sourceMappingURL=vendors.bundle.21bb724fa18b849859c6.js.map \ No newline at end of file diff --git a/import/dist/vendors.bundle.21bb724fa18b849859c6.js.map b/import/dist/vendors.bundle.21bb724fa18b849859c6.js.map deleted file mode 100644 index cec715d..0000000 --- a/import/dist/vendors.bundle.21bb724fa18b849859c6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vendors.bundle.21bb724fa18b849859c6.js","mappings":"6IAIO,MAAMA,UAAkBC,MAC3B,WAAAC,CAAYC,GACR,IAAIC,EAEAA,EADAD,aAAaF,MACHE,EAAEC,QAEM,iBAAND,EACFA,EAGA,GAEdE,MAAMD,GACNE,KAAKC,KAAOD,KAAKJ,YAAYK,IACjC,EAMG,MAAM,UAA0BP,GAYhC,MAAM,UAAuBA,GAM7B,MAAM,UAAyBA,GAM/B,MAAMQ,UAAmBR,GAMzB,MAAMS,UAAmBT,GAMzB,MAAMU,UAAoBV,GAM1B,MAAMW,UAAkBX,GAMxB,MAAMY,UAAkBZ,GAMxB,MAAMa,UAAiCb,GAMvC,MAAMc,UAA2Bd,GAMjC,MAAM,UAA0BA,GC1FvC,MACae,GACaC,EADoBC,WACXC,EAFhB,CAAC,EAGT,IAAIC,MAAMH,EAAS,CACtBI,IAAG,CAACC,EAASC,EAAMC,IACXD,KAAQJ,EACDA,EAAOI,GAGPN,EAAQM,GAGvBE,IAAG,CAACH,EAASC,EAAMG,KACXH,KAAQJ,UACDA,EAAOI,GAElBN,EAAQM,GAAQG,GACT,GAEX,cAAAC,CAAeL,EAASC,GACpB,IAAIK,GAAU,EASd,OARIL,KAAQJ,WACDA,EAAOI,GACdK,GAAU,GAEVL,KAAQN,WACDA,EAAQM,GACfK,GAAU,GAEPA,CACX,EACA,OAAAC,CAAQP,GACJ,MAAMQ,EAAWC,QAAQF,QAAQZ,GAC3Be,EAAUD,QAAQF,QAAQV,GAC1Bc,EAAa,IAAIC,IAAIF,GAC3B,MAAO,IAAIF,EAASK,OAAQC,IAAOH,EAAWI,IAAID,OAAQJ,EAC9D,EACAM,eAAc,CAAChB,EAASC,EAAMgB,KACtBhB,KAAQJ,UACDA,EAAOI,GAElBQ,QAAQO,eAAerB,EAASM,EAAMgB,IAC/B,GAEXC,yBAAwB,CAAClB,EAASC,IAC1BA,KAAQJ,EACDY,QAAQS,yBAAyBrB,EAAQI,GAGzCQ,QAAQS,yBAAyBvB,EAASM,GAGzDc,IAAG,CAACf,EAASC,IACFA,KAAQJ,GAAUI,KAAQN,KAnD7C,IAA0BA,EAASE,ECe5B,MAAMsB,EACT,WAAAtC,GACIuC,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAOoB,GAEf,CACA,YAAMC,QACgBD,IAAdvC,KAAKyC,OAGTzC,KAAKyC,WA5BbC,iBACI,QAA8BH,IAA1B,QAA6DA,IAAtB5B,WAAWgC,OAElD,OAAOhC,WAAWgC,OAAOC,OAG7B,IAEI,MAAM,UAAEC,SAAoB,kCAC5B,OAAOA,EAAUD,MACrB,CACA,MAAO/C,GACH,MAAM,IAAI,EAAkBA,EAChC,CACJ,CAc0BiD,GACtB,EC5BG,MCFMC,EAAqB,KAKrB,EAAQ,IAAIC,WAAW,GCLvB,EAAsB,IAAIA,WAAW,CAC9C,GACA,GACA,GACA,EACA,ICcS,EAAmBC,GAAmB,iBAANA,GACnC,OAANA,GACwB,iBAAjBA,EAAEC,YACc,iBAAhBD,EAAEE,UAIN,SAAS,EAAMC,EAAGC,GACrB,GAAIA,GAAK,EACL,MAAM,IAAI1D,MAAM,yBAEpB,GAAIyD,GAAK,KAAOC,EACZ,MAAM,IAAI1D,MAAM,4BAEpB,MAAM2D,EAAM,IAAIN,WAAWK,GAC3B,IAAK,IAAIE,EAAI,EAAGA,EAAIF,GAAKD,EAAGG,IACxBD,EAAID,GAAKE,EAAI,IAAMH,EAAI,IACvBA,IAAS,EAEb,OAAOE,CACX,CAOO,SAAS,EAAOE,EAAGC,GACtB,MAAMH,EAAM,IAAIN,WAAWQ,EAAEE,OAASD,EAAEC,QAGxC,OAFAJ,EAAIpC,IAAIsC,EAAG,GACXF,EAAIpC,IAAIuC,EAAGD,EAAEE,QACNJ,CACX,CC/CA,MAAMK,EAAgB,IAAIX,WAAW,CAAC,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,MAG5DY,EAAsB,IAAIZ,WAAW,CACvC,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAC3C,IAAK,IAAK,MASP,MAAMa,EACT,WAAAjE,CAAYkE,EAAIC,EAAMC,GAClB7B,OAAOJ,eAAe/B,KAAM,KAAM,CAC9BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,aAAc,CACtCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,gBAAiB,CACzCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,iBAAkB,CAC1CoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,QAAS,CACjCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXnB,KAAK8D,GAAKA,EACV9D,KAAKiE,MAAQF,EACb/D,KAAKkE,KAAOF,EACZ,MAAMG,EAAU,IAAInB,WAAW,GAC/BmB,EAAQjD,IAAI,EAAMlB,KAAK8D,GAAI,GAAI,GAC/B9D,KAAKkE,KAAKE,KAAKD,EACnB,CACA,wBAAME,CAAmBC,GACrB,aAAatE,KAAKiE,MAAMI,mBAAmBC,EAC/C,CACA,0BAAMC,CAAqBD,GACvB,aAAatE,KAAKiE,MAAMM,qBAAqBD,EACjD,CACA,yBAAME,CAAoBF,GACtB,aAAatE,KAAKiE,MAAMO,oBAAoBF,EAChD,CACA,2BAAMG,CAAsBH,GACxB,aAAatE,KAAKiE,MAAMQ,sBAAsBH,EAClD,CACA,eAAMI,CAAUC,EAAQL,EAAKM,GAAW,GACpC,aAAa5E,KAAKiE,MAAMS,UAAUC,EAAQL,EAAKM,EACnD,CACA,qBAAMC,GACF,aAAa7E,KAAKiE,MAAMY,iBAC5B,CACA,mBAAMC,CAAcC,GAChB,GAAIA,EAAIC,WAAajC,EACjB,MAAM,IAAI,EAAkB,gBAEhC,aAAa/C,KAAKiE,MAAMa,cAAcC,EAC1C,CACA,WAAME,CAAMC,GACR,IAAIC,EAEAA,OADe5C,IAAf2C,EAAOE,UACIpF,KAAK6E,kBAEX,EAAgBK,EAAOE,KAEvBF,EAAOE,UAIDpF,KAAK8E,cAAcI,EAAOE,KAEzC,MAAMC,QAAYrF,KAAKiE,MAAMI,mBAAmBc,EAAGhC,WAC7CmC,QAAatF,KAAKiE,MAAMI,mBAAmBa,EAAOK,oBACxD,IACI,IAAIC,EAYAC,EAXJ,QAAyBlD,IAArB2C,EAAOQ,UACPF,EAAK,IAAIxC,iBAAiBhD,KAAKiE,MAAMuB,GAAGL,EAAGjC,WAAYgC,EAAOK,yBAE7D,CACD,MAAMI,EAAM,EAAgBT,EAAOQ,WAC7BR,EAAOQ,UAAUxC,WACjBgC,EAAOQ,UAGbF,EAAK,EAFO,IAAIxC,iBAAiBhD,KAAKiE,MAAMuB,GAAGL,EAAGjC,WAAYgC,EAAOK,qBACzD,IAAIvC,iBAAiBhD,KAAKiE,MAAMuB,GAAGG,EAAKT,EAAOK,qBAE/D,CAEA,QAAyBhD,IAArB2C,EAAOQ,UACPD,EAAa,EAAO,IAAIzC,WAAWqC,GAAM,IAAIrC,WAAWsC,QAEvD,CACD,MAAMM,EAAM,EAAgBV,EAAOQ,WAC7BR,EAAOQ,UAAUvC,gBACXnD,KAAKiE,MAAM4B,gBAAgBX,EAAOQ,WACxCI,QAAa9F,KAAKiE,MAAMI,mBAAmBuB,GACjDH,EAvHhB,SAAiBjC,EAAGC,EAAGsC,GACnB,MAAMzC,EAAM,IAAIN,WAAWQ,EAAEE,OAASD,EAAEC,OAASqC,EAAErC,QAInD,OAHAJ,EAAIpC,IAAIsC,EAAG,GACXF,EAAIpC,IAAIuC,EAAGD,EAAEE,QACbJ,EAAIpC,IAAI6E,EAAGvC,EAAEE,OAASD,EAAEC,QACjBJ,CACX,CAiH6B0C,CAAQ,IAAIhD,WAAWqC,GAAM,IAAIrC,WAAWsC,GAAO,IAAItC,WAAW8C,GACnF,CAEA,MAAO,CACHT,IAAKA,EACLY,mBAHuBjG,KAAKkG,sBAAsBV,EAAIC,GAK9D,CACA,MAAO5F,GACH,MAAM,IAAIK,EAAWL,EACzB,CACJ,CACA,WAAMsG,CAAMjB,GACR,MAAMkB,QAAYpG,KAAKiE,MAAMM,qBAAqBW,EAAOG,KACnDgB,EAAM,EAAgBnB,EAAOoB,cAC7BpB,EAAOoB,aAAapD,WACpBgC,EAAOoB,aACPC,EAAM,EAAgBrB,EAAOoB,cAC7BpB,EAAOoB,aAAanD,gBACdnD,KAAKiE,MAAM4B,gBAAgBX,EAAOoB,cACxChB,QAAatF,KAAKiE,MAAMI,mBAAmBkC,GACjD,IACI,IAAIf,EASAC,EARJ,QAA+BlD,IAA3B2C,EAAOsB,gBACPhB,EAAK,IAAIxC,iBAAiBhD,KAAKiE,MAAMuB,GAAGa,EAAKD,QAE5C,CAGDZ,EAAK,EAFO,IAAIxC,iBAAiBhD,KAAKiE,MAAMuB,GAAGa,EAAKD,IACxC,IAAIpD,iBAAiBhD,KAAKiE,MAAMuB,GAAGa,EAAKnB,EAAOsB,kBAE/D,CAEA,QAA+BjE,IAA3B2C,EAAOsB,gBACPf,EAAa,EAAO,IAAIzC,WAAWkC,EAAOG,KAAM,IAAIrC,WAAWsC,QAE9D,CACD,MAAMQ,QAAa9F,KAAKiE,MAAMI,mBAAmBa,EAAOsB,iBACxDf,EAAa,IAAIzC,WAAWkC,EAAOG,IAAIL,WAAaM,EAAKN,WAAac,EAAKd,YAC3ES,EAAWvE,IAAI,IAAI8B,WAAWkC,EAAOG,KAAM,GAC3CI,EAAWvE,IAAI,IAAI8B,WAAWsC,GAAOJ,EAAOG,IAAIL,YAChDS,EAAWvE,IAAI,IAAI8B,WAAW8C,GAAOZ,EAAOG,IAAIL,WAAaM,EAAKN,WACtE,CACA,aAAahF,KAAKkG,sBAAsBV,EAAIC,EAChD,CACA,MAAO5F,GACH,MAAM,IAAIM,EAAWN,EACzB,CACJ,CACA,2BAAMqG,CAAsBV,EAAIC,GAC5B,MAAMgB,EAAazG,KAAKkE,KAAKwC,gBAAgB/C,EAAe6B,GACtDmB,EAAc3G,KAAKkE,KAAK0C,iBAAiBhD,EAAqB6B,EAAYzF,KAAK6G,YACrF,aAAa7G,KAAKkE,KAAK4C,iBAAiB,EAAMC,OAAQN,EAAWM,OAAQJ,EAAYI,OAAQ/G,KAAK6G,WACtG,ECtLG,MAAMG,EAAa,CAAC,cAEd,EAAgB,IAAIhE,WAAW,CACxC,IACA,IACA,IACA,GACA,IACA,IACA,MAGoB,IAAIA,WAAW,CAAC,IAAK,MCVtC,MAAMiE,EACT,WAAArH,CAAYsH,GACR/E,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXnB,KAAKmH,KAAO,IAAInE,WAAWkE,EAC/B,CACA,GAAAE,GACI,OAAOpH,KAAKmH,IAChB,CACA,KAAAE,GACIrH,KAAKmH,KAAKG,KAAK,EACnB,CACA,GAAApG,CAAIqG,GACA,GAAIA,EAAI7D,SAAW1D,KAAKmH,KAAKzD,OACzB,MAAM,IAAI/D,MAAM,gCAEpBK,KAAKmH,KAAKjG,IAAIqG,EAClB,CACA,MAAAC,GACI,IAAK,IAAIjE,EAAI,EAAGA,EAAIvD,KAAKmH,KAAKzD,OAAQH,IAClC,GAAqB,IAAjBvD,KAAKmH,KAAK5D,GACV,OAAO,EAGf,OAAO,CACX,CACA,QAAAkE,CAASC,GACL,GAAIA,EAAEhE,SAAW1D,KAAKmH,KAAKzD,OACvB,MAAM,IAAI/D,MAAM,qCAEpB,IAAK,IAAI4D,EAAI,EAAGA,EAAIvD,KAAKmH,KAAKzD,OAAQH,IAAK,CACvC,GAAIvD,KAAKmH,KAAK5D,GAAKmE,EAAEnE,GACjB,OAAO,EAEX,GAAIvD,KAAKmH,KAAK5D,GAAKmE,EAAEnE,GACjB,OAAO,CAEf,CACA,OAAO,CACX,ECrCJ,MAAMoE,EAAkB,IAAI3E,WAAW,CACnC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAInC4E,EAAc,IAAI5E,WAAW,CAC/B,IAAM,IAAM,IAAM,IAAM,EAAM,EAAM,EAAM,EAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,KAGxC6E,EAAc,IAAI7E,WAAW,CAC/B,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAC1C,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,MAGxC8E,EAAc,IAAI9E,WAAW,CAC/B,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAC1C,IAAM,IAAM,IAAM,IAAM,EAAM,GAAM,IAAM,EAC1C,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAC1C,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAC1C,IAAM,IAGJ+E,EAAqB,IAAI/E,WAAW,CACtC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAC/B,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAClC,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GACjC,EAAG,EAAG,EAAG,EAAG,KAGVgF,EAAqB,IAAIhF,WAAW,CACtC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAC/B,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAClC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAC/B,EAAG,KAGDiF,EAAqB,IAAIjF,WAAW,CACtC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAC/B,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAClC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAC/B,EAAG,KAEA,MAAMkF,UAAWhG,EACpB,WAAAtC,CAAYuI,EAAKC,GAoDb,OAnDArI,QACAoC,OAAOJ,eAAe/B,KAAM,QAAS,CACjCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAGXgB,OAAOJ,eAAe/B,KAAM,SAAU,CAClCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,WAAY,CACpCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,cAAe,CACvCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXnB,KAAKqI,MAAQD,EACLD,GACJ,KPtGa,GOuGTnI,KAAKsI,KAAO,CAAErI,KAAM,OAAQsI,WAAY,SACxCvI,KAAKwI,KAAO,GACZxI,KAAKyI,KAAO,GACZzI,KAAK0I,KAAO,GACZ1I,KAAK2I,OAASf,EACd5H,KAAK4I,SAAW,IAChB5I,KAAK6I,YAAcd,EACnB,MACJ,KP9Ga,GO+GT/H,KAAKsI,KAAO,CAAErI,KAAM,OAAQsI,WAAY,SACxCvI,KAAKwI,KAAO,GACZxI,KAAKyI,KAAO,GACZzI,KAAK0I,KAAO,GACZ1I,KAAK2I,OAASd,EACd7H,KAAK4I,SAAW,IAChB5I,KAAK6I,YAAcb,EACnB,MACJ,QAEIhI,KAAKsI,KAAO,CAAErI,KAAM,OAAQsI,WAAY,SACxCvI,KAAKwI,KAAO,IACZxI,KAAKyI,KAAO,GACZzI,KAAK0I,KAAO,GACZ1I,KAAK2I,OAASb,EACd9H,KAAK4I,SAAW,EAChB5I,KAAK6I,YAAcZ,EAG/B,CACA,wBAAM5D,CAAmBC,SACftE,KAAKwC,SACX,IACI,aAAaxC,KAAKyC,KAAKqG,UAAU,MAAOxE,EAC5C,CACA,MAAOzE,GACH,MAAM,IAAI,EAAeA,EAC7B,CACJ,CACA,0BAAM0E,CAAqBD,SACjBtE,KAAKwC,SACX,IACI,aAAaxC,KAAK+I,cAAczE,GAAK,EACzC,CACA,MAAOzE,GACH,MAAM,IAAI,EAAiBA,EAC/B,CACJ,CACA,yBAAM2E,CAAoBF,SAChBtE,KAAKwC,SACX,IACI,MAAMwG,QAAYhJ,KAAKyC,KAAKqG,UAAU,MAAOxE,GAC7C,KAAM,MAAO0E,GACT,MAAM,IAAIrJ,MAAM,mBAEpB,OJjHL,SAA0B+H,GAC7B,MAAMuB,EAASvB,EAAEwB,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC5CC,EAAaC,KAAKH,GAClB3F,EAAM,IAAIN,WAAWmG,EAAWzF,QACtC,IAAK,IAAIH,EAAI,EAAGA,EAAI4F,EAAWzF,OAAQH,IACnCD,EAAIC,GAAK4F,EAAWE,WAAW9F,GAEnC,OAAOD,CACX,CIyGmBgG,CAAiBN,EAAO,GAAGjC,MACtC,CACA,MAAOlH,GACH,MAAM,IAAI,EAAeA,EAC7B,CACJ,CACA,2BAAM4E,CAAsBH,SAClBtE,KAAKwC,SACX,IACI,aAAaxC,KAAK+I,cAAczE,GAAK,EACzC,CACA,MAAOzE,GACH,MAAM,IAAI,EAAiBA,EAC/B,CACJ,CACA,eAAM6E,CAAUC,EAAQL,EAAKM,SACnB5E,KAAKwC,SACX,IACI,GAAe,QAAXmC,EACA,aAAa3E,KAAK+I,cAAczE,EAAKM,GAGzC,GAAIN,aAAeiF,YACf,MAAM,IAAI5J,MAAM,0BAEpB,aAAaK,KAAKwJ,WAAWlF,EAAKM,EACtC,CACA,MAAO/E,GACH,MAAM,IAAI,EAAiBA,EAC/B,CACJ,CACA,qBAAMgF,SACI7E,KAAKwC,SACX,IACI,aAAaxC,KAAKyC,KAAKgH,YAAYzJ,KAAKsI,MAAM,EAAMtB,EACxD,CACA,MAAOnH,GACH,MAAM,IAAI,EAAkBA,EAChC,CACJ,CACA,mBAAMiF,CAAcC,SACV/E,KAAKwC,SACX,IACI,MAAMkH,QAAe1J,KAAKqI,MAAMsB,eAAe,EAAM5C,OAAQ,EAAe,IAAI/D,WAAW+B,IACrF6E,EAAK,IAAI3C,EAAOjH,KAAKyI,MAC3B,IAAK,IAAIoB,EAAU,EAAGD,EAAGpC,WAAaoC,EAAGnC,SAASzH,KAAK2I,QAASkB,IAAW,CACvE,GAAIA,EAAU,IACV,MAAM,IAAIlK,MAAM,8BAEpB,MAAMmK,EAAQ,IAAI9G,iBAAiBhD,KAAKqI,MAAM0B,cAAcL,EAAQ/B,EAAiB,EAAMkC,EAAS,GAAI7J,KAAKyI,OAC7GqB,EAAM,GAAKA,EAAM,GAAK9J,KAAK4I,SAC3BgB,EAAG1I,IAAI4I,EACX,CACA,MAAME,QAAWhK,KAAKiK,qBAAqBL,EAAGxC,OAE9C,OADAwC,EAAGvC,QACI,CACHnE,WAAY8G,EACZ7G,gBAAiBnD,KAAK6F,gBAAgBmE,GAE9C,CACA,MAAOnK,GACH,MAAM,IAAIW,EAAmBX,EACjC,CACJ,CACA,qBAAMgG,CAAgBvB,SACZtE,KAAKwC,SACX,IACI,MAAMwG,QAAYhJ,KAAKyC,KAAKqG,UAAU,MAAOxE,GAG7C,cAFO0E,EAAO,SACPA,EAAa,cACPhJ,KAAKyC,KAAKiC,UAAU,MAAOsE,EAAKhJ,KAAKsI,MAAM,EAAM,GAClE,CACA,MAAOzI,GACH,MAAM,IAAI,EAAiBA,EAC/B,CACJ,CACA,QAAM2F,CAAGwE,EAAIE,GACT,IAMI,aALMlK,KAAKwC,eACQxC,KAAKyC,KAAK0H,WAAW,CACpClK,KAAM,OACNmK,OAAQF,GACTF,EAAgB,EAAZhK,KAAK0I,KAEhB,CACA,MAAO7I,GACH,MAAM,IAAI,EAAeA,EAC7B,CACJ,CACA,mBAAMkJ,CAAczE,EAAKM,GACrB,GAAIA,GAAYN,EAAIU,aAAehF,KAAKwI,KACpC,MAAM,IAAI7I,MAAM,0CAEpB,IAAKiF,GAAYN,EAAIU,aAAehF,KAAKyI,KACrC,MAAM,IAAI9I,MAAM,2CAEpB,OAAIiF,QACa5E,KAAKyC,KAAKiC,UAAU,MAAOJ,EAAKtE,KAAKsI,MAAM,EAAM,UAErDtI,KAAKiK,qBAAqB,IAAIjH,WAAWsB,GAC1D,CACA,gBAAMkF,CAAWlF,EAAKM,GAClB,QAAuB,IAAZN,EAAI+F,KAAuB/F,EAAI+F,MAAQrK,KAAKsI,KAAKC,WACxD,MAAM,IAAI5I,MAAM,gBAAgB2E,EAAI+F,OAExC,GAAIzF,EAAU,CACV,QAAqB,IAAVN,EAAIgG,EACX,MAAM,IAAI3K,MAAM,sCAEpB,aAAaK,KAAKyC,KAAKiC,UAAU,MAAOJ,EAAKtE,KAAKsI,MAAM,EAAM,GAClE,CACA,QAAqB,IAAVhE,EAAIgG,EACX,MAAM,IAAI3K,MAAM,8BAEpB,aAAaK,KAAKyC,KAAKiC,UAAU,MAAOJ,EAAKtE,KAAKsI,MAAM,EAAMtB,EAClE,CACA,0BAAMiD,CAAqBpI,GACvB,MAAM0I,EAAW,IAAIvH,WAAWhD,KAAK6I,YAAYnF,OAAS7B,EAAE6B,QAG5D,OAFA6G,EAASrJ,IAAIlB,KAAK6I,YAAa,GAC/B0B,EAASrJ,IAAIW,EAAG7B,KAAK6I,YAAYnF,cACpB1D,KAAKyC,KAAKiC,UAAU,QAAS6F,EAAUvK,KAAKsI,MAAM,EAAMtB,EACzE,EC/RJ,MAAMwD,EAAe,IAAIxH,WAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KACvD,MAAMyH,UAAmBvI,EAC5B,WAAAtC,GACIG,QACAoC,OAAOJ,eAAe/B,KAAM,KAAM,CAC9BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MRiBI,IQfRgB,OAAOJ,eAAe/B,KAAM,WAAY,CACpCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,WAAY,CACpCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,CACHlB,KAAM,OACNyK,KAAM,UACNhH,OAAQ,MAGpB,CACA,IAAAU,CAAKD,GACDnE,KAAK2K,SAAWxG,CACpB,CACA,eAAAuC,CAAgBkE,EAAO7F,GACnB/E,KAAK6K,aACL,MAAMvH,EAAM,IAAIN,WAAW,EAAIhD,KAAK2K,SAAS3F,WAAa4F,EAAM5F,WAAaD,EAAIC,YAKjF,OAJA1B,EAAIpC,IAAIsJ,EAAc,GACtBlH,EAAIpC,IAAIlB,KAAK2K,SAAU,GACvBrH,EAAIpC,IAAI0J,EAAO,EAAI5K,KAAK2K,SAAS3F,YACjC1B,EAAIpC,IAAI6D,EAAK,EAAI/E,KAAK2K,SAAS3F,WAAa4F,EAAM5F,YAC3C1B,CACX,CACA,gBAAAsD,CAAiBgE,EAAOE,EAAMC,GAC1B/K,KAAK6K,aACL,MAAMvH,EAAM,IAAIN,WAAW,EAAIhD,KAAK2K,SAAS3F,WAAa4F,EAAM5F,WAAa8F,EAAK9F,YAMlF,OALA1B,EAAIpC,IAAI,IAAI8B,WAAW,CAAC,EAAG+H,IAAO,GAClCzH,EAAIpC,IAAIsJ,EAAc,GACtBlH,EAAIpC,IAAIlB,KAAK2K,SAAU,GACvBrH,EAAIpC,IAAI0J,EAAO,EAAI5K,KAAK2K,SAAS3F,YACjC1B,EAAIpC,IAAI4J,EAAM,EAAI9K,KAAK2K,SAAS3F,WAAa4F,EAAM5F,YAC5C1B,CACX,CACA,aAAM0H,CAAQC,EAAMlG,GAKhB,SAJM/E,KAAKwC,SACa,IAApByI,EAAKjG,aACLiG,EAAO,IAAI1B,YAAYvJ,KAAKkL,WAE5BD,EAAKjG,aAAehF,KAAKkL,SACzB,MAAM,IAAI,EAAkB,oDAEhC,MAAM5G,QAAYtE,KAAKyC,KAAKiC,UAAU,MAAOuG,EAAMjL,KAAKmL,SAAS,EAAO,CACpE,SAEJ,aAAanL,KAAKyC,KAAK2I,KAAK,OAAQ9G,EAAKS,EAC7C,CACA,YAAMsG,CAAOC,EAAKR,EAAMC,SACd/K,KAAKwC,SACX,MAAM8B,QAAYtE,KAAKyC,KAAKiC,UAAU,MAAO4G,EAAKtL,KAAKmL,SAAS,EAAO,CACnE,SAEEI,EAAM,IAAIhC,YAAYwB,GACtBS,EAAI,IAAIxI,WAAWuI,GACzB,IAAIE,EAAO,EACX,MAAMC,EAAM,IAAI1I,WAAW8H,GACrBa,EAAO,IAAI3I,WAAW,GAC5B,GAAI+H,EAAM,IAAM/K,KAAKkL,SACjB,MAAM,IAAIvL,MAAM,yBAEpB,MAAMiM,EAAM,IAAI5I,WAAWhD,KAAKkL,SAAWQ,EAAIhI,OAAS,GACxD,IAAK,IAAIH,EAAI,EAAGsI,EAAM,EAAGA,EAAML,EAAE9H,OAAQH,IACrCoI,EAAK,GAAKpI,EACVqI,EAAI1K,IAAIuK,EAAM,GACdG,EAAI1K,IAAIwK,EAAKD,EAAK/H,QAClBkI,EAAI1K,IAAIyK,EAAMF,EAAK/H,OAASgI,EAAIhI,QAChC+H,EAAO,IAAIzI,iBAAiBhD,KAAKyC,KAAK2I,KAAK,OAAQ9G,EAAKsH,EAAIE,MAAM,EAAGL,EAAK/H,OAASgI,EAAIhI,OAAS,KAC5F8H,EAAE9H,OAASmI,GAAOJ,EAAK/H,QACvB8H,EAAEtK,IAAIuK,EAAMI,GACZA,GAAOJ,EAAK/H,SAGZ8H,EAAEtK,IAAIuK,EAAKK,MAAM,EAAGN,EAAE9H,OAASmI,GAAMA,GACrCA,GAAOL,EAAE9H,OAASmI,GAG1B,OAAON,CACX,CACA,sBAAMzE,CAAiBmE,EAAMlG,EAAK+F,EAAMC,SAC9B/K,KAAKwC,SACX,MAAMuJ,QAAgB/L,KAAKyC,KAAKiC,UAAU,MAAOK,EAAK,QAAQ,EAAO,CAAC,eACtE,aAAa/E,KAAKyC,KAAK0H,WAAW,CAC9BlK,KAAM,OACNyK,KAAM1K,KAAKmL,QAAQT,KACnBO,KAAMA,EACNH,KAAMA,GACPiB,EAAe,EAANhB,EAChB,CACA,oBAAMpB,CAAesB,EAAML,EAAO7F,GAC9B,aAAa/E,KAAKgL,QAAQC,EAAMjL,KAAK0G,gBAAgBkE,EAAO7F,GAAKgC,OACrE,CACA,mBAAMgD,CAAcuB,EAAKV,EAAOE,EAAMC,GAClC,aAAa/K,KAAKqL,OAAOC,EAAKtL,KAAK4G,iBAAiBgE,EAAOE,EAAMC,GAAKhE,OAAQgE,EAClF,CACA,UAAAF,GACI,GAAI7K,KAAK2K,WAAa,EAClB,MAAM,IAAIhL,MAAM,+BAExB,EAEG,MAAMqM,UAAyBvB,EAClC,WAAA7K,GACIG,SAASkM,WAET9J,OAAOJ,eAAe/B,KAAM,KAAM,CAC9BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MRxGI,IQ2GRgB,OAAOJ,eAAe/B,KAAM,WAAY,CACpCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAGXgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,CACHlB,KAAM,OACNyK,KAAM,UACNhH,OAAQ,MAGpB,ECzJG,MAAMwI,EAAc,CAAC,UAAW,WCiB3BC,OAAO,GACPA,OAAO,GACPA,OAAO,GCnBZ,MAAMC,UAAsBlK,EAC/B,WAAAtC,CAAY0E,GACRvE,QACAoC,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAOoB,IAEXvC,KAAKqM,QAAU/H,CACnB,CACA,UAAMgI,CAAKC,EAAIC,EAAMC,SACXzM,KAAK0M,YACX,MAAMC,EAAM,CACR1M,KAAM,UACNsM,GAAIA,EACJK,eAAgBH,GAGpB,aADiBzM,KAAKyC,KAAKoK,QAAQF,EAAK3M,KAAK8M,KAAMN,EAEvD,CACA,UAAMO,CAAKR,EAAIC,EAAMC,SACXzM,KAAK0M,YACX,MAAMC,EAAM,CACR1M,KAAM,UACNsM,GAAIA,EACJK,eAAgBH,GAGpB,aADiBzM,KAAKyC,KAAKuK,QAAQL,EAAK3M,KAAK8M,KAAMN,EAEvD,CACA,eAAME,GACF,QAAkBnK,IAAdvC,KAAK8M,KACL,aAEE9M,KAAKwC,SACX,MAAM8B,QAAYtE,KAAKiN,WAAWjN,KAAKqM,SACvC,IAAKrJ,WAAWhD,KAAKqM,SAAU/E,KAAK,GACpCtH,KAAK8M,KAAOxI,CAEhB,CACA,gBAAM2I,CAAW3I,GACb,aAAatE,KAAKyC,KAAKiC,UAAU,MAAOJ,EAAK,CAAErE,KAAM,YAAa,EAAMiM,EAC5E,EAyBG,MAAMgB,EACT,WAAAtN,GAEIuC,OAAOJ,eAAe/B,KAAM,KAAM,CAC9BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MX5CG,IW+CPgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAGXgB,OAAOJ,eAAe/B,KAAM,YAAa,CACrCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAGXgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEf,CACA,uBAAAgM,CAAwB7I,GACpB,OAAO,IAAI8H,EAAc9H,EAC7B,EA0BG,MAAM8I,UAAkBF,EAC3B,WAAAtN,GACIG,SAASkM,WAET9J,OAAOJ,eAAe/B,KAAM,KAAM,CAC9BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MXvGG,IW0GPgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAGXgB,OAAOJ,eAAe/B,KAAM,YAAa,CACrCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAGXgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEf,ECpKG,SAASkM,IACZ,OAAO,IAAIC,QAAQ,CAACC,EAAUC,KAC1BA,EAAO,IAAI,EAAkB,mBAErC,CCFA,MAAMC,EAAY,IAAIzK,WAAW,CAAC,IAAK,IAAK,KACrC,MAAM0K,EACT,WAAA9N,CAAY+N,EAAK3J,EAAK4J,GAClBzL,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,iBAAkB,CAC1CoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXnB,KAAKyC,KAAOkL,EACZ3N,KAAKkE,KAAOF,EACZhE,KAAK4N,eAAiBA,CAC1B,CACA,UAAMtB,CAAKuB,EAAOC,GACd,aAAaT,GACjB,CACA,UAAMN,CAAKc,EAAOC,GACd,aAAaT,GACjB,CACA,YAAM,CAAOU,EAAiBhD,GAC1B,GAAIgD,EAAgB/I,WAAajC,EAC7B,MAAM,IAAI,EAAkB,6BAEhC,IACI,aAAa/C,KAAKkE,KAAK6F,cAAc/J,KAAK4N,eAAgBH,EAAW,IAAIzK,WAAW+K,GAAkBhD,EAC1G,CACA,MAAOlL,GACH,MAAM,IAAIO,EAAYP,EAC1B,CACJ,EAEG,MAAMmO,UAAqCN,GAE3C,MAAMO,UAAkCP,EAC3C,WAAA9N,CAAY+N,EAAK3J,EAAK4J,EAAgBvI,GAClCtF,MAAM4N,EAAK3J,EAAK4J,GAChBzL,OAAOJ,eAAe/B,KAAM,MAAO,CAC/BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXnB,KAAKqF,IAAMA,CAEf,ECzDG,MAAM6I,UAA8BR,EACvC,WAAA9N,CAAY+N,EAAK3J,EAAKkB,GAqClB,GApCAnF,MAAM4N,EAAK3J,EAAKkB,EAAO0I,gBAEvBzL,OAAOJ,eAAe/B,KAAM,QAAS,CACjCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAGXgB,OAAOJ,eAAe/B,KAAM,MAAO,CAC/BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAGXgB,OAAOJ,eAAe/B,KAAM,MAAO,CAC/BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAGXgB,OAAOJ,eAAe/B,KAAM,MAAO,CAC/BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAGXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,SAEQoB,IAAf2C,EAAOZ,UAA0C/B,IAArB2C,EAAOiJ,gBACpB5L,IAAf2C,EAAOkJ,IACP,MAAM,IAAIzO,MAAM,mCAEpBK,KAAKqO,MAAQnJ,EAAOoJ,KACpBtO,KAAKuO,IAAMvO,KAAKqO,MAAMG,QACtBxO,KAAKyO,IAAMzO,KAAKqO,MAAMK,UACtB1O,KAAK2O,IAAM3O,KAAKqO,MAAMO,QACtB,MAAMtK,EAAMtE,KAAKqO,MAAMlB,wBAAwBjI,EAAOZ,KACtDtE,KAAK6O,KAAO,CACRvK,IAAKA,EACL6J,UAAWjJ,EAAOiJ,UAClBC,IAAKlJ,EAAOkJ,IAEpB,CACA,YAAAU,CAAajN,GACT,MAAMkN,EAAW,EAAMlN,EAAEuM,IAAKvM,EAAEsM,UAAUnJ,YAC1C,OX6GD,SAAaxB,EAAGC,GACnB,GAAID,EAAEwB,aAAevB,EAAEuB,WACnB,MAAM,IAAIrF,MAAM,gCAEpB,MAAMqP,EAAM,IAAIhM,WAAWQ,EAAEwB,YAC7B,IAAK,IAAIzB,EAAI,EAAGA,EAAIC,EAAEwB,WAAYzB,IAC9ByL,EAAIzL,GAAKC,EAAED,GAAKE,EAAEF,GAEtB,OAAOyL,CACX,CWtHeC,CAAIpN,EAAEsM,UAAWY,GAAUhI,MACtC,CACA,YAAAmI,CAAarN,GAET,GAAIA,EAAEuM,IAAMe,OAAOC,iBACf,MAAM,IAAI7O,EAAyB,yBAEvCsB,EAAEuM,KAAO,CAEb,EClEJ,IAWIiB,EACG,MAAMC,EACT,WAAA1P,GACIyP,EAAcnO,IAAIlB,KAAMsN,QAAQiC,UACpC,CACA,UAAMC,GACF,IAAIC,EACJ,MAAMC,EAAW,IAAIpC,QAASiC,IAC1BE,EAAcF,IAEZI,EArBwD,SAAUC,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAM/N,IAAI8N,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEE,KAAKL,GAAYG,EAAIA,EAAE5O,MAAQ0O,EAAM/O,IAAI8O,EACxF,CAiB6BM,CAAuBlQ,KAAMqP,EAAe,KAGjE,OAnB8D,SAAUO,EAAUC,EAAO1O,EAAO2O,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAM/N,IAAI8N,GAAW,MAAM,IAAII,UAAU,2EACtF,MAATF,EAAeC,EAAEE,KAAKL,EAAUzO,GAAS4O,EAAIA,EAAE5O,MAAQA,EAAQ0O,EAAM3O,IAAI0O,EAAUzO,EAC/F,CAYQgP,CAAuBnQ,KAAMqP,EAAeK,EAAU,WAChDC,EACCF,CACX,EAEJJ,EAAgB,IAAIe,QC3BpB,IAWIC,GAXA,GAAkE,SAAUT,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAM/N,IAAI8N,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEE,KAAKL,GAAYG,EAAIA,EAAE5O,MAAQ0O,EAAM/O,IAAI8O,EACxF,EAWO,MAAMU,WAA6BpC,EACtC,WAAAtO,GACIG,SAASkM,WACToE,GAA4BnP,IAAIlB,UAAM,EAC1C,CACA,UAAM+M,CAAKP,EAAMC,EAAM,EAAM1F,SAfqC,SAAU6I,EAAUC,EAAO1O,EAAO2O,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAM/N,IAAI8N,GAAW,MAAM,IAAII,UAAU,2EACtF,MAATF,EAAeC,EAAEE,KAAKL,EAAUzO,GAAS4O,EAAIA,EAAE5O,MAAQA,EAAQ0O,EAAM3O,IAAI0O,EAAUzO,EAC/F,CAWQ,CAAuBnB,KAAMqQ,GAA6B,GAAuBrQ,KAAMqQ,GAA6B,MAAQ,IAAIf,EAAS,KACzI,MAAMiB,QAAgB,GAAuBvQ,KAAMqQ,GAA6B,KAAKb,OACrF,IAAIgB,EACJ,IACIA,QAAWxQ,KAAK6O,KAAKvK,IAAIyI,KAAK/M,KAAK8O,aAAa9O,KAAK6O,MAAOrC,EAAMC,EACtE,CACA,MAAO5M,GACH,MAAM,IAAIS,EAAUT,EACxB,CACA,QACI0Q,GACJ,CAEA,OADAvQ,KAAKkP,aAAalP,KAAK6O,MAChB2B,CACX,EAEJH,GAA8B,IAAID,QCrClC,IAWIK,GAXA,GAAkE,SAAUb,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAM/N,IAAI8N,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEE,KAAKL,GAAYG,EAAIA,EAAE5O,MAAQ0O,EAAM/O,IAAI8O,EACxF,EAWO,MAAMc,WAA0BxC,EACnC,WAAAtO,CAAY+N,EAAK3J,EAAKkB,EAAQG,GAC1BtF,MAAM4N,EAAK3J,EAAKkB,GAChB/C,OAAOJ,eAAe/B,KAAM,MAAO,CAC/BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXsP,GAAyBvP,IAAIlB,UAAM,GACnCA,KAAKqF,IAAMA,CACf,CACA,UAAMiH,CAAKE,EAAMC,EAAM,EAAM1F,SAtBqC,SAAU6I,EAAUC,EAAO1O,EAAO2O,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAM/N,IAAI8N,GAAW,MAAM,IAAII,UAAU,2EACtF,MAATF,EAAeC,EAAEE,KAAKL,EAAUzO,GAAS4O,EAAIA,EAAE5O,MAAQA,EAAQ0O,EAAM3O,IAAI0O,EAAUzO,EAC/F,CAkBQ,CAAuBnB,KAAMyQ,GAA0B,GAAuBzQ,KAAMyQ,GAA0B,MAAQ,IAAInB,EAAS,KACnI,MAAMiB,QAAgB,GAAuBvQ,KAAMyQ,GAA0B,KAAKjB,OAClF,IAAImB,EACJ,IACIA,QAAW3Q,KAAK6O,KAAKvK,IAAIgI,KAAKtM,KAAK8O,aAAa9O,KAAK6O,MAAOrC,EAAMC,EACtE,CACA,MAAO5M,GACH,MAAM,IAAIQ,EAAUR,EACxB,CACA,QACI0Q,GACJ,CAEA,OADAvQ,KAAKkP,aAAalP,KAAK6O,MAChB8B,CACX,EAEJF,GAA2B,IAAIL,QCtC/B,MAAMQ,GAAmB,IAAI5N,WAAW,CACpC,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAGvC6N,GAAY,IAAI7N,WAAW,CAAC,IAAK,IAAK,MAGtC8N,GAAkB,IAAI9N,WAAW,CACnC,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,MAGpC+N,GAAY,IAAI/N,WAAW,CAAC,IAAK,IAAK,MAGtCgO,GAAoB,IAAIhO,WAAW,CACrC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,MAG7CiO,GAAe,IAAIjO,WAAW,CAAC,IAAK,IAAK,GAAI,IAAK,IAAK,MAGvDkO,GAAuB,IAAIlO,WAAW,CACxC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAkE5B,MAAMmO,WAA0BjP,EAQnC,WAAAtC,CAAYsF,GA2BR,GA1BAnF,QACAoC,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,OAAQ,CAChCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,QAAS,CACjCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAEXgB,OAAOJ,eAAe/B,KAAM,WAAY,CACpCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,WAAO,IAGe,iBAAf+D,EAAOiD,IACd,MAAM,IAAI,EAAkB,wBAIhC,GAFAnI,KAAKoR,KAAOlM,EAAOiD,IAEO,iBAAfjD,EAAOlB,IACd,MAAM,IAAI,EAAkB,wBAIhC,GAFAhE,KAAKkE,KAAOgB,EAAOlB,IAEQ,iBAAhBkB,EAAOoJ,KACd,MAAM,IAAI,EAAkB,yBAEhCtO,KAAKqO,MAAQnJ,EAAOoJ,KACpBtO,KAAK2K,SAAW,IAAI3H,WAAWkO,IAC/BlR,KAAK2K,SAASzJ,IAAI,EAAMlB,KAAKoR,KAAKtN,GAAI,GAAI,GAC1C9D,KAAK2K,SAASzJ,IAAI,EAAMlB,KAAKkE,KAAKJ,GAAI,GAAI,GAC1C9D,KAAK2K,SAASzJ,IAAI,EAAMlB,KAAKqO,MAAMvK,GAAI,GAAI,GAC3C9D,KAAKkE,KAAKE,KAAKpE,KAAK2K,SACxB,CAIA,OAAIxC,GACA,OAAOnI,KAAKoR,IAChB,CAIA,OAAIpN,GACA,OAAOhE,KAAKkE,IAChB,CAIA,QAAIoK,GACA,OAAOtO,KAAKqO,KAChB,CAUA,yBAAMgD,CAAoBnM,GACtBlF,KAAKsR,qBAAqBpM,SACpBlF,KAAKwC,SACX,MAAMgD,QAAWxF,KAAKoR,KAAKnM,MAAMC,GACjC,IAAIqM,EAOJ,OALIA,OADehP,IAAf2C,EAAOsM,SACqBjP,IAArB2C,EAAOQ,UlB/Kb,EAFJ,OkBoL+BnD,IAArB2C,EAAOQ,UlBnLhB,EAFA,QkBuLW1F,KAAKyR,cAAcF,EAAM/L,EAAGS,aAAcT,EAAGH,IAAKH,EACnE,CAWA,4BAAMwM,CAAuBxM,GACzBlF,KAAKsR,qBAAqBpM,SACpBlF,KAAKwC,SACX,MAAMyD,QAAqBjG,KAAKoR,KAAKjL,MAAMjB,GAC3C,IAAIqM,EAOJ,OALIA,OADehP,IAAf2C,EAAOsM,SAC2BjP,IAA3B2C,EAAOsB,gBlBtMb,EAFJ,OkB2MqCjE,IAA3B2C,EAAOsB,gBlB1MhB,EAFA,QkB8MWxG,KAAK2R,cAAcJ,EAAMtL,EAAcf,EACxD,CAYA,UAAMoH,CAAKpH,EAAQsL,EAAI/D,EAAM,EAAM1F,QAC/B,MAAM6K,QAAY5R,KAAKqR,oBAAoBnM,GAC3C,MAAO,CACHyL,SAAUiB,EAAItF,KAAKkE,EAAI/D,GACvBpH,IAAKuM,EAAIvM,IAEjB,CAYA,UAAM0H,CAAK7H,EAAQyL,EAAIlE,EAAM,EAAM1F,QAC/B,MAAM6K,QAAY5R,KAAK0R,uBAAuBxM,GAC9C,aAAa0M,EAAI7E,KAAK4D,EAAIlE,EAC9B,CAeA,kBAAMoF,CAAaN,EAAMtL,EAAcf,GAKnC,MAAM4M,OAAuBvP,IAAf2C,EAAOsM,IACf,EACA,IAAIxO,WAAWkC,EAAOsM,IAAI1N,IAC1BiO,QAAkB/R,KAAKkE,KAAKyF,eAAe,EAAM5C,OAAQiK,GAAmBc,GAC5EhH,OAAuBvI,IAAhB2C,EAAO4F,KACd,EACA,IAAI9H,WAAWkC,EAAO4F,MACtBkH,QAAiBhS,KAAKkE,KAAKyF,eAAe,EAAM5C,OAAQ+J,GAAiBhG,GACzEmH,EAAqB,IAAIjP,WAAW,EAAI+O,EAAU/M,WAAagN,EAAShN,YAC9EiN,EAAmB/Q,IAAI,IAAI8B,WAAW,CAACuO,IAAQ,GAC/CU,EAAmB/Q,IAAI,IAAI8B,WAAW+O,GAAY,GAClDE,EAAmB/Q,IAAI,IAAI8B,WAAWgP,GAAW,EAAID,EAAU/M,YAC/D,MAAMwM,OAAqBjP,IAAf2C,EAAOsM,IACb,EACA,IAAIxO,WAAWkC,EAAOsM,IAAIlN,KAC1BS,EAAM/E,KAAKkE,KAAKwC,gBAAgBuK,GAAcO,GAC/CzK,OACCmL,EAAqBlS,KAAKkE,KAAK0C,iBAAiBiK,GAAWoB,EAAoBjS,KAAKkE,KAAKgH,UAAUnE,OACnG6G,QAAuB5N,KAAKkE,KAAK4C,iBAAiBb,EAAclB,EAAKmN,EAAoBlS,KAAKkE,KAAKgH,UACzG,GlBlPQ,QkBkPJlL,KAAKqO,MAAMvK,GACX,MAAO,CAAEwK,KAAMtO,KAAKqO,MAAOT,eAAgBA,GAE/C,MAAMuE,EAAUnS,KAAKkE,KAAK0C,iBAAiBmK,GAAWkB,EAAoBjS,KAAKqO,MAAMG,SAASzH,OACxFzC,QAAYtE,KAAKkE,KAAK4C,iBAAiBb,EAAclB,EAAKoN,EAASnS,KAAKqO,MAAMG,SAC9E4D,EAAgBpS,KAAKkE,KAAK0C,iBAAiBgK,GAAkBqB,EAAoBjS,KAAKqO,MAAMK,WAAW3H,OACvGoH,QAAkBnO,KAAKkE,KAAK4C,iBAAiBb,EAAclB,EAAKqN,EAAepS,KAAKqO,MAAMK,WAChG,MAAO,CACHJ,KAAMtO,KAAKqO,MACXT,eAAgBA,EAChBtJ,IAAKA,EACL6J,UAAW,IAAInL,WAAWmL,GAC1BC,IAAK,EAEb,CACA,mBAAMqD,CAAcF,EAAMtL,EAAcZ,EAAKH,GACzC,MAAMmN,QAAYrS,KAAK6R,aAAaN,EAAMtL,EAAcf,GACxD,YAAgB3C,IAAZ8P,EAAI/N,IACG,IAAI2J,EAA0BjO,KAAKyC,KAAMzC,KAAKkE,KAAMmO,EAAIzE,eAAgBvI,GAE5E,IAAIqL,GAAkB1Q,KAAKyC,KAAMzC,KAAKkE,KAAMmO,EAAKhN,EAC5D,CACA,mBAAMsM,CAAcJ,EAAMtL,EAAcf,GACpC,MAAMmN,QAAYrS,KAAK6R,aAAaN,EAAMtL,EAAcf,GACxD,YAAgB3C,IAAZ8P,EAAI/N,IACG,IAAI0J,EAA6BhO,KAAKyC,KAAMzC,KAAKkE,KAAMmO,EAAIzE,gBAE/D,IAAI0C,GAAqBtQ,KAAKyC,KAAMzC,KAAKkE,KAAMmO,EAC1D,CACA,oBAAAf,CAAqBpM,GACjB,QAAoB3C,IAAhB2C,EAAO4F,MACP5F,EAAO4F,KAAK9F,WjBxTS,MiByTrB,MAAM,IAAI,EAAkB,iBAEhC,QAAmBzC,IAAf2C,EAAOsM,IAAmB,CAC1B,GAAItM,EAAOsM,IAAIlN,IAAIU,WjB1TG,GiB2TlB,MAAM,IAAI,EAAkB,mCAEhC,GAAIE,EAAOsM,IAAIlN,IAAIU,WAAajC,EAC5B,MAAM,IAAI,EAAkB,oBAEhC,GAAImC,EAAOsM,IAAI1N,GAAGkB,WAAajC,EAC3B,MAAM,IAAI,EAAkB,kBAEpC,CAEJ,ECxUG,MAAMuP,WAAkCzO,EAC3C,WAAAjE,GACI,MAAMoE,EAAM,IAAIgI,EAEhBjM,MnBSiB,GmBVJ,IAAImI,EnBUA,GmBV8BlE,GACRA,GACvC7B,OAAOJ,eAAe/B,KAAM,KAAM,CAC9BoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MnBIa,KmBFjBgB,OAAOJ,eAAe/B,KAAM,aAAc,CACtCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAEXgB,OAAOJ,eAAe/B,KAAM,UAAW,CACnCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAEXgB,OAAOJ,eAAe/B,KAAM,gBAAiB,CACzCoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,KAEXgB,OAAOJ,eAAe/B,KAAM,iBAAkB,CAC1CoC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVnB,MAAO,IAEf,EC6BG,MAAMoR,WAAoBpB,IA0B1B,MAAMqB,WAA4BF,IAiFlC,MAAMG,WAAmBzG,GCzKJ,IAAIhJ,WAAW,CACvC,GAAM,GAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAC1C,EAAM,GAAM,IAAM,IAAM,EAAM,GAAM,EAAM,KCFpB,IAAIA,WAAW,CACrC,GAAM,GAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAC1C,EAAM,GAAM,IAAM,IAAM,EAAM,GAAM,EAAM,I","sources":["webpack://import/./node_modules/@hpke/common/esm/src/errors.js","webpack://import/./node_modules/@hpke/common/esm/_dnt.shims.js","webpack://import/./node_modules/@hpke/common/esm/src/algorithm.js","webpack://import/./node_modules/@hpke/common/esm/src/identifiers.js","webpack://import/./node_modules/@hpke/common/esm/src/consts.js","webpack://import/./node_modules/@hpke/common/esm/src/interfaces/kemInterface.js","webpack://import/./node_modules/@hpke/common/esm/src/utils/misc.js","webpack://import/./node_modules/@hpke/common/esm/src/kems/dhkem.js","webpack://import/./node_modules/@hpke/common/esm/src/interfaces/dhkemPrimitives.js","webpack://import/./node_modules/@hpke/common/esm/src/utils/bignum.js","webpack://import/./node_modules/@hpke/common/esm/src/kems/dhkemPrimitives/ec.js","webpack://import/./node_modules/@hpke/common/esm/src/kdfs/hkdf.js","webpack://import/./node_modules/@hpke/common/esm/src/interfaces/aeadEncryptionContext.js","webpack://import/./node_modules/@hpke/common/esm/src/curve/montgomery.js","webpack://import/./node_modules/@hpke/core/esm/src/aeads/aesGcm.js","webpack://import/./node_modules/@hpke/core/esm/src/utils/emitNotSupported.js","webpack://import/./node_modules/@hpke/core/esm/src/exporterContext.js","webpack://import/./node_modules/@hpke/core/esm/src/encryptionContext.js","webpack://import/./node_modules/@hpke/core/esm/src/mutex.js","webpack://import/./node_modules/@hpke/core/esm/src/recipientContext.js","webpack://import/./node_modules/@hpke/core/esm/src/senderContext.js","webpack://import/./node_modules/@hpke/core/esm/src/cipherSuiteNative.js","webpack://import/./node_modules/@hpke/core/esm/src/kems/dhkemNative.js","webpack://import/./node_modules/@hpke/core/esm/src/native.js","webpack://import/./node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.js","webpack://import/./node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.js"],"sourcesContent":["/**\n * The base error class of hpke-js.\n * @group Errors\n */\nexport class HpkeError extends Error {\n constructor(e) {\n let message;\n if (e instanceof Error) {\n message = e.message;\n }\n else if (typeof e === \"string\") {\n message = e;\n }\n else {\n message = \"\";\n }\n super(message);\n this.name = this.constructor.name;\n }\n}\n/**\n * Invalid parameter.\n * @group Errors\n */\nexport class InvalidParamError extends HpkeError {\n}\n/**\n * KEM input or output validation failure.\n * @group Errors\n */\nexport class ValidationError extends HpkeError {\n}\n/**\n * Public or private key serialization failure.\n * @group Errors\n */\nexport class SerializeError extends HpkeError {\n}\n/**\n * Public or private key deserialization failure.\n * @group Errors\n */\nexport class DeserializeError extends HpkeError {\n}\n/**\n * encap() failure.\n * @group Errors\n */\nexport class EncapError extends HpkeError {\n}\n/**\n * decap() failure.\n * @group Errors\n */\nexport class DecapError extends HpkeError {\n}\n/**\n * Secret export failure.\n * @group Errors\n */\nexport class ExportError extends HpkeError {\n}\n/**\n * seal() failure.\n * @group Errors\n */\nexport class SealError extends HpkeError {\n}\n/**\n * open() failure.\n * @group Errors\n */\nexport class OpenError extends HpkeError {\n}\n/**\n * Sequence number overflow on the encryption context.\n * @group Errors\n */\nexport class MessageLimitReachedError extends HpkeError {\n}\n/**\n * Key pair derivation failure.\n * @group Errors\n */\nexport class DeriveKeyPairError extends HpkeError {\n}\n/**\n * Not supported failure.\n * @group Errors\n */\nexport class NotSupportedError extends HpkeError {\n}\n","const dntGlobals = {};\nexport const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);\nfunction createMergeProxy(baseObj, extObj) {\n return new Proxy(baseObj, {\n get(_target, prop, _receiver) {\n if (prop in extObj) {\n return extObj[prop];\n }\n else {\n return baseObj[prop];\n }\n },\n set(_target, prop, value) {\n if (prop in extObj) {\n delete extObj[prop];\n }\n baseObj[prop] = value;\n return true;\n },\n deleteProperty(_target, prop) {\n let success = false;\n if (prop in extObj) {\n delete extObj[prop];\n success = true;\n }\n if (prop in baseObj) {\n delete baseObj[prop];\n success = true;\n }\n return success;\n },\n ownKeys(_target) {\n const baseKeys = Reflect.ownKeys(baseObj);\n const extKeys = Reflect.ownKeys(extObj);\n const extKeysSet = new Set(extKeys);\n return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];\n },\n defineProperty(_target, prop, desc) {\n if (prop in extObj) {\n delete extObj[prop];\n }\n Reflect.defineProperty(baseObj, prop, desc);\n return true;\n },\n getOwnPropertyDescriptor(_target, prop) {\n if (prop in extObj) {\n return Reflect.getOwnPropertyDescriptor(extObj, prop);\n }\n else {\n return Reflect.getOwnPropertyDescriptor(baseObj, prop);\n }\n },\n has(_target, prop) {\n return prop in extObj || prop in baseObj;\n },\n });\n}\n","import * as dntShim from \"../_dnt.shims.js\";\nimport { NotSupportedError } from \"./errors.js\";\nasync function loadSubtleCrypto() {\n if (dntShim.dntGlobalThis !== undefined && globalThis.crypto !== undefined) {\n // Browsers, Node.js >= v19, Cloudflare Workers, Bun, etc.\n return globalThis.crypto.subtle;\n }\n // Node.js <= v18\n try {\n // @ts-ignore: to ignore \"crypto\"\n const { webcrypto } = await import(\"crypto\"); // node:crypto\n return webcrypto.subtle;\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n}\nexport class NativeAlgorithm {\n constructor() {\n Object.defineProperty(this, \"_api\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: undefined\n });\n }\n async _setup() {\n if (this._api !== undefined) {\n return;\n }\n this._api = await loadSubtleCrypto();\n }\n}\n","/**\n * The supported HPKE modes.\n */\nexport const Mode = {\n Base: 0x00,\n Psk: 0x01,\n Auth: 0x02,\n AuthPsk: 0x03,\n};\n/**\n * The supported Key Encapsulation Mechanism (KEM) identifiers.\n */\nexport const KemId = {\n NotAssigned: 0x0000,\n DhkemP256HkdfSha256: 0x0010,\n DhkemP384HkdfSha384: 0x0011,\n DhkemP521HkdfSha512: 0x0012,\n DhkemSecp256k1HkdfSha256: 0x0013,\n DhkemX25519HkdfSha256: 0x0020,\n DhkemX448HkdfSha512: 0x0021,\n HybridkemX25519Kyber768: 0x0030,\n MlKem512: 0x0040,\n MlKem768: 0x0041,\n MlKem1024: 0x0042,\n XWing: 0x647a,\n};\n/**\n * The supported Key Derivation Function (KDF) identifiers.\n */\nexport const KdfId = {\n HkdfSha256: 0x0001,\n HkdfSha384: 0x0002,\n HkdfSha512: 0x0003,\n};\n/**\n * The supported Authenticated Encryption with Associated Data (AEAD) identifiers.\n */\nexport const AeadId = {\n Aes128Gcm: 0x0001,\n Aes256Gcm: 0x0002,\n Chacha20Poly1305: 0x0003,\n ExportOnly: 0xFFFF,\n};\n","// The input length limit (psk, psk_id, info, exporter_context, ikm).\nexport const INPUT_LENGTH_LIMIT = 8192;\nexport const INFO_LENGTH_LIMIT = 65536;\n// The minimum length of a PSK.\nexport const MINIMUM_PSK_LENGTH = 32;\n// b\"\"\nexport const EMPTY = new Uint8Array(0);\n","// b\"KEM\"\nexport const SUITE_ID_HEADER_KEM = new Uint8Array([\n 75,\n 69,\n 77,\n 0,\n 0,\n]);\n","import * as dntShim from \"../../_dnt.shims.js\";\nimport { KemId } from \"../identifiers.js\";\nexport const isDenoV1 = () => \n// deno-lint-ignore no-explicit-any\ndntShim.dntGlobalThis.process === undefined;\n/**\n * Checks whether the runtime is Deno or not (Node.js).\n * @returns boolean - true if the runtime is Deno, false Node.js.\n */\nexport function isDeno() {\n // deno-lint-ignore no-explicit-any\n if (dntShim.dntGlobalThis.process === undefined) {\n return true;\n }\n // deno-lint-ignore no-explicit-any\n return dntShim.dntGlobalThis.process?.versions?.deno !== undefined;\n}\n/**\n * Checks whetehr the type of input is CryptoKeyPair or not.\n */\nexport const isCryptoKeyPair = (x) => typeof x === \"object\" &&\n x !== null &&\n typeof x.privateKey === \"object\" &&\n typeof x.publicKey === \"object\";\n/**\n * Converts integer to octet string. I2OSP implementation.\n */\nexport function i2Osp(n, w) {\n if (w <= 0) {\n throw new Error(\"i2Osp: too small size\");\n }\n if (n >= 256 ** w) {\n throw new Error(\"i2Osp: too large integer\");\n }\n const ret = new Uint8Array(w);\n for (let i = 0; i < w && n; i++) {\n ret[w - (i + 1)] = n % 256;\n n = n >> 8;\n }\n return ret;\n}\n/**\n * Concatenates two Uint8Arrays.\n * @param a Uint8Array\n * @param b Uint8Array\n * @returns Concatenated Uint8Array\n */\nexport function concat(a, b) {\n const ret = new Uint8Array(a.length + b.length);\n ret.set(a, 0);\n ret.set(b, a.length);\n return ret;\n}\n/**\n * Decodes Base64Url-encoded data.\n * @param v Base64Url-encoded string\n * @returns Uint8Array\n */\nexport function base64UrlToBytes(v) {\n const base64 = v.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const byteString = atob(base64);\n const ret = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) {\n ret[i] = byteString.charCodeAt(i);\n }\n return ret;\n}\n/**\n * Encodes Uint8Array to Base64Url.\n * @param v Uint8Array\n * @returns Base64Url-encoded string\n */\nexport function bytesToBase64Url(v) {\n return btoa(String.fromCharCode(...v))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=*$/g, \"\");\n}\n/**\n * Decodes hex string to Uint8Array.\n * @param v Hex string\n * @returns Uint8Array\n * @throws Error if the input is not a hex string.\n */\nexport function hexToBytes(v) {\n if (v.length === 0) {\n return new Uint8Array([]);\n }\n const res = v.match(/[\\da-f]{2}/gi);\n if (res == null) {\n throw new Error(\"Not hex string.\");\n }\n return new Uint8Array(res.map(function (h) {\n return parseInt(h, 16);\n }));\n}\n/**\n * Encodes Uint8Array to hex string.\n * @param v Uint8Array\n * @returns Hex string\n */\nexport function bytesToHex(v) {\n return [...v].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n/**\n * Converts KemId to KeyAlgorithm.\n * @param kem KemId\n * @returns KeyAlgorithm\n */\nexport function kemToKeyGenAlgorithm(kem) {\n switch (kem) {\n case KemId.DhkemP256HkdfSha256:\n return {\n name: \"ECDH\",\n namedCurve: \"P-256\",\n };\n case KemId.DhkemP384HkdfSha384:\n return {\n name: \"ECDH\",\n namedCurve: \"P-384\",\n };\n case KemId.DhkemP521HkdfSha512:\n return {\n name: \"ECDH\",\n namedCurve: \"P-521\",\n };\n default:\n // case KemId.DhkemX25519HkdfSha256\n return {\n name: \"X25519\",\n };\n }\n}\nexport async function loadSubtleCrypto() {\n if (dntShim.dntGlobalThis !== undefined && globalThis.crypto !== undefined) {\n // Browsers, Node.js >= v19, Cloudflare Workers, Bun, etc.\n return globalThis.crypto.subtle;\n }\n // Node.js <= v18\n try {\n // @ts-ignore: to ignore \"crypto\"\n const { webcrypto } = await import(\"crypto\"); // node:crypto\n return webcrypto.subtle;\n }\n catch (_e) {\n throw new Error(\"Failed to load SubtleCrypto\");\n }\n}\nexport async function loadCrypto() {\n if (dntShim.dntGlobalThis !== undefined && globalThis.crypto !== undefined) {\n // Browsers, Node.js >= v19, Cloudflare Workers, Bun, etc.\n return globalThis.crypto;\n }\n // Node.js <= v18\n try {\n // @ts-ignore: to ignore \"crypto\"\n const { webcrypto } = await import(\"crypto\"); // node:crypto\n return webcrypto;\n }\n catch (_e) {\n throw new Error(\"Web Cryptograph API not supported\");\n }\n}\n/**\n * XOR for Uint8Array.\n */\nexport function xor(a, b) {\n if (a.byteLength !== b.byteLength) {\n throw new Error(\"xor: different length inputs\");\n }\n const buf = new Uint8Array(a.byteLength);\n for (let i = 0; i < a.byteLength; i++) {\n buf[i] = a[i] ^ b[i];\n }\n return buf;\n}\n","import { EMPTY, INPUT_LENGTH_LIMIT } from \"../consts.js\";\nimport { DecapError, EncapError, InvalidParamError } from \"../errors.js\";\nimport { SUITE_ID_HEADER_KEM } from \"../interfaces/kemInterface.js\";\nimport { concat, i2Osp, isCryptoKeyPair } from \"../utils/misc.js\";\n// b\"eae_prk\"\nconst LABEL_EAE_PRK = new Uint8Array([101, 97, 101, 95, 112, 114, 107]);\n// b\"shared_secret\"\n// deno-fmt-ignore\nconst LABEL_SHARED_SECRET = new Uint8Array([\n 115, 104, 97, 114, 101, 100, 95, 115, 101, 99,\n 114, 101, 116,\n]);\nfunction concat3(a, b, c) {\n const ret = new Uint8Array(a.length + b.length + c.length);\n ret.set(a, 0);\n ret.set(b, a.length);\n ret.set(c, a.length + b.length);\n return ret;\n}\nexport class Dhkem {\n constructor(id, prim, kdf) {\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_prim\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_kdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.id = id;\n this._prim = prim;\n this._kdf = kdf;\n const suiteId = new Uint8Array(SUITE_ID_HEADER_KEM);\n suiteId.set(i2Osp(this.id, 2), 3);\n this._kdf.init(suiteId);\n }\n async serializePublicKey(key) {\n return await this._prim.serializePublicKey(key);\n }\n async deserializePublicKey(key) {\n return await this._prim.deserializePublicKey(key);\n }\n async serializePrivateKey(key) {\n return await this._prim.serializePrivateKey(key);\n }\n async deserializePrivateKey(key) {\n return await this._prim.deserializePrivateKey(key);\n }\n async importKey(format, key, isPublic = true) {\n return await this._prim.importKey(format, key, isPublic);\n }\n async generateKeyPair() {\n return await this._prim.generateKeyPair();\n }\n async deriveKeyPair(ikm) {\n if (ikm.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long ikm\");\n }\n return await this._prim.deriveKeyPair(ikm);\n }\n async encap(params) {\n let ke;\n if (params.ekm === undefined) {\n ke = await this.generateKeyPair();\n }\n else if (isCryptoKeyPair(params.ekm)) {\n // params.ekm is only used for testing.\n ke = params.ekm;\n }\n else {\n // params.ekm is only used for testing.\n ke = await this.deriveKeyPair(params.ekm);\n }\n const enc = await this._prim.serializePublicKey(ke.publicKey);\n const pkrm = await this._prim.serializePublicKey(params.recipientPublicKey);\n try {\n let dh;\n if (params.senderKey === undefined) {\n dh = new Uint8Array(await this._prim.dh(ke.privateKey, params.recipientPublicKey));\n }\n else {\n const sks = isCryptoKeyPair(params.senderKey)\n ? params.senderKey.privateKey\n : params.senderKey;\n const dh1 = new Uint8Array(await this._prim.dh(ke.privateKey, params.recipientPublicKey));\n const dh2 = new Uint8Array(await this._prim.dh(sks, params.recipientPublicKey));\n dh = concat(dh1, dh2);\n }\n let kemContext;\n if (params.senderKey === undefined) {\n kemContext = concat(new Uint8Array(enc), new Uint8Array(pkrm));\n }\n else {\n const pks = isCryptoKeyPair(params.senderKey)\n ? params.senderKey.publicKey\n : await this._prim.derivePublicKey(params.senderKey);\n const pksm = await this._prim.serializePublicKey(pks);\n kemContext = concat3(new Uint8Array(enc), new Uint8Array(pkrm), new Uint8Array(pksm));\n }\n const sharedSecret = await this._generateSharedSecret(dh, kemContext);\n return {\n enc: enc,\n sharedSecret: sharedSecret,\n };\n }\n catch (e) {\n throw new EncapError(e);\n }\n }\n async decap(params) {\n const pke = await this._prim.deserializePublicKey(params.enc);\n const skr = isCryptoKeyPair(params.recipientKey)\n ? params.recipientKey.privateKey\n : params.recipientKey;\n const pkr = isCryptoKeyPair(params.recipientKey)\n ? params.recipientKey.publicKey\n : await this._prim.derivePublicKey(params.recipientKey);\n const pkrm = await this._prim.serializePublicKey(pkr);\n try {\n let dh;\n if (params.senderPublicKey === undefined) {\n dh = new Uint8Array(await this._prim.dh(skr, pke));\n }\n else {\n const dh1 = new Uint8Array(await this._prim.dh(skr, pke));\n const dh2 = new Uint8Array(await this._prim.dh(skr, params.senderPublicKey));\n dh = concat(dh1, dh2);\n }\n let kemContext;\n if (params.senderPublicKey === undefined) {\n kemContext = concat(new Uint8Array(params.enc), new Uint8Array(pkrm));\n }\n else {\n const pksm = await this._prim.serializePublicKey(params.senderPublicKey);\n kemContext = new Uint8Array(params.enc.byteLength + pkrm.byteLength + pksm.byteLength);\n kemContext.set(new Uint8Array(params.enc), 0);\n kemContext.set(new Uint8Array(pkrm), params.enc.byteLength);\n kemContext.set(new Uint8Array(pksm), params.enc.byteLength + pkrm.byteLength);\n }\n return await this._generateSharedSecret(dh, kemContext);\n }\n catch (e) {\n throw new DecapError(e);\n }\n }\n async _generateSharedSecret(dh, kemContext) {\n const labeledIkm = this._kdf.buildLabeledIkm(LABEL_EAE_PRK, dh);\n const labeledInfo = this._kdf.buildLabeledInfo(LABEL_SHARED_SECRET, kemContext, this.secretSize);\n return await this._kdf.extractAndExpand(EMPTY.buffer, labeledIkm.buffer, labeledInfo.buffer, this.secretSize);\n }\n}\n","// The key usages for KEM.\nexport const KEM_USAGES = [\"deriveBits\"];\n// b\"dkp_prk\"\nexport const LABEL_DKP_PRK = new Uint8Array([\n 100,\n 107,\n 112,\n 95,\n 112,\n 114,\n 107,\n]);\n// b\"sk\"\nexport const LABEL_SK = new Uint8Array([115, 107]);\n","/**\n * The minimum inplementation of bignum to derive an EC key pair.\n */\nexport class Bignum {\n constructor(size) {\n Object.defineProperty(this, \"_num\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._num = new Uint8Array(size);\n }\n val() {\n return this._num;\n }\n reset() {\n this._num.fill(0);\n }\n set(src) {\n if (src.length !== this._num.length) {\n throw new Error(\"Bignum.set: invalid argument\");\n }\n this._num.set(src);\n }\n isZero() {\n for (let i = 0; i < this._num.length; i++) {\n if (this._num[i] !== 0) {\n return false;\n }\n }\n return true;\n }\n lessThan(v) {\n if (v.length !== this._num.length) {\n throw new Error(\"Bignum.lessThan: invalid argument\");\n }\n for (let i = 0; i < this._num.length; i++) {\n if (this._num[i] < v[i]) {\n return true;\n }\n if (this._num[i] > v[i]) {\n return false;\n }\n }\n return false;\n }\n}\n","import { NativeAlgorithm } from \"../../algorithm.js\";\nimport { EMPTY } from \"../../consts.js\";\nimport { DeriveKeyPairError, DeserializeError, NotSupportedError, SerializeError, } from \"../../errors.js\";\nimport { KemId } from \"../../identifiers.js\";\nimport { KEM_USAGES, LABEL_DKP_PRK } from \"../../interfaces/dhkemPrimitives.js\";\nimport { Bignum } from \"../../utils/bignum.js\";\nimport { base64UrlToBytes, i2Osp } from \"../../utils/misc.js\";\n// b\"candidate\"\n// deno-fmt-ignore\nconst LABEL_CANDIDATE = new Uint8Array([\n 99, 97, 110, 100, 105, 100, 97, 116, 101,\n]);\n// the order of the curve being used.\n// deno-fmt-ignore\nconst ORDER_P_256 = new Uint8Array([\n 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xbc, 0xe6, 0xfa, 0xad, 0xa7, 0x17, 0x9e, 0x84,\n 0xf3, 0xb9, 0xca, 0xc2, 0xfc, 0x63, 0x25, 0x51,\n]);\n// deno-fmt-ignore\nconst ORDER_P_384 = new Uint8Array([\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xc7, 0x63, 0x4d, 0x81, 0xf4, 0x37, 0x2d, 0xdf,\n 0x58, 0x1a, 0x0d, 0xb2, 0x48, 0xb0, 0xa7, 0x7a,\n 0xec, 0xec, 0x19, 0x6a, 0xcc, 0xc5, 0x29, 0x73,\n]);\n// deno-fmt-ignore\nconst ORDER_P_521 = new Uint8Array([\n 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xfa, 0x51, 0x86, 0x87, 0x83, 0xbf, 0x2f,\n 0x96, 0x6b, 0x7f, 0xcc, 0x01, 0x48, 0xf7, 0x09,\n 0xa5, 0xd0, 0x3b, 0xb5, 0xc9, 0xb8, 0x89, 0x9c,\n 0x47, 0xae, 0xbb, 0x6f, 0xb7, 0x1e, 0x91, 0x38,\n 0x64, 0x09,\n]);\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_P_256 = new Uint8Array([\n 48, 65, 2, 1, 0, 48, 19, 6, 7, 42,\n 134, 72, 206, 61, 2, 1, 6, 8, 42, 134,\n 72, 206, 61, 3, 1, 7, 4, 39, 48, 37,\n 2, 1, 1, 4, 32,\n]);\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_P_384 = new Uint8Array([\n 48, 78, 2, 1, 0, 48, 16, 6, 7, 42,\n 134, 72, 206, 61, 2, 1, 6, 5, 43, 129,\n 4, 0, 34, 4, 55, 48, 53, 2, 1, 1,\n 4, 48,\n]);\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_P_521 = new Uint8Array([\n 48, 96, 2, 1, 0, 48, 16, 6, 7, 42,\n 134, 72, 206, 61, 2, 1, 6, 5, 43, 129,\n 4, 0, 35, 4, 73, 48, 71, 2, 1, 1,\n 4, 66,\n]);\nexport class Ec extends NativeAlgorithm {\n constructor(kem, hkdf) {\n super();\n Object.defineProperty(this, \"_hkdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_alg\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nPk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nSk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nDh\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // EC specific arguments for deriving key pair.\n Object.defineProperty(this, \"_order\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_bitmask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pkcs8AlgId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._hkdf = hkdf;\n switch (kem) {\n case KemId.DhkemP256HkdfSha256:\n this._alg = { name: \"ECDH\", namedCurve: \"P-256\" };\n this._nPk = 65;\n this._nSk = 32;\n this._nDh = 32;\n this._order = ORDER_P_256;\n this._bitmask = 0xFF;\n this._pkcs8AlgId = PKCS8_ALG_ID_P_256;\n break;\n case KemId.DhkemP384HkdfSha384:\n this._alg = { name: \"ECDH\", namedCurve: \"P-384\" };\n this._nPk = 97;\n this._nSk = 48;\n this._nDh = 48;\n this._order = ORDER_P_384;\n this._bitmask = 0xFF;\n this._pkcs8AlgId = PKCS8_ALG_ID_P_384;\n break;\n default:\n // case KemId.DhkemP521HkdfSha512:\n this._alg = { name: \"ECDH\", namedCurve: \"P-521\" };\n this._nPk = 133;\n this._nSk = 66;\n this._nDh = 66;\n this._order = ORDER_P_521;\n this._bitmask = 0x01;\n this._pkcs8AlgId = PKCS8_ALG_ID_P_521;\n break;\n }\n }\n async serializePublicKey(key) {\n await this._setup();\n try {\n return await this._api.exportKey(\"raw\", key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePublicKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, true);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async serializePrivateKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n if (!(\"d\" in jwk)) {\n throw new Error(\"Not private key\");\n }\n return base64UrlToBytes(jwk[\"d\"]).buffer;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePrivateKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, false);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async importKey(format, key, isPublic) {\n await this._setup();\n try {\n if (format === \"raw\") {\n return await this._importRawKey(key, isPublic);\n }\n // jwk\n if (key instanceof ArrayBuffer) {\n throw new Error(\"Invalid jwk key format\");\n }\n return await this._importJWK(key, isPublic);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async generateKeyPair() {\n await this._setup();\n try {\n return await this._api.generateKey(this._alg, true, KEM_USAGES);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n async deriveKeyPair(ikm) {\n await this._setup();\n try {\n const dkpPrk = await this._hkdf.labeledExtract(EMPTY.buffer, LABEL_DKP_PRK, new Uint8Array(ikm));\n const bn = new Bignum(this._nSk);\n for (let counter = 0; bn.isZero() || !bn.lessThan(this._order); counter++) {\n if (counter > 255) {\n throw new Error(\"Faild to derive a key pair\");\n }\n const bytes = new Uint8Array(await this._hkdf.labeledExpand(dkpPrk, LABEL_CANDIDATE, i2Osp(counter, 1), this._nSk));\n bytes[0] = bytes[0] & this._bitmask;\n bn.set(bytes);\n }\n const sk = await this._deserializePkcs8Key(bn.val());\n bn.reset();\n return {\n privateKey: sk,\n publicKey: await this.derivePublicKey(sk),\n };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n async derivePublicKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n delete jwk[\"d\"];\n delete jwk[\"key_ops\"];\n return await this._api.importKey(\"jwk\", jwk, this._alg, true, []);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async dh(sk, pk) {\n try {\n await this._setup();\n const bits = await this._api.deriveBits({\n name: \"ECDH\",\n public: pk,\n }, sk, this._nDh * 8);\n return bits;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async _importRawKey(key, isPublic) {\n if (isPublic && key.byteLength !== this._nPk) {\n throw new Error(\"Invalid public key for the ciphersuite\");\n }\n if (!isPublic && key.byteLength !== this._nSk) {\n throw new Error(\"Invalid private key for the ciphersuite\");\n }\n if (isPublic) {\n return await this._api.importKey(\"raw\", key, this._alg, true, []);\n }\n return await this._deserializePkcs8Key(new Uint8Array(key));\n }\n async _importJWK(key, isPublic) {\n if (typeof key.crv === \"undefined\" || key.crv !== this._alg.namedCurve) {\n throw new Error(`Invalid crv: ${key.crv}`);\n }\n if (isPublic) {\n if (typeof key.d !== \"undefined\") {\n throw new Error(\"Invalid key: `d` should not be set\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, []);\n }\n if (typeof key.d === \"undefined\") {\n throw new Error(\"Invalid key: `d` not found\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, KEM_USAGES);\n }\n async _deserializePkcs8Key(k) {\n const pkcs8Key = new Uint8Array(this._pkcs8AlgId.length + k.length);\n pkcs8Key.set(this._pkcs8AlgId, 0);\n pkcs8Key.set(k, this._pkcs8AlgId.length);\n return await this._api.importKey(\"pkcs8\", pkcs8Key, this._alg, true, KEM_USAGES);\n }\n}\n","import { EMPTY } from \"../consts.js\";\nimport { InvalidParamError } from \"../errors.js\";\nimport { KdfId } from \"../identifiers.js\";\nimport { NativeAlgorithm } from \"../algorithm.js\";\n// b\"HPKE-v1\"\nconst HPKE_VERSION = new Uint8Array([72, 80, 75, 69, 45, 118, 49]);\nexport class HkdfNative extends NativeAlgorithm {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha256\n });\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_suiteId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: EMPTY\n });\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-256\",\n length: 256,\n }\n });\n }\n init(suiteId) {\n this._suiteId = suiteId;\n }\n buildLabeledIkm(label, ikm) {\n this._checkInit();\n const ret = new Uint8Array(7 + this._suiteId.byteLength + label.byteLength + ikm.byteLength);\n ret.set(HPKE_VERSION, 0);\n ret.set(this._suiteId, 7);\n ret.set(label, 7 + this._suiteId.byteLength);\n ret.set(ikm, 7 + this._suiteId.byteLength + label.byteLength);\n return ret;\n }\n buildLabeledInfo(label, info, len) {\n this._checkInit();\n const ret = new Uint8Array(9 + this._suiteId.byteLength + label.byteLength + info.byteLength);\n ret.set(new Uint8Array([0, len]), 0);\n ret.set(HPKE_VERSION, 2);\n ret.set(this._suiteId, 9);\n ret.set(label, 9 + this._suiteId.byteLength);\n ret.set(info, 9 + this._suiteId.byteLength + label.byteLength);\n return ret;\n }\n async extract(salt, ikm) {\n await this._setup();\n if (salt.byteLength === 0) {\n salt = new ArrayBuffer(this.hashSize);\n }\n if (salt.byteLength !== this.hashSize) {\n throw new InvalidParamError(\"The salt length must be the same as the hashSize\");\n }\n const key = await this._api.importKey(\"raw\", salt, this.algHash, false, [\n \"sign\",\n ]);\n return await this._api.sign(\"HMAC\", key, ikm);\n }\n async expand(prk, info, len) {\n await this._setup();\n const key = await this._api.importKey(\"raw\", prk, this.algHash, false, [\n \"sign\",\n ]);\n const okm = new ArrayBuffer(len);\n const p = new Uint8Array(okm);\n let prev = EMPTY;\n const mid = new Uint8Array(info);\n const tail = new Uint8Array(1);\n if (len > 255 * this.hashSize) {\n throw new Error(\"Entropy limit reached\");\n }\n const tmp = new Uint8Array(this.hashSize + mid.length + 1);\n for (let i = 1, cur = 0; cur < p.length; i++) {\n tail[0] = i;\n tmp.set(prev, 0);\n tmp.set(mid, prev.length);\n tmp.set(tail, prev.length + mid.length);\n prev = new Uint8Array(await this._api.sign(\"HMAC\", key, tmp.slice(0, prev.length + mid.length + 1)));\n if (p.length - cur >= prev.length) {\n p.set(prev, cur);\n cur += prev.length;\n }\n else {\n p.set(prev.slice(0, p.length - cur), cur);\n cur += p.length - cur;\n }\n }\n return okm;\n }\n async extractAndExpand(salt, ikm, info, len) {\n await this._setup();\n const baseKey = await this._api.importKey(\"raw\", ikm, \"HKDF\", false, [\"deriveBits\"]);\n return await this._api.deriveBits({\n name: \"HKDF\",\n hash: this.algHash.hash,\n salt: salt,\n info: info,\n }, baseKey, len * 8);\n }\n async labeledExtract(salt, label, ikm) {\n return await this.extract(salt, this.buildLabeledIkm(label, ikm).buffer);\n }\n async labeledExpand(prk, label, info, len) {\n return await this.expand(prk, this.buildLabeledInfo(label, info, len).buffer, len);\n }\n _checkInit() {\n if (this._suiteId === EMPTY) {\n throw new Error(\"Not initialized. Call init()\");\n }\n }\n}\nexport class HkdfSha256Native extends HkdfNative {\n constructor() {\n super(...arguments);\n /** KdfId.HkdfSha256 (0x0001) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha256\n });\n /** 32 */\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n /** The parameters for Web Cryptography API */\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-256\",\n length: 256,\n }\n });\n }\n}\nexport class HkdfSha384Native extends HkdfNative {\n constructor() {\n super(...arguments);\n /** KdfId.HkdfSha384 (0x0002) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha384\n });\n /** 48 */\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 48\n });\n /** The parameters for Web Cryptography API */\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-384\",\n length: 384,\n }\n });\n }\n}\nexport class HkdfSha512Native extends HkdfNative {\n constructor() {\n super(...arguments);\n /** KdfId.HkdfSha512 (0x0003) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha512\n });\n /** 64 */\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 64\n });\n /** The parameters for Web Cryptography API */\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-512\",\n length: 512,\n }\n });\n }\n}\n","// The key usages for AEAD.\nexport const AEAD_USAGES = [\"encrypt\", \"decrypt\"];\n","/**\n * This file is based on noble-curves (https://github.com/paulmillr/noble-curves).\n *\n * noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com)\n *\n * The original file is located at:\n * https://github.com/paulmillr/noble-curves/blob/b9d49d2b41d550571a0c5be443ecb62109fa3373/src/abstract/montgomery.ts\n */\n/**\n * Montgomery curve methods. It's not really whole montgomery curve,\n * just bunch of very specific methods for X25519 / X448 from\n * [RFC 7748](https://www.rfc-editor.org/rfc/rfc7748)\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes, aInRange, bytesToNumberLE, copyBytes, numberToBytesLE, randomBytesAsync, validateObject, } from \"../utils/noble.js\";\nimport { createKeygen } from \"./curve.js\";\nimport { mod } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nfunction validateOpts(curve) {\n validateObject(curve, {\n adjustScalarBytes: \"function\",\n powPminus2: \"function\",\n });\n return Object.freeze({ ...curve });\n}\nexport function montgomery(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { P, type, adjustScalarBytes, powPminus2, randomBytes: rand } = CURVE;\n const is25519 = type === \"x25519\";\n if (!is25519 && type !== \"x448\")\n throw new Error(\"invalid type\");\n const randomBytes_ = rand || randomBytesAsync;\n const montgomeryBits = is25519 ? 255 : 448;\n const fieldLen = is25519 ? 32 : 56;\n const Gu = is25519 ? BigInt(9) : BigInt(5);\n // RFC 7748 #5:\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519 and\n // (156326 - 2) / 4 = 39081 for curve448/X448\n // const a = is25519 ? 156326n : 486662n;\n const a24 = is25519 ? BigInt(121665) : BigInt(39081);\n // RFC: x25519 \"the resulting integer is of the form 2^254 plus\n // eight times a value between 0 and 2^251 - 1 (inclusive)\"\n // x448: \"2^447 plus four times a value between 0 and 2^445 - 1 (inclusive)\"\n const minScalar = is25519 ? _2n ** BigInt(254) : _2n ** BigInt(447);\n const maxAdded = is25519\n ? BigInt(8) * _2n ** BigInt(251) - _1n\n : BigInt(4) * _2n ** BigInt(445) - _1n;\n const maxScalar = minScalar + maxAdded + _1n; // (inclusive)\n const modP = (n) => mod(n, P);\n const GuBytes = encodeU(Gu);\n function encodeU(u) {\n return numberToBytesLE(modP(u), fieldLen);\n }\n function decodeU(u) {\n const _u = copyBytes(abytes(u, fieldLen, \"uCoordinate\"));\n // RFC: When receiving such an array, implementations of X25519\n // (but not X448) MUST mask the most significant bit in the final byte.\n if (is25519)\n _u[31] &= 127; // 0b0111_1111\n // RFC: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime. The non-canonical\n // values are 2^255 - 19 through 2^255 - 1 for X25519 and 2^448 - 2^224\n // - 1 through 2^448 - 1 for X448.\n return modP(bytesToNumberLE(_u));\n }\n function decodeScalar(scalar) {\n return bytesToNumberLE(adjustScalarBytes(copyBytes(abytes(scalar, fieldLen, \"scalar\"))));\n }\n function scalarMult(scalar, u) {\n const pu = montgomeryLadder(decodeU(u), decodeScalar(scalar));\n // Some public keys are useless, of low-order. Curve author doesn't think\n // it needs to be validated, but we do it nonetheless.\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n)\n throw new Error(\"invalid private or public key received\");\n return encodeU(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n function scalarMultBase(scalar) {\n return scalarMult(scalar, GuBytes);\n }\n const getPublicKey = scalarMultBase;\n const getSharedSecret = scalarMult;\n // cswap from RFC7748 \"example code\"\n function cswap(swap, x_2, x_3) {\n // dummy = mask(swap) AND (x_2 XOR x_3)\n // Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n // and x_3, computed, e.g., as mask(swap) = 0 - swap.\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy); // x_2 = x_2 XOR dummy\n x_3 = modP(x_3 + dummy); // x_3 = x_3 XOR dummy\n return { x_2, x_3 };\n }\n /**\n * Montgomery x-only multiplication ladder.\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(u, scalar) {\n aInRange(\"u\", u, _0n, P);\n aInRange(\"scalar\", scalar, minScalar, maxScalar);\n const k = scalar;\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n swap = k_t;\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n const z2 = powPminus2(z_2); // `Fp.pow(x, P - _2n)` is much slower equivalent\n return modP(x_2 * z2); // Return x_2 * (z_2^(p - 2))\n }\n const lengths = {\n secretKey: fieldLen,\n publicKey: fieldLen,\n seed: fieldLen,\n };\n const randomSecretKey = async (seed) => {\n if (seed === undefined) {\n seed = await randomBytes_(fieldLen);\n }\n abytes(seed, lengths.seed, \"seed\");\n return seed;\n };\n const utils = { randomSecretKey };\n return Object.freeze({\n keygen: createKeygen(randomSecretKey, getPublicKey),\n getSharedSecret,\n getPublicKey,\n scalarMult,\n scalarMultBase,\n utils,\n GuBytes: GuBytes.slice(),\n lengths,\n });\n}\n","import { AEAD_USAGES, AeadId, NativeAlgorithm } from \"@hpke/common\";\nexport class AesGcmContext extends NativeAlgorithm {\n constructor(key) {\n super();\n Object.defineProperty(this, \"_rawKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_key\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: undefined\n });\n this._rawKey = key;\n }\n async seal(iv, data, aad) {\n await this._setupKey();\n const alg = {\n name: \"AES-GCM\",\n iv: iv,\n additionalData: aad,\n };\n const ct = await this._api.encrypt(alg, this._key, data);\n return ct;\n }\n async open(iv, data, aad) {\n await this._setupKey();\n const alg = {\n name: \"AES-GCM\",\n iv: iv,\n additionalData: aad,\n };\n const pt = await this._api.decrypt(alg, this._key, data);\n return pt;\n }\n async _setupKey() {\n if (this._key !== undefined) {\n return;\n }\n await this._setup();\n const key = await this._importKey(this._rawKey);\n (new Uint8Array(this._rawKey)).fill(0);\n this._key = key;\n return;\n }\n async _importKey(key) {\n return await this._api.importKey(\"raw\", key, { name: \"AES-GCM\" }, true, AEAD_USAGES);\n }\n}\n/**\n * The AES-128-GCM for HPKE AEAD implementing {@link AeadInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `aead` parameter of {@link CipherSuiteParams} instead of `AeadId.Aes128Gcm`.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class Aes128Gcm {\n constructor() {\n /** AeadId.Aes128Gcm (0x0001) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: AeadId.Aes128Gcm\n });\n /** 16 */\n Object.defineProperty(this, \"keySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 16\n });\n /** 12 */\n Object.defineProperty(this, \"nonceSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 12\n });\n /** 16 */\n Object.defineProperty(this, \"tagSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 16\n });\n }\n createEncryptionContext(key) {\n return new AesGcmContext(key);\n }\n}\n/**\n * The AES-256-GCM for HPKE AEAD implementing {@link AeadInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `aead` parameter of {@link CipherSuiteParams} instead of `AeadId.Aes256Gcm`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes256Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes256Gcm(),\n * });\n * ```\n */\nexport class Aes256Gcm extends Aes128Gcm {\n constructor() {\n super(...arguments);\n /** AeadId.Aes256Gcm (0x0002) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: AeadId.Aes256Gcm\n });\n /** 32 */\n Object.defineProperty(this, \"keySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n /** 12 */\n Object.defineProperty(this, \"nonceSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 12\n });\n /** 16 */\n Object.defineProperty(this, \"tagSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 16\n });\n }\n}\n","import { NotSupportedError } from \"@hpke/common\";\nexport function emitNotSupported() {\n return new Promise((_resolve, reject) => {\n reject(new NotSupportedError(\"Not supported\"));\n });\n}\n","import { ExportError, INPUT_LENGTH_LIMIT, InvalidParamError, } from \"@hpke/common\";\nimport { emitNotSupported } from \"./utils/emitNotSupported.js\";\n// b\"sec\"\nconst LABEL_SEC = new Uint8Array([115, 101, 99]);\nexport class ExporterContextImpl {\n constructor(api, kdf, exporterSecret) {\n Object.defineProperty(this, \"_api\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"exporterSecret\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_kdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._api = api;\n this._kdf = kdf;\n this.exporterSecret = exporterSecret;\n }\n async seal(_data, _aad) {\n return await emitNotSupported();\n }\n async open(_data, _aad) {\n return await emitNotSupported();\n }\n async export(exporterContext, len) {\n if (exporterContext.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long exporter context\");\n }\n try {\n return await this._kdf.labeledExpand(this.exporterSecret, LABEL_SEC, new Uint8Array(exporterContext), len);\n }\n catch (e) {\n throw new ExportError(e);\n }\n }\n}\nexport class RecipientExporterContextImpl extends ExporterContextImpl {\n}\nexport class SenderExporterContextImpl extends ExporterContextImpl {\n constructor(api, kdf, exporterSecret, enc) {\n super(api, kdf, exporterSecret);\n Object.defineProperty(this, \"enc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.enc = enc;\n return;\n }\n}\n","import { i2Osp, MessageLimitReachedError, xor } from \"@hpke/common\";\nimport { ExporterContextImpl } from \"./exporterContext.js\";\nexport class EncryptionContextImpl extends ExporterContextImpl {\n constructor(api, kdf, params) {\n super(api, kdf, params.exporterSecret);\n // AEAD id.\n Object.defineProperty(this, \"_aead\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The length in bytes of a key for the algorithm.\n Object.defineProperty(this, \"_nK\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The length in bytes of a nonce for the algorithm.\n Object.defineProperty(this, \"_nN\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The length in bytes of an authentication tag for the algorithm.\n Object.defineProperty(this, \"_nT\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The end-to-end encryption key information.\n Object.defineProperty(this, \"_ctx\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n if (params.key === undefined || params.baseNonce === undefined ||\n params.seq === undefined) {\n throw new Error(\"Required parameters are missing\");\n }\n this._aead = params.aead;\n this._nK = this._aead.keySize;\n this._nN = this._aead.nonceSize;\n this._nT = this._aead.tagSize;\n const key = this._aead.createEncryptionContext(params.key);\n this._ctx = {\n key: key,\n baseNonce: params.baseNonce,\n seq: params.seq,\n };\n }\n computeNonce(k) {\n const seqBytes = i2Osp(k.seq, k.baseNonce.byteLength);\n return xor(k.baseNonce, seqBytes).buffer;\n }\n incrementSeq(k) {\n // if (this.seq >= (1 << (8 * this.baseNonce.byteLength)) - 1) {\n if (k.seq > Number.MAX_SAFE_INTEGER) {\n throw new MessageLimitReachedError(\"Message limit reached\");\n }\n k.seq += 1;\n return;\n }\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Mutex_locked;\nexport class Mutex {\n constructor() {\n _Mutex_locked.set(this, Promise.resolve());\n }\n async lock() {\n let releaseLock;\n const nextLock = new Promise((resolve) => {\n releaseLock = resolve;\n });\n const previousLock = __classPrivateFieldGet(this, _Mutex_locked, \"f\");\n __classPrivateFieldSet(this, _Mutex_locked, nextLock, \"f\");\n await previousLock;\n return releaseLock;\n }\n}\n_Mutex_locked = new WeakMap();\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RecipientContextImpl_mutex;\nimport { EMPTY, OpenError } from \"@hpke/common\";\nimport { EncryptionContextImpl } from \"./encryptionContext.js\";\nimport { Mutex } from \"./mutex.js\";\nexport class RecipientContextImpl extends EncryptionContextImpl {\n constructor() {\n super(...arguments);\n _RecipientContextImpl_mutex.set(this, void 0);\n }\n async open(data, aad = EMPTY.buffer) {\n __classPrivateFieldSet(this, _RecipientContextImpl_mutex, __classPrivateFieldGet(this, _RecipientContextImpl_mutex, \"f\") ?? new Mutex(), \"f\");\n const release = await __classPrivateFieldGet(this, _RecipientContextImpl_mutex, \"f\").lock();\n let pt;\n try {\n pt = await this._ctx.key.open(this.computeNonce(this._ctx), data, aad);\n }\n catch (e) {\n throw new OpenError(e);\n }\n finally {\n release();\n }\n this.incrementSeq(this._ctx);\n return pt;\n }\n}\n_RecipientContextImpl_mutex = new WeakMap();\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _SenderContextImpl_mutex;\nimport { EMPTY, SealError } from \"@hpke/common\";\nimport { EncryptionContextImpl } from \"./encryptionContext.js\";\nimport { Mutex } from \"./mutex.js\";\nexport class SenderContextImpl extends EncryptionContextImpl {\n constructor(api, kdf, params, enc) {\n super(api, kdf, params);\n Object.defineProperty(this, \"enc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n _SenderContextImpl_mutex.set(this, void 0);\n this.enc = enc;\n }\n async seal(data, aad = EMPTY.buffer) {\n __classPrivateFieldSet(this, _SenderContextImpl_mutex, __classPrivateFieldGet(this, _SenderContextImpl_mutex, \"f\") ?? new Mutex(), \"f\");\n const release = await __classPrivateFieldGet(this, _SenderContextImpl_mutex, \"f\").lock();\n let ct;\n try {\n ct = await this._ctx.key.seal(this.computeNonce(this._ctx), data, aad);\n }\n catch (e) {\n throw new SealError(e);\n }\n finally {\n release();\n }\n this.incrementSeq(this._ctx);\n return ct;\n }\n}\n_SenderContextImpl_mutex = new WeakMap();\n","import { AeadId, EMPTY, i2Osp, INFO_LENGTH_LIMIT, INPUT_LENGTH_LIMIT, InvalidParamError, MINIMUM_PSK_LENGTH, Mode, NativeAlgorithm, } from \"@hpke/common\";\nimport { RecipientExporterContextImpl, SenderExporterContextImpl, } from \"./exporterContext.js\";\nimport { RecipientContextImpl } from \"./recipientContext.js\";\nimport { SenderContextImpl } from \"./senderContext.js\";\n// b\"base_nonce\"\n// deno-fmt-ignore\nconst LABEL_BASE_NONCE = new Uint8Array([\n 98, 97, 115, 101, 95, 110, 111, 110, 99, 101,\n]);\n// b\"exp\"\nconst LABEL_EXP = new Uint8Array([101, 120, 112]);\n// b\"info_hash\"\n// deno-fmt-ignore\nconst LABEL_INFO_HASH = new Uint8Array([\n 105, 110, 102, 111, 95, 104, 97, 115, 104,\n]);\n// b\"key\"\nconst LABEL_KEY = new Uint8Array([107, 101, 121]);\n// b\"psk_id_hash\"\n// deno-fmt-ignore\nconst LABEL_PSK_ID_HASH = new Uint8Array([\n 112, 115, 107, 95, 105, 100, 95, 104, 97, 115, 104,\n]);\n// b\"secret\"\nconst LABEL_SECRET = new Uint8Array([115, 101, 99, 114, 101, 116]);\n// b\"HPKE\"\n// deno-fmt-ignore\nconst SUITE_ID_HEADER_HPKE = new Uint8Array([\n 72, 80, 75, 69, 0, 0, 0, 0, 0, 0,\n]);\n/**\n * The Hybrid Public Key Encryption (HPKE) ciphersuite,\n * which is implemented using only\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n *\n * This is the super class of {@link CipherSuite} and the same as\n * {@link https://jsr.io/@hpke/core/doc/~/CipherSuite | @hpke/core#CipherSuite} as follows:\n * which supports only the ciphersuites that can be implemented on the native\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n * Therefore, the following cryptographic algorithms are not supported for now:\n * - DHKEM(X25519, HKDF-SHA256)\n * - DHKEM(X448, HKDF-SHA512)\n * - ChaCha20Poly1305\n *\n * In addtion, the HKDF functions contained in this class can only derive\n * keys of the same length as the `hashSize`.\n *\n * If you want to use the unsupported cryptographic algorithms\n * above or derive keys longer than the `hashSize`,\n * please use {@link CipherSuite}.\n *\n * This class provides following functions:\n *\n * - Creates encryption contexts both for senders and recipients.\n * - {@link createSenderContext}\n * - {@link createRecipientContext}\n * - Provides single-shot encryption API.\n * - {@link seal}\n * - {@link open}\n *\n * The calling of the constructor of this class is the starting\n * point for HPKE operations for both senders and recipients.\n *\n * @example Use only ciphersuites supported by Web Cryptography API.\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * CipherSuite,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n *\n * @example Use a ciphersuite which is currently not supported by Web Cryptography API.\n *\n * ```ts\n * import { Aes128Gcm, HkdfSha256, CipherSuite } from \"@hpke/core\";\n * // Use an extension module.\n * import { DhkemX25519HkdfSha256 } from \"@hpke/dhkem-x25519\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemX25519HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class CipherSuiteNative extends NativeAlgorithm {\n /**\n * @param params A set of parameters for building a cipher suite.\n *\n * If the error occurred, throws {@link InvalidParamError}.\n *\n * @throws {@link InvalidParamError}\n */\n constructor(params) {\n super();\n Object.defineProperty(this, \"_kem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_kdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_aead\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_suiteId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // KEM\n if (typeof params.kem === \"number\") {\n throw new InvalidParamError(\"KemId cannot be used\");\n }\n this._kem = params.kem;\n // KDF\n if (typeof params.kdf === \"number\") {\n throw new InvalidParamError(\"KdfId cannot be used\");\n }\n this._kdf = params.kdf;\n // AEAD\n if (typeof params.aead === \"number\") {\n throw new InvalidParamError(\"AeadId cannot be used\");\n }\n this._aead = params.aead;\n this._suiteId = new Uint8Array(SUITE_ID_HEADER_HPKE);\n this._suiteId.set(i2Osp(this._kem.id, 2), 4);\n this._suiteId.set(i2Osp(this._kdf.id, 2), 6);\n this._suiteId.set(i2Osp(this._aead.id, 2), 8);\n this._kdf.init(this._suiteId);\n }\n /**\n * Gets the KEM context of the ciphersuite.\n */\n get kem() {\n return this._kem;\n }\n /**\n * Gets the KDF context of the ciphersuite.\n */\n get kdf() {\n return this._kdf;\n }\n /**\n * Gets the AEAD context of the ciphersuite.\n */\n get aead() {\n return this._aead;\n }\n /**\n * Creates an encryption context for a sender.\n *\n * If the error occurred, throws {@link DecapError} | {@link ValidationError}.\n *\n * @param params A set of parameters for the sender encryption context.\n * @returns A sender encryption context.\n * @throws {@link EncapError}, {@link ValidationError}\n */\n async createSenderContext(params) {\n this._validateInputLength(params);\n await this._setup();\n const dh = await this._kem.encap(params);\n let mode;\n if (params.psk !== undefined) {\n mode = params.senderKey !== undefined ? Mode.AuthPsk : Mode.Psk;\n }\n else {\n mode = params.senderKey !== undefined ? Mode.Auth : Mode.Base;\n }\n return await this._keyScheduleS(mode, dh.sharedSecret, dh.enc, params);\n }\n /**\n * Creates an encryption context for a recipient.\n *\n * If the error occurred, throws {@link DecapError}\n * | {@link DeserializeError} | {@link ValidationError}.\n *\n * @param params A set of parameters for the recipient encryption context.\n * @returns A recipient encryption context.\n * @throws {@link DecapError}, {@link DeserializeError}, {@link ValidationError}\n */\n async createRecipientContext(params) {\n this._validateInputLength(params);\n await this._setup();\n const sharedSecret = await this._kem.decap(params);\n let mode;\n if (params.psk !== undefined) {\n mode = params.senderPublicKey !== undefined ? Mode.AuthPsk : Mode.Psk;\n }\n else {\n mode = params.senderPublicKey !== undefined ? Mode.Auth : Mode.Base;\n }\n return await this._keyScheduleR(mode, sharedSecret, params);\n }\n /**\n * Encrypts a message to a recipient.\n *\n * If the error occurred, throws `EncapError` | `MessageLimitReachedError` | `SealError` | `ValidationError`.\n *\n * @param params A set of parameters for building a sender encryption context.\n * @param pt A plain text as bytes to be encrypted.\n * @param aad Additional authenticated data as bytes fed by an application.\n * @returns A cipher text and an encapsulated key as bytes.\n * @throws {@link EncapError}, {@link MessageLimitReachedError}, {@link SealError}, {@link ValidationError}\n */\n async seal(params, pt, aad = EMPTY.buffer) {\n const ctx = await this.createSenderContext(params);\n return {\n ct: await ctx.seal(pt, aad),\n enc: ctx.enc,\n };\n }\n /**\n * Decrypts a message from a sender.\n *\n * If the error occurred, throws `DecapError` | `DeserializeError` | `OpenError` | `ValidationError`.\n *\n * @param params A set of parameters for building a recipient encryption context.\n * @param ct An encrypted text as bytes to be decrypted.\n * @param aad Additional authenticated data as bytes fed by an application.\n * @returns A decrypted plain text as bytes.\n * @throws {@link DecapError}, {@link DeserializeError}, {@link OpenError}, {@link ValidationError}\n */\n async open(params, ct, aad = EMPTY.buffer) {\n const ctx = await this.createRecipientContext(params);\n return await ctx.open(ct, aad);\n }\n // private verifyPskInputs(mode: Mode, params: KeyScheduleParams) {\n // const gotPsk = (params.psk !== undefined);\n // const gotPskId = (params.psk !== undefined && params.psk.id.byteLength > 0);\n // if (gotPsk !== gotPskId) {\n // throw new Error('Inconsistent PSK inputs');\n // }\n // if (gotPsk && (mode === Mode.Base || mode === Mode.Auth)) {\n // throw new Error('PSK input provided when not needed');\n // }\n // if (!gotPsk && (mode === Mode.Psk || mode === Mode.AuthPsk)) {\n // throw new Error('Missing required PSK input');\n // }\n // return;\n // }\n async _keySchedule(mode, sharedSecret, params) {\n // Currently, there is no point in executing this function\n // because this hpke library does not allow users to explicitly specify the mode.\n //\n // this.verifyPskInputs(mode, params);\n const pskId = params.psk === undefined\n ? EMPTY\n : new Uint8Array(params.psk.id);\n const pskIdHash = await this._kdf.labeledExtract(EMPTY.buffer, LABEL_PSK_ID_HASH, pskId);\n const info = params.info === undefined\n ? EMPTY\n : new Uint8Array(params.info);\n const infoHash = await this._kdf.labeledExtract(EMPTY.buffer, LABEL_INFO_HASH, info);\n const keyScheduleContext = new Uint8Array(1 + pskIdHash.byteLength + infoHash.byteLength);\n keyScheduleContext.set(new Uint8Array([mode]), 0);\n keyScheduleContext.set(new Uint8Array(pskIdHash), 1);\n keyScheduleContext.set(new Uint8Array(infoHash), 1 + pskIdHash.byteLength);\n const psk = params.psk === undefined\n ? EMPTY\n : new Uint8Array(params.psk.key);\n const ikm = this._kdf.buildLabeledIkm(LABEL_SECRET, psk)\n .buffer;\n const exporterSecretInfo = this._kdf.buildLabeledInfo(LABEL_EXP, keyScheduleContext, this._kdf.hashSize).buffer;\n const exporterSecret = await this._kdf.extractAndExpand(sharedSecret, ikm, exporterSecretInfo, this._kdf.hashSize);\n if (this._aead.id === AeadId.ExportOnly) {\n return { aead: this._aead, exporterSecret: exporterSecret };\n }\n const keyInfo = this._kdf.buildLabeledInfo(LABEL_KEY, keyScheduleContext, this._aead.keySize).buffer;\n const key = await this._kdf.extractAndExpand(sharedSecret, ikm, keyInfo, this._aead.keySize);\n const baseNonceInfo = this._kdf.buildLabeledInfo(LABEL_BASE_NONCE, keyScheduleContext, this._aead.nonceSize).buffer;\n const baseNonce = await this._kdf.extractAndExpand(sharedSecret, ikm, baseNonceInfo, this._aead.nonceSize);\n return {\n aead: this._aead,\n exporterSecret: exporterSecret,\n key: key,\n baseNonce: new Uint8Array(baseNonce),\n seq: 0,\n };\n }\n async _keyScheduleS(mode, sharedSecret, enc, params) {\n const res = await this._keySchedule(mode, sharedSecret, params);\n if (res.key === undefined) {\n return new SenderExporterContextImpl(this._api, this._kdf, res.exporterSecret, enc);\n }\n return new SenderContextImpl(this._api, this._kdf, res, enc);\n }\n async _keyScheduleR(mode, sharedSecret, params) {\n const res = await this._keySchedule(mode, sharedSecret, params);\n if (res.key === undefined) {\n return new RecipientExporterContextImpl(this._api, this._kdf, res.exporterSecret);\n }\n return new RecipientContextImpl(this._api, this._kdf, res);\n }\n _validateInputLength(params) {\n if (params.info !== undefined &&\n params.info.byteLength > INFO_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long info\");\n }\n if (params.psk !== undefined) {\n if (params.psk.key.byteLength < MINIMUM_PSK_LENGTH) {\n throw new InvalidParamError(`PSK must have at least ${MINIMUM_PSK_LENGTH} bytes`);\n }\n if (params.psk.key.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long psk.key\");\n }\n if (params.psk.id.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long psk.id\");\n }\n }\n return;\n }\n}\n","import { Dhkem, Ec, HkdfSha256Native, HkdfSha384Native, HkdfSha512Native, KemId, } from \"@hpke/common\";\nexport class DhkemP256HkdfSha256Native extends Dhkem {\n constructor() {\n const kdf = new HkdfSha256Native();\n const prim = new Ec(KemId.DhkemP256HkdfSha256, kdf);\n super(KemId.DhkemP256HkdfSha256, prim, kdf);\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.DhkemP256HkdfSha256\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 65\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 65\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n }\n}\nexport class DhkemP384HkdfSha384Native extends Dhkem {\n constructor() {\n const kdf = new HkdfSha384Native();\n const prim = new Ec(KemId.DhkemP384HkdfSha384, kdf);\n super(KemId.DhkemP384HkdfSha384, prim, kdf);\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.DhkemP384HkdfSha384\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 48\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 97\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 97\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 48\n });\n }\n}\nexport class DhkemP521HkdfSha512Native extends Dhkem {\n constructor() {\n const kdf = new HkdfSha512Native();\n const prim = new Ec(KemId.DhkemP521HkdfSha512, kdf);\n super(KemId.DhkemP521HkdfSha512, prim, kdf);\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.DhkemP521HkdfSha512\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 64\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 133\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 133\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 64\n });\n }\n}\n","import { HkdfSha256Native, HkdfSha384Native, HkdfSha512Native, } from \"@hpke/common\";\nimport { CipherSuiteNative } from \"./cipherSuiteNative.js\";\nimport { DhkemP256HkdfSha256Native, DhkemP384HkdfSha384Native, DhkemP521HkdfSha512Native, } from \"./kems/dhkemNative.js\";\n/**\n * The Hybrid Public Key Encryption (HPKE) ciphersuite,\n * which is implemented using only\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n *\n * This class is the same as\n * {@link https://jsr.io/@hpke/core/doc/~/CipherSuiteNative | @hpke/core#CipherSuiteNative} as follows:\n * which supports only the ciphersuites that can be implemented on the native\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n * Therefore, the following cryptographic algorithms are not supported for now:\n * - `DHKEM(X25519, HKDF-SHA256)`\n * - `DHKEM(X448, HKDF-SHA512)`\n * - `ChaCha20Poly1305`\n *\n * In addtion, the HKDF functions contained in this `CipherSuiteNative`\n * class can only derive keys of the same length as the `hashSize`.\n *\n * If you want to use the unsupported cryptographic algorithms\n * above or derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * This class provides following functions:\n *\n * - Creates encryption contexts both for senders and recipients.\n * - {@link createSenderContext}\n * - {@link createRecipientContext}\n * - Provides single-shot encryption API.\n * - {@link seal}\n * - {@link open}\n *\n * The calling of the constructor of this class is the starting\n * point for HPKE operations for both senders and recipients.\n *\n * @example Use only ciphersuites supported by Web Cryptography API.\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * CipherSuite,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n *\n * @example Use a ciphersuite which is currently not supported by Web Cryptography API.\n *\n * ```ts\n * import { Aes128Gcm, HkdfSha256, CipherSuite } from \"@hpke/core\";\n * import { DhkemX25519HkdfSha256 } from \"@hpke/dhkem-x25519\";\n * const suite = new CipherSuite({\n * kem: new DhkemX25519HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class CipherSuite extends CipherSuiteNative {\n}\n/**\n * The DHKEM(P-256, HKDF-SHA256) for HPKE KEM implementing {@link KemInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KemId.DhkemP256HkdfSha256`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class DhkemP256HkdfSha256 extends DhkemP256HkdfSha256Native {\n}\n/**\n * The DHKEM(P-384, HKDF-SHA384) for HPKE KEM implementing {@link KemInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KemId.DhkemP384HkdfSha384`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP384HkdfSha384,\n * HkdfSha384,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP384HkdfSha384(),\n * kdf: new HkdfSha384(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class DhkemP384HkdfSha384 extends DhkemP384HkdfSha384Native {\n}\n/**\n * The DHKEM(P-521, HKDF-SHA512) for HPKE KEM implementing {@link KemInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KemId.DhkemP521HkdfSha512`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes256Gcm,\n * CipherSuite,\n * DhkemP521HkdfSha512,\n * HkdfSha512,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP521HkdfSha512(),\n * kdf: new HkdfSha512(),\n * aead: new Aes256Gcm(),\n * });\n * ```\n */\nexport class DhkemP521HkdfSha512 extends DhkemP521HkdfSha512Native {\n}\n/**\n * The HKDF-SHA256 for HPKE KDF implementing {@link KdfInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KdfId.HkdfSha256`.\n *\n * The KDF class can only derive keys of the same length as the `hashSize`.\n * If you want to derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class HkdfSha256 extends HkdfSha256Native {\n}\n/**\n * The HKDF-SHA384 for HPKE KDF implementing {@link KdfInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KdfId.HkdfSha384`.\n *\n * The KDF class can only derive keys of the same length as the `hashSize`.\n * If you want to derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP384HkdfSha384,\n * HkdfSha384,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP384HkdfSha384(),\n * kdf: new HkdfSha384(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class HkdfSha384 extends HkdfSha384Native {\n}\n/**\n * The HKDF-SHA512 for HPKE KDF implementing {@link KdfInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KdfId.HkdfSha512`.\n *\n * The KDF class can only derive keys of the same length as the `hashSize`.\n * If you want to derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes256Gcm,\n * CipherSuite,\n * DhkemP521HkdfSha512,\n * HkdfSha512,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP521HkdfSha512(),\n * kdf: new HkdfSha512(),\n * aead: new Aes256Gcm(),\n * });\n * ```\n */\nexport class HkdfSha512 extends HkdfSha512Native {\n}\n","import { base64UrlToBytes, DeriveKeyPairError, DeserializeError, EMPTY, KEM_USAGES, LABEL_DKP_PRK, LABEL_SK, NativeAlgorithm, NotSupportedError, SerializeError, } from \"@hpke/common\";\nconst ALG_NAME = \"X25519\";\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_X25519 = new Uint8Array([\n 0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06,\n 0x03, 0x2b, 0x65, 0x6e, 0x04, 0x22, 0x04, 0x20,\n]);\nexport class X25519 extends NativeAlgorithm {\n constructor(hkdf) {\n super();\n Object.defineProperty(this, \"_hkdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_alg\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nPk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nSk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nDh\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pkcs8AlgId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._alg = { name: ALG_NAME };\n this._hkdf = hkdf;\n this._nPk = 32;\n this._nSk = 32;\n this._nDh = 32;\n this._pkcs8AlgId = PKCS8_ALG_ID_X25519;\n }\n async serializePublicKey(key) {\n await this._setup();\n try {\n return await this._api.exportKey(\"raw\", key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePublicKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, true);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async serializePrivateKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n if (!(\"d\" in jwk)) {\n throw new Error(\"Not private key\");\n }\n return base64UrlToBytes(jwk[\"d\"]).buffer;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePrivateKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, false);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async importKey(format, key, isPublic) {\n await this._setup();\n try {\n if (format === \"raw\") {\n return await this._importRawKey(key, isPublic);\n }\n // jwk\n if (key instanceof ArrayBuffer) {\n throw new Error(\"Invalid jwk key format\");\n }\n return await this._importJWK(key, isPublic);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async generateKeyPair() {\n await this._setup();\n try {\n return await this._api.generateKey(ALG_NAME, true, KEM_USAGES);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n async deriveKeyPair(ikm) {\n await this._setup();\n try {\n const dkpPrk = await this._hkdf.labeledExtract(EMPTY.buffer, LABEL_DKP_PRK, new Uint8Array(ikm));\n const rawSk = await this._hkdf.labeledExpand(dkpPrk, LABEL_SK, EMPTY, this._nSk);\n const rawSkBytes = new Uint8Array(rawSk);\n const sk = await this._deserializePkcs8Key(rawSkBytes);\n rawSkBytes.fill(0);\n return {\n privateKey: sk,\n publicKey: await this.derivePublicKey(sk),\n };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n async derivePublicKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n delete jwk[\"d\"];\n delete jwk[\"key_ops\"];\n return await this._api.importKey(\"jwk\", jwk, this._alg, true, []);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async dh(sk, pk) {\n await this._setup();\n try {\n const bits = await this._api.deriveBits({\n name: ALG_NAME,\n public: pk,\n }, sk, this._nDh * 8);\n return bits;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async _importRawKey(key, isPublic) {\n if (isPublic && key.byteLength !== this._nPk) {\n throw new Error(\"Invalid public key for the ciphersuite\");\n }\n if (!isPublic && key.byteLength !== this._nSk) {\n throw new Error(\"Invalid private key for the ciphersuite\");\n }\n if (isPublic) {\n return await this._api.importKey(\"raw\", key, this._alg, true, []);\n }\n return await this._deserializePkcs8Key(new Uint8Array(key));\n }\n async _importJWK(key, isPublic) {\n if (typeof key.kty === \"undefined\" || key.kty !== \"OKP\") {\n throw new Error(`Invalid kty: ${key.crv}`);\n }\n if (typeof key.crv === \"undefined\" || key.crv !== ALG_NAME) {\n throw new Error(`Invalid crv: ${key.crv}`);\n }\n if (isPublic) {\n if (typeof key.d !== \"undefined\") {\n throw new Error(\"Invalid key: `d` should not be set\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, []);\n }\n if (typeof key.d === \"undefined\") {\n throw new Error(\"Invalid key: `d` not found\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, KEM_USAGES);\n }\n async _deserializePkcs8Key(k) {\n const pkcs8Key = new Uint8Array(this._pkcs8AlgId.length + k.length);\n pkcs8Key.set(this._pkcs8AlgId, 0);\n pkcs8Key.set(k, this._pkcs8AlgId.length);\n return await this._api.importKey(\"pkcs8\", pkcs8Key, this._alg, true, KEM_USAGES);\n }\n}\n","import { base64UrlToBytes, DeriveKeyPairError, DeserializeError, EMPTY, KEM_USAGES, LABEL_DKP_PRK, LABEL_SK, NativeAlgorithm, NotSupportedError, SerializeError, } from \"@hpke/common\";\nconst ALG_NAME = \"X448\";\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_X448 = new Uint8Array([\n 0x30, 0x46, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06,\n 0x03, 0x2b, 0x65, 0x6f, 0x04, 0x3a, 0x04, 0x38,\n]);\nexport class X448 extends NativeAlgorithm {\n constructor(hkdf) {\n super();\n Object.defineProperty(this, \"_hkdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_alg\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nPk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nSk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nDh\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pkcs8AlgId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._alg = { name: ALG_NAME };\n this._hkdf = hkdf;\n this._nPk = 56;\n this._nSk = 56;\n this._nDh = 56;\n this._pkcs8AlgId = PKCS8_ALG_ID_X448;\n }\n async serializePublicKey(key) {\n await this._setup();\n try {\n return await this._api.exportKey(\"raw\", key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePublicKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, true);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async serializePrivateKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n if (!(\"d\" in jwk)) {\n throw new Error(\"Not private key\");\n }\n return base64UrlToBytes(jwk[\"d\"]).buffer;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePrivateKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, false);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async importKey(format, key, isPublic) {\n await this._setup();\n try {\n if (format === \"raw\") {\n return await this._importRawKey(key, isPublic);\n }\n // jwk\n if (key instanceof ArrayBuffer) {\n throw new Error(\"Invalid jwk key format\");\n }\n return await this._importJWK(key, isPublic);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async generateKeyPair() {\n await this._setup();\n try {\n return await this._api.generateKey(ALG_NAME, true, KEM_USAGES);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n async deriveKeyPair(ikm) {\n await this._setup();\n try {\n const dkpPrk = await this._hkdf.labeledExtract(EMPTY.buffer, LABEL_DKP_PRK, new Uint8Array(ikm));\n const rawSk = await this._hkdf.labeledExpand(dkpPrk, LABEL_SK, EMPTY, this._nSk);\n const rawSkBytes = new Uint8Array(rawSk);\n const sk = await this._deserializePkcs8Key(rawSkBytes);\n rawSkBytes.fill(0);\n return {\n privateKey: sk,\n publicKey: await this.derivePublicKey(sk),\n };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n async derivePublicKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n delete jwk[\"d\"];\n delete jwk[\"key_ops\"];\n return await this._api.importKey(\"jwk\", jwk, this._alg, true, []);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async dh(sk, pk) {\n await this._setup();\n try {\n const bits = await this._api.deriveBits({\n name: ALG_NAME,\n public: pk,\n }, sk, this._nDh * 8);\n return bits;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async _importRawKey(key, isPublic) {\n if (isPublic && key.byteLength !== this._nPk) {\n throw new Error(\"Invalid public key for the ciphersuite\");\n }\n if (!isPublic && key.byteLength !== this._nSk) {\n throw new Error(\"Invalid private key for the ciphersuite\");\n }\n if (isPublic) {\n return await this._api.importKey(\"raw\", key, this._alg, true, []);\n }\n return await this._deserializePkcs8Key(new Uint8Array(key));\n }\n async _importJWK(key, isPublic) {\n if (typeof key.kty === \"undefined\" || key.kty !== \"OKP\") {\n throw new Error(`Invalid kty: ${key.crv}`);\n }\n if (typeof key.crv === \"undefined\" || key.crv !== ALG_NAME) {\n throw new Error(`Invalid crv: ${key.crv}`);\n }\n if (isPublic) {\n if (typeof key.d !== \"undefined\") {\n throw new Error(\"Invalid key: `d` should not be set\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, []);\n }\n if (typeof key.d === \"undefined\") {\n throw new Error(\"Invalid key: `d` not found\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, KEM_USAGES);\n }\n async _deserializePkcs8Key(k) {\n const pkcs8Key = new Uint8Array(this._pkcs8AlgId.length + k.length);\n pkcs8Key.set(this._pkcs8AlgId, 0);\n pkcs8Key.set(k, this._pkcs8AlgId.length);\n return await this._api.importKey(\"pkcs8\", pkcs8Key, this._alg, true, KEM_USAGES);\n }\n}\n"],"names":["HpkeError","Error","constructor","e","message","super","this","name","EncapError","DecapError","ExportError","SealError","OpenError","MessageLimitReachedError","DeriveKeyPairError","dntGlobalThis","baseObj","globalThis","extObj","Proxy","get","_target","prop","_receiver","set","value","deleteProperty","success","ownKeys","baseKeys","Reflect","extKeys","extKeysSet","Set","filter","k","has","defineProperty","desc","getOwnPropertyDescriptor","NativeAlgorithm","Object","enumerable","configurable","writable","undefined","_setup","_api","async","crypto","subtle","webcrypto","loadSubtleCrypto","INPUT_LENGTH_LIMIT","Uint8Array","x","privateKey","publicKey","n","w","ret","i","a","b","length","LABEL_EAE_PRK","LABEL_SHARED_SECRET","Dhkem","id","prim","kdf","_prim","_kdf","suiteId","init","serializePublicKey","key","deserializePublicKey","serializePrivateKey","deserializePrivateKey","importKey","format","isPublic","generateKeyPair","deriveKeyPair","ikm","byteLength","encap","params","ke","ekm","enc","pkrm","recipientPublicKey","dh","kemContext","senderKey","sks","pks","derivePublicKey","pksm","c","concat3","sharedSecret","_generateSharedSecret","decap","pke","skr","recipientKey","pkr","senderPublicKey","labeledIkm","buildLabeledIkm","labeledInfo","buildLabeledInfo","secretSize","extractAndExpand","buffer","KEM_USAGES","Bignum","size","_num","val","reset","fill","src","isZero","lessThan","v","LABEL_CANDIDATE","ORDER_P_256","ORDER_P_384","ORDER_P_521","PKCS8_ALG_ID_P_256","PKCS8_ALG_ID_P_384","PKCS8_ALG_ID_P_521","Ec","kem","hkdf","_hkdf","_alg","namedCurve","_nPk","_nSk","_nDh","_order","_bitmask","_pkcs8AlgId","exportKey","_importRawKey","jwk","base64","replace","byteString","atob","charCodeAt","base64UrlToBytes","ArrayBuffer","_importJWK","generateKey","dkpPrk","labeledExtract","bn","counter","bytes","labeledExpand","sk","_deserializePkcs8Key","pk","deriveBits","public","crv","d","pkcs8Key","HPKE_VERSION","HkdfNative","hash","_suiteId","label","_checkInit","info","len","extract","salt","hashSize","algHash","sign","expand","prk","okm","p","prev","mid","tail","tmp","cur","slice","baseKey","HkdfSha256Native","arguments","AEAD_USAGES","BigInt","AesGcmContext","_rawKey","seal","iv","data","aad","_setupKey","alg","additionalData","encrypt","_key","open","decrypt","_importKey","Aes128Gcm","createEncryptionContext","Aes256Gcm","emitNotSupported","Promise","_resolve","reject","LABEL_SEC","ExporterContextImpl","api","exporterSecret","_data","_aad","exporterContext","RecipientExporterContextImpl","SenderExporterContextImpl","EncryptionContextImpl","baseNonce","seq","_aead","aead","_nK","keySize","_nN","nonceSize","_nT","tagSize","_ctx","computeNonce","seqBytes","buf","xor","incrementSeq","Number","MAX_SAFE_INTEGER","_Mutex_locked","Mutex","resolve","lock","releaseLock","nextLock","previousLock","receiver","state","kind","f","TypeError","call","__classPrivateFieldGet","__classPrivateFieldSet","WeakMap","_RecipientContextImpl_mutex","RecipientContextImpl","release","pt","_SenderContextImpl_mutex","SenderContextImpl","ct","LABEL_BASE_NONCE","LABEL_EXP","LABEL_INFO_HASH","LABEL_KEY","LABEL_PSK_ID_HASH","LABEL_SECRET","SUITE_ID_HEADER_HPKE","CipherSuiteNative","_kem","createSenderContext","_validateInputLength","mode","psk","_keyScheduleS","createRecipientContext","_keyScheduleR","ctx","_keySchedule","pskId","pskIdHash","infoHash","keyScheduleContext","exporterSecretInfo","keyInfo","baseNonceInfo","res","DhkemP256HkdfSha256Native","CipherSuite","DhkemP256HkdfSha256","HkdfSha256"],"sourceRoot":""} \ No newline at end of file diff --git a/import/dist/vendors.bundle.e0c655267435fe0beb13.js b/import/dist/vendors.bundle.e0c655267435fe0beb13.js new file mode 100644 index 0000000..368cbe7 --- /dev/null +++ b/import/dist/vendors.bundle.e0c655267435fe0beb13.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkimport=self.webpackChunkimport||[]).push([[96],{255:(e,t,r)=>{r.d(t,{ws:()=>G,GR:()=>fe,RG:()=>be,v7:()=>pe});class i extends Error{constructor(e){let t;t=e instanceof Error?e.message:"string"==typeof e?e:"",super(t),this.name=this.constructor.name}}class n extends i{}class a extends i{}class s extends i{}class o extends i{}class c extends i{}class h extends i{}class l extends i{}class u extends i{}class d extends i{}class w extends i{}class y extends i{}const f=(b=globalThis,p={},new Proxy(b,{get:(e,t,r)=>t in p?p[t]:b[t],set:(e,t,r)=>(t in p&&delete p[t],b[t]=r,!0),deleteProperty(e,t){let r=!1;return t in p&&(delete p[t],r=!0),t in b&&(delete b[t],r=!0),r},ownKeys(e){const t=Reflect.ownKeys(b),r=Reflect.ownKeys(p),i=new Set(r);return[...t.filter(e=>!i.has(e)),...r]},defineProperty:(e,t,r)=>(t in p&&delete p[t],Reflect.defineProperty(b,t,r),!0),getOwnPropertyDescriptor:(e,t)=>t in p?Reflect.getOwnPropertyDescriptor(p,t):Reflect.getOwnPropertyDescriptor(b,t),has:(e,t)=>t in p||t in b}));var b,p;class _{constructor(){Object.defineProperty(this,"_api",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}async _setup(){void 0===this._api&&(this._api=await async function(){if(void 0!==f&&void 0!==globalThis.crypto)return globalThis.crypto.subtle;try{const{webcrypto:e}=await r.e(825).then(r.t.bind(r,825,19));return e.subtle}catch(e){throw new y(e)}}())}}const g=8192,m=new Uint8Array(0),v=new Uint8Array([75,69,77,0,0]),k=e=>"object"==typeof e&&null!==e&&"object"==typeof e.privateKey&&"object"==typeof e.publicKey;function P(e,t){if(t<=0)throw new Error("i2Osp: too small size");if(e>=256**t)throw new Error("i2Osp: too large integer");const r=new Uint8Array(t);for(let i=0;i>=8;return r}function K(e,t){const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}const A=new Uint8Array([101,97,101,95,112,114,107]),x=new Uint8Array([115,104,97,114,101,100,95,115,101,99,114,101,116]);class S{constructor(e,t,r){Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"secretSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"encSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"publicKeySize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"privateKeySize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_prim",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_kdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.id=e,this._prim=t,this._kdf=r;const i=new Uint8Array(v);i.set(P(this.id,2),3),this._kdf.init(i)}async serializePublicKey(e){return await this._prim.serializePublicKey(e)}async deserializePublicKey(e){return await this._prim.deserializePublicKey(e)}async serializePrivateKey(e){return await this._prim.serializePrivateKey(e)}async deserializePrivateKey(e){return await this._prim.deserializePrivateKey(e)}async importKey(e,t,r=!0){return await this._prim.importKey(e,t,r)}async generateKeyPair(){return await this._prim.generateKeyPair()}async deriveKeyPair(e){if(e.byteLength>g)throw new n("Too long ikm");return await this._prim.deriveKeyPair(e)}async encap(e){let t;t=void 0===e.ekm?await this.generateKeyPair():k(e.ekm)?e.ekm:await this.deriveKeyPair(e.ekm);const r=await this._prim.serializePublicKey(t.publicKey),i=await this._prim.serializePublicKey(e.recipientPublicKey);try{let n,a;if(void 0===e.senderKey)n=new Uint8Array(await this._prim.dh(t.privateKey,e.recipientPublicKey));else{const r=k(e.senderKey)?e.senderKey.privateKey:e.senderKey;n=K(new Uint8Array(await this._prim.dh(t.privateKey,e.recipientPublicKey)),new Uint8Array(await this._prim.dh(r,e.recipientPublicKey)))}if(void 0===e.senderKey)a=K(new Uint8Array(r),new Uint8Array(i));else{const t=k(e.senderKey)?e.senderKey.publicKey:await this._prim.derivePublicKey(e.senderKey),n=await this._prim.serializePublicKey(t);a=function(e,t,r){const i=new Uint8Array(e.length+t.length+r.length);return i.set(e,0),i.set(t,e.length),i.set(r,e.length+t.length),i}(new Uint8Array(r),new Uint8Array(i),new Uint8Array(n))}return{enc:r,sharedSecret:await this._generateSharedSecret(n,a)}}catch(e){throw new o(e)}}async decap(e){const t=await this._prim.deserializePublicKey(e.enc),r=k(e.recipientKey)?e.recipientKey.privateKey:e.recipientKey,i=k(e.recipientKey)?e.recipientKey.publicKey:await this._prim.derivePublicKey(e.recipientKey),n=await this._prim.serializePublicKey(i);try{let i,a;if(void 0===e.senderPublicKey)i=new Uint8Array(await this._prim.dh(r,t));else{i=K(new Uint8Array(await this._prim.dh(r,t)),new Uint8Array(await this._prim.dh(r,e.senderPublicKey)))}if(void 0===e.senderPublicKey)a=K(new Uint8Array(e.enc),new Uint8Array(n));else{const t=await this._prim.serializePublicKey(e.senderPublicKey);a=new Uint8Array(e.enc.byteLength+n.byteLength+t.byteLength),a.set(new Uint8Array(e.enc),0),a.set(new Uint8Array(n),e.enc.byteLength),a.set(new Uint8Array(t),e.enc.byteLength+n.byteLength)}return await this._generateSharedSecret(i,a)}catch(e){throw new c(e)}}async _generateSharedSecret(e,t){const r=this._kdf.buildLabeledIkm(A,e),i=this._kdf.buildLabeledInfo(x,t,this.secretSize);return await this._kdf.extractAndExpand(m.buffer,r.buffer,i.buffer,this.secretSize)}}const U=["deriveBits"],j=new Uint8Array([100,107,112,95,112,114,107]);new Uint8Array([115,107]);class E{constructor(e){Object.defineProperty(this,"_num",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._num=new Uint8Array(e)}val(){return this._num}reset(){this._num.fill(0)}set(e){if(e.length!==this._num.length)throw new Error("Bignum.set: invalid argument");this._num.set(e)}isZero(){for(let e=0;ee[t])return!1}return!1}}const O=new Uint8Array([99,97,110,100,105,100,97,116,101]),I=new Uint8Array([255,255,255,255,0,0,0,0,255,255,255,255,255,255,255,255,188,230,250,173,167,23,158,132,243,185,202,194,252,99,37,81]),z=new Uint8Array([255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,199,99,77,129,244,55,45,223,88,26,13,178,72,176,167,122,236,236,25,106,204,197,41,115]),L=new Uint8Array([1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,81,134,135,131,191,47,150,107,127,204,1,72,247,9,165,208,59,181,201,184,137,156,71,174,187,111,183,30,145,56,100,9]),C=new Uint8Array([48,65,2,1,0,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,4,39,48,37,2,1,1,4,32]),T=new Uint8Array([48,78,2,1,0,48,16,6,7,42,134,72,206,61,2,1,6,5,43,129,4,0,34,4,55,48,53,2,1,1,4,48]),N=new Uint8Array([48,96,2,1,0,48,16,6,7,42,134,72,206,61,2,1,6,5,43,129,4,0,35,4,73,48,71,2,1,1,4,66]);class D extends _{constructor(e,t){switch(super(),Object.defineProperty(this,"_hkdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_alg",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nPk",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nSk",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nDh",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_order",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_bitmask",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pkcs8AlgId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._hkdf=t,e){case 16:this._alg={name:"ECDH",namedCurve:"P-256"},this._nPk=65,this._nSk=32,this._nDh=32,this._order=I,this._bitmask=255,this._pkcs8AlgId=C;break;case 17:this._alg={name:"ECDH",namedCurve:"P-384"},this._nPk=97,this._nSk=48,this._nDh=48,this._order=z,this._bitmask=255,this._pkcs8AlgId=T;break;default:this._alg={name:"ECDH",namedCurve:"P-521"},this._nPk=133,this._nSk=66,this._nDh=66,this._order=L,this._bitmask=1,this._pkcs8AlgId=N}}async serializePublicKey(e){await this._setup();try{return await this._api.exportKey("raw",e)}catch(e){throw new a(e)}}async deserializePublicKey(e){await this._setup();try{return await this._importRawKey(e,!0)}catch(e){throw new s(e)}}async serializePrivateKey(e){await this._setup();try{const t=await this._api.exportKey("jwk",e);if(!("d"in t))throw new Error("Not private key");return function(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),r=atob(t),i=new Uint8Array(r.length);for(let e=0;e255)throw new Error("Faild to derive a key pair");const i=new Uint8Array(await this._hkdf.labeledExpand(t,O,P(e,1),this._nSk));i[0]=i[0]&this._bitmask,r.set(i)}const i=await this._deserializePkcs8Key(r.val());return r.reset(),{privateKey:i,publicKey:await this.derivePublicKey(i)}}catch(e){throw new w(e)}}async derivePublicKey(e){await this._setup();try{const t=await this._api.exportKey("jwk",e);return delete t.d,delete t.key_ops,await this._api.importKey("jwk",t,this._alg,!0,[])}catch(e){throw new s(e)}}async dh(e,t){try{return await this._setup(),await this._api.deriveBits({name:"ECDH",public:t},e,8*this._nDh)}catch(e){throw new a(e)}}async _importRawKey(e,t){if(t&&e.byteLength!==this._nPk)throw new Error("Invalid public key for the ciphersuite");if(!t&&e.byteLength!==this._nSk)throw new Error("Invalid private key for the ciphersuite");return t?await this._api.importKey("raw",e,this._alg,!0,[]):await this._deserializePkcs8Key(new Uint8Array(e))}async _importJWK(e,t){if(void 0===e.crv||e.crv!==this._alg.namedCurve)throw new Error(`Invalid crv: ${e.crv}`);if(t){if(void 0!==e.d)throw new Error("Invalid key: `d` should not be set");return await this._api.importKey("jwk",e,this._alg,!0,[])}if(void 0===e.d)throw new Error("Invalid key: `d` not found");return await this._api.importKey("jwk",e,this._alg,!0,U)}async _deserializePkcs8Key(e){const t=new Uint8Array(this._pkcs8AlgId.length+e.length);return t.set(this._pkcs8AlgId,0),t.set(e,this._pkcs8AlgId.length),await this._api.importKey("pkcs8",t,this._alg,!0,U)}}const H=new Uint8Array([72,80,75,69,45,118,49]);class R extends _{constructor(){super(),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"hashSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_suiteId",{enumerable:!0,configurable:!0,writable:!0,value:m}),Object.defineProperty(this,"algHash",{enumerable:!0,configurable:!0,writable:!0,value:{name:"HMAC",hash:"SHA-256",length:256}})}init(e){this._suiteId=e}buildLabeledIkm(e,t){this._checkInit();const r=new Uint8Array(7+this._suiteId.byteLength+e.byteLength+t.byteLength);return r.set(H,0),r.set(this._suiteId,7),r.set(e,7+this._suiteId.byteLength),r.set(t,7+this._suiteId.byteLength+e.byteLength),r}buildLabeledInfo(e,t,r){this._checkInit();const i=new Uint8Array(9+this._suiteId.byteLength+e.byteLength+t.byteLength);return i.set(new Uint8Array([0,r]),0),i.set(H,2),i.set(this._suiteId,9),i.set(e,9+this._suiteId.byteLength),i.set(t,9+this._suiteId.byteLength+e.byteLength),i}async extract(e,t){if(await this._setup(),0===e.byteLength&&(e=new ArrayBuffer(this.hashSize)),e.byteLength!==this.hashSize)throw new n("The salt length must be the same as the hashSize");const r=await this._api.importKey("raw",e,this.algHash,!1,["sign"]);return await this._api.sign("HMAC",r,t)}async expand(e,t,r){await this._setup();const i=await this._api.importKey("raw",e,this.algHash,!1,["sign"]),n=new ArrayBuffer(r),a=new Uint8Array(n);let s=m;const o=new Uint8Array(t),c=new Uint8Array(1);if(r>255*this.hashSize)throw new Error("Entropy limit reached");const h=new Uint8Array(this.hashSize+o.length+1);for(let e=1,t=0;t=s.length?(a.set(s,t),t+=s.length):(a.set(s.slice(0,a.length-t),t),t+=a.length-t);return n}async extractAndExpand(e,t,r,i){await this._setup();const n=await this._api.importKey("raw",t,"HKDF",!1,["deriveBits"]);return await this._api.deriveBits({name:"HKDF",hash:this.algHash.hash,salt:e,info:r},n,8*i)}async labeledExtract(e,t,r){return await this.extract(e,this.buildLabeledIkm(t,r).buffer)}async labeledExpand(e,t,r,i){return await this.expand(e,this.buildLabeledInfo(t,r,i).buffer,i)}_checkInit(){if(this._suiteId===m)throw new Error("Not initialized. Call init()")}}class M extends R{constructor(){super(...arguments),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"hashSize",{enumerable:!0,configurable:!0,writable:!0,value:32}),Object.defineProperty(this,"algHash",{enumerable:!0,configurable:!0,writable:!0,value:{name:"HMAC",hash:"SHA-256",length:256}})}}const q=["encrypt","decrypt"];BigInt(0),BigInt(1),BigInt(2);class B extends _{constructor(e){super(),Object.defineProperty(this,"_rawKey",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_key",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._rawKey=e}async seal(e,t,r){await this._setupKey();const i={name:"AES-GCM",iv:e,additionalData:r};return await this._api.encrypt(i,this._key,t)}async open(e,t,r){await this._setupKey();const i={name:"AES-GCM",iv:e,additionalData:r};return await this._api.decrypt(i,this._key,t)}async _setupKey(){if(void 0!==this._key)return;await this._setup();const e=await this._importKey(this._rawKey);new Uint8Array(this._rawKey).fill(0),this._key=e}async _importKey(e){return await this._api.importKey("raw",e,{name:"AES-GCM"},!0,q)}}class W{constructor(){Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"keySize",{enumerable:!0,configurable:!0,writable:!0,value:16}),Object.defineProperty(this,"nonceSize",{enumerable:!0,configurable:!0,writable:!0,value:12}),Object.defineProperty(this,"tagSize",{enumerable:!0,configurable:!0,writable:!0,value:16})}createEncryptionContext(e){return new B(e)}}class G extends W{constructor(){super(...arguments),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:2}),Object.defineProperty(this,"keySize",{enumerable:!0,configurable:!0,writable:!0,value:32}),Object.defineProperty(this,"nonceSize",{enumerable:!0,configurable:!0,writable:!0,value:12}),Object.defineProperty(this,"tagSize",{enumerable:!0,configurable:!0,writable:!0,value:16})}}function F(){return new Promise((e,t)=>{t(new y("Not supported"))})}const J=new Uint8Array([115,101,99]);class Z{constructor(e,t,r){Object.defineProperty(this,"_api",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"exporterSecret",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_kdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._api=e,this._kdf=t,this.exporterSecret=r}async seal(e,t){return await F()}async open(e,t){return await F()}async export(e,t){if(e.byteLength>g)throw new n("Too long exporter context");try{return await this._kdf.labeledExpand(this.exporterSecret,J,new Uint8Array(e),t)}catch(e){throw new h(e)}}}class X extends Z{}class $ extends Z{constructor(e,t,r,i){super(e,t,r),Object.defineProperty(this,"enc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.enc=i}}class Q extends Z{constructor(e,t,r){if(super(e,t,r.exporterSecret),Object.defineProperty(this,"_aead",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nK",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nN",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_nT",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_ctx",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),void 0===r.key||void 0===r.baseNonce||void 0===r.seq)throw new Error("Required parameters are missing");this._aead=r.aead,this._nK=this._aead.keySize,this._nN=this._aead.nonceSize,this._nT=this._aead.tagSize;const i=this._aead.createEncryptionContext(r.key);this._ctx={key:i,baseNonce:r.baseNonce,seq:r.seq}}computeNonce(e){const t=P(e.seq,e.baseNonce.byteLength);return function(e,t){if(e.byteLength!==t.byteLength)throw new Error("xor: different length inputs");const r=new Uint8Array(e.byteLength);for(let i=0;iNumber.MAX_SAFE_INTEGER)throw new d("Message limit reached");e.seq+=1}}var V;class Y{constructor(){V.set(this,Promise.resolve())}async lock(){let e;const t=new Promise(t=>{e=t}),r=function(e,t,r,i){if("a"===r&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)}(this,V,"f");return function(e,t,r,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===i?n.call(e,r):n?n.value=r:t.set(e,r)}(this,V,t,"f"),await r,e}}V=new WeakMap;var ee,te=function(e,t,r,i){if("a"===r&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)};class re extends Q{constructor(){super(...arguments),ee.set(this,void 0)}async open(e,t=m.buffer){!function(e,t,r,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===i?n.call(e,r):n?n.value=r:t.set(e,r)}(this,ee,te(this,ee,"f")??new Y,"f");const r=await te(this,ee,"f").lock();let i;try{i=await this._ctx.key.open(this.computeNonce(this._ctx),e,t)}catch(e){throw new u(e)}finally{r()}return this.incrementSeq(this._ctx),i}}ee=new WeakMap;var ie,ne=function(e,t,r,i){if("a"===r&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)};class ae extends Q{constructor(e,t,r,i){super(e,t,r),Object.defineProperty(this,"enc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),ie.set(this,void 0),this.enc=i}async seal(e,t=m.buffer){!function(e,t,r,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===i?n.call(e,r):n?n.value=r:t.set(e,r)}(this,ie,ne(this,ie,"f")??new Y,"f");const r=await ne(this,ie,"f").lock();let i;try{i=await this._ctx.key.seal(this.computeNonce(this._ctx),e,t)}catch(e){throw new l(e)}finally{r()}return this.incrementSeq(this._ctx),i}}ie=new WeakMap;const se=new Uint8Array([98,97,115,101,95,110,111,110,99,101]),oe=new Uint8Array([101,120,112]),ce=new Uint8Array([105,110,102,111,95,104,97,115,104]),he=new Uint8Array([107,101,121]),le=new Uint8Array([112,115,107,95,105,100,95,104,97,115,104]),ue=new Uint8Array([115,101,99,114,101,116]),de=new Uint8Array([72,80,75,69,0,0,0,0,0,0]);class we extends _{constructor(e){if(super(),Object.defineProperty(this,"_kem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_kdf",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_aead",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_suiteId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),"number"==typeof e.kem)throw new n("KemId cannot be used");if(this._kem=e.kem,"number"==typeof e.kdf)throw new n("KdfId cannot be used");if(this._kdf=e.kdf,"number"==typeof e.aead)throw new n("AeadId cannot be used");this._aead=e.aead,this._suiteId=new Uint8Array(de),this._suiteId.set(P(this._kem.id,2),4),this._suiteId.set(P(this._kdf.id,2),6),this._suiteId.set(P(this._aead.id,2),8),this._kdf.init(this._suiteId)}get kem(){return this._kem}get kdf(){return this._kdf}get aead(){return this._aead}async createSenderContext(e){this._validateInputLength(e),await this._setup();const t=await this._kem.encap(e);let r;return r=void 0!==e.psk?void 0!==e.senderKey?3:1:void 0!==e.senderKey?2:0,await this._keyScheduleS(r,t.sharedSecret,t.enc,e)}async createRecipientContext(e){this._validateInputLength(e),await this._setup();const t=await this._kem.decap(e);let r;return r=void 0!==e.psk?void 0!==e.senderPublicKey?3:1:void 0!==e.senderPublicKey?2:0,await this._keyScheduleR(r,t,e)}async seal(e,t,r=m.buffer){const i=await this.createSenderContext(e);return{ct:await i.seal(t,r),enc:i.enc}}async open(e,t,r=m.buffer){const i=await this.createRecipientContext(e);return await i.open(t,r)}async _keySchedule(e,t,r){const i=void 0===r.psk?m:new Uint8Array(r.psk.id),n=await this._kdf.labeledExtract(m.buffer,le,i),a=void 0===r.info?m:new Uint8Array(r.info),s=await this._kdf.labeledExtract(m.buffer,ce,a),o=new Uint8Array(1+n.byteLength+s.byteLength);o.set(new Uint8Array([e]),0),o.set(new Uint8Array(n),1),o.set(new Uint8Array(s),1+n.byteLength);const c=void 0===r.psk?m:new Uint8Array(r.psk.key),h=this._kdf.buildLabeledIkm(ue,c).buffer,l=this._kdf.buildLabeledInfo(oe,o,this._kdf.hashSize).buffer,u=await this._kdf.extractAndExpand(t,h,l,this._kdf.hashSize);if(65535===this._aead.id)return{aead:this._aead,exporterSecret:u};const d=this._kdf.buildLabeledInfo(he,o,this._aead.keySize).buffer,w=await this._kdf.extractAndExpand(t,h,d,this._aead.keySize),y=this._kdf.buildLabeledInfo(se,o,this._aead.nonceSize).buffer,f=await this._kdf.extractAndExpand(t,h,y,this._aead.nonceSize);return{aead:this._aead,exporterSecret:u,key:w,baseNonce:new Uint8Array(f),seq:0}}async _keyScheduleS(e,t,r,i){const n=await this._keySchedule(e,t,i);return void 0===n.key?new $(this._api,this._kdf,n.exporterSecret,r):new ae(this._api,this._kdf,n,r)}async _keyScheduleR(e,t,r){const i=await this._keySchedule(e,t,r);return void 0===i.key?new X(this._api,this._kdf,i.exporterSecret):new re(this._api,this._kdf,i)}_validateInputLength(e){if(void 0!==e.info&&e.info.byteLength>65536)throw new n("Too long info");if(void 0!==e.psk){if(e.psk.key.byteLength<32)throw new n("PSK must have at least 32 bytes");if(e.psk.key.byteLength>g)throw new n("Too long psk.key");if(e.psk.id.byteLength>g)throw new n("Too long psk.id")}}}class ye extends S{constructor(){const e=new M;super(16,new D(16,e),e),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:16}),Object.defineProperty(this,"secretSize",{enumerable:!0,configurable:!0,writable:!0,value:32}),Object.defineProperty(this,"encSize",{enumerable:!0,configurable:!0,writable:!0,value:65}),Object.defineProperty(this,"publicKeySize",{enumerable:!0,configurable:!0,writable:!0,value:65}),Object.defineProperty(this,"privateKeySize",{enumerable:!0,configurable:!0,writable:!0,value:32})}}class fe extends we{}class be extends ye{}class pe extends M{}new Uint8Array([48,46,2,1,0,48,5,6,3,43,101,110,4,34,4,32]),new Uint8Array([48,70,2,1,0,48,5,6,3,43,101,111,4,58,4,56])},343:(e,t)=>{t.I=void 0;const r="qpzry9x8gf2tvdw0s3jn54khce6mua7l",i={};for(let e=0;e<32;e++){const t=r.charAt(e);i[t]=e}function n(e){const t=e>>25;return(33554431&e)<<5^996825010&-(1&t)^642813549&-(t>>1&1)^513874426&-(t>>2&1)^1027748829&-(t>>3&1)^705979059&-(t>>4&1)}function a(e){let t=1;for(let r=0;r126)return"Invalid prefix ("+e+")";t=n(t)^i>>5}t=n(t);for(let r=0;r=r;)a-=r,o.push(n>>a&s);if(i)a>0&&o.push(n<=t)return"Excess padding";if(n<r)return"Exceeds length limit";const s=e.toLowerCase(),o=e.toUpperCase();if(e!==s&&e!==o)return"Mixed-case string "+e;const c=(e=s).lastIndexOf("1");if(-1===c)return"No separator character for "+e;if(0===c)return"Missing prefix for "+e;const h=e.slice(0,c),l=e.slice(c+1);if(l.length<6)return"Data too short";let u=a(h);if("string"==typeof u)return u;const d=[];for(let e=0;e=l.length||d.push(r)}return u!==t?"Invalid checksum for "+e:{prefix:h,words:d}}return t="bech32"===e?1:734539939,{decodeUnsafe:function(e,t){const r=s(e,t);if("object"==typeof r)return r},decode:function(e,t){const r=s(e,t);if("object"==typeof r)return r;throw new Error(r)},encode:function(e,i,s){if(s=s||90,e.length+7+i.length>s)throw new TypeError("Exceeds length limit");let o=a(e=e.toLowerCase());if("string"==typeof o)throw new Error(o);let c=e+"1";for(let e=0;e>5)throw new Error("Non 5-bit word");o=n(o)^t,c+=r.charAt(t)}for(let e=0;e<6;++e)o=n(o);o^=t;for(let e=0;e<6;++e)c+=r.charAt(o>>5*(5-e)&31);return c},toWords:o,fromWordsUnsafe:c,fromWords:h}}t.I=l("bech32"),l("bech32m")}}]); +//# sourceMappingURL=vendors.bundle.e0c655267435fe0beb13.js.map \ No newline at end of file diff --git a/import/dist/vendors.bundle.e0c655267435fe0beb13.js.map b/import/dist/vendors.bundle.e0c655267435fe0beb13.js.map new file mode 100644 index 0000000..ed3a33f --- /dev/null +++ b/import/dist/vendors.bundle.e0c655267435fe0beb13.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vendors.bundle.e0c655267435fe0beb13.js","mappings":"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","sources":["webpack://import/./node_modules/@hpke/common/esm/src/errors.js","webpack://import/./node_modules/@hpke/common/esm/_dnt.shims.js","webpack://import/./node_modules/@hpke/common/esm/src/algorithm.js","webpack://import/./node_modules/@hpke/common/esm/src/identifiers.js","webpack://import/./node_modules/@hpke/common/esm/src/consts.js","webpack://import/./node_modules/@hpke/common/esm/src/interfaces/kemInterface.js","webpack://import/./node_modules/@hpke/common/esm/src/utils/misc.js","webpack://import/./node_modules/@hpke/common/esm/src/kems/dhkem.js","webpack://import/./node_modules/@hpke/common/esm/src/interfaces/dhkemPrimitives.js","webpack://import/./node_modules/@hpke/common/esm/src/utils/bignum.js","webpack://import/./node_modules/@hpke/common/esm/src/kems/dhkemPrimitives/ec.js","webpack://import/./node_modules/@hpke/common/esm/src/kdfs/hkdf.js","webpack://import/./node_modules/@hpke/common/esm/src/interfaces/aeadEncryptionContext.js","webpack://import/./node_modules/@hpke/common/esm/src/curve/montgomery.js","webpack://import/./node_modules/@hpke/core/esm/src/aeads/aesGcm.js","webpack://import/./node_modules/@hpke/core/esm/src/utils/emitNotSupported.js","webpack://import/./node_modules/@hpke/core/esm/src/exporterContext.js","webpack://import/./node_modules/@hpke/core/esm/src/encryptionContext.js","webpack://import/./node_modules/@hpke/core/esm/src/mutex.js","webpack://import/./node_modules/@hpke/core/esm/src/recipientContext.js","webpack://import/./node_modules/@hpke/core/esm/src/senderContext.js","webpack://import/./node_modules/@hpke/core/esm/src/cipherSuiteNative.js","webpack://import/./node_modules/@hpke/core/esm/src/kems/dhkemNative.js","webpack://import/./node_modules/@hpke/core/esm/src/native.js","webpack://import/./node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.js","webpack://import/./node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.js","webpack://import/./node_modules/bech32/dist/index.js"],"sourcesContent":["/**\n * The base error class of hpke-js.\n * @group Errors\n */\nexport class HpkeError extends Error {\n constructor(e) {\n let message;\n if (e instanceof Error) {\n message = e.message;\n }\n else if (typeof e === \"string\") {\n message = e;\n }\n else {\n message = \"\";\n }\n super(message);\n this.name = this.constructor.name;\n }\n}\n/**\n * Invalid parameter.\n * @group Errors\n */\nexport class InvalidParamError extends HpkeError {\n}\n/**\n * KEM input or output validation failure.\n * @group Errors\n */\nexport class ValidationError extends HpkeError {\n}\n/**\n * Public or private key serialization failure.\n * @group Errors\n */\nexport class SerializeError extends HpkeError {\n}\n/**\n * Public or private key deserialization failure.\n * @group Errors\n */\nexport class DeserializeError extends HpkeError {\n}\n/**\n * encap() failure.\n * @group Errors\n */\nexport class EncapError extends HpkeError {\n}\n/**\n * decap() failure.\n * @group Errors\n */\nexport class DecapError extends HpkeError {\n}\n/**\n * Secret export failure.\n * @group Errors\n */\nexport class ExportError extends HpkeError {\n}\n/**\n * seal() failure.\n * @group Errors\n */\nexport class SealError extends HpkeError {\n}\n/**\n * open() failure.\n * @group Errors\n */\nexport class OpenError extends HpkeError {\n}\n/**\n * Sequence number overflow on the encryption context.\n * @group Errors\n */\nexport class MessageLimitReachedError extends HpkeError {\n}\n/**\n * Key pair derivation failure.\n * @group Errors\n */\nexport class DeriveKeyPairError extends HpkeError {\n}\n/**\n * Not supported failure.\n * @group Errors\n */\nexport class NotSupportedError extends HpkeError {\n}\n","const dntGlobals = {};\nexport const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);\nfunction createMergeProxy(baseObj, extObj) {\n return new Proxy(baseObj, {\n get(_target, prop, _receiver) {\n if (prop in extObj) {\n return extObj[prop];\n }\n else {\n return baseObj[prop];\n }\n },\n set(_target, prop, value) {\n if (prop in extObj) {\n delete extObj[prop];\n }\n baseObj[prop] = value;\n return true;\n },\n deleteProperty(_target, prop) {\n let success = false;\n if (prop in extObj) {\n delete extObj[prop];\n success = true;\n }\n if (prop in baseObj) {\n delete baseObj[prop];\n success = true;\n }\n return success;\n },\n ownKeys(_target) {\n const baseKeys = Reflect.ownKeys(baseObj);\n const extKeys = Reflect.ownKeys(extObj);\n const extKeysSet = new Set(extKeys);\n return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];\n },\n defineProperty(_target, prop, desc) {\n if (prop in extObj) {\n delete extObj[prop];\n }\n Reflect.defineProperty(baseObj, prop, desc);\n return true;\n },\n getOwnPropertyDescriptor(_target, prop) {\n if (prop in extObj) {\n return Reflect.getOwnPropertyDescriptor(extObj, prop);\n }\n else {\n return Reflect.getOwnPropertyDescriptor(baseObj, prop);\n }\n },\n has(_target, prop) {\n return prop in extObj || prop in baseObj;\n },\n });\n}\n","import * as dntShim from \"../_dnt.shims.js\";\nimport { NotSupportedError } from \"./errors.js\";\nasync function loadSubtleCrypto() {\n if (dntShim.dntGlobalThis !== undefined && globalThis.crypto !== undefined) {\n // Browsers, Node.js >= v19, Cloudflare Workers, Bun, etc.\n return globalThis.crypto.subtle;\n }\n // Node.js <= v18\n try {\n // @ts-ignore: to ignore \"crypto\"\n const { webcrypto } = await import(\"crypto\"); // node:crypto\n return webcrypto.subtle;\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n}\nexport class NativeAlgorithm {\n constructor() {\n Object.defineProperty(this, \"_api\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: undefined\n });\n }\n async _setup() {\n if (this._api !== undefined) {\n return;\n }\n this._api = await loadSubtleCrypto();\n }\n}\n","/**\n * The supported HPKE modes.\n */\nexport const Mode = {\n Base: 0x00,\n Psk: 0x01,\n Auth: 0x02,\n AuthPsk: 0x03,\n};\n/**\n * The supported Key Encapsulation Mechanism (KEM) identifiers.\n */\nexport const KemId = {\n NotAssigned: 0x0000,\n DhkemP256HkdfSha256: 0x0010,\n DhkemP384HkdfSha384: 0x0011,\n DhkemP521HkdfSha512: 0x0012,\n DhkemSecp256k1HkdfSha256: 0x0013,\n DhkemX25519HkdfSha256: 0x0020,\n DhkemX448HkdfSha512: 0x0021,\n HybridkemX25519Kyber768: 0x0030,\n MlKem512: 0x0040,\n MlKem768: 0x0041,\n MlKem1024: 0x0042,\n XWing: 0x647a,\n};\n/**\n * The supported Key Derivation Function (KDF) identifiers.\n */\nexport const KdfId = {\n HkdfSha256: 0x0001,\n HkdfSha384: 0x0002,\n HkdfSha512: 0x0003,\n};\n/**\n * The supported Authenticated Encryption with Associated Data (AEAD) identifiers.\n */\nexport const AeadId = {\n Aes128Gcm: 0x0001,\n Aes256Gcm: 0x0002,\n Chacha20Poly1305: 0x0003,\n ExportOnly: 0xFFFF,\n};\n","// The input length limit (psk, psk_id, info, exporter_context, ikm).\nexport const INPUT_LENGTH_LIMIT = 8192;\nexport const INFO_LENGTH_LIMIT = 65536;\n// The minimum length of a PSK.\nexport const MINIMUM_PSK_LENGTH = 32;\n// b\"\"\nexport const EMPTY = new Uint8Array(0);\n","// b\"KEM\"\nexport const SUITE_ID_HEADER_KEM = new Uint8Array([\n 75,\n 69,\n 77,\n 0,\n 0,\n]);\n","import * as dntShim from \"../../_dnt.shims.js\";\nimport { KemId } from \"../identifiers.js\";\nexport const isDenoV1 = () => \n// deno-lint-ignore no-explicit-any\ndntShim.dntGlobalThis.process === undefined;\n/**\n * Checks whether the runtime is Deno or not (Node.js).\n * @returns boolean - true if the runtime is Deno, false Node.js.\n */\nexport function isDeno() {\n // deno-lint-ignore no-explicit-any\n if (dntShim.dntGlobalThis.process === undefined) {\n return true;\n }\n // deno-lint-ignore no-explicit-any\n return dntShim.dntGlobalThis.process?.versions?.deno !== undefined;\n}\n/**\n * Checks whetehr the type of input is CryptoKeyPair or not.\n */\nexport const isCryptoKeyPair = (x) => typeof x === \"object\" &&\n x !== null &&\n typeof x.privateKey === \"object\" &&\n typeof x.publicKey === \"object\";\n/**\n * Converts integer to octet string. I2OSP implementation.\n */\nexport function i2Osp(n, w) {\n if (w <= 0) {\n throw new Error(\"i2Osp: too small size\");\n }\n if (n >= 256 ** w) {\n throw new Error(\"i2Osp: too large integer\");\n }\n const ret = new Uint8Array(w);\n for (let i = 0; i < w && n; i++) {\n ret[w - (i + 1)] = n % 256;\n n = n >> 8;\n }\n return ret;\n}\n/**\n * Concatenates two Uint8Arrays.\n * @param a Uint8Array\n * @param b Uint8Array\n * @returns Concatenated Uint8Array\n */\nexport function concat(a, b) {\n const ret = new Uint8Array(a.length + b.length);\n ret.set(a, 0);\n ret.set(b, a.length);\n return ret;\n}\n/**\n * Decodes Base64Url-encoded data.\n * @param v Base64Url-encoded string\n * @returns Uint8Array\n */\nexport function base64UrlToBytes(v) {\n const base64 = v.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const byteString = atob(base64);\n const ret = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) {\n ret[i] = byteString.charCodeAt(i);\n }\n return ret;\n}\n/**\n * Encodes Uint8Array to Base64Url.\n * @param v Uint8Array\n * @returns Base64Url-encoded string\n */\nexport function bytesToBase64Url(v) {\n return btoa(String.fromCharCode(...v))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=*$/g, \"\");\n}\n/**\n * Decodes hex string to Uint8Array.\n * @param v Hex string\n * @returns Uint8Array\n * @throws Error if the input is not a hex string.\n */\nexport function hexToBytes(v) {\n if (v.length === 0) {\n return new Uint8Array([]);\n }\n const res = v.match(/[\\da-f]{2}/gi);\n if (res == null) {\n throw new Error(\"Not hex string.\");\n }\n return new Uint8Array(res.map(function (h) {\n return parseInt(h, 16);\n }));\n}\n/**\n * Encodes Uint8Array to hex string.\n * @param v Uint8Array\n * @returns Hex string\n */\nexport function bytesToHex(v) {\n return [...v].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n/**\n * Converts KemId to KeyAlgorithm.\n * @param kem KemId\n * @returns KeyAlgorithm\n */\nexport function kemToKeyGenAlgorithm(kem) {\n switch (kem) {\n case KemId.DhkemP256HkdfSha256:\n return {\n name: \"ECDH\",\n namedCurve: \"P-256\",\n };\n case KemId.DhkemP384HkdfSha384:\n return {\n name: \"ECDH\",\n namedCurve: \"P-384\",\n };\n case KemId.DhkemP521HkdfSha512:\n return {\n name: \"ECDH\",\n namedCurve: \"P-521\",\n };\n default:\n // case KemId.DhkemX25519HkdfSha256\n return {\n name: \"X25519\",\n };\n }\n}\nexport async function loadSubtleCrypto() {\n if (dntShim.dntGlobalThis !== undefined && globalThis.crypto !== undefined) {\n // Browsers, Node.js >= v19, Cloudflare Workers, Bun, etc.\n return globalThis.crypto.subtle;\n }\n // Node.js <= v18\n try {\n // @ts-ignore: to ignore \"crypto\"\n const { webcrypto } = await import(\"crypto\"); // node:crypto\n return webcrypto.subtle;\n }\n catch (_e) {\n throw new Error(\"Failed to load SubtleCrypto\");\n }\n}\nexport async function loadCrypto() {\n if (dntShim.dntGlobalThis !== undefined && globalThis.crypto !== undefined) {\n // Browsers, Node.js >= v19, Cloudflare Workers, Bun, etc.\n return globalThis.crypto;\n }\n // Node.js <= v18\n try {\n // @ts-ignore: to ignore \"crypto\"\n const { webcrypto } = await import(\"crypto\"); // node:crypto\n return webcrypto;\n }\n catch (_e) {\n throw new Error(\"Web Cryptograph API not supported\");\n }\n}\n/**\n * XOR for Uint8Array.\n */\nexport function xor(a, b) {\n if (a.byteLength !== b.byteLength) {\n throw new Error(\"xor: different length inputs\");\n }\n const buf = new Uint8Array(a.byteLength);\n for (let i = 0; i < a.byteLength; i++) {\n buf[i] = a[i] ^ b[i];\n }\n return buf;\n}\n","import { EMPTY, INPUT_LENGTH_LIMIT } from \"../consts.js\";\nimport { DecapError, EncapError, InvalidParamError } from \"../errors.js\";\nimport { SUITE_ID_HEADER_KEM } from \"../interfaces/kemInterface.js\";\nimport { concat, i2Osp, isCryptoKeyPair } from \"../utils/misc.js\";\n// b\"eae_prk\"\nconst LABEL_EAE_PRK = new Uint8Array([101, 97, 101, 95, 112, 114, 107]);\n// b\"shared_secret\"\n// deno-fmt-ignore\nconst LABEL_SHARED_SECRET = new Uint8Array([\n 115, 104, 97, 114, 101, 100, 95, 115, 101, 99,\n 114, 101, 116,\n]);\nfunction concat3(a, b, c) {\n const ret = new Uint8Array(a.length + b.length + c.length);\n ret.set(a, 0);\n ret.set(b, a.length);\n ret.set(c, a.length + b.length);\n return ret;\n}\nexport class Dhkem {\n constructor(id, prim, kdf) {\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_prim\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_kdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.id = id;\n this._prim = prim;\n this._kdf = kdf;\n const suiteId = new Uint8Array(SUITE_ID_HEADER_KEM);\n suiteId.set(i2Osp(this.id, 2), 3);\n this._kdf.init(suiteId);\n }\n async serializePublicKey(key) {\n return await this._prim.serializePublicKey(key);\n }\n async deserializePublicKey(key) {\n return await this._prim.deserializePublicKey(key);\n }\n async serializePrivateKey(key) {\n return await this._prim.serializePrivateKey(key);\n }\n async deserializePrivateKey(key) {\n return await this._prim.deserializePrivateKey(key);\n }\n async importKey(format, key, isPublic = true) {\n return await this._prim.importKey(format, key, isPublic);\n }\n async generateKeyPair() {\n return await this._prim.generateKeyPair();\n }\n async deriveKeyPair(ikm) {\n if (ikm.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long ikm\");\n }\n return await this._prim.deriveKeyPair(ikm);\n }\n async encap(params) {\n let ke;\n if (params.ekm === undefined) {\n ke = await this.generateKeyPair();\n }\n else if (isCryptoKeyPair(params.ekm)) {\n // params.ekm is only used for testing.\n ke = params.ekm;\n }\n else {\n // params.ekm is only used for testing.\n ke = await this.deriveKeyPair(params.ekm);\n }\n const enc = await this._prim.serializePublicKey(ke.publicKey);\n const pkrm = await this._prim.serializePublicKey(params.recipientPublicKey);\n try {\n let dh;\n if (params.senderKey === undefined) {\n dh = new Uint8Array(await this._prim.dh(ke.privateKey, params.recipientPublicKey));\n }\n else {\n const sks = isCryptoKeyPair(params.senderKey)\n ? params.senderKey.privateKey\n : params.senderKey;\n const dh1 = new Uint8Array(await this._prim.dh(ke.privateKey, params.recipientPublicKey));\n const dh2 = new Uint8Array(await this._prim.dh(sks, params.recipientPublicKey));\n dh = concat(dh1, dh2);\n }\n let kemContext;\n if (params.senderKey === undefined) {\n kemContext = concat(new Uint8Array(enc), new Uint8Array(pkrm));\n }\n else {\n const pks = isCryptoKeyPair(params.senderKey)\n ? params.senderKey.publicKey\n : await this._prim.derivePublicKey(params.senderKey);\n const pksm = await this._prim.serializePublicKey(pks);\n kemContext = concat3(new Uint8Array(enc), new Uint8Array(pkrm), new Uint8Array(pksm));\n }\n const sharedSecret = await this._generateSharedSecret(dh, kemContext);\n return {\n enc: enc,\n sharedSecret: sharedSecret,\n };\n }\n catch (e) {\n throw new EncapError(e);\n }\n }\n async decap(params) {\n const pke = await this._prim.deserializePublicKey(params.enc);\n const skr = isCryptoKeyPair(params.recipientKey)\n ? params.recipientKey.privateKey\n : params.recipientKey;\n const pkr = isCryptoKeyPair(params.recipientKey)\n ? params.recipientKey.publicKey\n : await this._prim.derivePublicKey(params.recipientKey);\n const pkrm = await this._prim.serializePublicKey(pkr);\n try {\n let dh;\n if (params.senderPublicKey === undefined) {\n dh = new Uint8Array(await this._prim.dh(skr, pke));\n }\n else {\n const dh1 = new Uint8Array(await this._prim.dh(skr, pke));\n const dh2 = new Uint8Array(await this._prim.dh(skr, params.senderPublicKey));\n dh = concat(dh1, dh2);\n }\n let kemContext;\n if (params.senderPublicKey === undefined) {\n kemContext = concat(new Uint8Array(params.enc), new Uint8Array(pkrm));\n }\n else {\n const pksm = await this._prim.serializePublicKey(params.senderPublicKey);\n kemContext = new Uint8Array(params.enc.byteLength + pkrm.byteLength + pksm.byteLength);\n kemContext.set(new Uint8Array(params.enc), 0);\n kemContext.set(new Uint8Array(pkrm), params.enc.byteLength);\n kemContext.set(new Uint8Array(pksm), params.enc.byteLength + pkrm.byteLength);\n }\n return await this._generateSharedSecret(dh, kemContext);\n }\n catch (e) {\n throw new DecapError(e);\n }\n }\n async _generateSharedSecret(dh, kemContext) {\n const labeledIkm = this._kdf.buildLabeledIkm(LABEL_EAE_PRK, dh);\n const labeledInfo = this._kdf.buildLabeledInfo(LABEL_SHARED_SECRET, kemContext, this.secretSize);\n return await this._kdf.extractAndExpand(EMPTY.buffer, labeledIkm.buffer, labeledInfo.buffer, this.secretSize);\n }\n}\n","// The key usages for KEM.\nexport const KEM_USAGES = [\"deriveBits\"];\n// b\"dkp_prk\"\nexport const LABEL_DKP_PRK = new Uint8Array([\n 100,\n 107,\n 112,\n 95,\n 112,\n 114,\n 107,\n]);\n// b\"sk\"\nexport const LABEL_SK = new Uint8Array([115, 107]);\n","/**\n * The minimum inplementation of bignum to derive an EC key pair.\n */\nexport class Bignum {\n constructor(size) {\n Object.defineProperty(this, \"_num\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._num = new Uint8Array(size);\n }\n val() {\n return this._num;\n }\n reset() {\n this._num.fill(0);\n }\n set(src) {\n if (src.length !== this._num.length) {\n throw new Error(\"Bignum.set: invalid argument\");\n }\n this._num.set(src);\n }\n isZero() {\n for (let i = 0; i < this._num.length; i++) {\n if (this._num[i] !== 0) {\n return false;\n }\n }\n return true;\n }\n lessThan(v) {\n if (v.length !== this._num.length) {\n throw new Error(\"Bignum.lessThan: invalid argument\");\n }\n for (let i = 0; i < this._num.length; i++) {\n if (this._num[i] < v[i]) {\n return true;\n }\n if (this._num[i] > v[i]) {\n return false;\n }\n }\n return false;\n }\n}\n","import { NativeAlgorithm } from \"../../algorithm.js\";\nimport { EMPTY } from \"../../consts.js\";\nimport { DeriveKeyPairError, DeserializeError, NotSupportedError, SerializeError, } from \"../../errors.js\";\nimport { KemId } from \"../../identifiers.js\";\nimport { KEM_USAGES, LABEL_DKP_PRK } from \"../../interfaces/dhkemPrimitives.js\";\nimport { Bignum } from \"../../utils/bignum.js\";\nimport { base64UrlToBytes, i2Osp } from \"../../utils/misc.js\";\n// b\"candidate\"\n// deno-fmt-ignore\nconst LABEL_CANDIDATE = new Uint8Array([\n 99, 97, 110, 100, 105, 100, 97, 116, 101,\n]);\n// the order of the curve being used.\n// deno-fmt-ignore\nconst ORDER_P_256 = new Uint8Array([\n 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xbc, 0xe6, 0xfa, 0xad, 0xa7, 0x17, 0x9e, 0x84,\n 0xf3, 0xb9, 0xca, 0xc2, 0xfc, 0x63, 0x25, 0x51,\n]);\n// deno-fmt-ignore\nconst ORDER_P_384 = new Uint8Array([\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xc7, 0x63, 0x4d, 0x81, 0xf4, 0x37, 0x2d, 0xdf,\n 0x58, 0x1a, 0x0d, 0xb2, 0x48, 0xb0, 0xa7, 0x7a,\n 0xec, 0xec, 0x19, 0x6a, 0xcc, 0xc5, 0x29, 0x73,\n]);\n// deno-fmt-ignore\nconst ORDER_P_521 = new Uint8Array([\n 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xfa, 0x51, 0x86, 0x87, 0x83, 0xbf, 0x2f,\n 0x96, 0x6b, 0x7f, 0xcc, 0x01, 0x48, 0xf7, 0x09,\n 0xa5, 0xd0, 0x3b, 0xb5, 0xc9, 0xb8, 0x89, 0x9c,\n 0x47, 0xae, 0xbb, 0x6f, 0xb7, 0x1e, 0x91, 0x38,\n 0x64, 0x09,\n]);\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_P_256 = new Uint8Array([\n 48, 65, 2, 1, 0, 48, 19, 6, 7, 42,\n 134, 72, 206, 61, 2, 1, 6, 8, 42, 134,\n 72, 206, 61, 3, 1, 7, 4, 39, 48, 37,\n 2, 1, 1, 4, 32,\n]);\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_P_384 = new Uint8Array([\n 48, 78, 2, 1, 0, 48, 16, 6, 7, 42,\n 134, 72, 206, 61, 2, 1, 6, 5, 43, 129,\n 4, 0, 34, 4, 55, 48, 53, 2, 1, 1,\n 4, 48,\n]);\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_P_521 = new Uint8Array([\n 48, 96, 2, 1, 0, 48, 16, 6, 7, 42,\n 134, 72, 206, 61, 2, 1, 6, 5, 43, 129,\n 4, 0, 35, 4, 73, 48, 71, 2, 1, 1,\n 4, 66,\n]);\nexport class Ec extends NativeAlgorithm {\n constructor(kem, hkdf) {\n super();\n Object.defineProperty(this, \"_hkdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_alg\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nPk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nSk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nDh\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // EC specific arguments for deriving key pair.\n Object.defineProperty(this, \"_order\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_bitmask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pkcs8AlgId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._hkdf = hkdf;\n switch (kem) {\n case KemId.DhkemP256HkdfSha256:\n this._alg = { name: \"ECDH\", namedCurve: \"P-256\" };\n this._nPk = 65;\n this._nSk = 32;\n this._nDh = 32;\n this._order = ORDER_P_256;\n this._bitmask = 0xFF;\n this._pkcs8AlgId = PKCS8_ALG_ID_P_256;\n break;\n case KemId.DhkemP384HkdfSha384:\n this._alg = { name: \"ECDH\", namedCurve: \"P-384\" };\n this._nPk = 97;\n this._nSk = 48;\n this._nDh = 48;\n this._order = ORDER_P_384;\n this._bitmask = 0xFF;\n this._pkcs8AlgId = PKCS8_ALG_ID_P_384;\n break;\n default:\n // case KemId.DhkemP521HkdfSha512:\n this._alg = { name: \"ECDH\", namedCurve: \"P-521\" };\n this._nPk = 133;\n this._nSk = 66;\n this._nDh = 66;\n this._order = ORDER_P_521;\n this._bitmask = 0x01;\n this._pkcs8AlgId = PKCS8_ALG_ID_P_521;\n break;\n }\n }\n async serializePublicKey(key) {\n await this._setup();\n try {\n return await this._api.exportKey(\"raw\", key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePublicKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, true);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async serializePrivateKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n if (!(\"d\" in jwk)) {\n throw new Error(\"Not private key\");\n }\n return base64UrlToBytes(jwk[\"d\"]).buffer;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePrivateKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, false);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async importKey(format, key, isPublic) {\n await this._setup();\n try {\n if (format === \"raw\") {\n return await this._importRawKey(key, isPublic);\n }\n // jwk\n if (key instanceof ArrayBuffer) {\n throw new Error(\"Invalid jwk key format\");\n }\n return await this._importJWK(key, isPublic);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async generateKeyPair() {\n await this._setup();\n try {\n return await this._api.generateKey(this._alg, true, KEM_USAGES);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n async deriveKeyPair(ikm) {\n await this._setup();\n try {\n const dkpPrk = await this._hkdf.labeledExtract(EMPTY.buffer, LABEL_DKP_PRK, new Uint8Array(ikm));\n const bn = new Bignum(this._nSk);\n for (let counter = 0; bn.isZero() || !bn.lessThan(this._order); counter++) {\n if (counter > 255) {\n throw new Error(\"Faild to derive a key pair\");\n }\n const bytes = new Uint8Array(await this._hkdf.labeledExpand(dkpPrk, LABEL_CANDIDATE, i2Osp(counter, 1), this._nSk));\n bytes[0] = bytes[0] & this._bitmask;\n bn.set(bytes);\n }\n const sk = await this._deserializePkcs8Key(bn.val());\n bn.reset();\n return {\n privateKey: sk,\n publicKey: await this.derivePublicKey(sk),\n };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n async derivePublicKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n delete jwk[\"d\"];\n delete jwk[\"key_ops\"];\n return await this._api.importKey(\"jwk\", jwk, this._alg, true, []);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async dh(sk, pk) {\n try {\n await this._setup();\n const bits = await this._api.deriveBits({\n name: \"ECDH\",\n public: pk,\n }, sk, this._nDh * 8);\n return bits;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async _importRawKey(key, isPublic) {\n if (isPublic && key.byteLength !== this._nPk) {\n throw new Error(\"Invalid public key for the ciphersuite\");\n }\n if (!isPublic && key.byteLength !== this._nSk) {\n throw new Error(\"Invalid private key for the ciphersuite\");\n }\n if (isPublic) {\n return await this._api.importKey(\"raw\", key, this._alg, true, []);\n }\n return await this._deserializePkcs8Key(new Uint8Array(key));\n }\n async _importJWK(key, isPublic) {\n if (typeof key.crv === \"undefined\" || key.crv !== this._alg.namedCurve) {\n throw new Error(`Invalid crv: ${key.crv}`);\n }\n if (isPublic) {\n if (typeof key.d !== \"undefined\") {\n throw new Error(\"Invalid key: `d` should not be set\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, []);\n }\n if (typeof key.d === \"undefined\") {\n throw new Error(\"Invalid key: `d` not found\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, KEM_USAGES);\n }\n async _deserializePkcs8Key(k) {\n const pkcs8Key = new Uint8Array(this._pkcs8AlgId.length + k.length);\n pkcs8Key.set(this._pkcs8AlgId, 0);\n pkcs8Key.set(k, this._pkcs8AlgId.length);\n return await this._api.importKey(\"pkcs8\", pkcs8Key, this._alg, true, KEM_USAGES);\n }\n}\n","import { EMPTY } from \"../consts.js\";\nimport { InvalidParamError } from \"../errors.js\";\nimport { KdfId } from \"../identifiers.js\";\nimport { NativeAlgorithm } from \"../algorithm.js\";\n// b\"HPKE-v1\"\nconst HPKE_VERSION = new Uint8Array([72, 80, 75, 69, 45, 118, 49]);\nexport class HkdfNative extends NativeAlgorithm {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha256\n });\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_suiteId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: EMPTY\n });\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-256\",\n length: 256,\n }\n });\n }\n init(suiteId) {\n this._suiteId = suiteId;\n }\n buildLabeledIkm(label, ikm) {\n this._checkInit();\n const ret = new Uint8Array(7 + this._suiteId.byteLength + label.byteLength + ikm.byteLength);\n ret.set(HPKE_VERSION, 0);\n ret.set(this._suiteId, 7);\n ret.set(label, 7 + this._suiteId.byteLength);\n ret.set(ikm, 7 + this._suiteId.byteLength + label.byteLength);\n return ret;\n }\n buildLabeledInfo(label, info, len) {\n this._checkInit();\n const ret = new Uint8Array(9 + this._suiteId.byteLength + label.byteLength + info.byteLength);\n ret.set(new Uint8Array([0, len]), 0);\n ret.set(HPKE_VERSION, 2);\n ret.set(this._suiteId, 9);\n ret.set(label, 9 + this._suiteId.byteLength);\n ret.set(info, 9 + this._suiteId.byteLength + label.byteLength);\n return ret;\n }\n async extract(salt, ikm) {\n await this._setup();\n if (salt.byteLength === 0) {\n salt = new ArrayBuffer(this.hashSize);\n }\n if (salt.byteLength !== this.hashSize) {\n throw new InvalidParamError(\"The salt length must be the same as the hashSize\");\n }\n const key = await this._api.importKey(\"raw\", salt, this.algHash, false, [\n \"sign\",\n ]);\n return await this._api.sign(\"HMAC\", key, ikm);\n }\n async expand(prk, info, len) {\n await this._setup();\n const key = await this._api.importKey(\"raw\", prk, this.algHash, false, [\n \"sign\",\n ]);\n const okm = new ArrayBuffer(len);\n const p = new Uint8Array(okm);\n let prev = EMPTY;\n const mid = new Uint8Array(info);\n const tail = new Uint8Array(1);\n if (len > 255 * this.hashSize) {\n throw new Error(\"Entropy limit reached\");\n }\n const tmp = new Uint8Array(this.hashSize + mid.length + 1);\n for (let i = 1, cur = 0; cur < p.length; i++) {\n tail[0] = i;\n tmp.set(prev, 0);\n tmp.set(mid, prev.length);\n tmp.set(tail, prev.length + mid.length);\n prev = new Uint8Array(await this._api.sign(\"HMAC\", key, tmp.slice(0, prev.length + mid.length + 1)));\n if (p.length - cur >= prev.length) {\n p.set(prev, cur);\n cur += prev.length;\n }\n else {\n p.set(prev.slice(0, p.length - cur), cur);\n cur += p.length - cur;\n }\n }\n return okm;\n }\n async extractAndExpand(salt, ikm, info, len) {\n await this._setup();\n const baseKey = await this._api.importKey(\"raw\", ikm, \"HKDF\", false, [\"deriveBits\"]);\n return await this._api.deriveBits({\n name: \"HKDF\",\n hash: this.algHash.hash,\n salt: salt,\n info: info,\n }, baseKey, len * 8);\n }\n async labeledExtract(salt, label, ikm) {\n return await this.extract(salt, this.buildLabeledIkm(label, ikm).buffer);\n }\n async labeledExpand(prk, label, info, len) {\n return await this.expand(prk, this.buildLabeledInfo(label, info, len).buffer, len);\n }\n _checkInit() {\n if (this._suiteId === EMPTY) {\n throw new Error(\"Not initialized. Call init()\");\n }\n }\n}\nexport class HkdfSha256Native extends HkdfNative {\n constructor() {\n super(...arguments);\n /** KdfId.HkdfSha256 (0x0001) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha256\n });\n /** 32 */\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n /** The parameters for Web Cryptography API */\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-256\",\n length: 256,\n }\n });\n }\n}\nexport class HkdfSha384Native extends HkdfNative {\n constructor() {\n super(...arguments);\n /** KdfId.HkdfSha384 (0x0002) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha384\n });\n /** 48 */\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 48\n });\n /** The parameters for Web Cryptography API */\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-384\",\n length: 384,\n }\n });\n }\n}\nexport class HkdfSha512Native extends HkdfNative {\n constructor() {\n super(...arguments);\n /** KdfId.HkdfSha512 (0x0003) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KdfId.HkdfSha512\n });\n /** 64 */\n Object.defineProperty(this, \"hashSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 64\n });\n /** The parameters for Web Cryptography API */\n Object.defineProperty(this, \"algHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"HMAC\",\n hash: \"SHA-512\",\n length: 512,\n }\n });\n }\n}\n","// The key usages for AEAD.\nexport const AEAD_USAGES = [\"encrypt\", \"decrypt\"];\n","/**\n * This file is based on noble-curves (https://github.com/paulmillr/noble-curves).\n *\n * noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com)\n *\n * The original file is located at:\n * https://github.com/paulmillr/noble-curves/blob/b9d49d2b41d550571a0c5be443ecb62109fa3373/src/abstract/montgomery.ts\n */\n/**\n * Montgomery curve methods. It's not really whole montgomery curve,\n * just bunch of very specific methods for X25519 / X448 from\n * [RFC 7748](https://www.rfc-editor.org/rfc/rfc7748)\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes, aInRange, bytesToNumberLE, copyBytes, numberToBytesLE, randomBytesAsync, validateObject, } from \"../utils/noble.js\";\nimport { createKeygen } from \"./curve.js\";\nimport { mod } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nfunction validateOpts(curve) {\n validateObject(curve, {\n adjustScalarBytes: \"function\",\n powPminus2: \"function\",\n });\n return Object.freeze({ ...curve });\n}\nexport function montgomery(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { P, type, adjustScalarBytes, powPminus2, randomBytes: rand } = CURVE;\n const is25519 = type === \"x25519\";\n if (!is25519 && type !== \"x448\")\n throw new Error(\"invalid type\");\n const randomBytes_ = rand || randomBytesAsync;\n const montgomeryBits = is25519 ? 255 : 448;\n const fieldLen = is25519 ? 32 : 56;\n const Gu = is25519 ? BigInt(9) : BigInt(5);\n // RFC 7748 #5:\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519 and\n // (156326 - 2) / 4 = 39081 for curve448/X448\n // const a = is25519 ? 156326n : 486662n;\n const a24 = is25519 ? BigInt(121665) : BigInt(39081);\n // RFC: x25519 \"the resulting integer is of the form 2^254 plus\n // eight times a value between 0 and 2^251 - 1 (inclusive)\"\n // x448: \"2^447 plus four times a value between 0 and 2^445 - 1 (inclusive)\"\n const minScalar = is25519 ? _2n ** BigInt(254) : _2n ** BigInt(447);\n const maxAdded = is25519\n ? BigInt(8) * _2n ** BigInt(251) - _1n\n : BigInt(4) * _2n ** BigInt(445) - _1n;\n const maxScalar = minScalar + maxAdded + _1n; // (inclusive)\n const modP = (n) => mod(n, P);\n const GuBytes = encodeU(Gu);\n function encodeU(u) {\n return numberToBytesLE(modP(u), fieldLen);\n }\n function decodeU(u) {\n const _u = copyBytes(abytes(u, fieldLen, \"uCoordinate\"));\n // RFC: When receiving such an array, implementations of X25519\n // (but not X448) MUST mask the most significant bit in the final byte.\n if (is25519)\n _u[31] &= 127; // 0b0111_1111\n // RFC: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime. The non-canonical\n // values are 2^255 - 19 through 2^255 - 1 for X25519 and 2^448 - 2^224\n // - 1 through 2^448 - 1 for X448.\n return modP(bytesToNumberLE(_u));\n }\n function decodeScalar(scalar) {\n return bytesToNumberLE(adjustScalarBytes(copyBytes(abytes(scalar, fieldLen, \"scalar\"))));\n }\n function scalarMult(scalar, u) {\n const pu = montgomeryLadder(decodeU(u), decodeScalar(scalar));\n // Some public keys are useless, of low-order. Curve author doesn't think\n // it needs to be validated, but we do it nonetheless.\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n)\n throw new Error(\"invalid private or public key received\");\n return encodeU(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n function scalarMultBase(scalar) {\n return scalarMult(scalar, GuBytes);\n }\n const getPublicKey = scalarMultBase;\n const getSharedSecret = scalarMult;\n // cswap from RFC7748 \"example code\"\n function cswap(swap, x_2, x_3) {\n // dummy = mask(swap) AND (x_2 XOR x_3)\n // Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n // and x_3, computed, e.g., as mask(swap) = 0 - swap.\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy); // x_2 = x_2 XOR dummy\n x_3 = modP(x_3 + dummy); // x_3 = x_3 XOR dummy\n return { x_2, x_3 };\n }\n /**\n * Montgomery x-only multiplication ladder.\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(u, scalar) {\n aInRange(\"u\", u, _0n, P);\n aInRange(\"scalar\", scalar, minScalar, maxScalar);\n const k = scalar;\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n swap = k_t;\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n const z2 = powPminus2(z_2); // `Fp.pow(x, P - _2n)` is much slower equivalent\n return modP(x_2 * z2); // Return x_2 * (z_2^(p - 2))\n }\n const lengths = {\n secretKey: fieldLen,\n publicKey: fieldLen,\n seed: fieldLen,\n };\n const randomSecretKey = async (seed) => {\n if (seed === undefined) {\n seed = await randomBytes_(fieldLen);\n }\n abytes(seed, lengths.seed, \"seed\");\n return seed;\n };\n const utils = { randomSecretKey };\n return Object.freeze({\n keygen: createKeygen(randomSecretKey, getPublicKey),\n getSharedSecret,\n getPublicKey,\n scalarMult,\n scalarMultBase,\n utils,\n GuBytes: GuBytes.slice(),\n lengths,\n });\n}\n","import { AEAD_USAGES, AeadId, NativeAlgorithm } from \"@hpke/common\";\nexport class AesGcmContext extends NativeAlgorithm {\n constructor(key) {\n super();\n Object.defineProperty(this, \"_rawKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_key\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: undefined\n });\n this._rawKey = key;\n }\n async seal(iv, data, aad) {\n await this._setupKey();\n const alg = {\n name: \"AES-GCM\",\n iv: iv,\n additionalData: aad,\n };\n const ct = await this._api.encrypt(alg, this._key, data);\n return ct;\n }\n async open(iv, data, aad) {\n await this._setupKey();\n const alg = {\n name: \"AES-GCM\",\n iv: iv,\n additionalData: aad,\n };\n const pt = await this._api.decrypt(alg, this._key, data);\n return pt;\n }\n async _setupKey() {\n if (this._key !== undefined) {\n return;\n }\n await this._setup();\n const key = await this._importKey(this._rawKey);\n (new Uint8Array(this._rawKey)).fill(0);\n this._key = key;\n return;\n }\n async _importKey(key) {\n return await this._api.importKey(\"raw\", key, { name: \"AES-GCM\" }, true, AEAD_USAGES);\n }\n}\n/**\n * The AES-128-GCM for HPKE AEAD implementing {@link AeadInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `aead` parameter of {@link CipherSuiteParams} instead of `AeadId.Aes128Gcm`.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class Aes128Gcm {\n constructor() {\n /** AeadId.Aes128Gcm (0x0001) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: AeadId.Aes128Gcm\n });\n /** 16 */\n Object.defineProperty(this, \"keySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 16\n });\n /** 12 */\n Object.defineProperty(this, \"nonceSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 12\n });\n /** 16 */\n Object.defineProperty(this, \"tagSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 16\n });\n }\n createEncryptionContext(key) {\n return new AesGcmContext(key);\n }\n}\n/**\n * The AES-256-GCM for HPKE AEAD implementing {@link AeadInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `aead` parameter of {@link CipherSuiteParams} instead of `AeadId.Aes256Gcm`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes256Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes256Gcm(),\n * });\n * ```\n */\nexport class Aes256Gcm extends Aes128Gcm {\n constructor() {\n super(...arguments);\n /** AeadId.Aes256Gcm (0x0002) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: AeadId.Aes256Gcm\n });\n /** 32 */\n Object.defineProperty(this, \"keySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n /** 12 */\n Object.defineProperty(this, \"nonceSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 12\n });\n /** 16 */\n Object.defineProperty(this, \"tagSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 16\n });\n }\n}\n","import { NotSupportedError } from \"@hpke/common\";\nexport function emitNotSupported() {\n return new Promise((_resolve, reject) => {\n reject(new NotSupportedError(\"Not supported\"));\n });\n}\n","import { ExportError, INPUT_LENGTH_LIMIT, InvalidParamError, } from \"@hpke/common\";\nimport { emitNotSupported } from \"./utils/emitNotSupported.js\";\n// b\"sec\"\nconst LABEL_SEC = new Uint8Array([115, 101, 99]);\nexport class ExporterContextImpl {\n constructor(api, kdf, exporterSecret) {\n Object.defineProperty(this, \"_api\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"exporterSecret\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_kdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._api = api;\n this._kdf = kdf;\n this.exporterSecret = exporterSecret;\n }\n async seal(_data, _aad) {\n return await emitNotSupported();\n }\n async open(_data, _aad) {\n return await emitNotSupported();\n }\n async export(exporterContext, len) {\n if (exporterContext.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long exporter context\");\n }\n try {\n return await this._kdf.labeledExpand(this.exporterSecret, LABEL_SEC, new Uint8Array(exporterContext), len);\n }\n catch (e) {\n throw new ExportError(e);\n }\n }\n}\nexport class RecipientExporterContextImpl extends ExporterContextImpl {\n}\nexport class SenderExporterContextImpl extends ExporterContextImpl {\n constructor(api, kdf, exporterSecret, enc) {\n super(api, kdf, exporterSecret);\n Object.defineProperty(this, \"enc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.enc = enc;\n return;\n }\n}\n","import { i2Osp, MessageLimitReachedError, xor } from \"@hpke/common\";\nimport { ExporterContextImpl } from \"./exporterContext.js\";\nexport class EncryptionContextImpl extends ExporterContextImpl {\n constructor(api, kdf, params) {\n super(api, kdf, params.exporterSecret);\n // AEAD id.\n Object.defineProperty(this, \"_aead\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The length in bytes of a key for the algorithm.\n Object.defineProperty(this, \"_nK\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The length in bytes of a nonce for the algorithm.\n Object.defineProperty(this, \"_nN\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The length in bytes of an authentication tag for the algorithm.\n Object.defineProperty(this, \"_nT\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The end-to-end encryption key information.\n Object.defineProperty(this, \"_ctx\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n if (params.key === undefined || params.baseNonce === undefined ||\n params.seq === undefined) {\n throw new Error(\"Required parameters are missing\");\n }\n this._aead = params.aead;\n this._nK = this._aead.keySize;\n this._nN = this._aead.nonceSize;\n this._nT = this._aead.tagSize;\n const key = this._aead.createEncryptionContext(params.key);\n this._ctx = {\n key: key,\n baseNonce: params.baseNonce,\n seq: params.seq,\n };\n }\n computeNonce(k) {\n const seqBytes = i2Osp(k.seq, k.baseNonce.byteLength);\n return xor(k.baseNonce, seqBytes).buffer;\n }\n incrementSeq(k) {\n // if (this.seq >= (1 << (8 * this.baseNonce.byteLength)) - 1) {\n if (k.seq > Number.MAX_SAFE_INTEGER) {\n throw new MessageLimitReachedError(\"Message limit reached\");\n }\n k.seq += 1;\n return;\n }\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Mutex_locked;\nexport class Mutex {\n constructor() {\n _Mutex_locked.set(this, Promise.resolve());\n }\n async lock() {\n let releaseLock;\n const nextLock = new Promise((resolve) => {\n releaseLock = resolve;\n });\n const previousLock = __classPrivateFieldGet(this, _Mutex_locked, \"f\");\n __classPrivateFieldSet(this, _Mutex_locked, nextLock, \"f\");\n await previousLock;\n return releaseLock;\n }\n}\n_Mutex_locked = new WeakMap();\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RecipientContextImpl_mutex;\nimport { EMPTY, OpenError } from \"@hpke/common\";\nimport { EncryptionContextImpl } from \"./encryptionContext.js\";\nimport { Mutex } from \"./mutex.js\";\nexport class RecipientContextImpl extends EncryptionContextImpl {\n constructor() {\n super(...arguments);\n _RecipientContextImpl_mutex.set(this, void 0);\n }\n async open(data, aad = EMPTY.buffer) {\n __classPrivateFieldSet(this, _RecipientContextImpl_mutex, __classPrivateFieldGet(this, _RecipientContextImpl_mutex, \"f\") ?? new Mutex(), \"f\");\n const release = await __classPrivateFieldGet(this, _RecipientContextImpl_mutex, \"f\").lock();\n let pt;\n try {\n pt = await this._ctx.key.open(this.computeNonce(this._ctx), data, aad);\n }\n catch (e) {\n throw new OpenError(e);\n }\n finally {\n release();\n }\n this.incrementSeq(this._ctx);\n return pt;\n }\n}\n_RecipientContextImpl_mutex = new WeakMap();\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _SenderContextImpl_mutex;\nimport { EMPTY, SealError } from \"@hpke/common\";\nimport { EncryptionContextImpl } from \"./encryptionContext.js\";\nimport { Mutex } from \"./mutex.js\";\nexport class SenderContextImpl extends EncryptionContextImpl {\n constructor(api, kdf, params, enc) {\n super(api, kdf, params);\n Object.defineProperty(this, \"enc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n _SenderContextImpl_mutex.set(this, void 0);\n this.enc = enc;\n }\n async seal(data, aad = EMPTY.buffer) {\n __classPrivateFieldSet(this, _SenderContextImpl_mutex, __classPrivateFieldGet(this, _SenderContextImpl_mutex, \"f\") ?? new Mutex(), \"f\");\n const release = await __classPrivateFieldGet(this, _SenderContextImpl_mutex, \"f\").lock();\n let ct;\n try {\n ct = await this._ctx.key.seal(this.computeNonce(this._ctx), data, aad);\n }\n catch (e) {\n throw new SealError(e);\n }\n finally {\n release();\n }\n this.incrementSeq(this._ctx);\n return ct;\n }\n}\n_SenderContextImpl_mutex = new WeakMap();\n","import { AeadId, EMPTY, i2Osp, INFO_LENGTH_LIMIT, INPUT_LENGTH_LIMIT, InvalidParamError, MINIMUM_PSK_LENGTH, Mode, NativeAlgorithm, } from \"@hpke/common\";\nimport { RecipientExporterContextImpl, SenderExporterContextImpl, } from \"./exporterContext.js\";\nimport { RecipientContextImpl } from \"./recipientContext.js\";\nimport { SenderContextImpl } from \"./senderContext.js\";\n// b\"base_nonce\"\n// deno-fmt-ignore\nconst LABEL_BASE_NONCE = new Uint8Array([\n 98, 97, 115, 101, 95, 110, 111, 110, 99, 101,\n]);\n// b\"exp\"\nconst LABEL_EXP = new Uint8Array([101, 120, 112]);\n// b\"info_hash\"\n// deno-fmt-ignore\nconst LABEL_INFO_HASH = new Uint8Array([\n 105, 110, 102, 111, 95, 104, 97, 115, 104,\n]);\n// b\"key\"\nconst LABEL_KEY = new Uint8Array([107, 101, 121]);\n// b\"psk_id_hash\"\n// deno-fmt-ignore\nconst LABEL_PSK_ID_HASH = new Uint8Array([\n 112, 115, 107, 95, 105, 100, 95, 104, 97, 115, 104,\n]);\n// b\"secret\"\nconst LABEL_SECRET = new Uint8Array([115, 101, 99, 114, 101, 116]);\n// b\"HPKE\"\n// deno-fmt-ignore\nconst SUITE_ID_HEADER_HPKE = new Uint8Array([\n 72, 80, 75, 69, 0, 0, 0, 0, 0, 0,\n]);\n/**\n * The Hybrid Public Key Encryption (HPKE) ciphersuite,\n * which is implemented using only\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n *\n * This is the super class of {@link CipherSuite} and the same as\n * {@link https://jsr.io/@hpke/core/doc/~/CipherSuite | @hpke/core#CipherSuite} as follows:\n * which supports only the ciphersuites that can be implemented on the native\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n * Therefore, the following cryptographic algorithms are not supported for now:\n * - DHKEM(X25519, HKDF-SHA256)\n * - DHKEM(X448, HKDF-SHA512)\n * - ChaCha20Poly1305\n *\n * In addtion, the HKDF functions contained in this class can only derive\n * keys of the same length as the `hashSize`.\n *\n * If you want to use the unsupported cryptographic algorithms\n * above or derive keys longer than the `hashSize`,\n * please use {@link CipherSuite}.\n *\n * This class provides following functions:\n *\n * - Creates encryption contexts both for senders and recipients.\n * - {@link createSenderContext}\n * - {@link createRecipientContext}\n * - Provides single-shot encryption API.\n * - {@link seal}\n * - {@link open}\n *\n * The calling of the constructor of this class is the starting\n * point for HPKE operations for both senders and recipients.\n *\n * @example Use only ciphersuites supported by Web Cryptography API.\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * CipherSuite,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n *\n * @example Use a ciphersuite which is currently not supported by Web Cryptography API.\n *\n * ```ts\n * import { Aes128Gcm, HkdfSha256, CipherSuite } from \"@hpke/core\";\n * // Use an extension module.\n * import { DhkemX25519HkdfSha256 } from \"@hpke/dhkem-x25519\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemX25519HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class CipherSuiteNative extends NativeAlgorithm {\n /**\n * @param params A set of parameters for building a cipher suite.\n *\n * If the error occurred, throws {@link InvalidParamError}.\n *\n * @throws {@link InvalidParamError}\n */\n constructor(params) {\n super();\n Object.defineProperty(this, \"_kem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_kdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_aead\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_suiteId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // KEM\n if (typeof params.kem === \"number\") {\n throw new InvalidParamError(\"KemId cannot be used\");\n }\n this._kem = params.kem;\n // KDF\n if (typeof params.kdf === \"number\") {\n throw new InvalidParamError(\"KdfId cannot be used\");\n }\n this._kdf = params.kdf;\n // AEAD\n if (typeof params.aead === \"number\") {\n throw new InvalidParamError(\"AeadId cannot be used\");\n }\n this._aead = params.aead;\n this._suiteId = new Uint8Array(SUITE_ID_HEADER_HPKE);\n this._suiteId.set(i2Osp(this._kem.id, 2), 4);\n this._suiteId.set(i2Osp(this._kdf.id, 2), 6);\n this._suiteId.set(i2Osp(this._aead.id, 2), 8);\n this._kdf.init(this._suiteId);\n }\n /**\n * Gets the KEM context of the ciphersuite.\n */\n get kem() {\n return this._kem;\n }\n /**\n * Gets the KDF context of the ciphersuite.\n */\n get kdf() {\n return this._kdf;\n }\n /**\n * Gets the AEAD context of the ciphersuite.\n */\n get aead() {\n return this._aead;\n }\n /**\n * Creates an encryption context for a sender.\n *\n * If the error occurred, throws {@link DecapError} | {@link ValidationError}.\n *\n * @param params A set of parameters for the sender encryption context.\n * @returns A sender encryption context.\n * @throws {@link EncapError}, {@link ValidationError}\n */\n async createSenderContext(params) {\n this._validateInputLength(params);\n await this._setup();\n const dh = await this._kem.encap(params);\n let mode;\n if (params.psk !== undefined) {\n mode = params.senderKey !== undefined ? Mode.AuthPsk : Mode.Psk;\n }\n else {\n mode = params.senderKey !== undefined ? Mode.Auth : Mode.Base;\n }\n return await this._keyScheduleS(mode, dh.sharedSecret, dh.enc, params);\n }\n /**\n * Creates an encryption context for a recipient.\n *\n * If the error occurred, throws {@link DecapError}\n * | {@link DeserializeError} | {@link ValidationError}.\n *\n * @param params A set of parameters for the recipient encryption context.\n * @returns A recipient encryption context.\n * @throws {@link DecapError}, {@link DeserializeError}, {@link ValidationError}\n */\n async createRecipientContext(params) {\n this._validateInputLength(params);\n await this._setup();\n const sharedSecret = await this._kem.decap(params);\n let mode;\n if (params.psk !== undefined) {\n mode = params.senderPublicKey !== undefined ? Mode.AuthPsk : Mode.Psk;\n }\n else {\n mode = params.senderPublicKey !== undefined ? Mode.Auth : Mode.Base;\n }\n return await this._keyScheduleR(mode, sharedSecret, params);\n }\n /**\n * Encrypts a message to a recipient.\n *\n * If the error occurred, throws `EncapError` | `MessageLimitReachedError` | `SealError` | `ValidationError`.\n *\n * @param params A set of parameters for building a sender encryption context.\n * @param pt A plain text as bytes to be encrypted.\n * @param aad Additional authenticated data as bytes fed by an application.\n * @returns A cipher text and an encapsulated key as bytes.\n * @throws {@link EncapError}, {@link MessageLimitReachedError}, {@link SealError}, {@link ValidationError}\n */\n async seal(params, pt, aad = EMPTY.buffer) {\n const ctx = await this.createSenderContext(params);\n return {\n ct: await ctx.seal(pt, aad),\n enc: ctx.enc,\n };\n }\n /**\n * Decrypts a message from a sender.\n *\n * If the error occurred, throws `DecapError` | `DeserializeError` | `OpenError` | `ValidationError`.\n *\n * @param params A set of parameters for building a recipient encryption context.\n * @param ct An encrypted text as bytes to be decrypted.\n * @param aad Additional authenticated data as bytes fed by an application.\n * @returns A decrypted plain text as bytes.\n * @throws {@link DecapError}, {@link DeserializeError}, {@link OpenError}, {@link ValidationError}\n */\n async open(params, ct, aad = EMPTY.buffer) {\n const ctx = await this.createRecipientContext(params);\n return await ctx.open(ct, aad);\n }\n // private verifyPskInputs(mode: Mode, params: KeyScheduleParams) {\n // const gotPsk = (params.psk !== undefined);\n // const gotPskId = (params.psk !== undefined && params.psk.id.byteLength > 0);\n // if (gotPsk !== gotPskId) {\n // throw new Error('Inconsistent PSK inputs');\n // }\n // if (gotPsk && (mode === Mode.Base || mode === Mode.Auth)) {\n // throw new Error('PSK input provided when not needed');\n // }\n // if (!gotPsk && (mode === Mode.Psk || mode === Mode.AuthPsk)) {\n // throw new Error('Missing required PSK input');\n // }\n // return;\n // }\n async _keySchedule(mode, sharedSecret, params) {\n // Currently, there is no point in executing this function\n // because this hpke library does not allow users to explicitly specify the mode.\n //\n // this.verifyPskInputs(mode, params);\n const pskId = params.psk === undefined\n ? EMPTY\n : new Uint8Array(params.psk.id);\n const pskIdHash = await this._kdf.labeledExtract(EMPTY.buffer, LABEL_PSK_ID_HASH, pskId);\n const info = params.info === undefined\n ? EMPTY\n : new Uint8Array(params.info);\n const infoHash = await this._kdf.labeledExtract(EMPTY.buffer, LABEL_INFO_HASH, info);\n const keyScheduleContext = new Uint8Array(1 + pskIdHash.byteLength + infoHash.byteLength);\n keyScheduleContext.set(new Uint8Array([mode]), 0);\n keyScheduleContext.set(new Uint8Array(pskIdHash), 1);\n keyScheduleContext.set(new Uint8Array(infoHash), 1 + pskIdHash.byteLength);\n const psk = params.psk === undefined\n ? EMPTY\n : new Uint8Array(params.psk.key);\n const ikm = this._kdf.buildLabeledIkm(LABEL_SECRET, psk)\n .buffer;\n const exporterSecretInfo = this._kdf.buildLabeledInfo(LABEL_EXP, keyScheduleContext, this._kdf.hashSize).buffer;\n const exporterSecret = await this._kdf.extractAndExpand(sharedSecret, ikm, exporterSecretInfo, this._kdf.hashSize);\n if (this._aead.id === AeadId.ExportOnly) {\n return { aead: this._aead, exporterSecret: exporterSecret };\n }\n const keyInfo = this._kdf.buildLabeledInfo(LABEL_KEY, keyScheduleContext, this._aead.keySize).buffer;\n const key = await this._kdf.extractAndExpand(sharedSecret, ikm, keyInfo, this._aead.keySize);\n const baseNonceInfo = this._kdf.buildLabeledInfo(LABEL_BASE_NONCE, keyScheduleContext, this._aead.nonceSize).buffer;\n const baseNonce = await this._kdf.extractAndExpand(sharedSecret, ikm, baseNonceInfo, this._aead.nonceSize);\n return {\n aead: this._aead,\n exporterSecret: exporterSecret,\n key: key,\n baseNonce: new Uint8Array(baseNonce),\n seq: 0,\n };\n }\n async _keyScheduleS(mode, sharedSecret, enc, params) {\n const res = await this._keySchedule(mode, sharedSecret, params);\n if (res.key === undefined) {\n return new SenderExporterContextImpl(this._api, this._kdf, res.exporterSecret, enc);\n }\n return new SenderContextImpl(this._api, this._kdf, res, enc);\n }\n async _keyScheduleR(mode, sharedSecret, params) {\n const res = await this._keySchedule(mode, sharedSecret, params);\n if (res.key === undefined) {\n return new RecipientExporterContextImpl(this._api, this._kdf, res.exporterSecret);\n }\n return new RecipientContextImpl(this._api, this._kdf, res);\n }\n _validateInputLength(params) {\n if (params.info !== undefined &&\n params.info.byteLength > INFO_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long info\");\n }\n if (params.psk !== undefined) {\n if (params.psk.key.byteLength < MINIMUM_PSK_LENGTH) {\n throw new InvalidParamError(`PSK must have at least ${MINIMUM_PSK_LENGTH} bytes`);\n }\n if (params.psk.key.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long psk.key\");\n }\n if (params.psk.id.byteLength > INPUT_LENGTH_LIMIT) {\n throw new InvalidParamError(\"Too long psk.id\");\n }\n }\n return;\n }\n}\n","import { Dhkem, Ec, HkdfSha256Native, HkdfSha384Native, HkdfSha512Native, KemId, } from \"@hpke/common\";\nexport class DhkemP256HkdfSha256Native extends Dhkem {\n constructor() {\n const kdf = new HkdfSha256Native();\n const prim = new Ec(KemId.DhkemP256HkdfSha256, kdf);\n super(KemId.DhkemP256HkdfSha256, prim, kdf);\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.DhkemP256HkdfSha256\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 65\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 65\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n }\n}\nexport class DhkemP384HkdfSha384Native extends Dhkem {\n constructor() {\n const kdf = new HkdfSha384Native();\n const prim = new Ec(KemId.DhkemP384HkdfSha384, kdf);\n super(KemId.DhkemP384HkdfSha384, prim, kdf);\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.DhkemP384HkdfSha384\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 48\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 97\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 97\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 48\n });\n }\n}\nexport class DhkemP521HkdfSha512Native extends Dhkem {\n constructor() {\n const kdf = new HkdfSha512Native();\n const prim = new Ec(KemId.DhkemP521HkdfSha512, kdf);\n super(KemId.DhkemP521HkdfSha512, prim, kdf);\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.DhkemP521HkdfSha512\n });\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 64\n });\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 133\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 133\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 64\n });\n }\n}\n","import { HkdfSha256Native, HkdfSha384Native, HkdfSha512Native, } from \"@hpke/common\";\nimport { CipherSuiteNative } from \"./cipherSuiteNative.js\";\nimport { DhkemP256HkdfSha256Native, DhkemP384HkdfSha384Native, DhkemP521HkdfSha512Native, } from \"./kems/dhkemNative.js\";\n/**\n * The Hybrid Public Key Encryption (HPKE) ciphersuite,\n * which is implemented using only\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n *\n * This class is the same as\n * {@link https://jsr.io/@hpke/core/doc/~/CipherSuiteNative | @hpke/core#CipherSuiteNative} as follows:\n * which supports only the ciphersuites that can be implemented on the native\n * {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.\n * Therefore, the following cryptographic algorithms are not supported for now:\n * - `DHKEM(X25519, HKDF-SHA256)`\n * - `DHKEM(X448, HKDF-SHA512)`\n * - `ChaCha20Poly1305`\n *\n * In addtion, the HKDF functions contained in this `CipherSuiteNative`\n * class can only derive keys of the same length as the `hashSize`.\n *\n * If you want to use the unsupported cryptographic algorithms\n * above or derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * This class provides following functions:\n *\n * - Creates encryption contexts both for senders and recipients.\n * - {@link createSenderContext}\n * - {@link createRecipientContext}\n * - Provides single-shot encryption API.\n * - {@link seal}\n * - {@link open}\n *\n * The calling of the constructor of this class is the starting\n * point for HPKE operations for both senders and recipients.\n *\n * @example Use only ciphersuites supported by Web Cryptography API.\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * CipherSuite,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n *\n * @example Use a ciphersuite which is currently not supported by Web Cryptography API.\n *\n * ```ts\n * import { Aes128Gcm, HkdfSha256, CipherSuite } from \"@hpke/core\";\n * import { DhkemX25519HkdfSha256 } from \"@hpke/dhkem-x25519\";\n * const suite = new CipherSuite({\n * kem: new DhkemX25519HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class CipherSuite extends CipherSuiteNative {\n}\n/**\n * The DHKEM(P-256, HKDF-SHA256) for HPKE KEM implementing {@link KemInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KemId.DhkemP256HkdfSha256`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class DhkemP256HkdfSha256 extends DhkemP256HkdfSha256Native {\n}\n/**\n * The DHKEM(P-384, HKDF-SHA384) for HPKE KEM implementing {@link KemInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KemId.DhkemP384HkdfSha384`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP384HkdfSha384,\n * HkdfSha384,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP384HkdfSha384(),\n * kdf: new HkdfSha384(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class DhkemP384HkdfSha384 extends DhkemP384HkdfSha384Native {\n}\n/**\n * The DHKEM(P-521, HKDF-SHA512) for HPKE KEM implementing {@link KemInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KemId.DhkemP521HkdfSha512`\n * as follows:\n *\n * @example\n *\n * ```ts\n * import {\n * Aes256Gcm,\n * CipherSuite,\n * DhkemP521HkdfSha512,\n * HkdfSha512,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP521HkdfSha512(),\n * kdf: new HkdfSha512(),\n * aead: new Aes256Gcm(),\n * });\n * ```\n */\nexport class DhkemP521HkdfSha512 extends DhkemP521HkdfSha512Native {\n}\n/**\n * The HKDF-SHA256 for HPKE KDF implementing {@link KdfInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KdfId.HkdfSha256`.\n *\n * The KDF class can only derive keys of the same length as the `hashSize`.\n * If you want to derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP256HkdfSha256,\n * HkdfSha256,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP256HkdfSha256(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class HkdfSha256 extends HkdfSha256Native {\n}\n/**\n * The HKDF-SHA384 for HPKE KDF implementing {@link KdfInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KdfId.HkdfSha384`.\n *\n * The KDF class can only derive keys of the same length as the `hashSize`.\n * If you want to derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * DhkemP384HkdfSha384,\n * HkdfSha384,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP384HkdfSha384(),\n * kdf: new HkdfSha384(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class HkdfSha384 extends HkdfSha384Native {\n}\n/**\n * The HKDF-SHA512 for HPKE KDF implementing {@link KdfInterface}.\n *\n * When using `@hpke/core`, the instance of this class must be specified\n * to the `kem` parameter of {@link CipherSuiteParams} instead of `KdfId.HkdfSha512`.\n *\n * The KDF class can only derive keys of the same length as the `hashSize`.\n * If you want to derive keys longer than the `hashSize`,\n * please use {@link https://jsr.io/@hpke/hpke-js/doc/~/CipherSuite | hpke-js#CipherSuite}.\n *\n * @example\n *\n * ```ts\n * import {\n * Aes256Gcm,\n * CipherSuite,\n * DhkemP521HkdfSha512,\n * HkdfSha512,\n * } from \"@hpke/core\";\n *\n * const suite = new CipherSuite({\n * kem: new DhkemP521HkdfSha512(),\n * kdf: new HkdfSha512(),\n * aead: new Aes256Gcm(),\n * });\n * ```\n */\nexport class HkdfSha512 extends HkdfSha512Native {\n}\n","import { base64UrlToBytes, DeriveKeyPairError, DeserializeError, EMPTY, KEM_USAGES, LABEL_DKP_PRK, LABEL_SK, NativeAlgorithm, NotSupportedError, SerializeError, } from \"@hpke/common\";\nconst ALG_NAME = \"X25519\";\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_X25519 = new Uint8Array([\n 0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06,\n 0x03, 0x2b, 0x65, 0x6e, 0x04, 0x22, 0x04, 0x20,\n]);\nexport class X25519 extends NativeAlgorithm {\n constructor(hkdf) {\n super();\n Object.defineProperty(this, \"_hkdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_alg\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nPk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nSk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nDh\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pkcs8AlgId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._alg = { name: ALG_NAME };\n this._hkdf = hkdf;\n this._nPk = 32;\n this._nSk = 32;\n this._nDh = 32;\n this._pkcs8AlgId = PKCS8_ALG_ID_X25519;\n }\n async serializePublicKey(key) {\n await this._setup();\n try {\n return await this._api.exportKey(\"raw\", key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePublicKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, true);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async serializePrivateKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n if (!(\"d\" in jwk)) {\n throw new Error(\"Not private key\");\n }\n return base64UrlToBytes(jwk[\"d\"]).buffer;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePrivateKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, false);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async importKey(format, key, isPublic) {\n await this._setup();\n try {\n if (format === \"raw\") {\n return await this._importRawKey(key, isPublic);\n }\n // jwk\n if (key instanceof ArrayBuffer) {\n throw new Error(\"Invalid jwk key format\");\n }\n return await this._importJWK(key, isPublic);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async generateKeyPair() {\n await this._setup();\n try {\n return await this._api.generateKey(ALG_NAME, true, KEM_USAGES);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n async deriveKeyPair(ikm) {\n await this._setup();\n try {\n const dkpPrk = await this._hkdf.labeledExtract(EMPTY.buffer, LABEL_DKP_PRK, new Uint8Array(ikm));\n const rawSk = await this._hkdf.labeledExpand(dkpPrk, LABEL_SK, EMPTY, this._nSk);\n const rawSkBytes = new Uint8Array(rawSk);\n const sk = await this._deserializePkcs8Key(rawSkBytes);\n rawSkBytes.fill(0);\n return {\n privateKey: sk,\n publicKey: await this.derivePublicKey(sk),\n };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n async derivePublicKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n delete jwk[\"d\"];\n delete jwk[\"key_ops\"];\n return await this._api.importKey(\"jwk\", jwk, this._alg, true, []);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async dh(sk, pk) {\n await this._setup();\n try {\n const bits = await this._api.deriveBits({\n name: ALG_NAME,\n public: pk,\n }, sk, this._nDh * 8);\n return bits;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async _importRawKey(key, isPublic) {\n if (isPublic && key.byteLength !== this._nPk) {\n throw new Error(\"Invalid public key for the ciphersuite\");\n }\n if (!isPublic && key.byteLength !== this._nSk) {\n throw new Error(\"Invalid private key for the ciphersuite\");\n }\n if (isPublic) {\n return await this._api.importKey(\"raw\", key, this._alg, true, []);\n }\n return await this._deserializePkcs8Key(new Uint8Array(key));\n }\n async _importJWK(key, isPublic) {\n if (typeof key.kty === \"undefined\" || key.kty !== \"OKP\") {\n throw new Error(`Invalid kty: ${key.crv}`);\n }\n if (typeof key.crv === \"undefined\" || key.crv !== ALG_NAME) {\n throw new Error(`Invalid crv: ${key.crv}`);\n }\n if (isPublic) {\n if (typeof key.d !== \"undefined\") {\n throw new Error(\"Invalid key: `d` should not be set\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, []);\n }\n if (typeof key.d === \"undefined\") {\n throw new Error(\"Invalid key: `d` not found\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, KEM_USAGES);\n }\n async _deserializePkcs8Key(k) {\n const pkcs8Key = new Uint8Array(this._pkcs8AlgId.length + k.length);\n pkcs8Key.set(this._pkcs8AlgId, 0);\n pkcs8Key.set(k, this._pkcs8AlgId.length);\n return await this._api.importKey(\"pkcs8\", pkcs8Key, this._alg, true, KEM_USAGES);\n }\n}\n","import { base64UrlToBytes, DeriveKeyPairError, DeserializeError, EMPTY, KEM_USAGES, LABEL_DKP_PRK, LABEL_SK, NativeAlgorithm, NotSupportedError, SerializeError, } from \"@hpke/common\";\nconst ALG_NAME = \"X448\";\n// deno-fmt-ignore\nconst PKCS8_ALG_ID_X448 = new Uint8Array([\n 0x30, 0x46, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06,\n 0x03, 0x2b, 0x65, 0x6f, 0x04, 0x3a, 0x04, 0x38,\n]);\nexport class X448 extends NativeAlgorithm {\n constructor(hkdf) {\n super();\n Object.defineProperty(this, \"_hkdf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_alg\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nPk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nSk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nDh\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pkcs8AlgId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._alg = { name: ALG_NAME };\n this._hkdf = hkdf;\n this._nPk = 56;\n this._nSk = 56;\n this._nDh = 56;\n this._pkcs8AlgId = PKCS8_ALG_ID_X448;\n }\n async serializePublicKey(key) {\n await this._setup();\n try {\n return await this._api.exportKey(\"raw\", key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePublicKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, true);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async serializePrivateKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n if (!(\"d\" in jwk)) {\n throw new Error(\"Not private key\");\n }\n return base64UrlToBytes(jwk[\"d\"]).buffer;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePrivateKey(key) {\n await this._setup();\n try {\n return await this._importRawKey(key, false);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async importKey(format, key, isPublic) {\n await this._setup();\n try {\n if (format === \"raw\") {\n return await this._importRawKey(key, isPublic);\n }\n // jwk\n if (key instanceof ArrayBuffer) {\n throw new Error(\"Invalid jwk key format\");\n }\n return await this._importJWK(key, isPublic);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async generateKeyPair() {\n await this._setup();\n try {\n return await this._api.generateKey(ALG_NAME, true, KEM_USAGES);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n async deriveKeyPair(ikm) {\n await this._setup();\n try {\n const dkpPrk = await this._hkdf.labeledExtract(EMPTY.buffer, LABEL_DKP_PRK, new Uint8Array(ikm));\n const rawSk = await this._hkdf.labeledExpand(dkpPrk, LABEL_SK, EMPTY, this._nSk);\n const rawSkBytes = new Uint8Array(rawSk);\n const sk = await this._deserializePkcs8Key(rawSkBytes);\n rawSkBytes.fill(0);\n return {\n privateKey: sk,\n publicKey: await this.derivePublicKey(sk),\n };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n async derivePublicKey(key) {\n await this._setup();\n try {\n const jwk = await this._api.exportKey(\"jwk\", key);\n delete jwk[\"d\"];\n delete jwk[\"key_ops\"];\n return await this._api.importKey(\"jwk\", jwk, this._alg, true, []);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async dh(sk, pk) {\n await this._setup();\n try {\n const bits = await this._api.deriveBits({\n name: ALG_NAME,\n public: pk,\n }, sk, this._nDh * 8);\n return bits;\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async _importRawKey(key, isPublic) {\n if (isPublic && key.byteLength !== this._nPk) {\n throw new Error(\"Invalid public key for the ciphersuite\");\n }\n if (!isPublic && key.byteLength !== this._nSk) {\n throw new Error(\"Invalid private key for the ciphersuite\");\n }\n if (isPublic) {\n return await this._api.importKey(\"raw\", key, this._alg, true, []);\n }\n return await this._deserializePkcs8Key(new Uint8Array(key));\n }\n async _importJWK(key, isPublic) {\n if (typeof key.kty === \"undefined\" || key.kty !== \"OKP\") {\n throw new Error(`Invalid kty: ${key.crv}`);\n }\n if (typeof key.crv === \"undefined\" || key.crv !== ALG_NAME) {\n throw new Error(`Invalid crv: ${key.crv}`);\n }\n if (isPublic) {\n if (typeof key.d !== \"undefined\") {\n throw new Error(\"Invalid key: `d` should not be set\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, []);\n }\n if (typeof key.d === \"undefined\") {\n throw new Error(\"Invalid key: `d` not found\");\n }\n return await this._api.importKey(\"jwk\", key, this._alg, true, KEM_USAGES);\n }\n async _deserializePkcs8Key(k) {\n const pkcs8Key = new Uint8Array(this._pkcs8AlgId.length + k.length);\n pkcs8Key.set(this._pkcs8AlgId, 0);\n pkcs8Key.set(k, this._pkcs8AlgId.length);\n return await this._api.importKey(\"pkcs8\", pkcs8Key, this._alg, true, KEM_USAGES);\n }\n}\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bech32m = exports.bech32 = void 0;\nconst ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';\nconst ALPHABET_MAP = {};\nfor (let z = 0; z < ALPHABET.length; z++) {\n const x = ALPHABET.charAt(z);\n ALPHABET_MAP[x] = z;\n}\nfunction polymodStep(pre) {\n const b = pre >> 25;\n return (((pre & 0x1ffffff) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3));\n}\nfunction prefixChk(prefix) {\n let chk = 1;\n for (let i = 0; i < prefix.length; ++i) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n return 'Invalid prefix (' + prefix + ')';\n chk = polymodStep(chk) ^ (c >> 5);\n }\n chk = polymodStep(chk);\n for (let i = 0; i < prefix.length; ++i) {\n const v = prefix.charCodeAt(i);\n chk = polymodStep(chk) ^ (v & 0x1f);\n }\n return chk;\n}\nfunction convert(data, inBits, outBits, pad) {\n let value = 0;\n let bits = 0;\n const maxV = (1 << outBits) - 1;\n const result = [];\n for (let i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i];\n bits += inBits;\n while (bits >= outBits) {\n bits -= outBits;\n result.push((value >> bits) & maxV);\n }\n }\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV);\n }\n }\n else {\n if (bits >= inBits)\n return 'Excess padding';\n if ((value << (outBits - bits)) & maxV)\n return 'Non-zero padding';\n }\n return result;\n}\nfunction toWords(bytes) {\n return convert(bytes, 8, 5, true);\n}\nfunction fromWordsUnsafe(words) {\n const res = convert(words, 5, 8, false);\n if (Array.isArray(res))\n return res;\n}\nfunction fromWords(words) {\n const res = convert(words, 5, 8, false);\n if (Array.isArray(res))\n return res;\n throw new Error(res);\n}\nfunction getLibraryFromEncoding(encoding) {\n let ENCODING_CONST;\n if (encoding === 'bech32') {\n ENCODING_CONST = 1;\n }\n else {\n ENCODING_CONST = 0x2bc830a3;\n }\n function encode(prefix, words, LIMIT) {\n LIMIT = LIMIT || 90;\n if (prefix.length + 7 + words.length > LIMIT)\n throw new TypeError('Exceeds length limit');\n prefix = prefix.toLowerCase();\n // determine chk mod\n let chk = prefixChk(prefix);\n if (typeof chk === 'string')\n throw new Error(chk);\n let result = prefix + '1';\n for (let i = 0; i < words.length; ++i) {\n const x = words[i];\n if (x >> 5 !== 0)\n throw new Error('Non 5-bit word');\n chk = polymodStep(chk) ^ x;\n result += ALPHABET.charAt(x);\n }\n for (let i = 0; i < 6; ++i) {\n chk = polymodStep(chk);\n }\n chk ^= ENCODING_CONST;\n for (let i = 0; i < 6; ++i) {\n const v = (chk >> ((5 - i) * 5)) & 0x1f;\n result += ALPHABET.charAt(v);\n }\n return result;\n }\n function __decode(str, LIMIT) {\n LIMIT = LIMIT || 90;\n if (str.length < 8)\n return str + ' too short';\n if (str.length > LIMIT)\n return 'Exceeds length limit';\n // don't allow mixed case\n const lowered = str.toLowerCase();\n const uppered = str.toUpperCase();\n if (str !== lowered && str !== uppered)\n return 'Mixed-case string ' + str;\n str = lowered;\n const split = str.lastIndexOf('1');\n if (split === -1)\n return 'No separator character for ' + str;\n if (split === 0)\n return 'Missing prefix for ' + str;\n const prefix = str.slice(0, split);\n const wordChars = str.slice(split + 1);\n if (wordChars.length < 6)\n return 'Data too short';\n let chk = prefixChk(prefix);\n if (typeof chk === 'string')\n return chk;\n const words = [];\n for (let i = 0; i < wordChars.length; ++i) {\n const c = wordChars.charAt(i);\n const v = ALPHABET_MAP[c];\n if (v === undefined)\n return 'Unknown character ' + c;\n chk = polymodStep(chk) ^ v;\n // not in the checksum?\n if (i + 6 >= wordChars.length)\n continue;\n words.push(v);\n }\n if (chk !== ENCODING_CONST)\n return 'Invalid checksum for ' + str;\n return { prefix, words };\n }\n function decodeUnsafe(str, LIMIT) {\n const res = __decode(str, LIMIT);\n if (typeof res === 'object')\n return res;\n }\n function decode(str, LIMIT) {\n const res = __decode(str, LIMIT);\n if (typeof res === 'object')\n return res;\n throw new Error(res);\n }\n return {\n decodeUnsafe,\n decode,\n encode,\n toWords,\n fromWordsUnsafe,\n fromWords,\n };\n}\nexports.bech32 = getLibraryFromEncoding('bech32');\nexports.bech32m = getLibraryFromEncoding('bech32m');\n"],"names":["HpkeError","Error","constructor","e","message","super","this","name","EncapError","DecapError","ExportError","SealError","OpenError","MessageLimitReachedError","DeriveKeyPairError","dntGlobalThis","baseObj","globalThis","extObj","Proxy","get","_target","prop","_receiver","set","value","deleteProperty","success","ownKeys","baseKeys","Reflect","extKeys","extKeysSet","Set","filter","k","has","defineProperty","desc","getOwnPropertyDescriptor","NativeAlgorithm","Object","enumerable","configurable","writable","undefined","_setup","_api","async","crypto","subtle","webcrypto","loadSubtleCrypto","INPUT_LENGTH_LIMIT","Uint8Array","x","privateKey","publicKey","n","w","ret","i","a","b","length","LABEL_EAE_PRK","LABEL_SHARED_SECRET","Dhkem","id","prim","kdf","_prim","_kdf","suiteId","init","serializePublicKey","key","deserializePublicKey","serializePrivateKey","deserializePrivateKey","importKey","format","isPublic","generateKeyPair","deriveKeyPair","ikm","byteLength","encap","params","ke","ekm","enc","pkrm","recipientPublicKey","dh","kemContext","senderKey","sks","pks","derivePublicKey","pksm","c","concat3","sharedSecret","_generateSharedSecret","decap","pke","skr","recipientKey","pkr","senderPublicKey","labeledIkm","buildLabeledIkm","labeledInfo","buildLabeledInfo","secretSize","extractAndExpand","buffer","KEM_USAGES","Bignum","size","_num","val","reset","fill","src","isZero","lessThan","v","LABEL_CANDIDATE","ORDER_P_256","ORDER_P_384","ORDER_P_521","PKCS8_ALG_ID_P_256","PKCS8_ALG_ID_P_384","PKCS8_ALG_ID_P_521","Ec","kem","hkdf","_hkdf","_alg","namedCurve","_nPk","_nSk","_nDh","_order","_bitmask","_pkcs8AlgId","exportKey","_importRawKey","jwk","base64","replace","byteString","atob","charCodeAt","base64UrlToBytes","ArrayBuffer","_importJWK","generateKey","dkpPrk","labeledExtract","bn","counter","bytes","labeledExpand","sk","_deserializePkcs8Key","pk","deriveBits","public","crv","d","pkcs8Key","HPKE_VERSION","HkdfNative","hash","_suiteId","label","_checkInit","info","len","extract","salt","hashSize","algHash","sign","expand","prk","okm","p","prev","mid","tail","tmp","cur","slice","baseKey","HkdfSha256Native","arguments","AEAD_USAGES","BigInt","AesGcmContext","_rawKey","seal","iv","data","aad","_setupKey","alg","additionalData","encrypt","_key","open","decrypt","_importKey","Aes128Gcm","createEncryptionContext","Aes256Gcm","emitNotSupported","Promise","_resolve","reject","LABEL_SEC","ExporterContextImpl","api","exporterSecret","_data","_aad","exporterContext","RecipientExporterContextImpl","SenderExporterContextImpl","EncryptionContextImpl","baseNonce","seq","_aead","aead","_nK","keySize","_nN","nonceSize","_nT","tagSize","_ctx","computeNonce","seqBytes","buf","xor","incrementSeq","Number","MAX_SAFE_INTEGER","_Mutex_locked","Mutex","resolve","lock","releaseLock","nextLock","previousLock","receiver","state","kind","f","TypeError","call","__classPrivateFieldGet","__classPrivateFieldSet","WeakMap","_RecipientContextImpl_mutex","RecipientContextImpl","release","pt","_SenderContextImpl_mutex","SenderContextImpl","ct","LABEL_BASE_NONCE","LABEL_EXP","LABEL_INFO_HASH","LABEL_KEY","LABEL_PSK_ID_HASH","LABEL_SECRET","SUITE_ID_HEADER_HPKE","CipherSuiteNative","_kem","createSenderContext","_validateInputLength","mode","psk","_keyScheduleS","createRecipientContext","_keyScheduleR","ctx","_keySchedule","pskId","pskIdHash","infoHash","keyScheduleContext","exporterSecretInfo","keyInfo","baseNonceInfo","res","DhkemP256HkdfSha256Native","CipherSuite","DhkemP256HkdfSha256","HkdfSha256","exports","ALPHABET","ALPHABET_MAP","z","charAt","polymodStep","pre","prefixChk","prefix","chk","convert","inBits","outBits","pad","bits","maxV","result","push","toWords","fromWordsUnsafe","words","Array","isArray","fromWords","getLibraryFromEncoding","encoding","ENCODING_CONST","__decode","str","LIMIT","lowered","toLowerCase","uppered","toUpperCase","split","lastIndexOf","wordChars","decodeUnsafe","decode","encode"],"sourceRoot":""} \ No newline at end of file diff --git a/import/index.test.js b/import/index.test.js index cfa1d63..0fafc3e 100644 --- a/import/index.test.js +++ b/import/index.test.js @@ -1,6 +1,7 @@ import "@testing-library/jest-dom"; import * as crypto from "crypto"; import * as TKHQ from "./src/turnkey-core.js"; +import { bech32 } from "bech32"; // Mock the TURNKEY_SIGNER_ENVIRONMENT replacement that webpack would do const verifyEnclaveSignature = async function ( @@ -95,11 +96,82 @@ describe("TKHQ", () => { expect(key.key_ops).toEqual([]); }); + it("decodes bitcoin wif private key correctly", async () => { + const keyBtcWif = "L1sF5SF3CnCN9gA7vh7MAtbiVu9igdr3C1BYPKZduw4yaezdeCTV"; + const keyBytes = TKHQ.base58Decode(keyBtcWif); + expect(keyBytes.length).toBeGreaterThan(32); + const keyPrivBytes = keyBytes.subarray(1, 33); // Remove version byte at start and compression flag at end + const decodedKey = await TKHQ.decodeKey(keyBtcWif, "BITCOIN_MAINNET_WIF"); + expect(decodedKey.length).toEqual(keyPrivBytes.length); + for (let i = 0; i < decodedKey.length; i++) { + expect(decodedKey[i]).toEqual(keyPrivBytes[i]); + } + }); + + // Bitcoin WIF negative tests + it("rejects bitcoin WIF with invalid base58 characters", async () => { + const invalidWif = "L1sF5SF3CnCN9gA7vh7MAtbiVu9igdr3C1BYPKZduw4yaezdeCT0"; // contains '0' + await expect( + TKHQ.decodeKey(invalidWif, "BITCOIN_MAINNET_WIF") + ).rejects.toThrow(); + }); + + it("rejects bitcoin WIF with invalid checksum", async () => { + const invalidChecksumWif = + "L1sF5SF3CnCN9gA7vh7MAtbiVu9igdr3C1BYPKZduw4yaezdeXXX"; + await expect( + TKHQ.decodeKey(invalidChecksumWif, "BITCOIN_MAINNET_WIF") + ).rejects.toThrow("invalid base58check checksum"); + }); + + it("decodes sui bech32 private key correctly", async () => { + const keySuiBech32 = + "suiprivkey1qpj5xd9396rxsu7h45tzccalhuf95e4pygls3ps9txszn9ywpwsnznaeq0l"; + const { words } = bech32.decode(keySuiBech32); + const keyBytes = Uint8Array.from(bech32.fromWords(words)).subarray(1); // Remove version byte at start + expect(keyBytes.length).toEqual(32); + const decodedKey = await TKHQ.decodeKey(keySuiBech32, "SUI_BECH32"); + expect(decodedKey.length).toEqual(keyBytes.length); + for (let i = 0; i < decodedKey.length; i++) { + expect(decodedKey[i]).toEqual(keyBytes[i]); + } + }); + + // SUI Bech32 negative tests + it("rejects sui private key with wrong HRP", async () => { + // Create a valid bech32 string with wrong prefix + const schemeFlag = 0x00; + const privateKey = new Uint8Array(32).fill(0x42); + const payload = new Uint8Array([schemeFlag, ...privateKey]); + const words = bech32.toWords(payload); + const wrongHrp = bech32.encode("sui", words); // Wrong prefix, should be "suiprivkey" + + await expect(TKHQ.decodeKey(wrongHrp, "SUI_BECH32")).rejects.toThrow( + 'invalid SUI private key human-readable part (HRP): expected "suiprivkey"' + ); + }); + + it("rejects sui private key with invalid scheme flag", async () => { + // Construct a valid bech32 string with scheme flag = 0x01 (Secp256k1) + // Format: scheme_flag (1 byte) + private_key (32 bytes) = 33 bytes total + const schemeFlag = 0x01; // Secp256k1 + const privateKey = new Uint8Array(32).fill(0x42); // dummy 32-byte key + const payload = new Uint8Array([schemeFlag, ...privateKey]); + + // Convert to bech32 words and encode + const words = bech32.toWords(payload); + const secp256k1Key = bech32.encode("suiprivkey", words); + + await expect(TKHQ.decodeKey(secp256k1Key, "SUI_BECH32")).rejects.toThrow( + "invalid SUI private key scheme flag: expected 0 (Ed25519)" + ); + }); + it("decodes hex-encoded private key correctly by default", async () => { const keyHex = "0x13eff5b3f9c63eab5d53cff5149f01606b69325496e0e98b53afa938d890cd2e"; const keyBytes = TKHQ.uint8arrayFromHexString(keyHex.slice(2)); - const decodedKey = TKHQ.decodeKey(keyHex); + const decodedKey = await TKHQ.decodeKey(keyHex); expect(decodedKey.length).toEqual(keyBytes.length); for (let i = 0; i < decodedKey.length; i++) { expect(decodedKey[i]).toEqual(keyBytes[i]); @@ -110,7 +182,7 @@ describe("TKHQ", () => { const keyHex = "0x13eff5b3f9c63eab5d53cff5149f01606b69325496e0e98b53afa938d890cd2e"; const keyBytes = TKHQ.uint8arrayFromHexString(keyHex.slice(2)); - const decodedKey = TKHQ.decodeKey(keyHex, "HEXADECIMAL"); + const decodedKey = await TKHQ.decodeKey(keyHex, "HEXADECIMAL"); expect(decodedKey.length).toEqual(keyBytes.length); for (let i = 0; i < decodedKey.length; i++) { expect(decodedKey[i]).toEqual(keyBytes[i]); @@ -123,7 +195,7 @@ describe("TKHQ", () => { const keyBytes = TKHQ.base58Decode(keySol); expect(keyBytes.length).toEqual(64); const keyPrivBytes = keyBytes.subarray(0, 32); - const decodedKey = TKHQ.decodeKey(keySol, "SOLANA"); + const decodedKey = await TKHQ.decodeKey(keySol, "SOLANA"); expect(decodedKey.length).toEqual(keyPrivBytes.length); for (let i = 0; i < decodedKey.length; i++) { expect(decodedKey[i]).toEqual(keyPrivBytes[i]); diff --git a/import/package-lock.json b/import/package-lock.json index 6e949f5..a8ad0f5 100644 --- a/import/package-lock.json +++ b/import/package-lock.json @@ -9,7 +9,8 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "@hpke/core": "1.7.5" + "@hpke/core": "1.7.5", + "bech32": "2.0.0" }, "devDependencies": { "@babel/core": "7.23.0", @@ -3571,6 +3572,11 @@ "dev": true, "license": "MIT" }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -3585,24 +3591,23 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, - "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -3619,6 +3624,26 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3639,6 +3664,15 @@ "dev": true, "license": "MIT" }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", @@ -5454,40 +5488,39 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -8090,9 +8123,10 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -8631,11 +8665,10 @@ } }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -9307,13 +9340,12 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -9369,27 +9401,45 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, - "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -9397,6 +9447,15 @@ "node": ">=0.10.0" } }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/rc": { "version": "1.2.8", "dev": true, diff --git a/import/package.json b/import/package.json index 99dff63..dd70f70 100644 --- a/import/package.json +++ b/import/package.json @@ -17,7 +17,8 @@ "description": "Import iframe with webpack-managed dependencies", "license": "MIT", "dependencies": { - "@hpke/core": "1.7.5" + "@hpke/core": "1.7.5", + "bech32": "2.0.0" }, "devDependencies": { "@babel/core": "7.23.0", diff --git a/import/src/index.js b/import/src/index.js index a0a8e17..c031182 100644 --- a/import/src/index.js +++ b/import/src/index.js @@ -313,7 +313,7 @@ async function onExtractKeyEncryptedBundle(keyFormat, requestId) { if (!plaintext) { throw new Error("no private key entered"); } - const plaintextBuf = TKHQ.decodeKey(plaintext, keyFormat); + const plaintextBuf = await TKHQ.decodeKey(plaintext, keyFormat); // Encrypt the bundle using the enclave target public key const encryptedBundle = await HpkeEncrypt({ diff --git a/import/src/turnkey-core.js b/import/src/turnkey-core.js index 8b17841..f47a386 100644 --- a/import/src/turnkey-core.js +++ b/import/src/turnkey-core.js @@ -1,3 +1,5 @@ +import { bech32 } from "bech32"; + /** constants for LocalStorage */ const TURNKEY_TARGET_EMBEDDED_KEY = "TURNKEY_TARGET_EMBEDDED_KEY"; const TURNKEY_SETTINGS = "TURNKEY_SETTINGS"; @@ -155,7 +157,6 @@ function uint8arrayToHexString(buffer) { function base58Decode(s) { // See https://en.bitcoin.it/wiki/Base58Check_encoding var alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; - var decoded = BigInt(0); var decodedBytes = []; var leadingZeros = []; for (var i = 0; i < s.length; i++) { @@ -195,14 +196,57 @@ function base58Decode(s) { return new Uint8Array(result); } +/** + * Decodes a base58check-encoded string and verifies the checksum. + * Base58Check encoding includes a 4-byte checksum at the end to detect errors. + * The checksum is the first 4 bytes of SHA256(SHA256(payload)). + * This function throws an error if the checksum is invalid. + * @param {string} s The base58check-encoded string. + * @return {Promise} The decoded payload (without checksum). + */ +async function base58CheckDecode(s) { + const decoded = base58Decode(s); + + if (decoded.length < 5) { + throw new Error( + `invalid base58check length: expected at least 5 bytes, got ${decoded.length}` + ); + } + + const payload = decoded.subarray(0, decoded.length - 4); + const checksum = decoded.subarray(decoded.length - 4); + + const subtle = getSubtleCrypto(); + if (!subtle) { + throw new Error("WebCrypto subtle API is unavailable"); + } + + // Compute double SHA256 hash + const hash1Buf = await subtle.digest("SHA-256", payload); + const hash1 = new Uint8Array(hash1Buf); + const hash2Buf = await subtle.digest("SHA-256", hash1); + const hash2 = new Uint8Array(hash2Buf); + const computedChecksum = hash2.subarray(0, 4); + + // Verify checksum + for (let i = 0; i < 4; i++) { + if (checksum[i] !== computedChecksum[i]) { + throw new Error("invalid base58check checksum"); + } + } + + return payload; +} + /** * Returns private key bytes from a private key, represented in * the encoding and format specified by `keyFormat`. Defaults to * hex-encoding if `keyFormat` isn't passed. * @param {string} privateKey - * @param {string} keyFormat Can be "HEXADECIMAL" or "SOLANA" + * @param {string} keyFormat Can be "HEXADECIMAL", "SUI_BECH32", "BITCOIN_MAINNET_WIF", "BITCOIN_TESTNET_WIF" or "SOLANA" + * @return {Promise} */ -function decodeKey(privateKey, keyFormat) { +async function decodeKey(privateKey, keyFormat) { switch (keyFormat) { case "SOLANA": { const decodedKeyBytes = base58Decode(privateKey); @@ -218,6 +262,60 @@ function decodeKey(privateKey, keyFormat) { return uint8arrayFromHexString(privateKey.slice(2)); } return uint8arrayFromHexString(privateKey); + case "BITCOIN_MAINNET_WIF": + case "BITCOIN_TESTNET_WIF": { + const payload = await base58CheckDecode(privateKey); + + const version = payload[0]; + const keyAndFlags = payload.subarray(1); + + // 0x80 = mainnet, 0xEF = testnet + if (version !== 0x80 && version !== 0xef) { + throw new Error( + `invalid WIF version byte: ${version}. Expected 0x80 (mainnet) or 0xEF (testnet).` + ); + } + + if (keyAndFlags.length === 32) { + throw new Error( + "uncompressed WIF not supported; please use a compressed WIF key" + ); + } + + if (keyAndFlags.length === 33 && keyAndFlags[32] === 0x01) { + return keyAndFlags.subarray(0, 32); + } + + throw new Error("invalid WIF payload format"); + } + case "SUI_BECH32": { + const { prefix, words } = bech32.decode(privateKey); + + if (prefix !== "suiprivkey") { + throw new Error( + `invalid SUI private key human-readable part (HRP): expected "suiprivkey"` + ); + } + + const bytes = bech32.fromWords(words); + if (bytes.length !== 33) { + throw new Error( + `invalid SUI private key length: expected 33 bytes, got ${bytes.length}` + ); + } + + const schemeFlag = bytes[0]; + const privkey = bytes.slice(1); + + // schemeFlag = 0 is Ed25519; We currently only support Ed25519 keys for SUI. + if (schemeFlag !== 0) { + throw new Error( + `invalid SUI private key scheme flag: expected 0 (Ed25519). Turnkey only supports Ed25519 keys for SUI.` + ); + } + + return new Uint8Array(privkey); + } default: console.warn( `invalid key format: ${keyFormat}. Defaulting to HEXADECIMAL.` @@ -579,6 +677,7 @@ export { uint8arrayFromHexString, uint8arrayToHexString, base58Decode, + base58CheckDecode, decodeKey, setParentFrameMessageChannelPort, normalizePadding,