shogun-core 5.2.0 → 5.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -1143
- package/dist/browser/defaultVendors-node_modules_hpke_chacha20poly1305_esm_mod_js.shogun-core.js +1220 -0
- package/dist/browser/defaultVendors-node_modules_hpke_chacha20poly1305_esm_mod_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_hpke_hybridkem-x-wing_esm_mod_js.shogun-core.js +844 -0
- package/dist/browser/defaultVendors-node_modules_hpke_hybridkem-x-wing_esm_mod_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_mlkem_esm_mod_js.shogun-core.js +2335 -0
- package/dist/browser/defaultVendors-node_modules_mlkem_esm_mod_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_noble_ciphers_chacha_js.shogun-core.js +999 -0
- package/dist/browser/defaultVendors-node_modules_noble_ciphers_chacha_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js +1651 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_edwards_js-node_modules_noble_curves_es-a82056.shogun-core.js +825 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_edwards_js-node_modules_noble_curves_es-a82056.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed25519_js.shogun-core.js +508 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed25519_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js +747 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js +1608 -0
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_noble_post-quantum_ml-dsa_js.shogun-core.js +2117 -0
- package/dist/browser/defaultVendors-node_modules_noble_post-quantum_ml-dsa_js.shogun-core.js.map +1 -0
- package/dist/browser/defaultVendors-node_modules_openpgp_dist_openpgp_min_mjs.shogun-core.js +86 -0
- package/dist/browser/defaultVendors-node_modules_openpgp_dist_openpgp_min_mjs.shogun-core.js.map +1 -0
- package/dist/browser/node_modules_hpke_ml-kem_esm_mod_js.shogun-core.js +539 -0
- package/dist/browser/node_modules_hpke_ml-kem_esm_mod_js.shogun-core.js.map +1 -0
- package/dist/browser/shogun-core.js +160386 -0
- package/dist/browser/shogun-core.js.map +1 -0
- package/dist/config/simplified-config.js +236 -0
- package/dist/core.js +329 -0
- package/dist/crypto/asymmetric.js +99 -0
- package/dist/crypto/double-ratchet.js +370 -0
- package/dist/crypto/file-encryption.js +213 -0
- package/dist/crypto/hashing.js +87 -0
- package/dist/crypto/index.js +34 -0
- package/dist/crypto/mls-codec.js +202 -0
- package/dist/crypto/mls.js +550 -0
- package/dist/crypto/pgp.js +390 -0
- package/dist/crypto/random-generation.js +341 -0
- package/dist/crypto/sframe.js +350 -0
- package/dist/crypto/signal-protocol.js +376 -0
- package/dist/crypto/symmetric.js +91 -0
- package/dist/crypto/types.js +2 -0
- package/dist/crypto/utils.js +140 -0
- package/dist/examples/auth-test.js +253 -0
- package/dist/examples/crypto-identity-example.js +151 -0
- package/dist/examples/crypto-working-test.js +83 -0
- package/dist/examples/double-ratchet-test.js +155 -0
- package/dist/examples/mls-advanced-example.js +294 -0
- package/dist/examples/mls-sframe-test.js +304 -0
- package/dist/examples/pgp-example.js +200 -0
- package/dist/examples/quick-auth-test.js +61 -0
- package/dist/examples/random-generation-test.js +151 -0
- package/dist/examples/signal-protocol-test.js +38 -0
- package/dist/examples/simple-api-test.js +114 -0
- package/dist/examples/simple-crypto-identity-example.js +84 -0
- package/dist/examples/timeout-test.js +227 -0
- package/dist/examples/zkproof-credentials-example.js +212 -0
- package/dist/examples/zkproof-example.js +201 -0
- package/dist/gundb/api.js +435 -0
- package/dist/gundb/crypto.js +283 -0
- package/dist/gundb/db.js +1946 -0
- package/dist/gundb/derive.js +232 -0
- package/dist/gundb/errors.js +76 -0
- package/dist/gundb/index.js +22 -0
- package/dist/gundb/rxjs.js +447 -0
- package/dist/gundb/types.js +5 -0
- package/dist/index.js +58 -0
- package/dist/interfaces/common.js +2 -0
- package/dist/interfaces/events.js +40 -0
- package/dist/interfaces/plugin.js +2 -0
- package/dist/interfaces/shogun.js +37 -0
- package/dist/managers/AuthManager.js +226 -0
- package/dist/managers/CoreInitializer.js +228 -0
- package/dist/managers/CryptoIdentityManager.js +366 -0
- package/dist/managers/EventManager.js +70 -0
- package/dist/managers/PluginManager.js +299 -0
- package/dist/plugins/base.js +50 -0
- package/dist/plugins/index.js +32 -0
- package/dist/plugins/nostr/index.js +20 -0
- package/dist/plugins/nostr/nostrConnector.js +419 -0
- package/dist/plugins/nostr/nostrConnectorPlugin.js +453 -0
- package/dist/plugins/nostr/nostrSigner.js +319 -0
- package/dist/plugins/nostr/types.js +2 -0
- package/dist/plugins/smartwallet/index.js +18 -0
- package/dist/plugins/smartwallet/smartWalletPlugin.js +511 -0
- package/dist/plugins/smartwallet/types.js +2 -0
- package/dist/plugins/web3/index.js +20 -0
- package/dist/plugins/web3/types.js +2 -0
- package/dist/plugins/web3/web3Connector.js +533 -0
- package/dist/plugins/web3/web3ConnectorPlugin.js +455 -0
- package/dist/plugins/web3/web3Signer.js +314 -0
- package/dist/plugins/webauthn/index.js +19 -0
- package/dist/plugins/webauthn/types.js +14 -0
- package/dist/plugins/webauthn/webauthn.js +496 -0
- package/dist/plugins/webauthn/webauthnPlugin.js +489 -0
- package/dist/plugins/webauthn/webauthnSigner.js +310 -0
- package/dist/plugins/zkproof/index.js +53 -0
- package/dist/plugins/zkproof/types.js +2 -0
- package/dist/plugins/zkproof/zkCredentials.js +213 -0
- package/dist/plugins/zkproof/zkProofConnector.js +198 -0
- package/dist/plugins/zkproof/zkProofPlugin.js +272 -0
- package/dist/storage/storage.js +145 -0
- package/dist/types/config/simplified-config.d.ts +114 -0
- package/dist/types/core.d.ts +305 -0
- package/dist/types/crypto/asymmetric.d.ts +6 -0
- package/dist/types/crypto/double-ratchet.d.ts +22 -0
- package/dist/types/crypto/file-encryption.d.ts +19 -0
- package/dist/types/crypto/hashing.d.ts +9 -0
- package/dist/types/crypto/index.d.ts +13 -0
- package/dist/types/crypto/mls-codec.d.ts +39 -0
- package/dist/types/crypto/mls.d.ts +130 -0
- package/dist/types/crypto/pgp.d.ts +95 -0
- package/dist/types/crypto/random-generation.d.ts +35 -0
- package/dist/types/crypto/sframe.d.ts +102 -0
- package/dist/types/crypto/signal-protocol.d.ts +26 -0
- package/dist/types/crypto/symmetric.d.ts +9 -0
- package/dist/types/crypto/types.d.ts +144 -0
- package/dist/types/crypto/utils.d.ts +22 -0
- package/dist/types/examples/auth-test.d.ts +8 -0
- package/dist/types/examples/crypto-identity-example.d.ts +5 -0
- package/dist/types/examples/crypto-working-test.d.ts +1 -0
- package/dist/types/examples/double-ratchet-test.d.ts +1 -0
- package/dist/types/examples/mls-advanced-example.d.ts +53 -0
- package/dist/types/examples/mls-sframe-test.d.ts +1 -0
- package/dist/types/examples/pgp-example.d.ts +75 -0
- package/dist/types/examples/quick-auth-test.d.ts +8 -0
- package/dist/types/examples/random-generation-test.d.ts +1 -0
- package/dist/types/examples/signal-protocol-test.d.ts +1 -0
- package/dist/types/examples/simple-api-test.d.ts +10 -0
- package/dist/types/examples/simple-crypto-identity-example.d.ts +6 -0
- package/dist/types/examples/timeout-test.d.ts +8 -0
- package/dist/types/examples/zkproof-credentials-example.d.ts +12 -0
- package/dist/types/examples/zkproof-example.d.ts +11 -0
- package/dist/types/gundb/api.d.ts +185 -0
- package/dist/types/gundb/crypto.d.ts +95 -0
- package/dist/types/gundb/db.d.ts +397 -0
- package/dist/types/gundb/derive.d.ts +21 -0
- package/dist/types/gundb/errors.d.ts +42 -0
- package/dist/types/gundb/index.d.ts +3 -0
- package/dist/types/gundb/rxjs.d.ts +110 -0
- package/dist/types/gundb/types.d.ts +255 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/interfaces/common.d.ts +85 -0
- package/dist/types/interfaces/events.d.ts +131 -0
- package/dist/types/interfaces/plugin.d.ts +162 -0
- package/dist/types/interfaces/shogun.d.ts +208 -0
- package/dist/types/managers/AuthManager.d.ts +72 -0
- package/dist/types/managers/CoreInitializer.d.ts +40 -0
- package/dist/types/managers/CryptoIdentityManager.d.ts +102 -0
- package/dist/types/managers/EventManager.d.ts +49 -0
- package/dist/types/managers/PluginManager.d.ts +145 -0
- package/dist/types/plugins/base.d.ts +35 -0
- package/dist/types/plugins/index.d.ts +18 -0
- package/dist/types/plugins/nostr/index.d.ts +4 -0
- package/dist/types/plugins/nostr/nostrConnector.d.ts +119 -0
- package/dist/types/plugins/nostr/nostrConnectorPlugin.d.ts +163 -0
- package/dist/types/plugins/nostr/nostrSigner.d.ts +105 -0
- package/dist/types/plugins/nostr/types.d.ts +122 -0
- package/dist/types/plugins/smartwallet/index.d.ts +2 -0
- package/dist/types/plugins/smartwallet/smartWalletPlugin.d.ts +67 -0
- package/dist/types/plugins/smartwallet/types.d.ts +80 -0
- package/dist/types/plugins/web3/index.d.ts +4 -0
- package/dist/types/plugins/web3/types.d.ts +107 -0
- package/dist/types/plugins/web3/web3Connector.d.ts +129 -0
- package/dist/types/plugins/web3/web3ConnectorPlugin.d.ts +160 -0
- package/dist/types/plugins/web3/web3Signer.d.ts +114 -0
- package/dist/types/plugins/webauthn/index.d.ts +3 -0
- package/dist/types/plugins/webauthn/types.d.ts +183 -0
- package/dist/types/plugins/webauthn/webauthn.d.ts +129 -0
- package/dist/types/plugins/webauthn/webauthnPlugin.d.ts +179 -0
- package/dist/types/plugins/webauthn/webauthnSigner.d.ts +91 -0
- package/dist/types/plugins/zkproof/index.d.ts +48 -0
- package/dist/types/plugins/zkproof/types.d.ts +123 -0
- package/dist/types/plugins/zkproof/zkCredentials.d.ts +112 -0
- package/dist/types/plugins/zkproof/zkProofConnector.d.ts +46 -0
- package/dist/types/plugins/zkproof/zkProofPlugin.d.ts +76 -0
- package/dist/types/storage/storage.d.ts +51 -0
- package/dist/types/utils/errorHandler.d.ts +119 -0
- package/dist/types/utils/eventEmitter.d.ts +39 -0
- package/dist/types/utils/seedPhrase.d.ts +50 -0
- package/dist/types/utils/validation.d.ts +27 -0
- package/dist/utils/errorHandler.js +246 -0
- package/dist/utils/eventEmitter.js +79 -0
- package/dist/utils/seedPhrase.js +97 -0
- package/dist/utils/validation.js +81 -0
- package/package.json +10 -57
package/dist/browser/defaultVendors-node_modules_hpke_hybridkem-x-wing_esm_mod_js.shogun-core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultVendors-node_modules_hpke_hybridkem-x-wing_esm_mod_js.shogun-core.js","mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,gBAAgB,gBAAI,wBAAwB;AAC5C,gBAAgB,gBAAI,uBAAuB;AAC3C,iBAAiB,gBAAI;AACrB,iBAAiB,gBAAI;AACrB,iBAAiB,gBAAI;AACrB,iBAAiB,gBAAI;AACrB,kBAAkB,gBAAI;AACtB,kBAAkB,gBAAI;AACtB,kBAAkB,gBAAI;AACtB,uBAAuB,gBAAI;AAC3B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,sBAAsB;AACtB;AACA,qBAAqB;AACrB;AACA;AACO;AACP;AACA,WAAW,sBAAU;AACrB;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC,mBAAmB,eAAG,CAAC,gBAAI;AAC3B,SAAS;AACT;AACA,KAAK;AACL,CAAC;;;AClE6D;AACvD,yBAAyB,wBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAI,CAAC,cAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChBgM;AAChJ;AACH;AAC7C;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAgB;AACtC;AACA;AACA;AACA;AACA,gCAAgC,MAAM;AACtC,2BAA2B,kBAAU,6BAA6B,kBAAU;AAC5E;AACA,qBAAqB;AACrB;AACA;AACA,sBAAsB,yBAAiB;AACvC;AACA;AACA;AACA;AACA,2DAA2D,aAAK,SAAS,qBAAa;AACtF,iEAAiE,gBAAQ,EAAE,aAAK;AAChF,2BAA2B,kBAAU,6CAA6C,kBAAU;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0BAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAc;AACpC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAU,iFAAiF,kBAAU;AAC7H,SAAS;AACT;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAU,WAAW,4BAAgB;AACjE;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAU,WAAW,4BAAgB,oBAAoB,kBAAU;AAC/F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,2BAA2B,MAAM;AACjC,4BAA4B,kBAAU;AACtC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6DAA6D,mBAAmB;AAChF;AACA;AACA,IAAI,gEAAgE;AACpE;AACA;AACA,IAAI,6EAA6E;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,YAAY,wBAAwB;AACpC;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACO,oCAAoC,aAAK;AAChD;AACA,wBAAwB,UAAU;AAClC,cAAc,aAAK;AACnB;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAK;AACxB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;AC5QqE;AACpB;;;ACDjD;AACqD;AACoL;AACzO,MAAM,cAAQ;AAC0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,IAAI,4DAA4D;AAChE;AACA;AACA,IAAI,6EAA6E;AACjF;AACA;AACA;AACA;AACA,YAAY,qCAAqC;AACjD,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAK;AACxB,SAAS;AACT;AACA;AACA;AACA;AACA,mBAAmB,cAAQ;AAC3B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sBAAsB,YAAQ;AAC9B,2BAA2B,MAAM,KAAK,UAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,sBAAsB,0BAAkB;AACxC;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC,gBAAgB,mBAAmB;AACnC,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA,sBAAsB,yBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,sBAAsB,0BAAkB;AACxC;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB,wBAAwB;AACzC,gBAAgB,oBAAoB;AACpC,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA,uBAAuB,YAAQ,UAAU,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,sBAAsB,0BAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAU,CAAC,cAAQ,wDAAwD,kBAAU;AAC5G;AACA;AACA,sBAAsB,wBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU,2BAA2B,kBAAkB,GAAG;AAC3E,gBAAgB,mBAAmB;AACnC,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA,yCAAyC,2BAAe;AACxD;AACA,0BAA0B,yBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yBAAiB;AAC3C;AACA;AACA;AACA;AACA,sBAAsB,yBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAM;AAC3B;AACA;AACA;AACA,sBAAsB,kBAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC,gBAAgB,mBAAmB;AACnC,gBAAgB,YAAY;AAC5B;AACA;AACA,oBAAoB,2BAAe;AACnC;AACA;AACA;AACA,sBAAsB,yBAAiB;AACvC;AACA;AACA;AACA,sBAAsB,yBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAU;AAChC;AACA;AACA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA,0BAA0B,sBAAU;AACpC;AACA;AACA;AACA;AACA,iBAAiB,mCAAmC;AACpD;AACA;AACA;AACA,oBAAoB,kBAAM;AAC1B;AACA;AACA;AACA;AACA,iBAAiB,2DAA2D;AAC5E;AACA;AACA,yBAAyB,YAAQ,UAAU,WAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,iBAAiB;AAC7E;AACA;AACA,wDAAwD,iBAAiB;AACzE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wDAAwD,aAAa;AACrE;AACA,wBAAwB,kBAAU;AAClC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,iBAAiB;AAC7E;AACA;AACA,wDAAwD,iBAAiB;AACzE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wDAAwD,aAAa;AACrE;AACA,wBAAwB,kBAAU;AAClC,SAAS;AACT;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA,8DAA8D,cAAQ;AACtE,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAAgB;AACpC,SAAS;AACT;AACA;;;ACjcuC","sources":["webpack://ShogunCore/./node_modules/@hpke/dhkem-x25519/esm/src/primitives/x25519.js","webpack://ShogunCore/./node_modules/@hpke/dhkem-x25519/esm/src/hkdfSha256.js","webpack://ShogunCore/./node_modules/@hpke/dhkem-x25519/esm/src/dhkemX25519.js","webpack://ShogunCore/./node_modules/@hpke/dhkem-x25519/esm/mod.js","webpack://ShogunCore/./node_modules/@hpke/hybridkem-x-wing/esm/src/xWing.js","webpack://ShogunCore/./node_modules/@hpke/hybridkem-x-wing/esm/mod.js"],"sourcesContent":["/**\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/ed25519.ts\n */\n/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { mod, montgomery, pow2 } from \"@hpke/common\";\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _5n = BigInt(5);\n// P = 2n**255n - 19n\nconst ed25519_CURVE_p = BigInt(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed\");\nfunction ed25519_pow_2_252_3(x) {\n const _10n = BigInt(10);\n const _20n = BigInt(20);\n const _40n = BigInt(40);\n const _80n = BigInt(80);\n const P = ed25519_CURVE_p;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\nexport const x25519 = /* @__PURE__ */ (() => {\n const P = ed25519_CURVE_p;\n return montgomery({\n P,\n type: \"x25519\",\n powPminus2: (x) => {\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n });\n})();\n","import { HkdfSha256Native, hmac, sha256 } from \"@hpke/common\";\nexport class HkdfSha256 extends HkdfSha256Native {\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 return hmac(sha256, new Uint8Array(salt), new Uint8Array(ikm))\n .buffer;\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}\n","import { base64UrlToBytes, DeriveKeyPairError, DeserializeError, Dhkem, EMPTY, KEM_USAGES, KemId, LABEL_DKP_PRK, LABEL_SK, NotSupportedError, SerializeError, XCryptoKey, } from \"@hpke/common\";\nimport { x25519 } from \"./primitives/x25519.js\";\nimport { HkdfSha256 } from \"./hkdfSha256.js\";\nconst ALG_NAME = \"X25519\";\nexport class X25519 {\n constructor(hkdf) {\n Object.defineProperty(this, \"_hkdf\", {\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 this._hkdf = hkdf;\n this._nPk = 32;\n this._nSk = 32;\n }\n async serializePublicKey(key) {\n try {\n return await this._serializePublicKey(key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePublicKey(key) {\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 try {\n return await this._serializePrivateKey(key);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async deserializePrivateKey(key) {\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 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 try {\n const rawSk = await x25519.utils.randomSecretKey();\n const sk = new XCryptoKey(ALG_NAME, rawSk, \"private\", KEM_USAGES);\n const pk = await this.derivePublicKey(sk);\n return { publicKey: pk, privateKey: sk };\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n async deriveKeyPair(ikm) {\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 sk = new XCryptoKey(ALG_NAME, new Uint8Array(rawSk), \"private\", KEM_USAGES);\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 try {\n return await this._derivePublicKey(key);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async dh(sk, pk) {\n try {\n return await this._dh(sk, pk);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n async derive(sk, pk) {\n try {\n return await this._derive(sk, pk);\n }\n catch (e) {\n throw new SerializeError(e);\n }\n }\n _serializePublicKey(k) {\n return new Promise((resolve) => {\n resolve(k.key.buffer);\n });\n }\n _serializePrivateKey(k) {\n return new Promise((resolve) => {\n resolve(k.key.buffer);\n });\n }\n _importRawKey(key, isPublic) {\n return new Promise((resolve, reject) => {\n if (isPublic && key.byteLength !== this._nPk) {\n reject(new Error(\"Invalid length of the key\"));\n }\n if (!isPublic && key.byteLength !== this._nSk) {\n reject(new Error(\"Invalid length of the key\"));\n }\n resolve(new XCryptoKey(ALG_NAME, new Uint8Array(key), isPublic ? \"public\" : \"private\", isPublic ? [] : KEM_USAGES));\n });\n }\n _importJWK(key, isPublic) {\n return new Promise((resolve, reject) => {\n if (typeof key.kty === \"undefined\" || key.kty !== \"OKP\") {\n reject(new Error(`Invalid kty: ${key.kty}`));\n }\n if (typeof key.crv === \"undefined\" || key.crv !== \"X25519\") {\n reject(new Error(`Invalid crv: ${key.crv}`));\n }\n if (isPublic) {\n if (typeof key.d !== \"undefined\") {\n reject(new Error(\"Invalid key: `d` should not be set\"));\n }\n if (typeof key.x === \"undefined\") {\n reject(new Error(\"Invalid key: `x` not found\"));\n }\n resolve(new XCryptoKey(ALG_NAME, base64UrlToBytes(key.x), \"public\"));\n }\n else {\n if (typeof key.d !== \"string\") {\n reject(new Error(\"Invalid key: `d` not found\"));\n }\n resolve(new XCryptoKey(ALG_NAME, base64UrlToBytes(key.d), \"private\", KEM_USAGES));\n }\n });\n }\n _derivePublicKey(k) {\n return new Promise((resolve, reject) => {\n try {\n const pk = x25519.getPublicKey(k.key);\n resolve(new XCryptoKey(ALG_NAME, pk, \"public\"));\n }\n catch (e) {\n reject(e);\n }\n });\n }\n _dh(sk, pk) {\n return new Promise((resolve, reject) => {\n try {\n resolve(x25519.getSharedSecret(sk.key, pk.key).buffer);\n }\n catch (e) {\n reject(e);\n }\n });\n }\n _derive(sk, pk) {\n return new Promise((resolve, reject) => {\n try {\n resolve(x25519.getSharedSecret(sk, pk));\n }\n catch (e) {\n reject(e);\n }\n });\n }\n}\n/**\n * The DHKEM(X25519, HKDF-SHA256) for HPKE KEM implementing {@link KemInterface}.\n *\n * This class is implemented using\n * {@link https://github.com/paulmillr/noble-curves | @noble/curves}.\n *\n * The instance of this class can be specified to the\n * {@link https://jsr.io/@hpke/core/doc/~/CipherSuiteParams | CipherSuiteParams} as follows:\n *\n * @example Use with `@hpke/core`:\n *\n * ```ts\n * import {\n * Aes128Gcm,\n * CipherSuite,\n * HkdfSha256,\n * } from \"@hpke/core\";\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 DhkemX25519HkdfSha256 extends Dhkem {\n constructor() {\n const kdf = new HkdfSha256();\n super(KemId.DhkemX25519HkdfSha256, new X25519(kdf), kdf);\n /** KemId.DhkemX25519HkdfSha256 (0x0020) */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.DhkemX25519HkdfSha256\n });\n /** 32 */\n Object.defineProperty(this, \"secretSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n /** 32 */\n Object.defineProperty(this, \"encSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n /** 32 */\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n /** 32 */\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n }\n}\n","export { DhkemX25519HkdfSha256, X25519 } from \"./src/dhkemX25519.js\";\nexport { HkdfSha256 } from \"./src/hkdfSha256.js\";\n","// @ts-ignore: Unreachable code error\nimport { MlKem768, sha3_256, shake256 } from \"mlkem\";\nimport { base64UrlToBytes, concat, DecapError, DeriveKeyPairError, DeserializeError, EncapError, InvalidParamError, isCryptoKeyPair, KEM_USAGES, KemId, loadCrypto, NotSupportedError, SerializeError, XCryptoKey, } from \"@hpke/common\";\nconst ALG_NAME = \"X-Wing\";\nimport { HkdfSha256, X25519 } from \"@hpke/dhkem-x25519\";\n// deno-fmt-ignore\nconst X25519_BASE = new Uint8Array([\n 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\n// XWingLabel = concat(\n// \"\\./\",\n// \"/^\\\",\n// );\n// deno-fmt-ignore\nconst XWING_LABEL = new Uint8Array([92, 46, 47, 47, 94, 92]);\nfunction combiner(ssM, ssX, ctX, pkX) {\n const ret = new Uint8Array(ssM.length + ssX.length + ctX.length + pkX.length + XWING_LABEL.length);\n ret.set(ssM, 0);\n ret.set(ssX, ssM.length);\n ret.set(ctX, ssM.length + ssX.length);\n ret.set(pkX, ssM.length + ssX.length + ctX.length);\n ret.set(XWING_LABEL, ssM.length + ssX.length + ctX.length + pkX.length);\n return sha3_256.create().update(ret).digest();\n}\n/**\n * The Hybrid Post-Quantum KEM (X25519, Kyber768).\n *\n * This class is implemented using\n * {@link https://github.com/Argyle-Software/kyber | pqc-kyber }.\n *\n * The instance of this class can be specified to the\n * {@link https://jsr.io/@hpke/core/doc/~/CipherSuiteParams | CipherSuiteParams} as follows:\n *\n * @example Use with `@hpke/core`:\n *\n * ```ts\n * import { Aes128Gcm, CipherSuite, HkdfSha256 } from \"@hpke/core\";\n * import { XWing } from \"@hpke/hybridkem-x-wing\";\n * const suite = new CipherSuite({\n * kem: new XWing(),\n * kdf: new HkdfSha256(),\n * aead: new Aes128Gcm(),\n * });\n * ```\n */\nexport class XWing {\n constructor() {\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KemId.XWing\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: ALG_NAME\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: 1120\n });\n Object.defineProperty(this, \"publicKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1216\n });\n Object.defineProperty(this, \"privateKeySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 32\n });\n Object.defineProperty(this, \"auth\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_m\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_x25519\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_api\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: undefined\n });\n this._m = new MlKem768();\n this._x25519 = new X25519(new HkdfSha256());\n }\n async serializePublicKey(key) {\n await this._setup();\n try {\n return await this._serializePublicKey(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._deserializePublicKey(key);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n async serializePrivateKey(key) {\n await this._setup();\n try {\n return await this._serializePrivateKey(key);\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._deserializePrivateKey(key);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n /**\n * Generates a new key pair.\n *\n * @returns {Promise<CryptoKeyPair>} A promise that resolves with a new key pair.\n */\n async generateKeyPair() {\n await this._setup();\n const sk = new Uint8Array(32);\n try {\n this._api.getRandomValues(sk);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n try {\n const [_sk, pk] = await this._generateKeyPairDerand(sk);\n const dSk = await this.deserializePrivateKey(sk.buffer);\n const dPk = await this.deserializePublicKey(pk.buffer);\n return { privateKey: dSk, publicKey: dPk };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n /**\n * Generates a key pair from the secret key.\n * @param sk The secret key.\n * @returns {Promise<CryptoKeyPair>} A promise that resolves with a new key pair.\n * @throws {InvalidParamError} Thrown if the length of the secret key is not 32 bytes.\n * @throws {DeriveKeyPairError} Thrown if the key pair cannot be derived.\n */\n async generateKeyPairDerand(sk) {\n if (sk.byteLength !== 32) {\n throw new InvalidParamError(\"Invalid length of sk\");\n }\n try {\n const [_sk, pk] = await this._generateKeyPairDerand(sk);\n const dSk = await this.deserializePrivateKey(sk.buffer);\n const dPk = await this.deserializePublicKey(pk.buffer);\n return { privateKey: dSk, publicKey: dPk };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n /**\n * Derives a key pair from the input keying material.\n *\n * @param {ArrayBuffer} ikm The input keying material.\n * @returns {Promise<CryptoKeyPair>} A promise that resolves with a new key pair.\n * @throws {DeriveKeyPairError} Thrown if the key pair cannot be derived.\n * @throws {InvalidParamError} Thrown if the length of the IKM is not 32 bytes.\n */\n async deriveKeyPair(ikm) {\n await this._setup();\n try {\n const sk = shake256.create({ dkLen: 32 })\n .update(new Uint8Array(ikm))\n .digest();\n const [_sk, pk] = await this._generateKeyPairDerand(sk);\n const dSk = await this.deserializePrivateKey(sk.buffer);\n const dPk = await this.deserializePublicKey(pk.buffer);\n return { privateKey: dSk, publicKey: dPk };\n }\n catch (e) {\n throw new DeriveKeyPairError(e);\n }\n }\n /**\n * Imports a key from the input.\n * @param format The format of the key. \"raw\" or \"jwk\" can be specified.\n * @param key The key to import. If the format is \"raw\", the key must be an ArrayBuffer. If the format is \"jwk\", the key must be a JsonWebKey.\n * @param isPublic A boolean indicating whether the key is public or not. The default is true.\n * @returns {Promise<CryptoKey>} A promise that resolves with the imported key.\n * @throws {DeserializeError} Thrown if the key cannot be imported.\n */\n async importKey(format, key, isPublic = true) {\n await this._setup();\n try {\n let ret;\n if (format === \"jwk\") {\n if (key instanceof ArrayBuffer || key instanceof Uint8Array) {\n throw new Error(\"Invalid jwk key format\");\n }\n ret = await this._importJWK(key, isPublic);\n }\n else {\n if (key instanceof ArrayBuffer) {\n ret = new Uint8Array(key);\n }\n else if (key instanceof Uint8Array) {\n ret = key;\n }\n else {\n throw new Error(\"Invalid key format\");\n }\n }\n if (isPublic && ret.byteLength !== this.publicKeySize) {\n throw new Error(\"Invalid length of the key\");\n }\n if (!isPublic && ret.byteLength !== this.privateKeySize) {\n throw new Error(\"Invalid length of the key\");\n }\n return new XCryptoKey(ALG_NAME, ret, isPublic ? \"public\" : \"private\", isPublic ? [] : KEM_USAGES);\n }\n catch (e) {\n throw new DeserializeError(e);\n }\n }\n /**\n * Encapsulates the shared secret and the `ct` (ciphertext) as `enc`.\n * @param params The parameters for encapsulation.\n * @returns {Promise<{ sharedSecret: ArrayBuffer; enc: ArrayBuffer }>} A promise that resolves with the `ss` (shared secret) as `sharedSecret` and the `ct` (ciphertext) as `enc`.\n * @throws {InvalidParamError} Thrown if the length of the `ekm` is not 64 bytes.\n * @throws {EncapError} Thrown if the shared secret cannot be encapsulated.\n */\n async encap(params) {\n let ekm = undefined;\n if (params.ekm !== undefined && !isCryptoKeyPair(params.ekm)) {\n if (params.ekm.byteLength !== 64) {\n throw new InvalidParamError(\"ekm must be 64 bytes in length\");\n }\n ekm = params.ekm;\n }\n let ekM = undefined;\n let ekX;\n if (ekm !== undefined) {\n const ek = new Uint8Array(ekm);\n ekM = ek.subarray(0, 32);\n ekX = ek.subarray(32, 64);\n }\n else {\n ekX = new Uint8Array(32);\n try {\n this._api.getRandomValues(ekX);\n }\n catch (e) {\n throw new NotSupportedError(e);\n }\n }\n const pk = new Uint8Array(await this.serializePublicKey(params.recipientPublicKey));\n if (pk.byteLength !== 1216) {\n throw new InvalidParamError(\"Invalid length of recipientPublicKey\");\n }\n await this._setup();\n try {\n const pkM = pk.subarray(0, 1184);\n const pkX = pk.subarray(1184, 1216);\n const ctX = await this._x25519.derive(ekX, X25519_BASE);\n const ssX = await this._x25519.derive(ekX, pkX);\n const [ctM, ssM] = await this._m.encap(pkM, ekM);\n return {\n sharedSecret: combiner(ssM, ssX, ctX, pkX).buffer,\n enc: concat(ctM, ctX).buffer,\n };\n }\n catch (e) {\n throw new EncapError(e);\n }\n }\n /**\n * Decapsulates the `ss` (shared secret) from the `enc` and the recipient's private key.\n * The `enc` is the same as the `ct` (ciphertext) resulting from `X-Wing::Encapsulate(),\n * which is executed under the `encap()`.\n * @param params The parameters for decapsulation.\n * @returns {Promise<ArrayBuffer>} A promise that resolves with the shared secret.\n * @throws {InvalidParamError} Thrown if the length of the `enc` is not 1120 bytes.\n * @throws {DecapError} Thrown if the shared secret cannot be decapsulated.\n */\n async decap(params) {\n const rSk = isCryptoKeyPair(params.recipientKey)\n ? params.recipientKey.privateKey\n : params.recipientKey;\n if (params.enc.byteLength !== 1120) {\n throw new InvalidParamError(\"Invalid length of enc\");\n }\n const sk = new Uint8Array(await this.serializePrivateKey(rSk));\n if (sk.byteLength !== 32) {\n throw new InvalidParamError(\"Invalid length of recipientKey\");\n }\n await this._setup();\n try {\n const [skM, skX, _pkM, pkX] = await this._expandDecapsulationKey(sk);\n const ct = new Uint8Array(params.enc);\n const ctM = ct.subarray(0, 1088);\n const ctX = ct.subarray(1088);\n const ssM = await this._m.decap(ctM, skM);\n const ssX = await this._x25519.derive(skX, ctX);\n return combiner(ssM, ssX, ctX, pkX).buffer;\n }\n catch (e) {\n throw new DecapError(e);\n }\n }\n /**\n * Sets up the MlKemBase instance by loading the necessary crypto library.\n * If the crypto library is already loaded, this method does nothing.\n * @returns {Promise<void>} A promise that resolves when the setup is complete.\n */\n async _setup() {\n if (this._api !== undefined) {\n return;\n }\n this._api = await loadCrypto();\n }\n /**\n * Generates a key pair from the secret key.\n * @param sk The secret key.\n * @returns {Promise<[Uint8Array, Uint8Array]>} A promise that resolves with the key pair derived from the secret key.\n */\n async _generateKeyPairDerand(sk) {\n const [_skM, _skX, pkM, pkX] = await this._expandDecapsulationKey(sk);\n return [sk, concat(pkM, pkX)];\n }\n /**\n * Expands the decapsulation key.\n * @param sk The secret key.\n * @returns {Promise<[Uint8Array, Uint8Array, Uint8Array, Uint8Array]>} A promise that resolves with the keys derived by expanding the secret key.\n */\n async _expandDecapsulationKey(sk) {\n const expanded = shake256.create({ dkLen: 96 }).update(sk).digest();\n const [pkM, skM] = await this._m.deriveKeyPair(expanded.subarray(0, 64));\n const skX = expanded.subarray(64, 96);\n const pkX = await this._x25519.derive(skX, X25519_BASE);\n return [skM, skX, pkM, pkX];\n }\n _serializePublicKey(k) {\n return new Promise((resolve, reject) => {\n if (k.type !== \"public\") {\n reject(new Error(\"Not public key\"));\n }\n if (k.algorithm.name !== this.name) {\n reject(new Error(`Invalid algorithm name: ${k.algorithm.name}`));\n }\n if (k.key.byteLength !== this.publicKeySize) {\n reject(new Error(`Invalid key length: ${k.key.byteLength}`));\n }\n resolve(k.key.buffer);\n });\n }\n _deserializePublicKey(k) {\n return new Promise((resolve, reject) => {\n if (k.byteLength !== this.publicKeySize) {\n reject(new Error(`Invalid key length: ${k.byteLength}`));\n }\n resolve(new XCryptoKey(this.name, new Uint8Array(k), \"public\"));\n });\n }\n _serializePrivateKey(k) {\n return new Promise((resolve, reject) => {\n if (k.type !== \"private\") {\n reject(new Error(\"Not private key\"));\n }\n if (k.algorithm.name !== this.name) {\n reject(new Error(`Invalid algorithm name: ${k.algorithm.name}`));\n }\n if (k.key.byteLength !== this.privateKeySize) {\n reject(new Error(`Invalid key length: ${k.key.byteLength}`));\n }\n resolve(k.key.buffer);\n });\n }\n _deserializePrivateKey(k) {\n return new Promise((resolve, reject) => {\n if (k.byteLength !== this.privateKeySize) {\n reject(new Error(`Invalid key length: ${k.byteLength}`));\n }\n resolve(new XCryptoKey(this.name, new Uint8Array(k), \"private\", [\"deriveBits\"]));\n });\n }\n _importJWK(key, isPublic) {\n return new Promise((resolve, reject) => {\n if (typeof key.kty === \"undefined\" || key.kty !== \"AKP\") {\n reject(new Error(`Invalid kty: ${key.kty}`));\n }\n if (typeof key.alg === \"undefined\" || key.alg !== ALG_NAME) {\n reject(new Error(`Invalid alg: ${key.alg}`));\n }\n if (!isPublic) {\n if (typeof key.priv === \"undefined\") {\n reject(new Error(\"Invalid key: `priv` not found\"));\n }\n if (typeof key.key_ops !== \"undefined\" &&\n (key.key_ops.length !== 1 || key.key_ops[0] !== \"deriveBits\")) {\n reject(new Error(\"Invalid key: `key_ops` should be ['deriveBits']\"));\n }\n resolve(base64UrlToBytes(key.priv));\n }\n if (typeof key.priv !== \"undefined\") {\n reject(new Error(\"Invalid key: `priv` should not be set\"));\n }\n if (typeof key.pub === \"undefined\") {\n reject(new Error(\"Invalid key: `pub` not found\"));\n }\n if (typeof key.key_ops !== \"undefined\" && key.key_ops.length > 0) {\n reject(new Error(\"Invalid key: `key_ops` should not be set\"));\n }\n resolve(base64UrlToBytes(key.pub));\n });\n }\n}\n","export { XWing } from \"./src/xWing.js\";\n"],"names":[],"sourceRoot":""}
|