@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,296 @@
|
|
|
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
|
+
const base64 = __importStar(require("../encodings/base64.js"));
|
|
30
|
+
const index_js_1 = require("../nanotdf-crypto/index.js");
|
|
31
|
+
const getHkdfSalt_js_1 = __importDefault(require("./helpers/getHkdfSalt.js"));
|
|
32
|
+
const DefaultParams_js_1 = __importDefault(require("./models/DefaultParams.js"));
|
|
33
|
+
const access_js_1 = require("../access.js");
|
|
34
|
+
const providers_js_1 = require("../auth/providers.js");
|
|
35
|
+
const errors_js_1 = require("../errors.js");
|
|
36
|
+
const utils_js_1 = require("../utils.js");
|
|
37
|
+
function toJWSAlg(c) {
|
|
38
|
+
const { algorithm } = c;
|
|
39
|
+
switch (algorithm.name) {
|
|
40
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
41
|
+
case 'RSA-PSS':
|
|
42
|
+
case 'RSA-OAEP': {
|
|
43
|
+
const r = algorithm;
|
|
44
|
+
switch (r.modulusLength) {
|
|
45
|
+
case 2048:
|
|
46
|
+
return 'RS256';
|
|
47
|
+
case 3072:
|
|
48
|
+
return 'RS384';
|
|
49
|
+
case 4096:
|
|
50
|
+
return 'RS512';
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case 'ECDSA':
|
|
55
|
+
case 'ECDH': {
|
|
56
|
+
return 'ES256';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw new errors_js_1.ConfigurationError(`unsupported key algorithm ${JSON.stringify(algorithm)}`);
|
|
60
|
+
}
|
|
61
|
+
async function generateEphemeralKeyPair() {
|
|
62
|
+
const { publicKey, privateKey } = await (0, index_js_1.generateKeyPair)();
|
|
63
|
+
if (!privateKey || !publicKey) {
|
|
64
|
+
throw Error('Key pair generation failed');
|
|
65
|
+
}
|
|
66
|
+
return { publicKey, privateKey };
|
|
67
|
+
}
|
|
68
|
+
async function generateSignerKeyPair() {
|
|
69
|
+
return crypto.subtle.generateKey({
|
|
70
|
+
name: 'RSASSA-PKCS1-v1_5',
|
|
71
|
+
hash: 'SHA-256',
|
|
72
|
+
modulusLength: 2048,
|
|
73
|
+
publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
|
|
74
|
+
}, true, ['sign', 'verify']);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* A Client encapsulates sessions interacting with TDF3 and nanoTDF backends, KAS and any
|
|
78
|
+
* plugin-based sessions like identity and further attribute control. Most importantly, it is responsible
|
|
79
|
+
* for local key and token management, including the ephemeral public/private keypairs
|
|
80
|
+
* used for encrypting and decrypting information.
|
|
81
|
+
*
|
|
82
|
+
* @link https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* import { Client, clientAuthProvider, decrypt, encrypt } from '@opentdf/sdk/nanotdf`
|
|
86
|
+
*
|
|
87
|
+
* const OIDC_ENDPOINT = 'http://localhost:65432/auth/';
|
|
88
|
+
* const KAS_URL = 'http://localhost:65432/kas';
|
|
89
|
+
*
|
|
90
|
+
* let client = new Client(
|
|
91
|
+
* await clientAuthProvider({
|
|
92
|
+
* clientId: 'tdf-client',
|
|
93
|
+
* clientSecret: '123-456',
|
|
94
|
+
* oidcOrigin: OIDC_ENDPOINT,
|
|
95
|
+
* }),
|
|
96
|
+
* KAS_URL
|
|
97
|
+
* );
|
|
98
|
+
*
|
|
99
|
+
* // t=1
|
|
100
|
+
* let nanoTDFEncrypted = await encrypt('some string', client.unwrappedKey);
|
|
101
|
+
* let nanoTDFDecrypted = await decrypt(nanoTDFEncrypted, client.unwrappedKey);
|
|
102
|
+
* nanoTDFDecrypted.toString() // 'some string'
|
|
103
|
+
*
|
|
104
|
+
*/
|
|
105
|
+
class Client {
|
|
106
|
+
/**
|
|
107
|
+
* Create new NanoTDF Client
|
|
108
|
+
*
|
|
109
|
+
* The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
|
|
110
|
+
* cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
|
|
111
|
+
* There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
|
|
112
|
+
*/
|
|
113
|
+
constructor(optsOrOldAuthProvider, kasUrl, ephemeralKeyPair, dpopEnabled = false) {
|
|
114
|
+
this.dissems = [];
|
|
115
|
+
this.dataAttributes = [];
|
|
116
|
+
if ((0, providers_js_1.isAuthProvider)(optsOrOldAuthProvider)) {
|
|
117
|
+
this.authProvider = optsOrOldAuthProvider;
|
|
118
|
+
if (!kasUrl) {
|
|
119
|
+
throw new errors_js_1.ConfigurationError('please specify kasEndpoint');
|
|
120
|
+
}
|
|
121
|
+
// TODO Disallow http KAS. For now just log as error
|
|
122
|
+
(0, utils_js_1.validateSecureUrl)(kasUrl);
|
|
123
|
+
this.kasUrl = kasUrl;
|
|
124
|
+
this.allowedKases = new access_js_1.OriginAllowList([kasUrl]);
|
|
125
|
+
this.dpopEnabled = dpopEnabled;
|
|
126
|
+
if (ephemeralKeyPair) {
|
|
127
|
+
this.ephemeralKeyPair = Promise.resolve(ephemeralKeyPair);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
this.ephemeralKeyPair = generateEphemeralKeyPair();
|
|
131
|
+
}
|
|
132
|
+
this.iv = 1;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const { allowedKases, ignoreAllowList, authProvider, dpopEnabled, dpopKeys, ephemeralKeyPair, kasEndpoint, } = optsOrOldAuthProvider;
|
|
136
|
+
this.authProvider = authProvider;
|
|
137
|
+
// TODO Disallow http KAS. For now just log as error
|
|
138
|
+
(0, utils_js_1.validateSecureUrl)(kasEndpoint);
|
|
139
|
+
this.kasUrl = kasEndpoint;
|
|
140
|
+
this.allowedKases = new access_js_1.OriginAllowList(allowedKases || [kasEndpoint], !!ignoreAllowList);
|
|
141
|
+
this.dpopEnabled = !!dpopEnabled;
|
|
142
|
+
if (dpopKeys) {
|
|
143
|
+
this.requestSignerKeyPair = dpopKeys;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.requestSignerKeyPair = generateSignerKeyPair();
|
|
147
|
+
}
|
|
148
|
+
if (ephemeralKeyPair) {
|
|
149
|
+
this.ephemeralKeyPair = ephemeralKeyPair;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.ephemeralKeyPair = generateEphemeralKeyPair();
|
|
153
|
+
}
|
|
154
|
+
this.iv = 1;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Add attribute to the TDF file/data
|
|
159
|
+
*
|
|
160
|
+
* @param attribute The attribute that decides the access control of the TDF.
|
|
161
|
+
*/
|
|
162
|
+
addAttribute(attribute) {
|
|
163
|
+
this.dataAttributes.push(attribute);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Explicitly get a new Entity Object using the supplied EntityAttributeService.
|
|
167
|
+
*
|
|
168
|
+
* This method is expected to be called at least once per encrypt/decrypt cycle. If the entityObject is expired then
|
|
169
|
+
* this will need to be called again.
|
|
170
|
+
*
|
|
171
|
+
* @security the ephemeralKeyPair must be set in the constructor if desired to use here. If this is wished to be changed
|
|
172
|
+
* then a new client should be initialized.
|
|
173
|
+
* @performance key pair is generated when the entity object is fetched IFF the ephemeralKeyPair is not set. This will
|
|
174
|
+
* either be set on the first call or passed in the constructor.
|
|
175
|
+
*/
|
|
176
|
+
async fetchOIDCToken() {
|
|
177
|
+
const signer = await this.requestSignerKeyPair;
|
|
178
|
+
if (!signer) {
|
|
179
|
+
throw new errors_js_1.ConfigurationError('failed to find or generate signer session key');
|
|
180
|
+
}
|
|
181
|
+
await this.authProvider.updateClientPublicKey(signer);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Rewrap key
|
|
185
|
+
*
|
|
186
|
+
* @important the `fetchEntityObject` method must be called prior to
|
|
187
|
+
* @param nanoTdfHeader the full header for the nanotdf
|
|
188
|
+
* @param kasRewrapUrl key access server's rewrap endpoint
|
|
189
|
+
* @param magicNumberVersion nanotdf container version
|
|
190
|
+
* @param clientVersion version of the client, as SemVer
|
|
191
|
+
*/
|
|
192
|
+
async rewrapKey(nanoTdfHeader, kasRewrapUrl, magicNumberVersion, clientVersion) {
|
|
193
|
+
if (!this.allowedKases.allows(kasRewrapUrl)) {
|
|
194
|
+
throw new errors_js_1.UnsafeUrlError(`request URL ∉ ${this.allowedKases.origins};`, kasRewrapUrl);
|
|
195
|
+
}
|
|
196
|
+
// Ensure the ephemeral key pair has been set or generated (see createOidcServiceProvider)
|
|
197
|
+
await this.fetchOIDCToken();
|
|
198
|
+
const ephemeralKeyPair = await this.ephemeralKeyPair;
|
|
199
|
+
const requestSignerKeyPair = await this.requestSignerKeyPair;
|
|
200
|
+
// Ensure the ephemeral key pair has been set or generated (see fetchEntityObject)
|
|
201
|
+
if (!ephemeralKeyPair?.privateKey) {
|
|
202
|
+
throw new errors_js_1.ConfigurationError('Ephemeral key has not been set or generated');
|
|
203
|
+
}
|
|
204
|
+
if (!requestSignerKeyPair?.privateKey) {
|
|
205
|
+
throw new errors_js_1.ConfigurationError('Signer key has not been set or generated');
|
|
206
|
+
}
|
|
207
|
+
const requestBodyStr = JSON.stringify({
|
|
208
|
+
algorithm: DefaultParams_js_1.default.defaultECAlgorithm,
|
|
209
|
+
// nano keyAccess minimum, header is used for nano
|
|
210
|
+
keyAccess: {
|
|
211
|
+
type: Client.KEY_ACCESS_REMOTE,
|
|
212
|
+
url: '',
|
|
213
|
+
protocol: Client.KAS_PROTOCOL,
|
|
214
|
+
header: base64.encodeArrayBuffer(nanoTdfHeader),
|
|
215
|
+
},
|
|
216
|
+
clientPublicKey: await (0, utils_js_1.cryptoPublicToPem)(ephemeralKeyPair.publicKey),
|
|
217
|
+
});
|
|
218
|
+
const jwtPayload = { requestBody: requestBodyStr };
|
|
219
|
+
const requestBody = {
|
|
220
|
+
signedRequestToken: await (0, providers_js_1.reqSignature)(jwtPayload, requestSignerKeyPair.privateKey, {
|
|
221
|
+
alg: toJWSAlg(requestSignerKeyPair.publicKey),
|
|
222
|
+
}),
|
|
223
|
+
};
|
|
224
|
+
// Wrapped
|
|
225
|
+
const wrappedKey = await (0, access_js_1.fetchWrappedKey)(kasRewrapUrl, requestBody, this.authProvider, clientVersion);
|
|
226
|
+
// Extract the iv and ciphertext
|
|
227
|
+
const entityWrappedKey = new Uint8Array(base64.decodeArrayBuffer(wrappedKey.entityWrappedKey));
|
|
228
|
+
const ivLength = clientVersion == Client.SDK_INITIAL_RELEASE ? Client.INITIAL_RELEASE_IV_SIZE : Client.IV_SIZE;
|
|
229
|
+
const iv = entityWrappedKey.subarray(0, ivLength);
|
|
230
|
+
const encryptedSharedKey = entityWrappedKey.subarray(ivLength);
|
|
231
|
+
let kasPublicKey;
|
|
232
|
+
try {
|
|
233
|
+
// Let us import public key as a cert or public key
|
|
234
|
+
kasPublicKey = await (0, utils_js_1.pemToCryptoPublicKey)(wrappedKey.sessionPublicKey);
|
|
235
|
+
}
|
|
236
|
+
catch (cause) {
|
|
237
|
+
throw new errors_js_1.ConfigurationError(`internal: [${kasRewrapUrl}] PEM Public Key to crypto public key failed. Is PEM formatted correctly?`, cause);
|
|
238
|
+
}
|
|
239
|
+
let hkdfSalt;
|
|
240
|
+
try {
|
|
241
|
+
// Get the hkdf salt params
|
|
242
|
+
hkdfSalt = await (0, getHkdfSalt_js_1.default)(magicNumberVersion);
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
throw new errors_js_1.TdfError('salting hkdf failed', e);
|
|
246
|
+
}
|
|
247
|
+
const { privateKey } = await this.ephemeralKeyPair;
|
|
248
|
+
// Get the unwrapping key
|
|
249
|
+
let unwrappingKey;
|
|
250
|
+
try {
|
|
251
|
+
unwrappingKey = await (0, index_js_1.keyAgreement)(
|
|
252
|
+
// Ephemeral private key
|
|
253
|
+
privateKey, kasPublicKey, hkdfSalt);
|
|
254
|
+
}
|
|
255
|
+
catch (e) {
|
|
256
|
+
if (e.name == 'InvalidAccessError' || e.name == 'OperationError') {
|
|
257
|
+
throw new errors_js_1.DecryptError('unable to solve key agreement', e);
|
|
258
|
+
}
|
|
259
|
+
else if (e.name == 'NotSupported') {
|
|
260
|
+
throw new errors_js_1.ConfigurationError('unable to unwrap key from kas', e);
|
|
261
|
+
}
|
|
262
|
+
throw new errors_js_1.TdfError('unable to reach agreement', e);
|
|
263
|
+
}
|
|
264
|
+
const authTagLength = 8 * (encryptedSharedKey.byteLength - 32);
|
|
265
|
+
let decryptedKey;
|
|
266
|
+
try {
|
|
267
|
+
// Decrypt the wrapped key
|
|
268
|
+
decryptedKey = await crypto.subtle.decrypt({ name: 'AES-GCM', iv, tagLength: authTagLength }, unwrappingKey, encryptedSharedKey);
|
|
269
|
+
}
|
|
270
|
+
catch (cause) {
|
|
271
|
+
throw new errors_js_1.DecryptError(`unable to decrypt key. Are you using the right KAS? Is the salt correct?`, cause);
|
|
272
|
+
}
|
|
273
|
+
// UnwrappedKey
|
|
274
|
+
let unwrappedKey;
|
|
275
|
+
try {
|
|
276
|
+
unwrappedKey = await crypto.subtle.importKey('raw', decryptedKey, 'AES-GCM',
|
|
277
|
+
// @security This allows the key to be used in `exportKey` and `wrapKey`
|
|
278
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey
|
|
279
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/wrapKey
|
|
280
|
+
true,
|
|
281
|
+
// Want to use the key to encrypt and decrypt. Signing key will be used later.
|
|
282
|
+
['encrypt', 'decrypt']);
|
|
283
|
+
}
|
|
284
|
+
catch (cause) {
|
|
285
|
+
throw new errors_js_1.DecryptError('Unable to import raw key.', cause);
|
|
286
|
+
}
|
|
287
|
+
return unwrappedKey;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
Client.KEY_ACCESS_REMOTE = 'remote';
|
|
291
|
+
Client.KAS_PROTOCOL = 'kas';
|
|
292
|
+
Client.SDK_INITIAL_RELEASE = '0.0.0';
|
|
293
|
+
Client.INITIAL_RELEASE_IV_SIZE = 3;
|
|
294
|
+
Client.IV_SIZE = 12;
|
|
295
|
+
exports.default = Client;
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrREFBaUQ7QUFDakQseURBQTJFO0FBQzNFLDhFQUFtRDtBQUNuRCxpRkFBc0Q7QUFDdEQsNENBQWtGO0FBQ2xGLHVEQUFrRjtBQUNsRiw0Q0FBMEY7QUFDMUYsMENBQXlGO0FBWXpGLFNBQVMsUUFBUSxDQUFDLENBQVk7SUFDNUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4QixRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUU7UUFDdEIsS0FBSyxtQkFBbUIsQ0FBQztRQUN6QixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsR0FBRyxTQUFrQyxDQUFDO1lBQzdDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDdkIsS0FBSyxJQUFJO29CQUNQLE9BQU8sT0FBTyxDQUFDO2dCQUNqQixLQUFLLElBQUk7b0JBQ1AsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUssSUFBSTtvQkFDUCxPQUFPLE9BQU8sQ0FBQzthQUNsQjtZQUNELE1BQU07U0FDUDtRQUNELEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUNYLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO0tBQ0Y7SUFDRCxNQUFNLElBQUksOEJBQWtCLENBQUMsNkJBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRCxLQUFLLFVBQVUsd0JBQXdCO0lBQ3JDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBCQUFlLEdBQUUsQ0FBQztJQUMxRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMs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
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_js_1 = require("../encodings/index.js");
|
|
7
|
+
const Header_js_1 = __importDefault(require("./models/Header.js"));
|
|
8
|
+
const Payload_js_1 = __importDefault(require("./models/Payload.js"));
|
|
9
|
+
const Signature_js_1 = __importDefault(require("./models/Signature.js"));
|
|
10
|
+
const EncodingEnum_js_1 = __importDefault(require("./enum/EncodingEnum.js"));
|
|
11
|
+
const errors_js_1 = require("../errors.js");
|
|
12
|
+
// Defaults when none set during encryption
|
|
13
|
+
class NanoTDF {
|
|
14
|
+
static from(content, encoding, legacyTDF = false) {
|
|
15
|
+
// If we don't assign an empty array buffer then TS reports buffer as unassigned
|
|
16
|
+
let buffer;
|
|
17
|
+
if (typeof content === 'string') {
|
|
18
|
+
if (!encoding || encoding === EncodingEnum_js_1.default.Base64) {
|
|
19
|
+
buffer = index_js_1.base64.decodeArrayBuffer(content);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
throw new errors_js_1.ConfigurationError(`Unsupported encoding: ${encoding}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Handle Uint8Array types
|
|
26
|
+
else if (ArrayBuffer.isView(content) || content instanceof ArrayBuffer) {
|
|
27
|
+
buffer = content;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new errors_js_1.ConfigurationError(`unsupported content type`);
|
|
31
|
+
}
|
|
32
|
+
const dataView = new Uint8Array(buffer);
|
|
33
|
+
let offset = 0;
|
|
34
|
+
// Header
|
|
35
|
+
const { header, offset: headerOffset } = Header_js_1.default.parse(dataView.subarray(offset));
|
|
36
|
+
offset += headerOffset;
|
|
37
|
+
// Payload
|
|
38
|
+
const { payload, offset: payloadOffset } = Payload_js_1.default.parse(header, dataView.subarray(offset), legacyTDF);
|
|
39
|
+
offset += payloadOffset;
|
|
40
|
+
// Signature
|
|
41
|
+
const { signature, offset: signatureOffset } = Signature_js_1.default.parse(header, dataView.subarray(offset));
|
|
42
|
+
offset += signatureOffset;
|
|
43
|
+
// Singature checking
|
|
44
|
+
if (!header.hasSignature && signature.length > 0) {
|
|
45
|
+
throw new errors_js_1.InvalidFileError("Found signature when there shouldn't be one");
|
|
46
|
+
}
|
|
47
|
+
if (header.hasSignature && signature.length === 0) {
|
|
48
|
+
throw new errors_js_1.InvalidFileError('Could not find signature');
|
|
49
|
+
}
|
|
50
|
+
return new NanoTDF(header, payload, signature);
|
|
51
|
+
}
|
|
52
|
+
constructor(header, payload, signature) {
|
|
53
|
+
this.header = header;
|
|
54
|
+
this.payload = payload;
|
|
55
|
+
this.signature = signature;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Return the content of nano tdf as binary buffer
|
|
59
|
+
*/
|
|
60
|
+
toBuffer() {
|
|
61
|
+
let offset = 0;
|
|
62
|
+
const lengthOfSignature = this.signature && this.signature.length ? this.signature.length : 0;
|
|
63
|
+
const lengthOfTDF = this.header.length + this.payload.length + lengthOfSignature;
|
|
64
|
+
const buffer = new ArrayBuffer(lengthOfTDF);
|
|
65
|
+
// Write the header
|
|
66
|
+
const headerBufferView = new Uint8Array(buffer, 0, this.header.length);
|
|
67
|
+
this.header.copyToBuffer(headerBufferView);
|
|
68
|
+
offset += headerBufferView.length;
|
|
69
|
+
// Write the payload
|
|
70
|
+
const payloadBufferView = new Uint8Array(buffer, offset, this.payload.length);
|
|
71
|
+
this.payload.copyToBuffer(payloadBufferView);
|
|
72
|
+
offset += payloadBufferView.length;
|
|
73
|
+
// Write the signature
|
|
74
|
+
if (this.header.hasSignature && this.signature) {
|
|
75
|
+
const signatureBufferView = new Uint8Array(buffer, offset, lengthOfSignature);
|
|
76
|
+
this.signature.copyToBuffer(signatureBufferView);
|
|
77
|
+
}
|
|
78
|
+
return buffer;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Return the content of nano tdf as base64 string
|
|
82
|
+
*/
|
|
83
|
+
toBase64() {
|
|
84
|
+
const arrayBuffer = this.toBuffer();
|
|
85
|
+
return index_js_1.base64.encodeArrayBuffer(arrayBuffer);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Add encodings to the NanoTDF class for easy access
|
|
89
|
+
NanoTDF.Encodings = EncodingEnum_js_1.default;
|
|
90
|
+
NanoTDF.Header = Header_js_1.default;
|
|
91
|
+
NanoTDF.Payload = Payload_js_1.default;
|
|
92
|
+
NanoTDF.Signature = Signature_js_1.default;
|
|
93
|
+
exports.default = NanoTDF;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFub1RERi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL05hbm9UREYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxvREFBK0M7QUFDL0MsbUVBQXdDO0FBQ3hDLHFFQUEwQztBQUMxQyx5RUFBOEM7QUFDOUMsNkVBQWtEO0FBQ2xELDRDQUFvRTtBQUVwRSwyQ0FBMkM7QUFFM0MsTUFBcUIsT0FBTztJQWExQixNQUFNLENBQUMsSUFBSSxDQUNULE9BQTBDLEVBQzFDLFFBQXVCLEVBQ3ZCLFNBQVMsR0FBRyxLQUFLO1FBRWpCLGdGQUFnRjtRQUNoRixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxLQUFLLHlCQUFZLENBQUMsTUFBTSxFQUFFO2dCQUNqRCxNQUFNLEdBQUcsaUJBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxNQUFNLElBQUksOEJBQWtCLENBQUMseUJBQXlCLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDbkU7U0FDRjtRQUNELDBCQUEwQjthQUNyQixJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxZQUFZLFdBQVcsRUFBRTtZQUN0RSxNQUFNLEdBQUcsT0FBTyxDQUFDO1NBQ2xCO2FBQU07WUFDTCxNQUFNLElBQUksOEJBQWtCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUMxRDtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVmLFNBQVM7UUFDVCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxtQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxD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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/* globals window */
|
|
7
|
+
/**
|
|
8
|
+
* This file is used for:
|
|
9
|
+
*
|
|
10
|
+
* - es5 browser version of nanoTDF and add it to the window as NanoTDF
|
|
11
|
+
*
|
|
12
|
+
* This is not used for:
|
|
13
|
+
*
|
|
14
|
+
* - es6 web development (use node modules)
|
|
15
|
+
* - node applications
|
|
16
|
+
*/
|
|
17
|
+
const NanoTDF_js_1 = __importDefault(require("./NanoTDF.js"));
|
|
18
|
+
window.NanoTDF = NanoTDF_js_1.default;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2Jyb3dzZXItZW50cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvQkFBb0I7QUFDcEI7Ozs7Ozs7OztHQVNHO0FBQ0gsOERBQW1DO0FBUW5DLE1BQU0sQ0FBQyxPQUFPLEdBQUcsb0JBQU8sQ0FBQyJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GMAC_BINDING_LEN = void 0;
|
|
4
|
+
exports.GMAC_BINDING_LEN = 8;
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_js_1 = require("../nanotdf-crypto/index.js");
|
|
4
|
+
/**
|
|
5
|
+
* Decrypt nanotdf with a crypto key
|
|
6
|
+
*
|
|
7
|
+
* @param key Crypto key used to decrypt nanotdf
|
|
8
|
+
* @param nanotdf NanoTDF to decrypt
|
|
9
|
+
*/
|
|
10
|
+
async function decrypt(key, nanotdf) {
|
|
11
|
+
// console.log(`Decrypting for content: ${nanotdf}`, nanotdf.header.authTagLength);
|
|
12
|
+
return await (0, index_js_1.decrypt)(key, nanotdf.payload.ciphertextWithAuthTag, nanotdf.payload.iv,
|
|
13
|
+
// Auth tag length in bits
|
|
14
|
+
nanotdf.header.authTagLength);
|
|
15
|
+
}
|
|
16
|
+
exports.default = decrypt;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2RlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5REFBc0U7QUFHdEU7Ozs7O0dBS0c7QUFDWSxLQUFLLFVBQVUsT0FBTyxDQUFDLEdBQWMsRUFBRSxPQUFnQjtJQUNwRSxtRkFBbUY7SUFDbkYsT0FBTyxNQUFNLElBQUEsa0JBQWEsRUFDeEIsR0FBRyxFQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQ3JDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNsQiwwQkFBMEI7SUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQzdCLENBQUM7QUFDSixDQUFDO0FBVEQsMEJBU0MifQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const NanoTDF_js_1 = __importDefault(require("./NanoTDF.js"));
|
|
7
|
+
const DefaultParams_js_1 = __importDefault(require("./models/DefaultParams.js"));
|
|
8
|
+
const Payload_js_1 = __importDefault(require("./models/Payload.js"));
|
|
9
|
+
const Ciphers_js_1 = require("./models/Ciphers.js");
|
|
10
|
+
const encrypt_js_1 = __importDefault(require("../nanotdf-crypto/encrypt.js"));
|
|
11
|
+
/**
|
|
12
|
+
* Encrypt the plain data into nanotdf buffer
|
|
13
|
+
*
|
|
14
|
+
* @param symmetricKey Key to encrypt the payload
|
|
15
|
+
* @param header NanoTDF header
|
|
16
|
+
* @param iv IV to be used for encrypting the payload
|
|
17
|
+
* @param data The data to be encrypted
|
|
18
|
+
*/
|
|
19
|
+
async function encryptDataset(symmetricKey, header, iv, data) {
|
|
20
|
+
// Auth tag length for policy and payload
|
|
21
|
+
const authTagLengthInBytes = (0, Ciphers_js_1.getBitLength)(DefaultParams_js_1.default.symmetricCipher) / 8;
|
|
22
|
+
// Encrypt the payload
|
|
23
|
+
let payloadAsBuffer;
|
|
24
|
+
if (typeof data === 'string') {
|
|
25
|
+
payloadAsBuffer = new TextEncoder().encode(data);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
payloadAsBuffer = data;
|
|
29
|
+
}
|
|
30
|
+
const encryptedPayload = await (0, encrypt_js_1.default)(symmetricKey, new Uint8Array(payloadAsBuffer), iv, authTagLengthInBytes * 8);
|
|
31
|
+
// Create payload
|
|
32
|
+
const payload = new Payload_js_1.default(iv.slice(-3), new Uint8Array(encryptedPayload.slice(0, -authTagLengthInBytes)), new Uint8Array(encryptedPayload.slice(-authTagLengthInBytes)));
|
|
33
|
+
// Create a nanotdf.
|
|
34
|
+
const nanoTDF = new NanoTDF_js_1.default(header, payload);
|
|
35
|
+
return nanoTDF.toBuffer();
|
|
36
|
+
}
|
|
37
|
+
exports.default = encryptDataset;
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvZW5jcnlwdC1kYXRhc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOERBQW1DO0FBRW5DLGlGQUFzRDtBQUN0RCxxRUFBMEM7QUFDMUMsb0RBQTZFO0FBRTdFLDhFQUFtRDtBQUVuRDs7Ozs7OztHQU9HO0FBQ1ksS0FBSyxVQUFVLGNBQWMsQ0FDMUMsWUFBdUIsRUFDdkIsTUFBYyxFQUNkLEVBQWMsRUFDZCxJQUF1QztJQUV2Qyx5Q0FBeUM7SUFDekMsTUFBTSxvQkFBb0IsR0FBRyxJQUFBLHlCQUFzQixFQUFDLDBCQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZGLHNCQUFzQjtJQUN0QixJQUFJLGVBQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixlQUFlLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEQ7U0FBTTtRQUNMLGVBQWUsR0FBRyxJQUFJLENBQUM7S0FDeEI7SUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBQSxvQkFBTyxFQUNwQyxZQUFZLEVBQ1osSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQy9CLEVBQUUsRUFDRixvQkFBb0IsR0FBRyxDQUFDLENBQ3pCLENBQUM7SUFFRixpQkFBaUI7SUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBTyxDQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ1osSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFDaEUsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUM5RCxDQUFDO0lBRUYsb0JBQW9CO0lBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFN0MsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQW5DRCxpQ0FtQ0MifQ==
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const NanoTDF_js_1 = __importDefault(require("./NanoTDF.js"));
|
|
7
|
+
const Header_js_1 = __importDefault(require("./models/Header.js"));
|
|
8
|
+
const ResourceLocator_js_1 = __importDefault(require("./models/ResourceLocator.js"));
|
|
9
|
+
const DefaultParams_js_1 = __importDefault(require("./models/DefaultParams.js"));
|
|
10
|
+
const EmbeddedPolicy_js_1 = __importDefault(require("./models/Policy/EmbeddedPolicy.js"));
|
|
11
|
+
const Payload_js_1 = __importDefault(require("./models/Payload.js"));
|
|
12
|
+
const getHkdfSalt_js_1 = __importDefault(require("./helpers/getHkdfSalt.js"));
|
|
13
|
+
const Ciphers_js_1 = require("./models/Ciphers.js");
|
|
14
|
+
const constants_js_1 = require("./constants.js");
|
|
15
|
+
const enums_js_1 = require("./../nanotdf-crypto/enums.js");
|
|
16
|
+
const index_js_1 = require("../nanotdf-crypto/index.js");
|
|
17
|
+
const ecdsaSignature_js_1 = require("../nanotdf-crypto/ecdsaSignature.js");
|
|
18
|
+
const errors_js_1 = require("../errors.js");
|
|
19
|
+
/**
|
|
20
|
+
* Encrypt the plain data into nanotdf buffer
|
|
21
|
+
*
|
|
22
|
+
* @param policy Policy that will added to the nanotdf
|
|
23
|
+
* @param kasInfo KAS url and public key data
|
|
24
|
+
* @param ephemeralKeyPair SDK ephemeral key pair to generate symmetric key
|
|
25
|
+
* @param iv
|
|
26
|
+
* @param data The data to be encrypted
|
|
27
|
+
* @param ecdsaBinding Flag to enable ECDSA binding
|
|
28
|
+
*/
|
|
29
|
+
async function encrypt(policy, kasInfo, ephemeralKeyPair, iv, data, ecdsaBinding = DefaultParams_js_1.default.ecdsaBinding) {
|
|
30
|
+
// Generate a symmetric key.
|
|
31
|
+
if (!ephemeralKeyPair.privateKey) {
|
|
32
|
+
throw new errors_js_1.ConfigurationError('incomplete ephemeral key');
|
|
33
|
+
}
|
|
34
|
+
const symmetricKey = await (0, index_js_1.keyAgreement)(ephemeralKeyPair.privateKey, await kasInfo.key,
|
|
35
|
+
// Get the hkdf salt params
|
|
36
|
+
await (0, getHkdfSalt_js_1.default)(DefaultParams_js_1.default.magicNumberVersion));
|
|
37
|
+
// Construct the kas locator
|
|
38
|
+
const kasResourceLocator = ResourceLocator_js_1.default.fromURL(kasInfo.url, kasInfo.kid);
|
|
39
|
+
// Auth tag length for policy and payload
|
|
40
|
+
const authTagLengthInBytes = (0, Ciphers_js_1.getBitLength)(DefaultParams_js_1.default.symmetricCipher) / 8;
|
|
41
|
+
// Encrypt the policy
|
|
42
|
+
const policyIV = new Uint8Array(iv.length).fill(0);
|
|
43
|
+
const policyAsBuffer = new TextEncoder().encode(policy);
|
|
44
|
+
const encryptedPolicy = await (0, index_js_1.encrypt)(symmetricKey, policyAsBuffer, policyIV, authTagLengthInBytes * 8);
|
|
45
|
+
let policyBinding;
|
|
46
|
+
// Calculate the policy binding.
|
|
47
|
+
if (ecdsaBinding) {
|
|
48
|
+
const curveName = await getCurveNameFromPrivateKey(ephemeralKeyPair.privateKey);
|
|
49
|
+
const ecdsaPrivateKey = await convertECDHToECDSA(ephemeralKeyPair.privateKey, curveName);
|
|
50
|
+
const ecdsaSignature = await (0, ecdsaSignature_js_1.computeECDSASig)(ecdsaPrivateKey, new Uint8Array(encryptedPolicy));
|
|
51
|
+
const { r, s } = (0, ecdsaSignature_js_1.extractRSValuesFromSignature)(new Uint8Array(ecdsaSignature));
|
|
52
|
+
const rLength = r.length;
|
|
53
|
+
const sLength = s.length;
|
|
54
|
+
policyBinding = new Uint8Array(1 + rLength + 1 + sLength);
|
|
55
|
+
// Set the lengths and values of r and s in policyBinding
|
|
56
|
+
policyBinding[0] = rLength;
|
|
57
|
+
policyBinding.set(r, 1);
|
|
58
|
+
policyBinding[1 + rLength] = sLength;
|
|
59
|
+
policyBinding.set(s, 1 + rLength + 1);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const signature = await (0, index_js_1.digest)('SHA-256', new Uint8Array(encryptedPolicy));
|
|
63
|
+
policyBinding = new Uint8Array(signature.slice(-constants_js_1.GMAC_BINDING_LEN));
|
|
64
|
+
}
|
|
65
|
+
// Create embedded policy
|
|
66
|
+
const embeddedPolicy = new EmbeddedPolicy_js_1.default(DefaultParams_js_1.default.policyType, policyBinding, new Uint8Array(encryptedPolicy));
|
|
67
|
+
if (!ephemeralKeyPair.publicKey) {
|
|
68
|
+
throw new errors_js_1.ConfigurationError('incomplete ephemeral key');
|
|
69
|
+
}
|
|
70
|
+
// Create a header
|
|
71
|
+
const pubKeyAsArrayBuffer = await (0, index_js_1.exportCryptoKey)(ephemeralKeyPair.publicKey);
|
|
72
|
+
const header = new Header_js_1.default(DefaultParams_js_1.default.magicNumberVersion, kasResourceLocator, ecdsaBinding, DefaultParams_js_1.default.signatureCurveName, DefaultParams_js_1.default.signature, DefaultParams_js_1.default.signatureCurveName, DefaultParams_js_1.default.symmetricCipher, embeddedPolicy, new Uint8Array(pubKeyAsArrayBuffer));
|
|
73
|
+
// Encrypt the payload
|
|
74
|
+
let payloadAsBuffer;
|
|
75
|
+
if (typeof data === 'string') {
|
|
76
|
+
payloadAsBuffer = new TextEncoder().encode(data);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
payloadAsBuffer = data;
|
|
80
|
+
}
|
|
81
|
+
const encryptedPayload = await (0, index_js_1.encrypt)(symmetricKey, new Uint8Array(payloadAsBuffer), iv, authTagLengthInBytes * 8);
|
|
82
|
+
// Create payload
|
|
83
|
+
const payload = new Payload_js_1.default(iv.slice(-3), new Uint8Array(encryptedPayload.slice(0, -authTagLengthInBytes)), new Uint8Array(encryptedPayload.slice(-authTagLengthInBytes)));
|
|
84
|
+
// Create a nanotdf.
|
|
85
|
+
const nanoTDF = new NanoTDF_js_1.default(header, payload);
|
|
86
|
+
return nanoTDF.toBuffer();
|
|
87
|
+
}
|
|
88
|
+
exports.default = encrypt;
|
|
89
|
+
/**
|
|
90
|
+
* Retrieves the curve name from a given ECDH private key.
|
|
91
|
+
*
|
|
92
|
+
* This function exports the provided ECDH private key in JWK format and extracts
|
|
93
|
+
* the curve name from the 'crv' property of the JWK.
|
|
94
|
+
*
|
|
95
|
+
* @param {CryptoKey} privateKey - The ECDH private key from which to retrieve the curve name.
|
|
96
|
+
* @returns {Promise<string>} - A promise that resolves to the curve name.
|
|
97
|
+
*
|
|
98
|
+
* @throws {Error} - Throws an error if the curve name is undefined.
|
|
99
|
+
*
|
|
100
|
+
*/
|
|
101
|
+
async function getCurveNameFromPrivateKey(privateKey) {
|
|
102
|
+
// Export the private key
|
|
103
|
+
const keyData = await crypto.subtle.exportKey('jwk', privateKey);
|
|
104
|
+
// The curve name is stored in the 'crv' property of the JWK
|
|
105
|
+
if (!keyData.crv) {
|
|
106
|
+
throw new errors_js_1.ConfigurationError('curve name is undefined (bad private key)');
|
|
107
|
+
}
|
|
108
|
+
return keyData.crv;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Converts an ECDH private key to an ECDSA private key.
|
|
112
|
+
*
|
|
113
|
+
* This function exports the given ECDH private key in PKCS#8 format and then
|
|
114
|
+
* imports it as an ECDSA private key using the specified curve name.
|
|
115
|
+
*
|
|
116
|
+
* @param {CryptoKey} key - The ECDH private key to be converted.
|
|
117
|
+
* @param {string} curveName - The name of the elliptic curve to be used for the ECDSA key.
|
|
118
|
+
* @returns {Promise<CryptoKey>} - A promise that resolves to the converted ECDSA private key.
|
|
119
|
+
*
|
|
120
|
+
* @throws {Error} - Throws an error if the key export or import fails.
|
|
121
|
+
*/
|
|
122
|
+
async function convertECDHToECDSA(key, curveName) {
|
|
123
|
+
// Export the ECDH private key
|
|
124
|
+
const ecdhPrivateKey = await crypto.subtle.exportKey('pkcs8', key);
|
|
125
|
+
// Import the ECDH private key as an ECDSA private key
|
|
126
|
+
const ecdsaPrivateKey = await crypto.subtle.importKey(enums_js_1.KeyFormat.Pkcs8, ecdhPrivateKey, {
|
|
127
|
+
name: enums_js_1.AlgorithmName.ECDSA,
|
|
128
|
+
namedCurve: curveName,
|
|
129
|
+
}, true, [enums_js_1.KeyUsageType.Sign]);
|
|
130
|
+
return ecdsaPrivateKey;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2VuY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBbUM7QUFDbkMsbUVBQXdDO0FBQ3hDLHFGQUEwRDtBQUMxRCxpRkFBc0Q7QUFDdEQsMEZBQStEO0FBQy9ELHFFQUEwQztBQUMxQyw4RUFBbUQ7QUFDbkQsb0RBQTZFO0FBRTdFLGlEQUFrRDtBQUNsRCwyREFBc0Y7QUFFdEYseURBS29DO0FBRXBDLDJFQUFvRztBQUNwRyw0Q0FBa0Q7QUFFbEQ7Ozs7Ozs7OztHQVNHO0FBQ1ksS0FBSyxVQUFVLE9BQU8sQ0FDbkMsTUFBYyxFQUNkLE9BQXlCLEVBQ3pCLGdCQUErQixFQUMvQixFQUFjLEVBQ2QsSUFBdUMsRUFDdkMsZUFBd0IsMEJBQWEsQ0FBQyxZQUFZO0lBRWxELDRCQUE0QjtJQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1FBQ2hDLE1BQU0sSUFBSSw4QkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzFEO0lBQ0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLHVCQUFZLEVBQ3JDLGdCQUFnQixDQUFDLFVBQVUsRUFDM0IsTUFBTSxPQUFPLENBQUMsR0FBRztJQUNqQiwyQkFBMkI7SUFDM0IsTUFBTSxJQUFBLHdCQUFXLEVBQUMsMEJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUNwRCxDQUFDO0lBRUYsNEJBQTRCO0lBQzVCLE1BQU0sa0JBQWtCLEdBQUcsNEJBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0UseUNBQXlDO0lBQ3pDLE1BQU0sb0JBQW9CLEdBQUcsSUFBQSx5QkFBc0IsRUFBQywwQkFBYSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2RixxQkFBcUI7SUFDckIsTUFBTSxRQUFRLEdB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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var CipherEnum;
|
|
4
|
+
(function (CipherEnum) {
|
|
5
|
+
CipherEnum[CipherEnum["AES_256_GCM_64"] = 0] = "AES_256_GCM_64";
|
|
6
|
+
CipherEnum[CipherEnum["AES_256_GCM_96"] = 1] = "AES_256_GCM_96";
|
|
7
|
+
CipherEnum[CipherEnum["AES_256_GCM_104"] = 2] = "AES_256_GCM_104";
|
|
8
|
+
CipherEnum[CipherEnum["AES_256_GCM_112"] = 3] = "AES_256_GCM_112";
|
|
9
|
+
CipherEnum[CipherEnum["AES_256_GCM_120"] = 4] = "AES_256_GCM_120";
|
|
10
|
+
CipherEnum[CipherEnum["AES_256_GCM_128"] = 5] = "AES_256_GCM_128";
|
|
11
|
+
})(CipherEnum || (CipherEnum = {}));
|
|
12
|
+
exports.default = CipherEnum;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2lwaGVyRW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2VudW0vQ2lwaGVyRW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLElBQUssVUFPSjtBQVBELFdBQUssVUFBVTtJQUNiLCtEQUFjLENBQUE7SUFDZCwrREFBYyxDQUFBO0lBQ2QsaUVBQWUsQ0FBQTtJQUNmLGlFQUFlLENBQUE7SUFDZixpRUFBZSxDQUFBO0lBQ2YsaUVBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUEksVUFBVSxLQUFWLFVBQVUsUUFPZDtBQUVELGtCQUFlLFVBQVUsQ0FBQyJ9
|