@opentdf/sdk 0.1.0-beta.1701
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 +52 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/src/access.js +155 -0
- package/dist/cjs/src/auth/Eas.js +60 -0
- package/dist/cjs/src/auth/auth.js +79 -0
- package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +26 -0
- package/dist/cjs/src/auth/oidc-externaljwt-provider.js +33 -0
- package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +34 -0
- package/dist/cjs/src/auth/oidc.js +222 -0
- package/dist/cjs/src/auth/providers.js +143 -0
- package/dist/cjs/src/encodings/base64.js +154 -0
- package/dist/cjs/src/encodings/hex.js +70 -0
- package/dist/cjs/src/encodings/index.js +29 -0
- package/dist/cjs/src/errors.js +138 -0
- package/dist/cjs/src/index.js +344 -0
- package/dist/cjs/src/nanotdf/Client.js +296 -0
- package/dist/cjs/src/nanotdf/NanoTDF.js +94 -0
- package/dist/cjs/src/nanotdf/browser-entry.js +19 -0
- package/dist/cjs/src/nanotdf/constants.js +5 -0
- package/dist/cjs/src/nanotdf/decrypt.js +17 -0
- package/dist/cjs/src/nanotdf/encrypt-dataset.js +38 -0
- package/dist/cjs/src/nanotdf/encrypt.js +132 -0
- package/dist/cjs/src/nanotdf/enum/CipherEnum.js +13 -0
- package/dist/cjs/src/nanotdf/enum/CurveNameEnum.js +15 -0
- package/dist/cjs/src/nanotdf/enum/EncodingEnum.js +8 -0
- package/dist/cjs/src/nanotdf/enum/PolicyTypeEnum.js +11 -0
- package/dist/cjs/src/nanotdf/enum/ProtocolEnum.js +10 -0
- package/dist/cjs/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +11 -0
- package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +29 -0
- package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +11 -0
- package/dist/cjs/src/nanotdf/index.js +25 -0
- package/dist/cjs/src/nanotdf/interfaces/PolicyInterface.js +3 -0
- package/dist/cjs/src/nanotdf/models/Ciphers.js +61 -0
- package/dist/cjs/src/nanotdf/models/DefaultParams.js +27 -0
- package/dist/cjs/src/nanotdf/models/EcCurves.js +39 -0
- package/dist/cjs/src/nanotdf/models/Header.js +255 -0
- package/dist/cjs/src/nanotdf/models/Payload.js +158 -0
- package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +73 -0
- package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +82 -0
- package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +38 -0
- package/dist/cjs/src/nanotdf/models/Policy/RemotePolicy.js +62 -0
- package/dist/cjs/src/nanotdf/models/ResourceLocator.js +211 -0
- package/dist/cjs/src/nanotdf/models/Signature.js +77 -0
- package/dist/cjs/src/nanotdf-crypto/ciphers.js +17 -0
- package/dist/cjs/src/nanotdf-crypto/decrypt.js +24 -0
- package/dist/cjs/src/nanotdf-crypto/digest.js +7 -0
- package/dist/cjs/src/nanotdf-crypto/ecdsaSignature.js +83 -0
- package/dist/cjs/src/nanotdf-crypto/encrypt.js +24 -0
- package/dist/cjs/src/nanotdf-crypto/enums.js +52 -0
- package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +20 -0
- package/dist/cjs/src/nanotdf-crypto/generateKeyPair.js +13 -0
- package/dist/cjs/src/nanotdf-crypto/generateRandomNumber.js +12 -0
- package/dist/cjs/src/nanotdf-crypto/importRawKey.js +18 -0
- package/dist/cjs/src/nanotdf-crypto/index.js +52 -0
- package/dist/cjs/src/nanotdf-crypto/keyAgreement.js +91 -0
- package/dist/cjs/src/nanotdf-crypto/pemPublicToCrypto.js +225 -0
- package/dist/cjs/src/policy/api.js +58 -0
- package/dist/cjs/src/policy/attributes.js +3 -0
- package/dist/cjs/src/policy/granter.js +146 -0
- package/dist/cjs/src/tdf/AttributeObject.js +15 -0
- package/dist/cjs/src/tdf/AttributeObjectJwt.js +3 -0
- package/dist/cjs/src/tdf/Crypto.js +47 -0
- package/dist/cjs/src/tdf/EntityObject.js +3 -0
- package/dist/cjs/src/tdf/NanoTDF/NanoTDF.js +38 -0
- package/dist/cjs/src/tdf/Policy.js +50 -0
- package/dist/cjs/src/tdf/PolicyObject.js +3 -0
- package/dist/cjs/src/tdf/TypedArray.js +3 -0
- package/dist/cjs/src/tdf/index.js +35 -0
- package/dist/cjs/src/types/index.js +3 -0
- package/dist/cjs/src/utils.js +147 -0
- package/dist/cjs/src/version.js +12 -0
- package/dist/cjs/tdf3/index.js +57 -0
- package/dist/cjs/tdf3/src/assertions.js +118 -0
- package/dist/cjs/tdf3/src/binary.js +153 -0
- package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +56 -0
- package/dist/cjs/tdf3/src/ciphers/algorithms.js +8 -0
- package/dist/cjs/tdf3/src/ciphers/index.js +8 -0
- package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +22 -0
- package/dist/cjs/tdf3/src/client/DecoratedReadableStream.js +116 -0
- package/dist/cjs/tdf3/src/client/builders.js +561 -0
- package/dist/cjs/tdf3/src/client/index.js +460 -0
- package/dist/cjs/tdf3/src/client/validation.js +63 -0
- package/dist/cjs/tdf3/src/crypto/crypto-utils.js +116 -0
- package/dist/cjs/tdf3/src/crypto/declarations.js +8 -0
- package/dist/cjs/tdf3/src/crypto/index.js +315 -0
- package/dist/cjs/tdf3/src/index.js +34 -0
- package/dist/cjs/tdf3/src/models/attribute-set.js +122 -0
- package/dist/cjs/tdf3/src/models/encryption-information.js +90 -0
- package/dist/cjs/tdf3/src/models/index.js +25 -0
- package/dist/cjs/tdf3/src/models/key-access.js +103 -0
- package/dist/cjs/tdf3/src/models/manifest.js +3 -0
- package/dist/cjs/tdf3/src/models/payload.js +3 -0
- package/dist/cjs/tdf3/src/models/policy.js +24 -0
- package/dist/cjs/tdf3/src/models/upsert-response.js +3 -0
- package/dist/cjs/tdf3/src/tdf.js +907 -0
- package/dist/cjs/tdf3/src/templates/default.html.js +98 -0
- package/dist/cjs/tdf3/src/templates/escaper.js +15 -0
- package/dist/cjs/tdf3/src/templates/index.js +12 -0
- package/dist/cjs/tdf3/src/utils/buffer-crc32.js +48 -0
- package/dist/cjs/tdf3/src/utils/chunkers.js +106 -0
- package/dist/cjs/tdf3/src/utils/index.js +296 -0
- package/dist/cjs/tdf3/src/utils/keysplit.js +61 -0
- package/dist/cjs/tdf3/src/utils/zip-reader.js +253 -0
- package/dist/cjs/tdf3/src/utils/zip-writer.js +308 -0
- package/dist/cjs/tdf3/src/version.js +6 -0
- package/dist/types/src/access.d.ts +47 -0
- package/dist/types/src/access.d.ts.map +1 -0
- package/dist/types/src/auth/Eas.d.ts +34 -0
- package/dist/types/src/auth/Eas.d.ts.map +1 -0
- package/dist/types/src/auth/auth.d.ts +86 -0
- package/dist/types/src/auth/auth.d.ts.map +1 -0
- package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +9 -0
- package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -0
- package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +10 -0
- package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -0
- package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +10 -0
- package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -0
- package/dist/types/src/auth/oidc.d.ts +104 -0
- package/dist/types/src/auth/oidc.d.ts.map +1 -0
- package/dist/types/src/auth/providers.d.ts +67 -0
- package/dist/types/src/auth/providers.d.ts.map +1 -0
- package/dist/types/src/encodings/base64.d.ts +18 -0
- package/dist/types/src/encodings/base64.d.ts.map +1 -0
- package/dist/types/src/encodings/hex.d.ts +5 -0
- package/dist/types/src/encodings/hex.d.ts.map +1 -0
- package/dist/types/src/encodings/index.d.ts +3 -0
- package/dist/types/src/encodings/index.d.ts.map +1 -0
- package/dist/types/src/errors.d.ts +72 -0
- package/dist/types/src/errors.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +138 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/nanotdf/Client.d.ts +95 -0
- package/dist/types/src/nanotdf/Client.d.ts.map +1 -0
- package/dist/types/src/nanotdf/NanoTDF.d.ts +25 -0
- package/dist/types/src/nanotdf/NanoTDF.d.ts.map +1 -0
- package/dist/types/src/nanotdf/browser-entry.d.ts +17 -0
- package/dist/types/src/nanotdf/browser-entry.d.ts.map +1 -0
- package/dist/types/src/nanotdf/constants.d.ts +2 -0
- package/dist/types/src/nanotdf/constants.d.ts.map +1 -0
- package/dist/types/src/nanotdf/decrypt.d.ts +9 -0
- package/dist/types/src/nanotdf/decrypt.d.ts.map +1 -0
- package/dist/types/src/nanotdf/encrypt-dataset.d.ts +12 -0
- package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +1 -0
- package/dist/types/src/nanotdf/encrypt.d.ts +14 -0
- package/dist/types/src/nanotdf/encrypt.d.ts.map +1 -0
- package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +10 -0
- package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +1 -0
- package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts +12 -0
- package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts.map +1 -0
- package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts +5 -0
- package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts.map +1 -0
- package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +8 -0
- package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +1 -0
- package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts +7 -0
- package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts.map +1 -0
- package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts +8 -0
- package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts.map +1 -0
- package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts +20 -0
- package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts.map +1 -0
- package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +9 -0
- package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +1 -0
- package/dist/types/src/nanotdf/index.d.ts +9 -0
- package/dist/types/src/nanotdf/index.d.ts.map +1 -0
- package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts +17 -0
- package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Ciphers.d.ts +14 -0
- package/dist/types/src/nanotdf/models/Ciphers.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/DefaultParams.d.ts +21 -0
- package/dist/types/src/nanotdf/models/DefaultParams.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/EcCurves.d.ts +15 -0
- package/dist/types/src/nanotdf/models/EcCurves.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Header.d.ts +73 -0
- package/dist/types/src/nanotdf/models/Header.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Payload.d.ts +47 -0
- package/dist/types/src/nanotdf/models/Payload.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts +52 -0
- package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts +35 -0
- package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts +11 -0
- package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts +31 -0
- package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/ResourceLocator.d.ts +65 -0
- package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +1 -0
- package/dist/types/src/nanotdf/models/Signature.d.ts +33 -0
- package/dist/types/src/nanotdf/models/Signature.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/ciphers.d.ts +8 -0
- package/dist/types/src/nanotdf-crypto/ciphers.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/decrypt.d.ts +14 -0
- package/dist/types/src/nanotdf-crypto/decrypt.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/digest.d.ts +3 -0
- package/dist/types/src/nanotdf-crypto/digest.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts +35 -0
- package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/encrypt.d.ts +14 -0
- package/dist/types/src/nanotdf-crypto/encrypt.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/enums.d.ts +42 -0
- package/dist/types/src/nanotdf-crypto/enums.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts +7 -0
- package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts +10 -0
- package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts +5 -0
- package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/importRawKey.d.ts +13 -0
- package/dist/types/src/nanotdf-crypto/importRawKey.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/index.d.ts +12 -0
- package/dist/types/src/nanotdf-crypto/index.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts +28 -0
- package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +1 -0
- package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts +28 -0
- package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +1 -0
- package/dist/types/src/policy/api.d.ts +4 -0
- package/dist/types/src/policy/api.d.ts.map +1 -0
- package/dist/types/src/policy/attributes.d.ts +95 -0
- package/dist/types/src/policy/attributes.d.ts.map +1 -0
- package/dist/types/src/policy/granter.d.ts +23 -0
- package/dist/types/src/policy/granter.d.ts.map +1 -0
- package/dist/types/src/tdf/AttributeObject.d.ts +13 -0
- package/dist/types/src/tdf/AttributeObject.d.ts.map +1 -0
- package/dist/types/src/tdf/AttributeObjectJwt.d.ts +4 -0
- package/dist/types/src/tdf/AttributeObjectJwt.d.ts.map +1 -0
- package/dist/types/src/tdf/Crypto.d.ts +37 -0
- package/dist/types/src/tdf/Crypto.d.ts.map +1 -0
- package/dist/types/src/tdf/EntityObject.d.ts +18 -0
- package/dist/types/src/tdf/EntityObject.d.ts.map +1 -0
- package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +99 -0
- package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +1 -0
- package/dist/types/src/tdf/Policy.d.ts +28 -0
- package/dist/types/src/tdf/Policy.d.ts.map +1 -0
- package/dist/types/src/tdf/PolicyObject.d.ts +11 -0
- package/dist/types/src/tdf/PolicyObject.d.ts.map +1 -0
- package/dist/types/src/tdf/TypedArray.d.ts +3 -0
- package/dist/types/src/tdf/TypedArray.d.ts.map +1 -0
- package/dist/types/src/tdf/index.d.ts +7 -0
- package/dist/types/src/tdf/index.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +45 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/src/utils.d.ts +45 -0
- package/dist/types/src/utils.d.ts.map +1 -0
- package/dist/types/src/version.d.ts +9 -0
- package/dist/types/src/version.d.ts.map +1 -0
- package/dist/types/tdf3/index.d.ts +16 -0
- package/dist/types/tdf3/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/assertions.d.ts +63 -0
- package/dist/types/tdf3/src/assertions.d.ts.map +1 -0
- package/dist/types/tdf3/src/binary.d.ts +38 -0
- package/dist/types/tdf3/src/binary.d.ts.map +1 -0
- package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts +18 -0
- package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts.map +1 -0
- package/dist/types/tdf3/src/ciphers/algorithms.d.ts +4 -0
- package/dist/types/tdf3/src/ciphers/algorithms.d.ts.map +1 -0
- package/dist/types/tdf3/src/ciphers/index.d.ts +3 -0
- package/dist/types/tdf3/src/ciphers/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts +14 -0
- package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts.map +1 -0
- package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts +53 -0
- package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts.map +1 -0
- package/dist/types/tdf3/src/client/builders.d.ts +436 -0
- package/dist/types/tdf3/src/client/builders.d.ts.map +1 -0
- package/dist/types/tdf3/src/client/index.d.ts +139 -0
- package/dist/types/tdf3/src/client/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/client/validation.d.ts +8 -0
- package/dist/types/tdf3/src/client/validation.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/crypto-utils.d.ts +34 -0
- package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/declarations.d.ts +60 -0
- package/dist/types/tdf3/src/crypto/declarations.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/index.d.ts +103 -0
- package/dist/types/tdf3/src/crypto/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/index.d.ts +5 -0
- package/dist/types/tdf3/src/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/attribute-set.d.ts +65 -0
- package/dist/types/tdf3/src/models/attribute-set.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/encryption-information.d.ts +49 -0
- package/dist/types/tdf3/src/models/encryption-information.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/index.d.ts +9 -0
- package/dist/types/tdf3/src/models/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/key-access.d.ts +42 -0
- package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/manifest.d.ts +9 -0
- package/dist/types/tdf3/src/models/manifest.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/payload.d.ts +7 -0
- package/dist/types/tdf3/src/models/payload.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/policy.d.ts +13 -0
- package/dist/types/tdf3/src/models/policy.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/upsert-response.d.ts +16 -0
- package/dist/types/tdf3/src/models/upsert-response.d.ts.map +1 -0
- package/dist/types/tdf3/src/tdf.d.ts +152 -0
- package/dist/types/tdf3/src/tdf.d.ts.map +1 -0
- package/dist/types/tdf3/src/templates/default.html.d.ts +8 -0
- package/dist/types/tdf3/src/templates/default.html.d.ts.map +1 -0
- package/dist/types/tdf3/src/templates/escaper.d.ts +6 -0
- package/dist/types/tdf3/src/templates/escaper.d.ts.map +1 -0
- package/dist/types/tdf3/src/templates/index.d.ts +3 -0
- package/dist/types/tdf3/src/templates/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/utils/buffer-crc32.d.ts +2 -0
- package/dist/types/tdf3/src/utils/buffer-crc32.d.ts.map +1 -0
- package/dist/types/tdf3/src/utils/chunkers.d.ts +29 -0
- package/dist/types/tdf3/src/utils/chunkers.d.ts.map +1 -0
- package/dist/types/tdf3/src/utils/index.d.ts +36 -0
- package/dist/types/tdf3/src/utils/index.d.ts.map +1 -0
- package/dist/types/tdf3/src/utils/keysplit.d.ts +19 -0
- package/dist/types/tdf3/src/utils/keysplit.d.ts.map +1 -0
- package/dist/types/tdf3/src/utils/zip-reader.d.ts +63 -0
- package/dist/types/tdf3/src/utils/zip-reader.d.ts.map +1 -0
- package/dist/types/tdf3/src/utils/zip-writer.d.ts +35 -0
- package/dist/types/tdf3/src/utils/zip-writer.d.ts.map +1 -0
- package/dist/types/tdf3/src/version.d.ts +3 -0
- package/dist/types/tdf3/src/version.d.ts.map +1 -0
- package/dist/web/package.json +3 -0
- package/dist/web/src/access.js +147 -0
- package/dist/web/src/auth/Eas.js +55 -0
- package/dist/web/src/auth/auth.js +71 -0
- package/dist/web/src/auth/oidc-clientcredentials-provider.js +22 -0
- package/dist/web/src/auth/oidc-externaljwt-provider.js +29 -0
- package/dist/web/src/auth/oidc-refreshtoken-provider.js +30 -0
- package/dist/web/src/auth/oidc.js +215 -0
- package/dist/web/src/auth/providers.js +119 -0
- package/dist/web/src/encodings/base64.js +147 -0
- package/dist/web/src/encodings/hex.js +63 -0
- package/dist/web/src/encodings/index.js +3 -0
- package/dist/web/src/errors.js +123 -0
- package/dist/web/src/index.js +313 -0
- package/dist/web/src/nanotdf/Client.js +268 -0
- package/dist/web/src/nanotdf/NanoTDF.js +89 -0
- package/dist/web/src/nanotdf/browser-entry.js +14 -0
- package/dist/web/src/nanotdf/constants.js +2 -0
- package/dist/web/src/nanotdf/decrypt.js +14 -0
- package/dist/web/src/nanotdf/encrypt-dataset.js +32 -0
- package/dist/web/src/nanotdf/encrypt.js +126 -0
- package/dist/web/src/nanotdf/enum/CipherEnum.js +11 -0
- package/dist/web/src/nanotdf/enum/CurveNameEnum.js +13 -0
- package/dist/web/src/nanotdf/enum/EncodingEnum.js +6 -0
- package/dist/web/src/nanotdf/enum/PolicyTypeEnum.js +9 -0
- package/dist/web/src/nanotdf/enum/ProtocolEnum.js +8 -0
- package/dist/web/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +9 -0
- package/dist/web/src/nanotdf/helpers/calculateByCurve.js +24 -0
- package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +8 -0
- package/dist/web/src/nanotdf/index.js +11 -0
- package/dist/web/src/nanotdf/interfaces/PolicyInterface.js +2 -0
- package/dist/web/src/nanotdf/models/Ciphers.js +54 -0
- package/dist/web/src/nanotdf/models/DefaultParams.js +22 -0
- package/dist/web/src/nanotdf/models/EcCurves.js +32 -0
- package/dist/web/src/nanotdf/models/Header.js +250 -0
- package/dist/web/src/nanotdf/models/Payload.js +156 -0
- package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +71 -0
- package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +77 -0
- package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +33 -0
- package/dist/web/src/nanotdf/models/Policy/RemotePolicy.js +57 -0
- package/dist/web/src/nanotdf/models/ResourceLocator.js +206 -0
- package/dist/web/src/nanotdf/models/Signature.js +74 -0
- package/dist/web/src/nanotdf-crypto/ciphers.js +14 -0
- package/dist/web/src/nanotdf-crypto/decrypt.js +21 -0
- package/dist/web/src/nanotdf-crypto/digest.js +4 -0
- package/dist/web/src/nanotdf-crypto/ecdsaSignature.js +77 -0
- package/dist/web/src/nanotdf-crypto/encrypt.js +21 -0
- package/dist/web/src/nanotdf-crypto/enums.js +49 -0
- package/dist/web/src/nanotdf-crypto/exportCryptoKey.js +17 -0
- package/dist/web/src/nanotdf-crypto/generateKeyPair.js +10 -0
- package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +9 -0
- package/dist/web/src/nanotdf-crypto/importRawKey.js +15 -0
- package/dist/web/src/nanotdf-crypto/index.js +12 -0
- package/dist/web/src/nanotdf-crypto/keyAgreement.js +87 -0
- package/dist/web/src/nanotdf-crypto/pemPublicToCrypto.js +197 -0
- package/dist/web/src/policy/api.js +54 -0
- package/dist/web/src/policy/attributes.js +2 -0
- package/dist/web/src/policy/granter.js +141 -0
- package/dist/web/src/tdf/AttributeObject.js +11 -0
- package/dist/web/src/tdf/AttributeObjectJwt.js +2 -0
- package/dist/web/src/tdf/Crypto.js +44 -0
- package/dist/web/src/tdf/EntityObject.js +2 -0
- package/dist/web/src/tdf/NanoTDF/NanoTDF.js +35 -0
- package/dist/web/src/tdf/Policy.js +48 -0
- package/dist/web/src/tdf/PolicyObject.js +2 -0
- package/dist/web/src/tdf/TypedArray.js +2 -0
- package/dist/web/src/tdf/index.js +4 -0
- package/dist/web/src/types/index.js +2 -0
- package/dist/web/src/utils.js +133 -0
- package/dist/web/src/version.js +9 -0
- package/dist/web/tdf3/index.js +13 -0
- package/dist/web/tdf3/src/assertions.js +111 -0
- package/dist/web/tdf3/src/binary.js +149 -0
- package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +52 -0
- package/dist/web/tdf3/src/ciphers/algorithms.js +5 -0
- package/dist/web/tdf3/src/ciphers/index.js +3 -0
- package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +18 -0
- package/dist/web/tdf3/src/client/DecoratedReadableStream.js +107 -0
- package/dist/web/tdf3/src/client/builders.js +557 -0
- package/dist/web/tdf3/src/client/index.js +423 -0
- package/dist/web/tdf3/src/client/validation.js +58 -0
- package/dist/web/tdf3/src/crypto/crypto-utils.js +107 -0
- package/dist/web/tdf3/src/crypto/declarations.js +5 -0
- package/dist/web/tdf3/src/crypto/index.js +296 -0
- package/dist/web/tdf3/src/index.js +5 -0
- package/dist/web/tdf3/src/models/attribute-set.js +118 -0
- package/dist/web/tdf3/src/models/encryption-information.js +86 -0
- package/dist/web/tdf3/src/models/index.js +9 -0
- package/dist/web/tdf3/src/models/key-access.js +74 -0
- package/dist/web/tdf3/src/models/manifest.js +2 -0
- package/dist/web/tdf3/src/models/payload.js +2 -0
- package/dist/web/tdf3/src/models/policy.js +20 -0
- package/dist/web/tdf3/src/models/upsert-response.js +2 -0
- package/dist/web/tdf3/src/tdf.js +866 -0
- package/dist/web/tdf3/src/templates/default.html.js +96 -0
- package/dist/web/tdf3/src/templates/escaper.js +10 -0
- package/dist/web/tdf3/src/templates/index.js +3 -0
- package/dist/web/tdf3/src/utils/buffer-crc32.js +44 -0
- package/dist/web/tdf3/src/utils/chunkers.js +96 -0
- package/dist/web/tdf3/src/utils/index.js +248 -0
- package/dist/web/tdf3/src/utils/keysplit.js +55 -0
- package/dist/web/tdf3/src/utils/zip-reader.js +247 -0
- package/dist/web/tdf3/src/utils/zip-writer.js +302 -0
- package/dist/web/tdf3/src/version.js +3 -0
- package/package.json +126 -0
- package/src/access.ts +198 -0
- package/src/auth/Eas.ts +79 -0
- package/src/auth/auth.ts +141 -0
- package/src/auth/oidc-clientcredentials-provider.ts +32 -0
- package/src/auth/oidc-externaljwt-provider.ts +41 -0
- package/src/auth/oidc-refreshtoken-provider.ts +41 -0
- package/src/auth/oidc.ts +307 -0
- package/src/auth/providers.ts +139 -0
- package/src/encodings/base64.ts +160 -0
- package/src/encodings/hex.ts +69 -0
- package/src/encodings/index.ts +2 -0
- package/src/errors.ts +113 -0
- package/src/index.ts +441 -0
- package/src/nanotdf/Client.ts +349 -0
- package/src/nanotdf/NanoTDF.ts +121 -0
- package/src/nanotdf/browser-entry.ts +20 -0
- package/src/nanotdf/constants.ts +1 -0
- package/src/nanotdf/decrypt.ts +19 -0
- package/src/nanotdf/encrypt-dataset.ts +52 -0
- package/src/nanotdf/encrypt.ts +197 -0
- package/src/nanotdf/enum/CipherEnum.ts +10 -0
- package/src/nanotdf/enum/CurveNameEnum.ts +12 -0
- package/src/nanotdf/enum/EncodingEnum.ts +5 -0
- package/src/nanotdf/enum/PolicyTypeEnum.ts +8 -0
- package/src/nanotdf/enum/ProtocolEnum.ts +7 -0
- package/src/nanotdf/enum/ResourceLocatorIdentifierEnum.ts +8 -0
- package/src/nanotdf/helpers/calculateByCurve.ts +26 -0
- package/src/nanotdf/helpers/getHkdfSalt.ts +15 -0
- package/src/nanotdf/index.ts +10 -0
- package/src/nanotdf/interfaces/PolicyInterface.ts +27 -0
- package/src/nanotdf/models/Ciphers.ts +67 -0
- package/src/nanotdf/models/DefaultParams.ts +24 -0
- package/src/nanotdf/models/EcCurves.ts +40 -0
- package/src/nanotdf/models/Header.ts +322 -0
- package/src/nanotdf/models/Payload.ts +196 -0
- package/src/nanotdf/models/Policy/AbstractPolicy.ts +90 -0
- package/src/nanotdf/models/Policy/EmbeddedPolicy.ts +101 -0
- package/src/nanotdf/models/Policy/PolicyFactory.ts +48 -0
- package/src/nanotdf/models/Policy/RemotePolicy.ts +74 -0
- package/src/nanotdf/models/ResourceLocator.ts +212 -0
- package/src/nanotdf/models/Signature.ts +85 -0
- package/src/nanotdf-crypto/ciphers.ts +13 -0
- package/src/nanotdf-crypto/decrypt.ts +30 -0
- package/src/nanotdf-crypto/digest.ts +8 -0
- package/src/nanotdf-crypto/ecdsaSignature.ts +109 -0
- package/src/nanotdf-crypto/encrypt.ts +30 -0
- package/src/nanotdf-crypto/enums.ts +47 -0
- package/src/nanotdf-crypto/exportCryptoKey.ts +17 -0
- package/src/nanotdf-crypto/generateKeyPair.ts +19 -0
- package/src/nanotdf-crypto/generateRandomNumber.ts +8 -0
- package/src/nanotdf-crypto/importRawKey.ts +19 -0
- package/src/nanotdf-crypto/index.ts +11 -0
- package/src/nanotdf-crypto/keyAgreement.ts +139 -0
- package/src/nanotdf-crypto/pemPublicToCrypto.ts +232 -0
- package/src/package-lock.json +6 -0
- package/src/package.json +3 -0
- package/src/platform/authorization/authorization_connect.d.ts +44 -0
- package/src/platform/authorization/authorization_connect.js +44 -0
- package/src/platform/authorization/authorization_pb.d.ts +707 -0
- package/src/platform/authorization/authorization_pb.js +372 -0
- package/src/platform/common/common_pb.d.ts +129 -0
- package/src/platform/common/common_pb.js +58 -0
- package/src/platform/entityresolution/entity_resolution_connect.d.ts +35 -0
- package/src/platform/entityresolution/entity_resolution_connect.js +35 -0
- package/src/platform/entityresolution/entity_resolution_pb.d.ts +242 -0
- package/src/platform/entityresolution/entity_resolution_pb.js +139 -0
- package/src/platform/kas/kas_connect.d.ts +59 -0
- package/src/platform/kas/kas_connect.js +59 -0
- package/src/platform/kas/kas_pb.d.ts +200 -0
- package/src/platform/kas/kas_pb.js +84 -0
- package/src/platform/policy/attributes/attributes_connect.d.ts +168 -0
- package/src/platform/policy/attributes/attributes_connect.js +168 -0
- package/src/platform/policy/attributes/attributes_pb.d.ts +929 -0
- package/src/platform/policy/attributes/attributes_pb.js +363 -0
- package/src/platform/policy/kasregistry/key_access_server_registry_connect.d.ts +62 -0
- package/src/platform/policy/kasregistry/key_access_server_registry_connect.js +62 -0
- package/src/platform/policy/kasregistry/key_access_server_registry_pb.d.ts +283 -0
- package/src/platform/policy/kasregistry/key_access_server_registry_pb.js +113 -0
- package/src/platform/policy/namespaces/namespaces_connect.d.ts +62 -0
- package/src/platform/policy/namespaces/namespaces_connect.js +62 -0
- package/src/platform/policy/namespaces/namespaces_pb.d.ts +270 -0
- package/src/platform/policy/namespaces/namespaces_pb.js +110 -0
- package/src/platform/policy/objects_pb.d.ts +725 -0
- package/src/platform/policy/objects_pb.js +288 -0
- package/src/platform/policy/resourcemapping/resource_mapping_connect.d.ts +259 -0
- package/src/platform/policy/resourcemapping/resource_mapping_connect.js +259 -0
- package/src/platform/policy/resourcemapping/resource_mapping_pb.d.ts +314 -0
- package/src/platform/policy/resourcemapping/resource_mapping_pb.js +142 -0
- package/src/platform/policy/selectors_pb.d.ts +269 -0
- package/src/platform/policy/selectors_pb.js +110 -0
- package/src/platform/policy/subjectmapping/subject_mapping_connect.d.ts +118 -0
- package/src/platform/policy/subjectmapping/subject_mapping_connect.js +118 -0
- package/src/platform/policy/subjectmapping/subject_mapping_pb.d.ts +672 -0
- package/src/platform/policy/subjectmapping/subject_mapping_pb.js +260 -0
- package/src/platform/wellknownconfiguration/wellknown_configuration_connect.d.ts +26 -0
- package/src/platform/wellknownconfiguration/wellknown_configuration_connect.js +26 -0
- package/src/platform/wellknownconfiguration/wellknown_configuration_pb.d.ts +75 -0
- package/src/platform/wellknownconfiguration/wellknown_configuration_pb.js +35 -0
- package/src/policy/api.ts +61 -0
- package/src/policy/attributes.ts +117 -0
- package/src/policy/granter.ts +181 -0
- package/src/tdf/AttributeObject.ts +27 -0
- package/src/tdf/AttributeObjectJwt.ts +3 -0
- package/src/tdf/Crypto.ts +42 -0
- package/src/tdf/EntityObject.ts +18 -0
- package/src/tdf/NanoTDF/NanoTDF.ts +120 -0
- package/src/tdf/Policy.ts +51 -0
- package/src/tdf/PolicyObject.ts +12 -0
- package/src/tdf/TypedArray.ts +12 -0
- package/src/tdf/index.ts +6 -0
- package/src/types/index.ts +55 -0
- package/src/utils.ts +149 -0
- package/src/version.ts +9 -0
- package/tdf3/index.ts +91 -0
- package/tdf3/package-lock.json +6 -0
- package/tdf3/package.json +3 -0
- package/tdf3/src/assertions.ts +191 -0
- package/tdf3/src/binary.ts +195 -0
- package/tdf3/src/ciphers/aes-gcm-cipher.ts +76 -0
- package/tdf3/src/ciphers/algorithms.ts +9 -0
- package/tdf3/src/ciphers/index.ts +2 -0
- package/tdf3/src/ciphers/symmetric-cipher-base.ts +38 -0
- package/tdf3/src/client/DecoratedReadableStream.ts +148 -0
- package/tdf3/src/client/builders.ts +701 -0
- package/tdf3/src/client/index.ts +637 -0
- package/tdf3/src/client/validation.ts +79 -0
- package/tdf3/src/crypto/crypto-utils.ts +119 -0
- package/tdf3/src/crypto/declarations.ts +89 -0
- package/tdf3/src/crypto/index.ts +394 -0
- package/tdf3/src/index.ts +4 -0
- package/tdf3/src/models/attribute-set.ts +142 -0
- package/tdf3/src/models/encryption-information.ts +172 -0
- package/tdf3/src/models/index.ts +8 -0
- package/tdf3/src/models/key-access.ts +128 -0
- package/tdf3/src/models/manifest.ts +9 -0
- package/tdf3/src/models/payload.ts +6 -0
- package/tdf3/src/models/policy.ts +35 -0
- package/tdf3/src/models/upsert-response.ts +17 -0
- package/tdf3/src/tdf.ts +1351 -0
- package/tdf3/src/templates/default.html.ts +105 -0
- package/tdf3/src/templates/escaper.ts +10 -0
- package/tdf3/src/templates/index.ts +2 -0
- package/tdf3/src/utils/buffer-crc32.ts +46 -0
- package/tdf3/src/utils/chunkers.ts +118 -0
- package/tdf3/src/utils/index.ts +309 -0
- package/tdf3/src/utils/keysplit.ts +63 -0
- package/tdf3/src/utils/zip-reader.ts +341 -0
- package/tdf3/src/utils/zip-writer.ts +375 -0
- package/tdf3/src/version.ts +2 -0
- package/tdf3/types.d.ts +14 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const calculateByCurve_js_1 = require("../helpers/calculateByCurve.js");
|
|
4
|
+
const errors_js_1 = require("../../errors.js");
|
|
5
|
+
/**
|
|
6
|
+
* NanoTDF Signature
|
|
7
|
+
*
|
|
8
|
+
* The signature section is an optional section that contains an ECDSA signature used to cryptographically bind the Header and Payload to a creator of the nanotdf. The key used for signing is the private key of the creator of the nanotdf. The ECC Params used for the signature are described in Section 3.3.1.4.2. The private key used for this signature is distinctly different than the ephemeral private key. This is a persistent key belonging to an individual, entity, or device that creates nanotdfs. The signature is used to authenticate the entire nanotdf and contains both the public key related to the creators private key and the resulting signature. The structure of this section:
|
|
9
|
+
*
|
|
10
|
+
* | Section | Minimum Length (B) | Maximum Length (B) |
|
|
11
|
+
* |------------|--------------------|--------------------|
|
|
12
|
+
* | Public Key | 33 | 67 |
|
|
13
|
+
* | Signature | 64 | 132 |
|
|
14
|
+
*
|
|
15
|
+
* @link https://github.com/virtru/nanotdf/blob/master/spec/index.md#333-signature
|
|
16
|
+
*/
|
|
17
|
+
class Signature {
|
|
18
|
+
static parse(header, buff) {
|
|
19
|
+
let offset = 0;
|
|
20
|
+
/**
|
|
21
|
+
* Parse the public key
|
|
22
|
+
*
|
|
23
|
+
* This section contains the compressed public key of the private key used to sign the message.
|
|
24
|
+
*/
|
|
25
|
+
// TODO: Resolve where offset is missing 1 byte
|
|
26
|
+
const publicKeyLength = (0, calculateByCurve_js_1.lengthOfPublicKey)(header.signatureCurveName) + 1;
|
|
27
|
+
const publicKey = buff.subarray(offset, offset + publicKeyLength);
|
|
28
|
+
offset += publicKeyLength;
|
|
29
|
+
/**
|
|
30
|
+
* Parse signature
|
|
31
|
+
*
|
|
32
|
+
* This section contains the encoded `r` and `s` values of the ECDSA signature.
|
|
33
|
+
*
|
|
34
|
+
* ECDSA signatures are big endian encodings of the `r` and `s` values of an ECDSA signature.The length of `r` and `s`
|
|
35
|
+
* values is determined by the ECC Mode used for the signature. The encoding for the signature is the big endian
|
|
36
|
+
* encodings of R and S concatenated to each other. For example, `r = 1` and `s = 2` for an ECDSA signature of a
|
|
37
|
+
* ecp256k1 key would be (line breaks and spaces are added for easier visualization):
|
|
38
|
+
*
|
|
39
|
+
* ```
|
|
40
|
+
* 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
41
|
+
* 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
|
|
42
|
+
* 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
43
|
+
* 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @link https://github.com/virtru/nanotdf/blob/master/spec/index.md#52-ecdsa-signature-encoding
|
|
47
|
+
*/
|
|
48
|
+
const signatureLength = (0, calculateByCurve_js_1.lengthOfSignature)(header.signatureCurveName);
|
|
49
|
+
const signature = buff.subarray(offset, offset + signatureLength);
|
|
50
|
+
offset += signatureLength;
|
|
51
|
+
return { signature: new Signature(publicKey, signature), offset };
|
|
52
|
+
}
|
|
53
|
+
constructor(publicKey, signature) {
|
|
54
|
+
this.publicKey = publicKey;
|
|
55
|
+
this.signature = signature;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Length
|
|
59
|
+
*
|
|
60
|
+
* @returns { number } Length of signature
|
|
61
|
+
*/
|
|
62
|
+
get length() {
|
|
63
|
+
return this.publicKey.length + this.signature.length;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Copy the contents of the signature to buffer
|
|
67
|
+
*/
|
|
68
|
+
copyToBuffer(target) {
|
|
69
|
+
if (this.length > target.length) {
|
|
70
|
+
throw new errors_js_1.ConfigurationError('Invalid buffer size to copy signature');
|
|
71
|
+
}
|
|
72
|
+
target.set(this.publicKey, 0);
|
|
73
|
+
target.set(this.signature, this.publicKey.length);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.default = Signature;
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvbW9kZWxzL1NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHdFQUFzRjtBQUN0RiwrQ0FBcUQ7QUFFckQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFxQixTQUFTO0lBSTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBYyxFQUFFLElBQWdCO1FBQzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVmOzs7O1dBSUc7UUFDSCwrQ0FBK0M7UUFDL0MsTUFBTSxlQUFlLEdBQUcsSUFBQSx1Q0FBaUIsRUFBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxlQUFlLENBQUM7UUFFMUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWtCRztRQUNILE1BQU0sZUFBZSxHQUFHLElBQUEsdUNBQWlCLEVBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxlQUFlLENBQUM7UUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVELFlBQVksU0FBcUIsRUFBRSxTQUFxQjtRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQy9CLE1BQU0sSUFBSSw4QkFBa0IsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQXBFRCw0QkFvRUMifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.supportedCiphers = exports.CipherTagLengths = exports.Ciphers = void 0;
|
|
4
|
+
var Ciphers;
|
|
5
|
+
(function (Ciphers) {
|
|
6
|
+
Ciphers["AesGcm"] = "AES-GCM";
|
|
7
|
+
})(Ciphers || (exports.Ciphers = Ciphers = {}));
|
|
8
|
+
var CipherTagLengths;
|
|
9
|
+
(function (CipherTagLengths) {
|
|
10
|
+
CipherTagLengths[CipherTagLengths["AesGcm"] = 128] = "AesGcm";
|
|
11
|
+
})(CipherTagLengths || (exports.CipherTagLengths = CipherTagLengths = {}));
|
|
12
|
+
const cipherKeys = [];
|
|
13
|
+
for (const cipherKey in Ciphers) {
|
|
14
|
+
cipherKeys.push(cipherKey);
|
|
15
|
+
}
|
|
16
|
+
exports.supportedCiphers = cipherKeys;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lwaGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmLWNyeXB0by9jaXBoZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksT0FFWDtBQUZELFdBQVksT0FBTztJQUNqQiw2QkFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBRlcsT0FBTyx1QkFBUCxPQUFPLFFBRWxCO0FBRUQsSUFBWSxnQkFFWDtBQUZELFdBQVksZ0JBQWdCO0lBQzFCLDZEQUFZLENBQUE7QUFDZCxDQUFDLEVBRlcsZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFFM0I7QUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxPQUFPLEVBQUU7SUFDL0IsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztDQUM1QjtBQUNZLFFBQUEsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDIn0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ciphers_js_1 = require("./ciphers.js");
|
|
4
|
+
/**
|
|
5
|
+
* Decrypt plaintext buffer to plaintext buffer
|
|
6
|
+
*
|
|
7
|
+
* Only supports AES-GCM
|
|
8
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/encrypt
|
|
9
|
+
*
|
|
10
|
+
* @param key Encryption key
|
|
11
|
+
* @param ciphertext Encrypted buffer
|
|
12
|
+
* @param iv Initialization vector
|
|
13
|
+
* @param tagLength Size (bits) of authentication tag
|
|
14
|
+
* @returns Resolves plaintext buffer
|
|
15
|
+
*/
|
|
16
|
+
async function decrypt(key, ciphertext, iv, tagLength) {
|
|
17
|
+
return crypto.subtle.decrypt({
|
|
18
|
+
name: ciphers_js_1.Ciphers.AesGcm,
|
|
19
|
+
iv,
|
|
20
|
+
tagLength: tagLength || ciphers_js_1.CipherTagLengths.AesGcm,
|
|
21
|
+
}, key, ciphertext);
|
|
22
|
+
}
|
|
23
|
+
exports.default = decrypt;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmLWNyeXB0by9kZWNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQXlEO0FBRXpEOzs7Ozs7Ozs7OztHQVdHO0FBQ1ksS0FBSyxVQUFVLE9BQU8sQ0FDbkMsR0FBYyxFQUNkLFVBQXNCLEVBQ3RCLEVBQWMsRUFDZCxTQUFrQjtJQUVsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUMxQjtRQUNFLElBQUksRUFBRSxvQkFBTyxDQUFDLE1BQU07UUFDcEIsRUFBRTtRQUNGLFNBQVMsRUFBRSxTQUFTLElBQUksNkJBQWdCLENBQUMsTUFBTTtLQUNoRCxFQUNELEdBQUcsRUFDSCxVQUFVLENBQ1gsQ0FBQztBQUNKLENBQUM7QUFmRCwwQkFlQyJ9
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function digest(hashType, data) {
|
|
4
|
+
return crypto.subtle.digest(hashType, data);
|
|
5
|
+
}
|
|
6
|
+
exports.default = digest;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2RpZ2VzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLFNBQXdCLE1BQU0sQ0FDNUIsUUFBNkIsRUFDN0IsSUFBOEI7SUFFOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUxELHlCQUtDIn0=
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractRSValuesFromSignature = exports.verifyECDSASignature = exports.computeECDSASig = void 0;
|
|
4
|
+
const errors_js_1 = require("../errors.js");
|
|
5
|
+
const enums_js_1 = require("./../nanotdf-crypto/enums.js");
|
|
6
|
+
/**
|
|
7
|
+
* Computes an ECDSA signature for the given data using the provided private key.
|
|
8
|
+
*
|
|
9
|
+
* This function uses the Web Crypto API to generate a digital signature
|
|
10
|
+
* for the input data using the ECDSA algorithm with SHA-256 as the hash function.
|
|
11
|
+
*
|
|
12
|
+
* @param {CryptoKey} privateKey - The ECDSA private key used for signing.
|
|
13
|
+
* @param {Uint8Array} data - The data to be signed.
|
|
14
|
+
* @returns {Promise<ArrayBuffer>} - A promise that resolves to the generated signature.
|
|
15
|
+
*/
|
|
16
|
+
async function computeECDSASig(privateKey, data) {
|
|
17
|
+
const signature = await crypto.subtle.sign({
|
|
18
|
+
name: enums_js_1.AlgorithmName.ECDSA,
|
|
19
|
+
hash: { name: 'SHA-256' },
|
|
20
|
+
}, privateKey, data);
|
|
21
|
+
return signature;
|
|
22
|
+
}
|
|
23
|
+
exports.computeECDSASig = computeECDSASig;
|
|
24
|
+
/**
|
|
25
|
+
* Verifies an ECDSA signature using the provided public key and data.
|
|
26
|
+
*
|
|
27
|
+
* This function uses the Web Crypto API to verify the digital signature
|
|
28
|
+
* for the input data using the ECDSA algorithm with SHA-256 as the hash function.
|
|
29
|
+
*
|
|
30
|
+
* @param {CryptoKey} publicKey - The ECDSA public key used for verification.
|
|
31
|
+
* @param {Uint8Array} signature - The signature to be verified.
|
|
32
|
+
* @param {Uint8Array} data - The data that was signed.
|
|
33
|
+
* @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the signature is valid.
|
|
34
|
+
*/
|
|
35
|
+
async function verifyECDSASignature(publicKey, signature, data) {
|
|
36
|
+
const isValid = await crypto.subtle.verify({
|
|
37
|
+
name: enums_js_1.AlgorithmName.ECDSA,
|
|
38
|
+
hash: { name: 'SHA-256' },
|
|
39
|
+
}, publicKey, signature, data);
|
|
40
|
+
return isValid;
|
|
41
|
+
}
|
|
42
|
+
exports.verifyECDSASignature = verifyECDSASignature;
|
|
43
|
+
/**
|
|
44
|
+
* Extracts the r and s values from a given ECDSA signature.
|
|
45
|
+
*
|
|
46
|
+
* @param {Uint8Array} signatureBytes - The raw ECDSA signature bytes.
|
|
47
|
+
* @returns {{ r: Uint8Array; s: Uint8Array }} An object containing the r and s values as Uint8Arrays.
|
|
48
|
+
* @throws {Error} If the validation of the signature fails.
|
|
49
|
+
*/
|
|
50
|
+
function extractRSValuesFromSignature(signatureBytes) {
|
|
51
|
+
// Split the raw signature into r and s values
|
|
52
|
+
const halfLength = Math.floor(signatureBytes.length / 2);
|
|
53
|
+
const rValue = signatureBytes.slice(0, halfLength);
|
|
54
|
+
const sValue = signatureBytes.slice(halfLength);
|
|
55
|
+
// Correct validation
|
|
56
|
+
if (!concatAndCompareUint8Arrays(rValue, sValue, signatureBytes)) {
|
|
57
|
+
throw new errors_js_1.ConfigurationError('invalid ECDSA signature');
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
r: rValue,
|
|
61
|
+
s: sValue,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
exports.extractRSValuesFromSignature = extractRSValuesFromSignature;
|
|
65
|
+
function concatAndCompareUint8Arrays(arr1, arr2, arr3) {
|
|
66
|
+
// Create a new Uint8Array with the combined length of arr1 and arr2
|
|
67
|
+
const concatenated = new Uint8Array(arr1.length + arr2.length);
|
|
68
|
+
// Copy arr1 and arr2 into the new array
|
|
69
|
+
concatenated.set(arr1, 0);
|
|
70
|
+
concatenated.set(arr2, arr1.length);
|
|
71
|
+
// Check if the lengths are the same
|
|
72
|
+
if (concatenated.length !== arr3.length) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
// Compare each element
|
|
76
|
+
for (let i = 0; i < concatenated.length; i++) {
|
|
77
|
+
if (concatenated[i] !== arr3[i]) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FTaWduYXR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vZWNkc2FTaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQWtEO0FBQ2xELDJEQUE2RDtBQUU3RDs7Ozs7Ozs7O0dBU0c7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUNuQyxVQUFxQixFQUNyQixJQUFnQjtJQUVoQixNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN4QztRQUNFLElBQUksRUFBRSx3QkFBYSxDQUFDLEtBQUs7UUFDekIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtLQUMxQixFQUNELFVBQVUsRUFDVixJQUFJLENBQ0wsQ0FBQztJQUNGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFiRCwwQ0FhQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLFNBQW9CLEVBQ3BCLFNBQXFCLEVBQ3JCLElBQWdCO0lBRWhCLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQ3hDO1FBQ0UsSUFBSSxFQUFFLHdCQUFhLENBQUMsS0FBSztRQUN6QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0tBQzFCLEVBQ0QsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLENBQ0wsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFmRCxvREFlQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLDRCQUE0QixDQUFDLGNBQTBCO0lBSXJFLDhDQUE4QztJQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoRCxxQkFBcUI7SUFDckIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLEVBQUU7UUFDaEUsTUFBTSxJQUFJLDhCQUFrQixDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDekQ7SUFFRCxPQUFPO1FBQ0wsQ0FBQyxFQUFFLE1BQU07UUFDVCxDQUFDLEVBQUUsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBbEJELG9FQWtCQztBQUVELFNBQVMsMkJBQTJCLENBQ2xDLElBQWdCLEVBQ2hCLElBQWdCLEVBQ2hCLElBQWdCO0lBRWhCLG9FQUFvRTtJQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUvRCx3Q0FBd0M7SUFDeEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBDLG9DQUFvQztJQUNwQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN2QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsdUJBQXVCO0lBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzVDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMvQixPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ciphers_js_1 = require("./ciphers.js");
|
|
4
|
+
/**
|
|
5
|
+
* Encrypt plaintext buffer to ciphertext buffer
|
|
6
|
+
*
|
|
7
|
+
* Only supports AES-GCM
|
|
8
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/decrypt
|
|
9
|
+
*
|
|
10
|
+
* @param key Encryption key
|
|
11
|
+
* @param plaintext Bytes to encrypt
|
|
12
|
+
* @param iv Initialization vector
|
|
13
|
+
* @param tagLength Size (bits) of authentication tag
|
|
14
|
+
* @returns Resolves ciphertext buffer
|
|
15
|
+
*/
|
|
16
|
+
async function encrypt(key, plaintext, iv, tagLength) {
|
|
17
|
+
return crypto.subtle.encrypt({
|
|
18
|
+
name: ciphers_js_1.Ciphers.AesGcm,
|
|
19
|
+
iv,
|
|
20
|
+
tagLength: tagLength || ciphers_js_1.CipherTagLengths.AesGcm,
|
|
21
|
+
}, key, plaintext);
|
|
22
|
+
}
|
|
23
|
+
exports.default = encrypt;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmLWNyeXB0by9lbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQXlEO0FBRXpEOzs7Ozs7Ozs7OztHQVdHO0FBQ1ksS0FBSyxVQUFVLE9BQU8sQ0FDbkMsR0FBYyxFQUNkLFNBQXFCLEVBQ3JCLEVBQWMsRUFDZCxTQUFrQjtJQUVsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUMxQjtRQUNFLElBQUksRUFBRSxvQkFBTyxDQUFDLE1BQU07UUFDcEIsRUFBRTtRQUNGLFNBQVMsRUFBRSxTQUFTLElBQUksNkJBQWdCLENBQUMsTUFBTTtLQUNoRCxFQUNELEdBQUcsRUFDSCxTQUFTLENBQ1YsQ0FBQztBQUNKLENBQUM7QUFmRCwwQkFlQyJ9
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeyUsageType = exports.KeyType = exports.KeyFormat = exports.HashType = exports.CipherType = exports.NamedCurve = exports.AlgorithmName = void 0;
|
|
4
|
+
var AlgorithmName;
|
|
5
|
+
(function (AlgorithmName) {
|
|
6
|
+
AlgorithmName["ECDH"] = "ECDH";
|
|
7
|
+
AlgorithmName["ECDSA"] = "ECDSA";
|
|
8
|
+
AlgorithmName["ES256"] = "ES256";
|
|
9
|
+
AlgorithmName["HKDF"] = "HKDF";
|
|
10
|
+
AlgorithmName["RSA_OAEP"] = "RSA-OAEP";
|
|
11
|
+
AlgorithmName["RSA_PSS"] = "RSA-PSS";
|
|
12
|
+
})(AlgorithmName || (exports.AlgorithmName = AlgorithmName = {}));
|
|
13
|
+
var NamedCurve;
|
|
14
|
+
(function (NamedCurve) {
|
|
15
|
+
NamedCurve["P256"] = "P-256";
|
|
16
|
+
NamedCurve["P384"] = "P-384";
|
|
17
|
+
NamedCurve["P512"] = "P-512";
|
|
18
|
+
})(NamedCurve || (exports.NamedCurve = NamedCurve = {}));
|
|
19
|
+
var CipherType;
|
|
20
|
+
(function (CipherType) {
|
|
21
|
+
CipherType["AesGcm"] = "AES-GCM";
|
|
22
|
+
})(CipherType || (exports.CipherType = CipherType = {}));
|
|
23
|
+
var HashType;
|
|
24
|
+
(function (HashType) {
|
|
25
|
+
HashType["Sha1"] = "SHA-1";
|
|
26
|
+
HashType["Sha256"] = "SHA-256";
|
|
27
|
+
HashType["Sha384"] = "SHA-384";
|
|
28
|
+
HashType["Sha512"] = "SHA-512";
|
|
29
|
+
})(HashType || (exports.HashType = HashType = {}));
|
|
30
|
+
var KeyFormat;
|
|
31
|
+
(function (KeyFormat) {
|
|
32
|
+
KeyFormat["Raw"] = "raw";
|
|
33
|
+
KeyFormat["Pkcs8"] = "pkcs8";
|
|
34
|
+
KeyFormat["Spki"] = "spki";
|
|
35
|
+
})(KeyFormat || (exports.KeyFormat = KeyFormat = {}));
|
|
36
|
+
var KeyType;
|
|
37
|
+
(function (KeyType) {
|
|
38
|
+
KeyType["Private"] = "private";
|
|
39
|
+
KeyType["Public"] = "public";
|
|
40
|
+
})(KeyType || (exports.KeyType = KeyType = {}));
|
|
41
|
+
var KeyUsageType;
|
|
42
|
+
(function (KeyUsageType) {
|
|
43
|
+
KeyUsageType["Encrypt"] = "encrypt";
|
|
44
|
+
KeyUsageType["Decrypt"] = "decrypt";
|
|
45
|
+
KeyUsageType["DeriveBits"] = "deriveBits";
|
|
46
|
+
KeyUsageType["DeriveKey"] = "deriveKey";
|
|
47
|
+
KeyUsageType["Verify"] = "verify";
|
|
48
|
+
KeyUsageType["Sign"] = "sign";
|
|
49
|
+
KeyUsageType["UnwrapKey"] = "unwrapKey";
|
|
50
|
+
KeyUsageType["WrapKey"] = "wrapKey";
|
|
51
|
+
})(KeyUsageType || (exports.KeyUsageType = KeyUsageType = {}));
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vZW51bXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxhQU9YO0FBUEQsV0FBWSxhQUFhO0lBQ3ZCLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7SUFDYixzQ0FBcUIsQ0FBQTtJQUNyQixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBUFcsYUFBYSw2QkFBYixhQUFhLFFBT3hCO0FBRUQsSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLDRCQUFjLENBQUE7SUFDZCw0QkFBYyxDQUFBO0lBQ2QsNEJBQWMsQ0FBQTtBQUNoQixDQUFDLEVBSlcsVUFBVSwwQkFBVixVQUFVLFFBSXJCO0FBRUQsSUFBWSxVQUVYO0FBRkQsV0FBWSxVQUFVO0lBQ3BCLGdDQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFGVyxVQUFVLDBCQUFWLFVBQVUsUUFFckI7QUFFRCxJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsMEJBQWMsQ0FBQTtJQUNkLDhCQUFrQixDQUFBO0lBQ2xCLDhCQUFrQixDQUFBO0lBQ2xCLDhCQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFMVyxRQUFRLHdCQUFSLFFBQVEsUUFLbkI7QUFFRCxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsd0JBQVcsQ0FBQTtJQUNYLDRCQUFlLENBQUE7SUFDZiwwQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLFNBQVMseUJBQVQsU0FBUyxRQUlwQjtBQUVELElBQVksT0FHWDtBQUhELFdBQVksT0FBTztJQUNqQiw4QkFBbUIsQ0FBQTtJQUNuQiw0QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsT0FBTyx1QkFBUCxPQUFPLFFBR2xCO0FBRUQsSUFBWSxZQVNYO0FBVEQsV0FBWSxZQUFZO0lBQ3RCLG1DQUFtQixDQUFBO0lBQ25CLG1DQUFtQixDQUFBO0lBQ25CLHlDQUF5QixDQUFBO0lBQ3pCLHVDQUF1QixDQUFBO0lBQ3ZCLGlDQUFpQixDQUFBO0lBQ2pCLDZCQUFhLENBQUE7SUFDYix1Q0FBdUIsQ0FBQTtJQUN2QixtQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsWUFBWSw0QkFBWixZQUFZLFFBU3ZCIn0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* Export to PEM format to binary buffer
|
|
6
|
+
* - key {CryptoKey} default: "undefined" CryptoKey generated by WebCrypto API
|
|
7
|
+
*/
|
|
8
|
+
async function exportCryptoKey(key) {
|
|
9
|
+
const exportedKey = await crypto.subtle.exportKey('raw', key);
|
|
10
|
+
const keyBuffer = new Uint8Array(exportedKey);
|
|
11
|
+
const len = keyBuffer.byteLength;
|
|
12
|
+
const xPoint = keyBuffer.slice(0, (1 + len) >>> 1); // drop `y`
|
|
13
|
+
xPoint[0] = 0x2 | (keyBuffer[len - 1] & 0x01); // encode sign of `y` in first bit
|
|
14
|
+
// Copy to Arraybuffer
|
|
15
|
+
const compressedPubKeyBuf = new ArrayBuffer(xPoint.byteLength);
|
|
16
|
+
new Uint8Array(compressedPubKeyBuf).set(new Uint8Array(xPoint));
|
|
17
|
+
return compressedPubKeyBuf;
|
|
18
|
+
}
|
|
19
|
+
exports.default = exportCryptoKey;
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0Q3J5cHRvS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2V4cG9ydENyeXB0b0tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7O0dBSUc7QUFDWSxLQUFLLFVBQVUsZUFBZSxDQUFDLEdBQWM7SUFDMUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7SUFDL0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7SUFFakYsc0JBQXNCO0lBQ3RCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9ELElBQUksVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxtQkFBbUIsQ0FBQztBQUM3QixDQUFDO0FBWEQsa0NBV0MifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const enums_js_1 = require("./enums.js");
|
|
4
|
+
async function generateKeyPair({ type: name, curve: namedCurve, keyUsages, isExtractable } = {
|
|
5
|
+
type: enums_js_1.AlgorithmName.ECDH,
|
|
6
|
+
curve: enums_js_1.NamedCurve.P256,
|
|
7
|
+
keyUsages: [enums_js_1.KeyUsageType.DeriveBits, enums_js_1.KeyUsageType.DeriveKey],
|
|
8
|
+
isExtractable: true,
|
|
9
|
+
}) {
|
|
10
|
+
return crypto.subtle.generateKey({ name, namedCurve }, isExtractable, keyUsages);
|
|
11
|
+
}
|
|
12
|
+
exports.default = generateKeyPair;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2dlbmVyYXRlS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFxRTtBQVN0RCxLQUFLLFVBQVUsZUFBZSxDQUMzQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxLQUE2QjtJQUNwRixJQUFJLEVBQUUsd0JBQWEsQ0FBQyxJQUFJO0lBQ3hCLEtBQUssRUFBRSxxQkFBVSxDQUFDLElBQUk7SUFDdEIsU0FBUyxFQUFFLENBQUMsdUJBQVksQ0FBQyxVQUFVLEVBQUUsdUJBQVksQ0FBQyxTQUFTLENBQUM7SUFDNUQsYUFBYSxFQUFFLElBQUk7Q0FDcEI7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBVEQsa0NBU0MifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Generate a random number of given length
|
|
5
|
+
*/
|
|
6
|
+
function generateRandomNumber(length) {
|
|
7
|
+
const byteArray = new Uint8Array(length);
|
|
8
|
+
crypto.getRandomValues(byteArray);
|
|
9
|
+
return byteArray;
|
|
10
|
+
}
|
|
11
|
+
exports.default = generateRandomNumber;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVSYW5kb21OdW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vZ2VuZXJhdGVSYW5kb21OdW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7R0FFRztBQUNILFNBQXdCLG9CQUFvQixDQUFDLE1BQWM7SUFDekQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBSkQsdUNBSUMifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const enums_js_1 = require("./enums.js");
|
|
4
|
+
/**
|
|
5
|
+
* Import raw key
|
|
6
|
+
*
|
|
7
|
+
* A specific implementation of the importKey method to import raw keys. Specifies some defaults
|
|
8
|
+
* to ensure security.
|
|
9
|
+
*
|
|
10
|
+
* @param key Key which needs to be imported
|
|
11
|
+
* @param keyUsages How the key will be used
|
|
12
|
+
* @param isExtractable Whether key is extractable
|
|
13
|
+
*/
|
|
14
|
+
async function importRawKey(key, keyUsages, isExtractable = false) {
|
|
15
|
+
return crypto.subtle.importKey(enums_js_1.KeyFormat.Raw, key, enums_js_1.CipherType.AesGcm, isExtractable, keyUsages);
|
|
16
|
+
}
|
|
17
|
+
exports.default = importRawKey;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0UmF3S2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2ltcG9ydFJhd0tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFpRTtBQUVqRTs7Ozs7Ozs7O0dBU0c7QUFDWSxLQUFLLFVBQVUsWUFBWSxDQUN4QyxHQUFnQixFQUNoQixTQUE4QixFQUM5QixhQUFhLEdBQUcsS0FBSztJQUVyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLG9CQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxxQkFBVSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEcsQ0FBQztBQU5ELCtCQU1DIn0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.enums = exports.pemCertToCrypto = exports.pemPublicToCrypto = exports.generateRandomNumber = exports.exportCryptoKey = exports.keyAgreement = exports.importRawKey = exports.generateKeyPair = exports.encrypt = exports.digest = exports.decrypt = exports.Ciphers = void 0;
|
|
30
|
+
var ciphers_js_1 = require("./ciphers.js");
|
|
31
|
+
Object.defineProperty(exports, "Ciphers", { enumerable: true, get: function () { return ciphers_js_1.Ciphers; } });
|
|
32
|
+
var decrypt_js_1 = require("./decrypt.js");
|
|
33
|
+
Object.defineProperty(exports, "decrypt", { enumerable: true, get: function () { return __importDefault(decrypt_js_1).default; } });
|
|
34
|
+
var digest_js_1 = require("./digest.js");
|
|
35
|
+
Object.defineProperty(exports, "digest", { enumerable: true, get: function () { return __importDefault(digest_js_1).default; } });
|
|
36
|
+
var encrypt_js_1 = require("./encrypt.js");
|
|
37
|
+
Object.defineProperty(exports, "encrypt", { enumerable: true, get: function () { return __importDefault(encrypt_js_1).default; } });
|
|
38
|
+
var generateKeyPair_js_1 = require("./generateKeyPair.js");
|
|
39
|
+
Object.defineProperty(exports, "generateKeyPair", { enumerable: true, get: function () { return __importDefault(generateKeyPair_js_1).default; } });
|
|
40
|
+
var importRawKey_js_1 = require("./importRawKey.js");
|
|
41
|
+
Object.defineProperty(exports, "importRawKey", { enumerable: true, get: function () { return __importDefault(importRawKey_js_1).default; } });
|
|
42
|
+
var keyAgreement_js_1 = require("./keyAgreement.js");
|
|
43
|
+
Object.defineProperty(exports, "keyAgreement", { enumerable: true, get: function () { return keyAgreement_js_1.keyAgreement; } });
|
|
44
|
+
var exportCryptoKey_js_1 = require("./exportCryptoKey.js");
|
|
45
|
+
Object.defineProperty(exports, "exportCryptoKey", { enumerable: true, get: function () { return __importDefault(exportCryptoKey_js_1).default; } });
|
|
46
|
+
var generateRandomNumber_js_1 = require("./generateRandomNumber.js");
|
|
47
|
+
Object.defineProperty(exports, "generateRandomNumber", { enumerable: true, get: function () { return __importDefault(generateRandomNumber_js_1).default; } });
|
|
48
|
+
var pemPublicToCrypto_js_1 = require("./pemPublicToCrypto.js");
|
|
49
|
+
Object.defineProperty(exports, "pemPublicToCrypto", { enumerable: true, get: function () { return pemPublicToCrypto_js_1.pemPublicToCrypto; } });
|
|
50
|
+
Object.defineProperty(exports, "pemCertToCrypto", { enumerable: true, get: function () { return pemPublicToCrypto_js_1.pemCertToCrypto; } });
|
|
51
|
+
exports.enums = __importStar(require("./enums.js"));
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBdUM7QUFBOUIscUdBQUEsT0FBTyxPQUFBO0FBQ2hCLDJDQUFrRDtBQUF6QyxzSEFBQSxPQUFPLE9BQVc7QUFDM0IseUNBQWdEO0FBQXZDLG9IQUFBLE9BQU8sT0FBVTtBQUMxQiwyQ0FBa0Q7QUFBekMsc0hBQUEsT0FBTyxPQUFXO0FBQzNCLDJEQUFrRTtBQUF6RCxzSUFBQSxPQUFPLE9BQW1CO0FBQ25DLHFEQUE0RDtBQUFuRCxnSUFBQSxPQUFPLE9BQWdCO0FBQ2hDLHFEQUFpRDtBQUF4QywrR0FBQSxZQUFZLE9BQUE7QUFDckIsMkRBQWtFO0FBQXpELHNJQUFBLE9BQU8sT0FBbUI7QUFDbkMscUVBQTRFO0FBQW5FLGdKQUFBLE9BQU8sT0FBd0I7QUFDeEMsK0RBQTRFO0FBQW5FLHlIQUFBLGlCQUFpQixPQUFBO0FBQUUsdUhBQUEsZUFBZSxPQUFBO0FBQzNDLG9EQUFvQyJ9
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2016 SafeBash
|
|
5
|
+
* Cryptography consultant: Andrew Kozlik, Ph.D.
|
|
6
|
+
*
|
|
7
|
+
* @link https://github.com/safebash/opencrypto
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.keyAgreement = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* MIT License
|
|
14
|
+
*
|
|
15
|
+
* Copyright (c) 2016 SafeBash
|
|
16
|
+
*
|
|
17
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
18
|
+
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights
|
|
19
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
|
|
20
|
+
* to whom the Software is furnished to do so, subject to the following conditions:
|
|
21
|
+
*
|
|
22
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
|
23
|
+
* Software.
|
|
24
|
+
*
|
|
25
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
26
|
+
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
27
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
28
|
+
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
29
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
30
|
+
*/
|
|
31
|
+
const errors_js_1 = require("../errors.js");
|
|
32
|
+
const enums_js_1 = require("./enums.js");
|
|
33
|
+
const KEY_USAGE_DERIVE_KEY = 'deriveKey';
|
|
34
|
+
/**
|
|
35
|
+
*
|
|
36
|
+
* ECDH Key Agreement
|
|
37
|
+
* - publicKey {CryptoKey} default: "undefined"
|
|
38
|
+
* - privateKey {CryptoKey} default: "undefined"
|
|
39
|
+
* - options {Object} default: { bitLength: 256, hkdfHash: 'SHA-512', hkdfSalt: "new UInt8Array()", hkdfInfo: "new UInt8Array()", keyCipher: 'AES-GCM', keyLength: 256, keyUsages: ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'], isExtractable: true }
|
|
40
|
+
*/
|
|
41
|
+
async function keyAgreement(privateKey, publicKey, options = {
|
|
42
|
+
bitLength: 256,
|
|
43
|
+
hkdfHash: enums_js_1.HashType.Sha256,
|
|
44
|
+
hkdfInfo: new Uint8Array(),
|
|
45
|
+
hkdfSalt: new Uint8Array(),
|
|
46
|
+
keyCipher: enums_js_1.CipherType.AesGcm,
|
|
47
|
+
keyLength: 256,
|
|
48
|
+
keyUsages: [
|
|
49
|
+
enums_js_1.KeyUsageType.Encrypt,
|
|
50
|
+
enums_js_1.KeyUsageType.Decrypt,
|
|
51
|
+
enums_js_1.KeyUsageType.UnwrapKey,
|
|
52
|
+
enums_js_1.KeyUsageType.WrapKey,
|
|
53
|
+
],
|
|
54
|
+
isExtractable: true,
|
|
55
|
+
}) {
|
|
56
|
+
if (publicKey?.algorithm?.name !== enums_js_1.AlgorithmName.ECDSA &&
|
|
57
|
+
publicKey?.algorithm?.name !== enums_js_1.AlgorithmName.ECDH) {
|
|
58
|
+
throw new errors_js_1.ConfigurationError('CryptoKey is expected to be of type ECDSA or ECDH');
|
|
59
|
+
}
|
|
60
|
+
if (privateKey.type !== enums_js_1.KeyType.Private) {
|
|
61
|
+
throw new errors_js_1.ConfigurationError('Expected input of privateKey to be a CryptoKey of type private');
|
|
62
|
+
}
|
|
63
|
+
if (publicKey.type !== enums_js_1.KeyType.Public) {
|
|
64
|
+
throw new errors_js_1.ConfigurationError('Expected input of publicKey to be a CryptoKey of type public');
|
|
65
|
+
}
|
|
66
|
+
const { bitLength = 256, hkdfHash = enums_js_1.HashType.Sha256, hkdfInfo = new Uint8Array(), hkdfSalt = new Uint8Array(), keyCipher = enums_js_1.CipherType.AesGcm, keyLength = 256, isExtractable = true, keyUsages = [
|
|
67
|
+
enums_js_1.KeyUsageType.Encrypt,
|
|
68
|
+
enums_js_1.KeyUsageType.Decrypt,
|
|
69
|
+
enums_js_1.KeyUsageType.UnwrapKey,
|
|
70
|
+
enums_js_1.KeyUsageType.WrapKey,
|
|
71
|
+
], } = options;
|
|
72
|
+
const derivedBits = await crypto.subtle.deriveBits({
|
|
73
|
+
name: enums_js_1.AlgorithmName.ECDH,
|
|
74
|
+
public: publicKey,
|
|
75
|
+
}, privateKey, bitLength);
|
|
76
|
+
const derivedKey = await crypto.subtle.importKey(enums_js_1.KeyFormat.Raw, derivedBits, {
|
|
77
|
+
name: enums_js_1.AlgorithmName.HKDF,
|
|
78
|
+
}, false, [KEY_USAGE_DERIVE_KEY]);
|
|
79
|
+
const symmetricKey = await crypto.subtle.deriveKey({
|
|
80
|
+
name: enums_js_1.AlgorithmName.HKDF,
|
|
81
|
+
hash: hkdfHash,
|
|
82
|
+
salt: hkdfSalt,
|
|
83
|
+
info: hkdfInfo,
|
|
84
|
+
}, derivedKey, {
|
|
85
|
+
name: keyCipher,
|
|
86
|
+
length: keyLength,
|
|
87
|
+
}, isExtractable, keyUsages);
|
|
88
|
+
return symmetricKey;
|
|
89
|
+
}
|
|
90
|
+
exports.keyAgreement = keyAgreement;
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5QWdyZWVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2tleUFncmVlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7O0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILDRDQUFrRDtBQUNsRCx5Q0FBbUc7QUFFbkcsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUM7QUFhekM7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLFlBQVksQ0FDaEMsVUFBcUIsRUFDckIsU0FBb0IsRUFDcEIsVUFBd0M7SUFDdEMsU0FBUyxFQUFFLEdBQUc7SUFDZCxRQUFRLEVBQUUsbUJBQVEsQ0FBQyxNQUFNO0lBQ3pCLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFBRTtJQUMxQixRQUFRLEVBQUUsSUFBSSxVQUFVLEVBQUU7SUFDMUIsU0FBUyxFQUFFLHFCQUFVLENBQUMsTUFBTTtJQUM1QixTQUFTLEVBQUUsR0FBRztJQUNkLFNBQVMsRUFBRTtRQUNULHVCQUFZLENBQUMsT0FBTztRQUNwQix1QkFBWSxDQUFDLE9BQU87UUFDcEIsdUJBQVksQ0FBQyxTQUFTO1FBQ3RCLHVCQUFZLENBQUMsT0FBTztLQUNyQjtJQUNELGFBQWEsRUFBRSxJQUFJO0NBQ3BCO0lBRUQsSUFDRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksS0FBSyx3QkFBYSxDQUFDLEtBQUs7UUFDbEQsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEtBQUssd0JBQWEsQ0FBQyxJQUFJLEVBQ2pEO1FBQ0EsTUFBTSxJQUFJLDhCQUFrQixDQUFDLG1EQUFtRCxDQUFDLENBQUM7S0FDbkY7SUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssa0JBQU8sQ0FBQyxPQUFPLEVBQUU7UUFDdkMsTUFBTSxJQUFJLDhCQUFrQixDQUFDLGdFQUFnRSxDQUFDLENBQUM7S0FDaEc7SUFFRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssa0JBQU8sQ0FBQyxNQUFNLEVBQUU7UUFDckMsTUFBTSxJQUFJLDhCQUFrQixDQUFDLDhEQUE4RCxDQUFDLENBQUM7S0FDOUY7SUFFRCxNQUFNLEVBQ0osU0FBUyxHQUFHLEdBQUcsRUFDZixRQUFRLEdBQUcsbUJBQVEsQ0FBQyxNQUFNLEVBQzFCLFFBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxFQUMzQixRQUFRLEdBQUcsSUFBSSxVQUFVLEVBQUUsRUFDM0IsU0FBUyxHQUFHLHFCQUFVLENBQUMsTUFBTSxFQUM3QixTQUFTLEdBQUcsR0FBRyxFQUNmLGFBQWEsR0FBRyxJQUFJLEVBQ3BCLFNBQVMsR0FBRztRQUNWLHVCQUFZLENBQUMsT0FBTztRQUNwQix1QkFBWSxDQUFDLE9BQU87UUFDcEIsdUJBQVksQ0FBQyxTQUFTO1FBQ3RCLHVCQUFZLENBQUMsT0FBTztLQUNyQixHQUNGLEdBQUcsT0FBTyxDQUFDO0lBRVosTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FDaEQ7UUFDRSxJQUFJLEVBQUUsd0JBQWEsQ0FBQyxJQUFJO1FBQ3hCLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLEVBQ0QsVUFBVSxFQUNWLFNBQVMsQ0FDVixDQUFDO0lBRUYsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDOUMsb0JBQVMsQ0FBQyxHQUFHLEVBQ2IsV0FBVyxFQUNYO1FBQ0UsSUFBSSxFQUFFLHdCQUFhLENBQUMsSUFBSTtLQUN6QixFQUNELEtBQUssRUFDTCxDQUFDLG9CQUFvQixDQUFDLENBQ3ZCLENBQUM7SUFFRixNQUFNLFlBQVksR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUNoRDtRQUNFLElBQUksRUFBRSx3QkFBYSxDQUFDLElBQUk7UUFDeEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO0tBQ2YsRUFDRCxVQUFVLEVBQ1Y7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLEVBQ0QsYUFBYSxFQUNiLFNBQVMsQ0FDVixDQUFDO0lBRUYsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQXRGRCxvQ0FzRkMifQ==
|