@suveren/gateway 0.40.0 → 0.41.1
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/content/guides/6-risks.md +1 -0
- package/dist/control-plane/index.mjs +182 -37
- package/dist/mcp-server/http.mjs +357 -71
- package/dist/ui/assets/{index-C-lA_7Lt.js → index-CO-dj98E.js} +27 -27
- package/dist/ui/index.html +1 -1
- package/node_modules/@hap/core/README.md +3 -3
- package/node_modules/@hap/core/dist/index.d.mts +567 -123
- package/node_modules/@hap/core/dist/index.d.ts +567 -123
- package/node_modules/@hap/core/dist/index.js +869 -23
- package/node_modules/@hap/core/dist/index.mjs +829 -22
- package/node_modules/@hap/core/node_modules/@hpke/core/LICENSE +21 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/README.md +263 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/mod.d.ts +11 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/mod.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/mod.js +6 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/package.json +3 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/aesGcm.d.ts +80 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/aesGcm.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/aesGcm.js +167 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/exportOnly.d.ts +34 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/exportOnly.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/exportOnly.js +56 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/cipherSuiteNative.d.ts +145 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/cipherSuiteNative.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/cipherSuiteNative.js +326 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/encryptionContext.d.ts +15 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/encryptionContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/encryptionContext.js +68 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/exporterContext.d.ts +19 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/exporterContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/exporterContext.js +62 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/aeadParams.d.ts +17 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/aeadParams.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/aeadParams.js +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/cipherSuiteParams.d.ts +13 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/cipherSuiteParams.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/cipherSuiteParams.js +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encapsulator.d.ts +8 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encapsulator.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encapsulator.js +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encryptionContext.d.ts +40 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encryptionContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encryptionContext.js +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/exporter.d.ts +17 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/exporter.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/exporter.js +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/keyInfo.d.ts +7 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/keyInfo.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/keyInfo.js +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/responses.d.ts +10 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/responses.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/responses.js +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemNative.d.ts +26 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemNative.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemNative.js +112 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts +24 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.js +214 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts +24 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.js +214 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX25519.d.ts +38 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX25519.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX25519.js +66 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX448.d.ts +38 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX448.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX448.js +66 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/mutex.d.ts +5 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/mutex.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/mutex.js +28 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/native.d.ts +236 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/native.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/native.js +235 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/recipientContext.d.ts +6 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/recipientContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/recipientContext.js +38 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/senderContext.d.ts +11 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/senderContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/senderContext.js +45 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/utils/emitNotSupported.d.ts +2 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/utils/emitNotSupported.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/utils/emitNotSupported.js +6 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/package.json +46 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/mod.d.ts +11 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/mod.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/mod.js +47 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/package.json +3 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/aesGcm.d.ts +80 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/aesGcm.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/aesGcm.js +183 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/exportOnly.d.ts +34 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/exportOnly.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/exportOnly.js +70 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/cipherSuiteNative.d.ts +145 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/cipherSuiteNative.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/cipherSuiteNative.js +340 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/encryptionContext.d.ts +15 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/encryptionContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/encryptionContext.js +82 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/exporterContext.d.ts +19 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/exporterContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/exporterContext.js +78 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/aeadParams.d.ts +17 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/aeadParams.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/aeadParams.js +12 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/cipherSuiteParams.d.ts +13 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/cipherSuiteParams.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/cipherSuiteParams.js +12 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encapsulator.d.ts +8 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encapsulator.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encapsulator.js +12 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encryptionContext.d.ts +40 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encryptionContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encryptionContext.js +12 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/exporter.d.ts +17 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/exporter.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/exporter.js +12 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/keyInfo.d.ts +7 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/keyInfo.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/keyInfo.js +12 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/responses.d.ts +10 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/responses.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/responses.js +12 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemNative.d.ts +26 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemNative.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemNative.js +128 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts +24 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.js +228 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts +24 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.js +228 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX25519.d.ts +38 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX25519.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX25519.js +80 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX448.d.ts +38 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX448.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX448.js +80 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/mutex.d.ts +5 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/mutex.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/mutex.js +42 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/native.d.ts +236 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/native.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/native.js +255 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/recipientContext.d.ts +6 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/recipientContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/recipientContext.js +52 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/senderContext.d.ts +11 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/senderContext.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/senderContext.js +59 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/utils/emitNotSupported.d.ts +2 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/utils/emitNotSupported.d.ts.map +1 -0
- package/node_modules/@hap/core/node_modules/@hpke/core/script/src/utils/emitNotSupported.js +19 -0
- package/node_modules/@hap/core/package.json +2 -1
- package/node_modules/@hap/core/src/canonicalize.ts +9 -0
- package/node_modules/@hap/core/src/commitment-modes.ts +21 -9
- package/node_modules/@hap/core/src/errors.ts +24 -8
- package/node_modules/@hap/core/src/gatekeeper.ts +52 -8
- package/node_modules/@hap/core/src/index.ts +5 -1
- package/node_modules/@hap/core/src/issuance.ts +250 -0
- package/node_modules/@hap/core/src/mandate.ts +52 -14
- package/node_modules/@hap/core/src/owner-signature.ts +86 -39
- package/node_modules/@hap/core/src/profile.ts +45 -0
- package/node_modules/@hap/core/src/proposal-content.ts +219 -0
- package/node_modules/@hap/core/src/ticket-projection.ts +167 -0
- package/node_modules/@hap/core/src/ticket.ts +254 -20
- package/node_modules/@hap/core/src/types.ts +33 -5
- package/node_modules/@hap/core/src/verifier-policy.ts +178 -0
- package/node_modules/@hap/core/src/versions.ts +50 -19
- package/node_modules/@hono/node-server/dist/index.cjs +31 -6
- package/node_modules/@hono/node-server/dist/index.mjs +31 -6
- package/node_modules/@hono/node-server/package.json +1 -1
- package/node_modules/@hpke/common/esm/package.json +5 -1
- package/node_modules/@hpke/common/esm/src/curve/montgomery.d.ts +2 -2
- package/node_modules/@hpke/common/esm/src/curve/montgomery.d.ts.map +1 -1
- package/node_modules/@hpke/common/esm/src/curve/montgomery.js +41 -26
- package/node_modules/@hpke/common/esm/src/hash/sha3.d.ts.map +1 -1
- package/node_modules/@hpke/common/esm/src/hash/sha3.js +0 -15
- package/node_modules/@hpke/common/esm/src/kdfs/hkdf.d.ts +2 -1
- package/node_modules/@hpke/common/esm/src/kdfs/hkdf.d.ts.map +1 -1
- package/node_modules/@hpke/common/esm/src/kdfs/hkdf.js +12 -2
- package/node_modules/@hpke/common/esm/src/kems/dhkemPrimitives/xCurve.d.ts.map +1 -1
- package/node_modules/@hpke/common/esm/src/kems/dhkemPrimitives/xCurve.js +14 -3
- package/node_modules/@hpke/common/esm/src/utils/misc.d.ts +6 -0
- package/node_modules/@hpke/common/esm/src/utils/misc.d.ts.map +1 -1
- package/node_modules/@hpke/common/esm/src/utils/misc.js +43 -10
- package/node_modules/@hpke/common/esm/src/utils/noble.d.ts +1 -1
- package/node_modules/@hpke/common/esm/src/utils/noble.d.ts.map +1 -1
- package/node_modules/@hpke/common/esm/src/utils/noble.js +21 -10
- package/node_modules/@hpke/common/package.json +5 -1
- package/node_modules/@hpke/common/script/src/curve/montgomery.d.ts +2 -2
- package/node_modules/@hpke/common/script/src/curve/montgomery.d.ts.map +1 -1
- package/node_modules/@hpke/common/script/src/curve/montgomery.js +40 -25
- package/node_modules/@hpke/common/script/src/hash/sha3.d.ts.map +1 -1
- package/node_modules/@hpke/common/script/src/hash/sha3.js +0 -15
- package/node_modules/@hpke/common/script/src/kdfs/hkdf.d.ts +2 -1
- package/node_modules/@hpke/common/script/src/kdfs/hkdf.d.ts.map +1 -1
- package/node_modules/@hpke/common/script/src/kdfs/hkdf.js +12 -2
- package/node_modules/@hpke/common/script/src/kems/dhkemPrimitives/xCurve.d.ts.map +1 -1
- package/node_modules/@hpke/common/script/src/kems/dhkemPrimitives/xCurve.js +13 -2
- package/node_modules/@hpke/common/script/src/utils/misc.d.ts +6 -0
- package/node_modules/@hpke/common/script/src/utils/misc.d.ts.map +1 -1
- package/node_modules/@hpke/common/script/src/utils/misc.js +43 -9
- package/node_modules/@hpke/common/script/src/utils/noble.d.ts +1 -1
- package/node_modules/@hpke/common/script/src/utils/noble.d.ts.map +1 -1
- package/node_modules/@hpke/common/script/src/utils/noble.js +22 -11
- package/node_modules/@hpke/core/README.md +56 -56
- package/node_modules/@hpke/core/esm/package.json +2 -1
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts +3 -21
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -1
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.js +3 -201
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts +3 -21
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts.map +1 -1
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.js +3 -201
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/xCurveNative.d.ts +26 -0
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/xCurveNative.d.ts.map +1 -0
- package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/xCurveNative.js +216 -0
- package/node_modules/@hpke/core/package.json +6 -2
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts +3 -21
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -1
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.js +4 -202
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts +3 -21
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts.map +1 -1
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.js +4 -202
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/xCurveNative.d.ts +26 -0
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/xCurveNative.d.ts.map +1 -0
- package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/xCurveNative.js +230 -0
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/zlib.d.ts +752 -0
- package/node_modules/encodeurl/README.md +14 -0
- package/node_modules/encodeurl/index.js +5 -10
- package/node_modules/encodeurl/package.json +10 -6
- package/node_modules/express-rate-limit/dist/index.cjs +7 -3
- package/node_modules/express-rate-limit/dist/index.mjs +7 -3
- package/node_modules/express-rate-limit/package.json +10 -10
- package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +1 -1
- package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +1 -1
- package/node_modules/hono/dist/cjs/context.js +1 -1
- package/node_modules/hono/dist/cjs/helper/css/common.js +3 -5
- package/node_modules/hono/dist/cjs/hono-base.js +4 -10
- package/node_modules/hono/dist/cjs/hono.js +0 -1
- package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/csrf/index.js +2 -2
- package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +2 -2
- package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +2 -2
- package/node_modules/hono/dist/cjs/middleware/mount/index.js +4 -4
- package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +13 -11
- package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +4 -4
- package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +39 -51
- package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +15 -5
- package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +2 -1
- package/node_modules/hono/dist/cjs/utils/mount.js +35 -0
- package/node_modules/hono/dist/cjs/utils/url.js +10 -0
- package/node_modules/hono/dist/cjs/validator/validator.js +1 -1
- package/node_modules/hono/dist/context.js +1 -1
- package/node_modules/hono/dist/helper/css/common.js +3 -5
- package/node_modules/hono/dist/hono-base.js +4 -10
- package/node_modules/hono/dist/hono.js +0 -1
- package/node_modules/hono/dist/middleware/basic-auth/index.js +1 -1
- package/node_modules/hono/dist/middleware/bearer-auth/index.js +1 -1
- package/node_modules/hono/dist/middleware/csrf/index.js +2 -2
- package/node_modules/hono/dist/middleware/jwk/jwk.js +2 -2
- package/node_modules/hono/dist/middleware/jwt/jwt.js +2 -2
- package/node_modules/hono/dist/middleware/language/language.js +1 -1
- package/node_modules/hono/dist/middleware/mount/index.js +4 -4
- package/node_modules/hono/dist/router/reg-exp-router/node.js +13 -11
- package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +5 -5
- package/node_modules/hono/dist/router/reg-exp-router/router.js +40 -52
- package/node_modules/hono/dist/router/reg-exp-router/trie.js +15 -5
- package/node_modules/hono/dist/types/middleware/mount/index.d.ts +1 -0
- package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +3 -3
- package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +1 -1
- package/node_modules/hono/dist/types/utils/mount.d.ts +4 -0
- package/node_modules/hono/dist/types/utils/url.d.ts +1 -0
- package/node_modules/hono/dist/utils/jwt/jwt.js +2 -1
- package/node_modules/hono/dist/utils/mount.js +34 -0
- package/node_modules/hono/dist/utils/url.js +10 -1
- package/node_modules/hono/dist/validator/validator.js +1 -1
- package/node_modules/hono/package.json +1 -1
- package/node_modules/ip-address/README.md +39 -39
- package/node_modules/ip-address/dist/ipv6.js +1 -1
- package/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/ip-address/package.json +1 -1
- package/node_modules/jose/dist/types/jwt/decrypt.d.ts +3 -0
- package/node_modules/jose/dist/types/jwt/unsecured.d.ts +2 -0
- package/node_modules/jose/dist/types/jwt/verify.d.ts +3 -0
- package/node_modules/jose/dist/types/types.d.ts +8 -0
- package/node_modules/jose/dist/types/util/decode_jwt.d.ts +1 -0
- package/node_modules/jose/dist/webapi/jwks/remote.js +3 -1
- package/node_modules/jose/dist/webapi/lib/deflate.js +2 -1
- package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +2 -1
- package/node_modules/jose/package.json +1 -1
- package/node_modules/qs/CHANGELOG.md +29 -22
- package/node_modules/qs/dist/qs.js +14 -14
- package/node_modules/qs/eslint.config.mjs +6 -0
- package/node_modules/qs/lib/stringify.js +1 -1
- package/node_modules/qs/package.json +5 -5
- package/node_modules/qs/test/stringify.js +74 -0
- package/package.json +2 -2
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { AeadInterface, KdfInterface, KemInterface, RecipientContextParams, SenderContextParams } from "@hpke/common";
|
|
2
|
+
import { NativeAlgorithm } from "@hpke/common";
|
|
3
|
+
import type { CipherSuiteParams } from "./interfaces/cipherSuiteParams.js";
|
|
4
|
+
import type { RecipientContext, SenderContext } from "./interfaces/encryptionContext.js";
|
|
5
|
+
import type { CipherSuiteSealResponse } from "./interfaces/responses.js";
|
|
6
|
+
/**
|
|
7
|
+
* The Hybrid Public Key Encryption (HPKE) ciphersuite,
|
|
8
|
+
* which is implemented using only
|
|
9
|
+
* {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.
|
|
10
|
+
*
|
|
11
|
+
* This is the super class of {@link CipherSuite} and the same as
|
|
12
|
+
* {@link https://jsr.io/@hpke/core/doc/~/CipherSuite | @hpke/core#CipherSuite} as follows:
|
|
13
|
+
* which supports only the ciphersuites that can be implemented on the native
|
|
14
|
+
* {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.
|
|
15
|
+
* Therefore, the following cryptographic algorithms are not supported for now:
|
|
16
|
+
* - DHKEM(X25519, HKDF-SHA256)
|
|
17
|
+
* - DHKEM(X448, HKDF-SHA512)
|
|
18
|
+
* - ChaCha20Poly1305
|
|
19
|
+
*
|
|
20
|
+
* In addtion, the HKDF functions contained in this class can only derive
|
|
21
|
+
* keys of the same length as the `hashSize`.
|
|
22
|
+
*
|
|
23
|
+
* If you want to use the unsupported cryptographic algorithms
|
|
24
|
+
* above or derive keys longer than the `hashSize`,
|
|
25
|
+
* please use {@link CipherSuite}.
|
|
26
|
+
*
|
|
27
|
+
* This class provides following functions:
|
|
28
|
+
*
|
|
29
|
+
* - Creates encryption contexts both for senders and recipients.
|
|
30
|
+
* - {@link createSenderContext}
|
|
31
|
+
* - {@link createRecipientContext}
|
|
32
|
+
* - Provides single-shot encryption API.
|
|
33
|
+
* - {@link seal}
|
|
34
|
+
* - {@link open}
|
|
35
|
+
*
|
|
36
|
+
* The calling of the constructor of this class is the starting
|
|
37
|
+
* point for HPKE operations for both senders and recipients.
|
|
38
|
+
*
|
|
39
|
+
* @example Use only ciphersuites supported by Web Cryptography API.
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* import {
|
|
43
|
+
* Aes128Gcm,
|
|
44
|
+
* DhkemP256HkdfSha256,
|
|
45
|
+
* HkdfSha256,
|
|
46
|
+
* CipherSuite,
|
|
47
|
+
* } from "@hpke/core";
|
|
48
|
+
*
|
|
49
|
+
* const suite = new CipherSuite({
|
|
50
|
+
* kem: new DhkemP256HkdfSha256(),
|
|
51
|
+
* kdf: new HkdfSha256(),
|
|
52
|
+
* aead: new Aes128Gcm(),
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @example Use a ciphersuite which is currently not supported by Web Cryptography API.
|
|
57
|
+
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* import { Aes128Gcm, HkdfSha256, CipherSuite } from "@hpke/core";
|
|
60
|
+
* // Use an extension module.
|
|
61
|
+
* import { DhkemX25519HkdfSha256 } from "@hpke/dhkem-x25519";
|
|
62
|
+
*
|
|
63
|
+
* const suite = new CipherSuite({
|
|
64
|
+
* kem: new DhkemX25519HkdfSha256(),
|
|
65
|
+
* kdf: new HkdfSha256(),
|
|
66
|
+
* aead: new Aes128Gcm(),
|
|
67
|
+
* });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare class CipherSuiteNative extends NativeAlgorithm {
|
|
71
|
+
protected _kem: KemInterface;
|
|
72
|
+
private _kdf;
|
|
73
|
+
private _aead;
|
|
74
|
+
private _suiteId;
|
|
75
|
+
/**
|
|
76
|
+
* @param params A set of parameters for building a cipher suite.
|
|
77
|
+
*
|
|
78
|
+
* If the error occurred, throws {@link InvalidParamError}.
|
|
79
|
+
*
|
|
80
|
+
* @throws {@link InvalidParamError}
|
|
81
|
+
*/
|
|
82
|
+
constructor(params: CipherSuiteParams);
|
|
83
|
+
/**
|
|
84
|
+
* Gets the KEM context of the ciphersuite.
|
|
85
|
+
*/
|
|
86
|
+
get kem(): KemInterface;
|
|
87
|
+
/**
|
|
88
|
+
* Gets the KDF context of the ciphersuite.
|
|
89
|
+
*/
|
|
90
|
+
get kdf(): KdfInterface;
|
|
91
|
+
/**
|
|
92
|
+
* Gets the AEAD context of the ciphersuite.
|
|
93
|
+
*/
|
|
94
|
+
get aead(): AeadInterface;
|
|
95
|
+
/**
|
|
96
|
+
* Creates an encryption context for a sender.
|
|
97
|
+
*
|
|
98
|
+
* If the error occurred, throws {@link DecapError} | {@link ValidationError}.
|
|
99
|
+
*
|
|
100
|
+
* @param params A set of parameters for the sender encryption context.
|
|
101
|
+
* @returns A sender encryption context.
|
|
102
|
+
* @throws {@link EncapError}, {@link ValidationError}
|
|
103
|
+
*/
|
|
104
|
+
createSenderContext(params: SenderContextParams): Promise<SenderContext>;
|
|
105
|
+
/**
|
|
106
|
+
* Creates an encryption context for a recipient.
|
|
107
|
+
*
|
|
108
|
+
* If the error occurred, throws {@link DecapError}
|
|
109
|
+
* | {@link DeserializeError} | {@link ValidationError}.
|
|
110
|
+
*
|
|
111
|
+
* @param params A set of parameters for the recipient encryption context.
|
|
112
|
+
* @returns A recipient encryption context.
|
|
113
|
+
* @throws {@link DecapError}, {@link DeserializeError}, {@link ValidationError}
|
|
114
|
+
*/
|
|
115
|
+
createRecipientContext(params: RecipientContextParams): Promise<RecipientContext>;
|
|
116
|
+
/**
|
|
117
|
+
* Encrypts a message to a recipient.
|
|
118
|
+
*
|
|
119
|
+
* If the error occurred, throws `EncapError` | `MessageLimitReachedError` | `SealError` | `ValidationError`.
|
|
120
|
+
*
|
|
121
|
+
* @param params A set of parameters for building a sender encryption context.
|
|
122
|
+
* @param pt A plain text as bytes to be encrypted.
|
|
123
|
+
* @param aad Additional authenticated data as bytes fed by an application.
|
|
124
|
+
* @returns A cipher text and an encapsulated key as bytes.
|
|
125
|
+
* @throws {@link EncapError}, {@link MessageLimitReachedError}, {@link SealError}, {@link ValidationError}
|
|
126
|
+
*/
|
|
127
|
+
seal(params: SenderContextParams, pt: ArrayBufferLike | ArrayBufferView, aad?: ArrayBufferLike | ArrayBufferView): Promise<CipherSuiteSealResponse>;
|
|
128
|
+
/**
|
|
129
|
+
* Decrypts a message from a sender.
|
|
130
|
+
*
|
|
131
|
+
* If the error occurred, throws `DecapError` | `DeserializeError` | `OpenError` | `ValidationError`.
|
|
132
|
+
*
|
|
133
|
+
* @param params A set of parameters for building a recipient encryption context.
|
|
134
|
+
* @param ct An encrypted text as bytes to be decrypted.
|
|
135
|
+
* @param aad Additional authenticated data as bytes fed by an application.
|
|
136
|
+
* @returns A decrypted plain text as bytes.
|
|
137
|
+
* @throws {@link DecapError}, {@link DeserializeError}, {@link OpenError}, {@link ValidationError}
|
|
138
|
+
*/
|
|
139
|
+
open(params: RecipientContextParams, ct: ArrayBufferLike | ArrayBufferView, aad?: ArrayBufferLike | ArrayBufferView): Promise<ArrayBuffer>;
|
|
140
|
+
private _keySchedule;
|
|
141
|
+
private _keyScheduleS;
|
|
142
|
+
private _keyScheduleR;
|
|
143
|
+
private _validateInputLength;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=cipherSuiteNative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cipherSuiteNative.d.ts","sourceRoot":"","sources":["../../src/src/cipherSuiteNative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EAEZ,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EASL,eAAe,EAEhB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAoCzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAa;IAE7B;;;;;;OAMG;gBACS,MAAM,EAAE,iBAAiB;IA4BrC;;OAEG;IACH,IAAW,GAAG,IAAI,YAAY,CAE7B;IAED;;OAEG;IACH,IAAW,GAAG,IAAI,YAAY,CAE7B;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,aAAa,CAE/B;IAED;;;;;;;;OAQG;IACU,mBAAmB,CAC9B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,aAAa,CAAC;IAgBzB;;;;;;;;;OASG;IACU,sBAAsB,CACjC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;;;;;;;;;OAUG;IACU,IAAI,CACf,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,eAAe,GAAG,eAAe,EACrC,GAAG,GAAE,eAAe,GAAG,eAA6C,GACnE,OAAO,CAAC,uBAAuB,CAAC;IAQnC;;;;;;;;;;OAUG;IACU,IAAI,CACf,MAAM,EAAE,sBAAsB,EAC9B,EAAE,EAAE,eAAe,GAAG,eAAe,EACrC,GAAG,GAAE,eAAe,GAAG,eAA6C,GACnE,OAAO,CAAC,WAAW,CAAC;YAoBT,YAAY;YAqFZ,aAAa;YAuBb,aAAa;IAgB3B,OAAO,CAAC,oBAAoB;CAsB7B"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { AeadId, EMPTY, i2Osp, INFO_LENGTH_LIMIT, INPUT_LENGTH_LIMIT, InvalidParamError, MINIMUM_PSK_LENGTH, Mode, NativeAlgorithm, toUint8Array, } from "@hpke/common";
|
|
2
|
+
import { RecipientExporterContextImpl, SenderExporterContextImpl, } from "./exporterContext.js";
|
|
3
|
+
import { RecipientContextImpl } from "./recipientContext.js";
|
|
4
|
+
import { SenderContextImpl } from "./senderContext.js";
|
|
5
|
+
// b"base_nonce"
|
|
6
|
+
// deno-fmt-ignore
|
|
7
|
+
const LABEL_BASE_NONCE = new Uint8Array([
|
|
8
|
+
98, 97, 115, 101, 95, 110, 111, 110, 99, 101,
|
|
9
|
+
]);
|
|
10
|
+
// b"exp"
|
|
11
|
+
const LABEL_EXP = new Uint8Array([101, 120, 112]);
|
|
12
|
+
// b"info_hash"
|
|
13
|
+
// deno-fmt-ignore
|
|
14
|
+
const LABEL_INFO_HASH = new Uint8Array([
|
|
15
|
+
105, 110, 102, 111, 95, 104, 97, 115, 104,
|
|
16
|
+
]);
|
|
17
|
+
// b"key"
|
|
18
|
+
const LABEL_KEY = new Uint8Array([107, 101, 121]);
|
|
19
|
+
// b"psk_id_hash"
|
|
20
|
+
// deno-fmt-ignore
|
|
21
|
+
const LABEL_PSK_ID_HASH = new Uint8Array([
|
|
22
|
+
112, 115, 107, 95, 105, 100, 95, 104, 97, 115, 104,
|
|
23
|
+
]);
|
|
24
|
+
// b"secret"
|
|
25
|
+
const LABEL_SECRET = new Uint8Array([115, 101, 99, 114, 101, 116]);
|
|
26
|
+
// b"HPKE"
|
|
27
|
+
// deno-fmt-ignore
|
|
28
|
+
const SUITE_ID_HEADER_HPKE = new Uint8Array([
|
|
29
|
+
72, 80, 75, 69, 0, 0, 0, 0, 0, 0,
|
|
30
|
+
]);
|
|
31
|
+
/**
|
|
32
|
+
* The Hybrid Public Key Encryption (HPKE) ciphersuite,
|
|
33
|
+
* which is implemented using only
|
|
34
|
+
* {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.
|
|
35
|
+
*
|
|
36
|
+
* This is the super class of {@link CipherSuite} and the same as
|
|
37
|
+
* {@link https://jsr.io/@hpke/core/doc/~/CipherSuite | @hpke/core#CipherSuite} as follows:
|
|
38
|
+
* which supports only the ciphersuites that can be implemented on the native
|
|
39
|
+
* {@link https://www.w3.org/TR/WebCryptoAPI/ | Web Cryptography API}.
|
|
40
|
+
* Therefore, the following cryptographic algorithms are not supported for now:
|
|
41
|
+
* - DHKEM(X25519, HKDF-SHA256)
|
|
42
|
+
* - DHKEM(X448, HKDF-SHA512)
|
|
43
|
+
* - ChaCha20Poly1305
|
|
44
|
+
*
|
|
45
|
+
* In addtion, the HKDF functions contained in this class can only derive
|
|
46
|
+
* keys of the same length as the `hashSize`.
|
|
47
|
+
*
|
|
48
|
+
* If you want to use the unsupported cryptographic algorithms
|
|
49
|
+
* above or derive keys longer than the `hashSize`,
|
|
50
|
+
* please use {@link CipherSuite}.
|
|
51
|
+
*
|
|
52
|
+
* This class provides following functions:
|
|
53
|
+
*
|
|
54
|
+
* - Creates encryption contexts both for senders and recipients.
|
|
55
|
+
* - {@link createSenderContext}
|
|
56
|
+
* - {@link createRecipientContext}
|
|
57
|
+
* - Provides single-shot encryption API.
|
|
58
|
+
* - {@link seal}
|
|
59
|
+
* - {@link open}
|
|
60
|
+
*
|
|
61
|
+
* The calling of the constructor of this class is the starting
|
|
62
|
+
* point for HPKE operations for both senders and recipients.
|
|
63
|
+
*
|
|
64
|
+
* @example Use only ciphersuites supported by Web Cryptography API.
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* import {
|
|
68
|
+
* Aes128Gcm,
|
|
69
|
+
* DhkemP256HkdfSha256,
|
|
70
|
+
* HkdfSha256,
|
|
71
|
+
* CipherSuite,
|
|
72
|
+
* } from "@hpke/core";
|
|
73
|
+
*
|
|
74
|
+
* const suite = new CipherSuite({
|
|
75
|
+
* kem: new DhkemP256HkdfSha256(),
|
|
76
|
+
* kdf: new HkdfSha256(),
|
|
77
|
+
* aead: new Aes128Gcm(),
|
|
78
|
+
* });
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @example Use a ciphersuite which is currently not supported by Web Cryptography API.
|
|
82
|
+
*
|
|
83
|
+
* ```ts
|
|
84
|
+
* import { Aes128Gcm, HkdfSha256, CipherSuite } from "@hpke/core";
|
|
85
|
+
* // Use an extension module.
|
|
86
|
+
* import { DhkemX25519HkdfSha256 } from "@hpke/dhkem-x25519";
|
|
87
|
+
*
|
|
88
|
+
* const suite = new CipherSuite({
|
|
89
|
+
* kem: new DhkemX25519HkdfSha256(),
|
|
90
|
+
* kdf: new HkdfSha256(),
|
|
91
|
+
* aead: new Aes128Gcm(),
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export class CipherSuiteNative extends NativeAlgorithm {
|
|
96
|
+
/**
|
|
97
|
+
* @param params A set of parameters for building a cipher suite.
|
|
98
|
+
*
|
|
99
|
+
* If the error occurred, throws {@link InvalidParamError}.
|
|
100
|
+
*
|
|
101
|
+
* @throws {@link InvalidParamError}
|
|
102
|
+
*/
|
|
103
|
+
constructor(params) {
|
|
104
|
+
super();
|
|
105
|
+
Object.defineProperty(this, "_kem", {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
configurable: true,
|
|
108
|
+
writable: true,
|
|
109
|
+
value: void 0
|
|
110
|
+
});
|
|
111
|
+
Object.defineProperty(this, "_kdf", {
|
|
112
|
+
enumerable: true,
|
|
113
|
+
configurable: true,
|
|
114
|
+
writable: true,
|
|
115
|
+
value: void 0
|
|
116
|
+
});
|
|
117
|
+
Object.defineProperty(this, "_aead", {
|
|
118
|
+
enumerable: true,
|
|
119
|
+
configurable: true,
|
|
120
|
+
writable: true,
|
|
121
|
+
value: void 0
|
|
122
|
+
});
|
|
123
|
+
Object.defineProperty(this, "_suiteId", {
|
|
124
|
+
enumerable: true,
|
|
125
|
+
configurable: true,
|
|
126
|
+
writable: true,
|
|
127
|
+
value: void 0
|
|
128
|
+
});
|
|
129
|
+
// KEM
|
|
130
|
+
if (typeof params.kem === "number") {
|
|
131
|
+
throw new InvalidParamError("KemId cannot be used");
|
|
132
|
+
}
|
|
133
|
+
this._kem = params.kem;
|
|
134
|
+
// KDF
|
|
135
|
+
if (typeof params.kdf === "number") {
|
|
136
|
+
throw new InvalidParamError("KdfId cannot be used");
|
|
137
|
+
}
|
|
138
|
+
this._kdf = params.kdf;
|
|
139
|
+
// AEAD
|
|
140
|
+
if (typeof params.aead === "number") {
|
|
141
|
+
throw new InvalidParamError("AeadId cannot be used");
|
|
142
|
+
}
|
|
143
|
+
this._aead = params.aead;
|
|
144
|
+
this._suiteId = new Uint8Array(SUITE_ID_HEADER_HPKE);
|
|
145
|
+
this._suiteId.set(i2Osp(this._kem.id, 2), 4);
|
|
146
|
+
this._suiteId.set(i2Osp(this._kdf.id, 2), 6);
|
|
147
|
+
this._suiteId.set(i2Osp(this._aead.id, 2), 8);
|
|
148
|
+
this._kdf.init(this._suiteId);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Gets the KEM context of the ciphersuite.
|
|
152
|
+
*/
|
|
153
|
+
get kem() {
|
|
154
|
+
return this._kem;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Gets the KDF context of the ciphersuite.
|
|
158
|
+
*/
|
|
159
|
+
get kdf() {
|
|
160
|
+
return this._kdf;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Gets the AEAD context of the ciphersuite.
|
|
164
|
+
*/
|
|
165
|
+
get aead() {
|
|
166
|
+
return this._aead;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Creates an encryption context for a sender.
|
|
170
|
+
*
|
|
171
|
+
* If the error occurred, throws {@link DecapError} | {@link ValidationError}.
|
|
172
|
+
*
|
|
173
|
+
* @param params A set of parameters for the sender encryption context.
|
|
174
|
+
* @returns A sender encryption context.
|
|
175
|
+
* @throws {@link EncapError}, {@link ValidationError}
|
|
176
|
+
*/
|
|
177
|
+
async createSenderContext(params) {
|
|
178
|
+
this._validateInputLength(params);
|
|
179
|
+
await this._setup();
|
|
180
|
+
const dh = await this._kem.encap(params);
|
|
181
|
+
let mode;
|
|
182
|
+
if (params.psk !== undefined) {
|
|
183
|
+
mode = params.senderKey !== undefined ? Mode.AuthPsk : Mode.Psk;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
mode = params.senderKey !== undefined ? Mode.Auth : Mode.Base;
|
|
187
|
+
}
|
|
188
|
+
return await this._keyScheduleS(mode, dh.sharedSecret, dh.enc, params);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Creates an encryption context for a recipient.
|
|
192
|
+
*
|
|
193
|
+
* If the error occurred, throws {@link DecapError}
|
|
194
|
+
* | {@link DeserializeError} | {@link ValidationError}.
|
|
195
|
+
*
|
|
196
|
+
* @param params A set of parameters for the recipient encryption context.
|
|
197
|
+
* @returns A recipient encryption context.
|
|
198
|
+
* @throws {@link DecapError}, {@link DeserializeError}, {@link ValidationError}
|
|
199
|
+
*/
|
|
200
|
+
async createRecipientContext(params) {
|
|
201
|
+
this._validateInputLength(params);
|
|
202
|
+
await this._setup();
|
|
203
|
+
const sharedSecret = await this._kem.decap(params);
|
|
204
|
+
let mode;
|
|
205
|
+
if (params.psk !== undefined) {
|
|
206
|
+
mode = params.senderPublicKey !== undefined ? Mode.AuthPsk : Mode.Psk;
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
mode = params.senderPublicKey !== undefined ? Mode.Auth : Mode.Base;
|
|
210
|
+
}
|
|
211
|
+
return await this._keyScheduleR(mode, sharedSecret, params);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Encrypts a message to a recipient.
|
|
215
|
+
*
|
|
216
|
+
* If the error occurred, throws `EncapError` | `MessageLimitReachedError` | `SealError` | `ValidationError`.
|
|
217
|
+
*
|
|
218
|
+
* @param params A set of parameters for building a sender encryption context.
|
|
219
|
+
* @param pt A plain text as bytes to be encrypted.
|
|
220
|
+
* @param aad Additional authenticated data as bytes fed by an application.
|
|
221
|
+
* @returns A cipher text and an encapsulated key as bytes.
|
|
222
|
+
* @throws {@link EncapError}, {@link MessageLimitReachedError}, {@link SealError}, {@link ValidationError}
|
|
223
|
+
*/
|
|
224
|
+
async seal(params, pt, aad = EMPTY.buffer) {
|
|
225
|
+
const ctx = await this.createSenderContext(params);
|
|
226
|
+
return {
|
|
227
|
+
ct: await ctx.seal(pt, aad),
|
|
228
|
+
enc: ctx.enc,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Decrypts a message from a sender.
|
|
233
|
+
*
|
|
234
|
+
* If the error occurred, throws `DecapError` | `DeserializeError` | `OpenError` | `ValidationError`.
|
|
235
|
+
*
|
|
236
|
+
* @param params A set of parameters for building a recipient encryption context.
|
|
237
|
+
* @param ct An encrypted text as bytes to be decrypted.
|
|
238
|
+
* @param aad Additional authenticated data as bytes fed by an application.
|
|
239
|
+
* @returns A decrypted plain text as bytes.
|
|
240
|
+
* @throws {@link DecapError}, {@link DeserializeError}, {@link OpenError}, {@link ValidationError}
|
|
241
|
+
*/
|
|
242
|
+
async open(params, ct, aad = EMPTY.buffer) {
|
|
243
|
+
const ctx = await this.createRecipientContext(params);
|
|
244
|
+
return await ctx.open(ct, aad);
|
|
245
|
+
}
|
|
246
|
+
// private verifyPskInputs(mode: Mode, params: KeyScheduleParams) {
|
|
247
|
+
// const gotPsk = (params.psk !== undefined);
|
|
248
|
+
// const gotPskId = (params.psk !== undefined && params.psk.id.byteLength > 0);
|
|
249
|
+
// if (gotPsk !== gotPskId) {
|
|
250
|
+
// throw new Error('Inconsistent PSK inputs');
|
|
251
|
+
// }
|
|
252
|
+
// if (gotPsk && (mode === Mode.Base || mode === Mode.Auth)) {
|
|
253
|
+
// throw new Error('PSK input provided when not needed');
|
|
254
|
+
// }
|
|
255
|
+
// if (!gotPsk && (mode === Mode.Psk || mode === Mode.AuthPsk)) {
|
|
256
|
+
// throw new Error('Missing required PSK input');
|
|
257
|
+
// }
|
|
258
|
+
// return;
|
|
259
|
+
// }
|
|
260
|
+
async _keySchedule(mode, sharedSecret, params) {
|
|
261
|
+
// Currently, there is no point in executing this function
|
|
262
|
+
// because this hpke library does not allow users to explicitly specify the mode.
|
|
263
|
+
//
|
|
264
|
+
// this.verifyPskInputs(mode, params);
|
|
265
|
+
const pskId = params.psk === undefined
|
|
266
|
+
? EMPTY
|
|
267
|
+
: toUint8Array(params.psk.id);
|
|
268
|
+
const pskIdHash = await this._kdf.labeledExtract(EMPTY, LABEL_PSK_ID_HASH, pskId);
|
|
269
|
+
const info = params.info === undefined ? EMPTY : toUint8Array(params.info);
|
|
270
|
+
const infoHash = await this._kdf.labeledExtract(EMPTY, LABEL_INFO_HASH, info);
|
|
271
|
+
const keyScheduleContext = new Uint8Array(1 + pskIdHash.byteLength + infoHash.byteLength);
|
|
272
|
+
keyScheduleContext.set(new Uint8Array([mode]), 0);
|
|
273
|
+
keyScheduleContext.set(new Uint8Array(pskIdHash), 1);
|
|
274
|
+
keyScheduleContext.set(new Uint8Array(infoHash), 1 + pskIdHash.byteLength);
|
|
275
|
+
const psk = params.psk === undefined ? EMPTY : toUint8Array(params.psk.key);
|
|
276
|
+
const ikm = this._kdf.buildLabeledIkm(LABEL_SECRET, psk);
|
|
277
|
+
const exporterSecretInfo = this._kdf.buildLabeledInfo(LABEL_EXP, keyScheduleContext, this._kdf.hashSize);
|
|
278
|
+
const exporterSecret = await this._kdf.extractAndExpand(sharedSecret, ikm, exporterSecretInfo, this._kdf.hashSize);
|
|
279
|
+
if (this._aead.id === AeadId.ExportOnly) {
|
|
280
|
+
return { aead: this._aead, exporterSecret: exporterSecret };
|
|
281
|
+
}
|
|
282
|
+
const keyInfo = this._kdf.buildLabeledInfo(LABEL_KEY, keyScheduleContext, this._aead.keySize);
|
|
283
|
+
const key = await this._kdf.extractAndExpand(sharedSecret, ikm, keyInfo, this._aead.keySize);
|
|
284
|
+
const baseNonceInfo = this._kdf.buildLabeledInfo(LABEL_BASE_NONCE, keyScheduleContext, this._aead.nonceSize);
|
|
285
|
+
const baseNonce = await this._kdf.extractAndExpand(sharedSecret, ikm, baseNonceInfo, this._aead.nonceSize);
|
|
286
|
+
return {
|
|
287
|
+
aead: this._aead,
|
|
288
|
+
exporterSecret: exporterSecret,
|
|
289
|
+
key: key,
|
|
290
|
+
baseNonce: new Uint8Array(baseNonce),
|
|
291
|
+
seq: 0,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
async _keyScheduleS(mode, sharedSecret, enc, params) {
|
|
295
|
+
const res = await this._keySchedule(mode, sharedSecret, params);
|
|
296
|
+
if (res.key === undefined) {
|
|
297
|
+
return new SenderExporterContextImpl(this._api, this._kdf, res.exporterSecret, enc);
|
|
298
|
+
}
|
|
299
|
+
return new SenderContextImpl(this._api, this._kdf, res, enc);
|
|
300
|
+
}
|
|
301
|
+
async _keyScheduleR(mode, sharedSecret, params) {
|
|
302
|
+
const res = await this._keySchedule(mode, sharedSecret, params);
|
|
303
|
+
if (res.key === undefined) {
|
|
304
|
+
return new RecipientExporterContextImpl(this._api, this._kdf, res.exporterSecret);
|
|
305
|
+
}
|
|
306
|
+
return new RecipientContextImpl(this._api, this._kdf, res);
|
|
307
|
+
}
|
|
308
|
+
_validateInputLength(params) {
|
|
309
|
+
if (params.info !== undefined &&
|
|
310
|
+
params.info.byteLength > INFO_LENGTH_LIMIT) {
|
|
311
|
+
throw new InvalidParamError("Too long info");
|
|
312
|
+
}
|
|
313
|
+
if (params.psk !== undefined) {
|
|
314
|
+
if (params.psk.key.byteLength < MINIMUM_PSK_LENGTH) {
|
|
315
|
+
throw new InvalidParamError(`PSK must have at least ${MINIMUM_PSK_LENGTH} bytes`);
|
|
316
|
+
}
|
|
317
|
+
if (params.psk.key.byteLength > INPUT_LENGTH_LIMIT) {
|
|
318
|
+
throw new InvalidParamError("Too long psk.key");
|
|
319
|
+
}
|
|
320
|
+
if (params.psk.id.byteLength > INPUT_LENGTH_LIMIT) {
|
|
321
|
+
throw new InvalidParamError("Too long psk.id");
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AeadInterface, KdfInterface } from "@hpke/common";
|
|
2
|
+
import type { AeadParams } from "./interfaces/aeadParams.js";
|
|
3
|
+
import type { KeyInfo } from "./interfaces/keyInfo.js";
|
|
4
|
+
import { ExporterContextImpl } from "./exporterContext.js";
|
|
5
|
+
export declare class EncryptionContextImpl extends ExporterContextImpl {
|
|
6
|
+
protected _aead: AeadInterface;
|
|
7
|
+
protected _nK: number;
|
|
8
|
+
protected _nN: number;
|
|
9
|
+
protected _nT: number;
|
|
10
|
+
protected _ctx: KeyInfo;
|
|
11
|
+
constructor(api: SubtleCrypto, kdf: KdfInterface, params: AeadParams);
|
|
12
|
+
protected computeNonce(k: KeyInfo): ArrayBuffer;
|
|
13
|
+
protected incrementSeq(k: KeyInfo): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=encryptionContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryptionContext.d.ts","sourceRoot":"","sources":["../../src/src/encryptionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,qBAAsB,SAAQ,mBAAmB;IAE5D,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEZ,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU;IAsBpE,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW;IAK/C,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO;CAQlC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { i2Osp, MessageLimitReachedError, xor } from "@hpke/common";
|
|
2
|
+
import { ExporterContextImpl } from "./exporterContext.js";
|
|
3
|
+
export class EncryptionContextImpl extends ExporterContextImpl {
|
|
4
|
+
constructor(api, kdf, params) {
|
|
5
|
+
super(api, kdf, params.exporterSecret);
|
|
6
|
+
// AEAD id.
|
|
7
|
+
Object.defineProperty(this, "_aead", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: void 0
|
|
12
|
+
});
|
|
13
|
+
// The length in bytes of a key for the algorithm.
|
|
14
|
+
Object.defineProperty(this, "_nK", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
writable: true,
|
|
18
|
+
value: void 0
|
|
19
|
+
});
|
|
20
|
+
// The length in bytes of a nonce for the algorithm.
|
|
21
|
+
Object.defineProperty(this, "_nN", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
configurable: true,
|
|
24
|
+
writable: true,
|
|
25
|
+
value: void 0
|
|
26
|
+
});
|
|
27
|
+
// The length in bytes of an authentication tag for the algorithm.
|
|
28
|
+
Object.defineProperty(this, "_nT", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
configurable: true,
|
|
31
|
+
writable: true,
|
|
32
|
+
value: void 0
|
|
33
|
+
});
|
|
34
|
+
// The end-to-end encryption key information.
|
|
35
|
+
Object.defineProperty(this, "_ctx", {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
configurable: true,
|
|
38
|
+
writable: true,
|
|
39
|
+
value: void 0
|
|
40
|
+
});
|
|
41
|
+
if (params.key === undefined || params.baseNonce === undefined ||
|
|
42
|
+
params.seq === undefined) {
|
|
43
|
+
throw new Error("Required parameters are missing");
|
|
44
|
+
}
|
|
45
|
+
this._aead = params.aead;
|
|
46
|
+
this._nK = this._aead.keySize;
|
|
47
|
+
this._nN = this._aead.nonceSize;
|
|
48
|
+
this._nT = this._aead.tagSize;
|
|
49
|
+
const key = this._aead.createEncryptionContext(params.key);
|
|
50
|
+
this._ctx = {
|
|
51
|
+
key: key,
|
|
52
|
+
baseNonce: params.baseNonce,
|
|
53
|
+
seq: params.seq,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
computeNonce(k) {
|
|
57
|
+
const seqBytes = i2Osp(k.seq, k.baseNonce.byteLength);
|
|
58
|
+
return xor(k.baseNonce, seqBytes).buffer;
|
|
59
|
+
}
|
|
60
|
+
incrementSeq(k) {
|
|
61
|
+
// if (this.seq >= (1 << (8 * this.baseNonce.byteLength)) - 1) {
|
|
62
|
+
if (k.seq > Number.MAX_SAFE_INTEGER) {
|
|
63
|
+
throw new MessageLimitReachedError("Message limit reached");
|
|
64
|
+
}
|
|
65
|
+
k.seq += 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { KdfInterface } from "@hpke/common";
|
|
2
|
+
import type { Encapsulator } from "./interfaces/encapsulator.js";
|
|
3
|
+
import type { EncryptionContext } from "./interfaces/encryptionContext.js";
|
|
4
|
+
export declare class ExporterContextImpl implements EncryptionContext {
|
|
5
|
+
protected _api: SubtleCrypto;
|
|
6
|
+
protected readonly exporterSecret: ArrayBuffer;
|
|
7
|
+
private _kdf;
|
|
8
|
+
constructor(api: SubtleCrypto, kdf: KdfInterface, exporterSecret: ArrayBuffer);
|
|
9
|
+
seal(_data: ArrayBufferLike | ArrayBufferView, _aad: ArrayBufferLike | ArrayBufferView): Promise<ArrayBuffer>;
|
|
10
|
+
open(_data: ArrayBufferLike | ArrayBufferView, _aad: ArrayBufferLike | ArrayBufferView): Promise<ArrayBuffer>;
|
|
11
|
+
export(exporterContext: ArrayBufferLike | ArrayBufferView, len: number): Promise<ArrayBuffer>;
|
|
12
|
+
}
|
|
13
|
+
export declare class RecipientExporterContextImpl extends ExporterContextImpl {
|
|
14
|
+
}
|
|
15
|
+
export declare class SenderExporterContextImpl extends ExporterContextImpl implements Encapsulator {
|
|
16
|
+
readonly enc: ArrayBuffer;
|
|
17
|
+
constructor(api: SubtleCrypto, kdf: KdfInterface, exporterSecret: ArrayBuffer, enc: ArrayBuffer);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=exporterContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporterContext.d.ts","sourceRoot":"","sources":["../../src/src/exporterContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAO3E,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAe;gBAGzB,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,YAAY,EACjB,cAAc,EAAE,WAAW;IAOhB,IAAI,CACf,KAAK,EAAE,eAAe,GAAG,eAAe,EACxC,IAAI,EAAE,eAAe,GAAG,eAAe,GACtC,OAAO,CAAC,WAAW,CAAC;IAIV,IAAI,CACf,KAAK,EAAE,eAAe,GAAG,eAAe,EACxC,IAAI,EAAE,eAAe,GAAG,eAAe,GACtC,OAAO,CAAC,WAAW,CAAC;IAIV,MAAM,CACjB,eAAe,EAAE,eAAe,GAAG,eAAe,EAClD,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,WAAW,CAAC;CAgBxB;AAED,qBAAa,4BAA6B,SAAQ,mBAAmB;CAAG;AAExE,qBAAa,yBAA0B,SAAQ,mBAC7C,YAAW,YAAY;IACvB,SAAgB,GAAG,EAAE,WAAW,CAAC;gBAG/B,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,YAAY,EACjB,cAAc,EAAE,WAAW,EAC3B,GAAG,EAAE,WAAW;CAMnB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ExportError, INPUT_LENGTH_LIMIT, InvalidParamError, toArrayBuffer, } from "@hpke/common";
|
|
2
|
+
import { emitNotSupported } from "./utils/emitNotSupported.js";
|
|
3
|
+
// b"sec"
|
|
4
|
+
const LABEL_SEC = new Uint8Array([115, 101, 99]);
|
|
5
|
+
export class ExporterContextImpl {
|
|
6
|
+
constructor(api, kdf, exporterSecret) {
|
|
7
|
+
Object.defineProperty(this, "_api", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: void 0
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(this, "exporterSecret", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
value: void 0
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(this, "_kdf", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: void 0
|
|
24
|
+
});
|
|
25
|
+
this._api = api;
|
|
26
|
+
this._kdf = kdf;
|
|
27
|
+
this.exporterSecret = exporterSecret;
|
|
28
|
+
}
|
|
29
|
+
async seal(_data, _aad) {
|
|
30
|
+
return await emitNotSupported();
|
|
31
|
+
}
|
|
32
|
+
async open(_data, _aad) {
|
|
33
|
+
return await emitNotSupported();
|
|
34
|
+
}
|
|
35
|
+
async export(exporterContext, len) {
|
|
36
|
+
const rawExporterContext = toArrayBuffer(exporterContext);
|
|
37
|
+
if (rawExporterContext.byteLength > INPUT_LENGTH_LIMIT) {
|
|
38
|
+
throw new InvalidParamError("Too long exporter context");
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
return await this._kdf.labeledExpand(this.exporterSecret, LABEL_SEC, new Uint8Array(rawExporterContext), len);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
throw new ExportError(e);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class RecipientExporterContextImpl extends ExporterContextImpl {
|
|
49
|
+
}
|
|
50
|
+
export class SenderExporterContextImpl extends ExporterContextImpl {
|
|
51
|
+
constructor(api, kdf, exporterSecret, enc) {
|
|
52
|
+
super(api, kdf, exporterSecret);
|
|
53
|
+
Object.defineProperty(this, "enc", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
configurable: true,
|
|
56
|
+
writable: true,
|
|
57
|
+
value: void 0
|
|
58
|
+
});
|
|
59
|
+
this.enc = enc;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AeadInterface } from "@hpke/common";
|
|
2
|
+
/**
|
|
3
|
+
* The AEAD parameters for building a encryption context.
|
|
4
|
+
*/
|
|
5
|
+
export interface AeadParams {
|
|
6
|
+
/** The Aead indentifier. */
|
|
7
|
+
aead: AeadInterface;
|
|
8
|
+
/** A secret used for the secret export interface. */
|
|
9
|
+
exporterSecret: ArrayBuffer;
|
|
10
|
+
/** A secret key. */
|
|
11
|
+
key?: ArrayBuffer;
|
|
12
|
+
/** A base nonce. */
|
|
13
|
+
baseNonce?: Uint8Array;
|
|
14
|
+
/** A sequence number. */
|
|
15
|
+
seq?: number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=aeadParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aeadParams.d.ts","sourceRoot":"","sources":["../../../src/src/interfaces/aeadParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,IAAI,EAAE,aAAa,CAAC;IAEpB,qDAAqD;IACrD,cAAc,EAAE,WAAW,CAAC;IAE5B,oBAAoB;IACpB,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB,oBAAoB;IACpB,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|