@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,197 @@
|
|
|
1
|
+
import NanoTDF from './NanoTDF.js';
|
|
2
|
+
import Header from './models/Header.js';
|
|
3
|
+
import ResourceLocator from './models/ResourceLocator.js';
|
|
4
|
+
import DefaultParams from './models/DefaultParams.js';
|
|
5
|
+
import EmbeddedPolicy from './models/Policy/EmbeddedPolicy.js';
|
|
6
|
+
import Payload from './models/Payload.js';
|
|
7
|
+
import getHkdfSalt from './helpers/getHkdfSalt.js';
|
|
8
|
+
import { getBitLength as authTagLengthForCipher } from './models/Ciphers.js';
|
|
9
|
+
import { TypedArray } from '../tdf/index.js';
|
|
10
|
+
import { GMAC_BINDING_LEN } from './constants.js';
|
|
11
|
+
import { AlgorithmName, KeyFormat, KeyUsageType } from './../nanotdf-crypto/enums.js';
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
encrypt as cryptoEncrypt,
|
|
15
|
+
keyAgreement,
|
|
16
|
+
digest,
|
|
17
|
+
exportCryptoKey,
|
|
18
|
+
} from '../nanotdf-crypto/index.js';
|
|
19
|
+
import { KasPublicKeyInfo } from '../access.js';
|
|
20
|
+
import { computeECDSASig, extractRSValuesFromSignature } from '../nanotdf-crypto/ecdsaSignature.js';
|
|
21
|
+
import { ConfigurationError } from '../errors.js';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Encrypt the plain data into nanotdf buffer
|
|
25
|
+
*
|
|
26
|
+
* @param policy Policy that will added to the nanotdf
|
|
27
|
+
* @param kasInfo KAS url and public key data
|
|
28
|
+
* @param ephemeralKeyPair SDK ephemeral key pair to generate symmetric key
|
|
29
|
+
* @param iv
|
|
30
|
+
* @param data The data to be encrypted
|
|
31
|
+
* @param ecdsaBinding Flag to enable ECDSA binding
|
|
32
|
+
*/
|
|
33
|
+
export default async function encrypt(
|
|
34
|
+
policy: string,
|
|
35
|
+
kasInfo: KasPublicKeyInfo,
|
|
36
|
+
ephemeralKeyPair: CryptoKeyPair,
|
|
37
|
+
iv: Uint8Array,
|
|
38
|
+
data: string | TypedArray | ArrayBuffer,
|
|
39
|
+
ecdsaBinding: boolean = DefaultParams.ecdsaBinding
|
|
40
|
+
): Promise<ArrayBuffer> {
|
|
41
|
+
// Generate a symmetric key.
|
|
42
|
+
if (!ephemeralKeyPair.privateKey) {
|
|
43
|
+
throw new ConfigurationError('incomplete ephemeral key');
|
|
44
|
+
}
|
|
45
|
+
const symmetricKey = await keyAgreement(
|
|
46
|
+
ephemeralKeyPair.privateKey,
|
|
47
|
+
await kasInfo.key,
|
|
48
|
+
// Get the hkdf salt params
|
|
49
|
+
await getHkdfSalt(DefaultParams.magicNumberVersion)
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
// Construct the kas locator
|
|
53
|
+
const kasResourceLocator = ResourceLocator.fromURL(kasInfo.url, kasInfo.kid);
|
|
54
|
+
|
|
55
|
+
// Auth tag length for policy and payload
|
|
56
|
+
const authTagLengthInBytes = authTagLengthForCipher(DefaultParams.symmetricCipher) / 8;
|
|
57
|
+
|
|
58
|
+
// Encrypt the policy
|
|
59
|
+
const policyIV = new Uint8Array(iv.length).fill(0);
|
|
60
|
+
const policyAsBuffer = new TextEncoder().encode(policy);
|
|
61
|
+
const encryptedPolicy = await cryptoEncrypt(
|
|
62
|
+
symmetricKey,
|
|
63
|
+
policyAsBuffer,
|
|
64
|
+
policyIV,
|
|
65
|
+
authTagLengthInBytes * 8
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
let policyBinding: Uint8Array;
|
|
69
|
+
|
|
70
|
+
// Calculate the policy binding.
|
|
71
|
+
if (ecdsaBinding) {
|
|
72
|
+
const curveName = await getCurveNameFromPrivateKey(ephemeralKeyPair.privateKey);
|
|
73
|
+
const ecdsaPrivateKey = await convertECDHToECDSA(ephemeralKeyPair.privateKey, curveName);
|
|
74
|
+
const ecdsaSignature = await computeECDSASig(ecdsaPrivateKey, new Uint8Array(encryptedPolicy));
|
|
75
|
+
const { r, s } = extractRSValuesFromSignature(new Uint8Array(ecdsaSignature));
|
|
76
|
+
|
|
77
|
+
const rLength = r.length;
|
|
78
|
+
const sLength = s.length;
|
|
79
|
+
|
|
80
|
+
policyBinding = new Uint8Array(1 + rLength + 1 + sLength);
|
|
81
|
+
|
|
82
|
+
// Set the lengths and values of r and s in policyBinding
|
|
83
|
+
policyBinding[0] = rLength;
|
|
84
|
+
policyBinding.set(r, 1);
|
|
85
|
+
policyBinding[1 + rLength] = sLength;
|
|
86
|
+
policyBinding.set(s, 1 + rLength + 1);
|
|
87
|
+
} else {
|
|
88
|
+
const signature = await digest('SHA-256', new Uint8Array(encryptedPolicy));
|
|
89
|
+
policyBinding = new Uint8Array(signature.slice(-GMAC_BINDING_LEN));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Create embedded policy
|
|
93
|
+
const embeddedPolicy = new EmbeddedPolicy(
|
|
94
|
+
DefaultParams.policyType,
|
|
95
|
+
policyBinding,
|
|
96
|
+
new Uint8Array(encryptedPolicy)
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
if (!ephemeralKeyPair.publicKey) {
|
|
100
|
+
throw new ConfigurationError('incomplete ephemeral key');
|
|
101
|
+
}
|
|
102
|
+
// Create a header
|
|
103
|
+
const pubKeyAsArrayBuffer = await exportCryptoKey(ephemeralKeyPair.publicKey);
|
|
104
|
+
|
|
105
|
+
const header = new Header(
|
|
106
|
+
DefaultParams.magicNumberVersion,
|
|
107
|
+
kasResourceLocator,
|
|
108
|
+
ecdsaBinding,
|
|
109
|
+
DefaultParams.signatureCurveName,
|
|
110
|
+
DefaultParams.signature,
|
|
111
|
+
DefaultParams.signatureCurveName,
|
|
112
|
+
DefaultParams.symmetricCipher,
|
|
113
|
+
embeddedPolicy,
|
|
114
|
+
new Uint8Array(pubKeyAsArrayBuffer)
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
// Encrypt the payload
|
|
118
|
+
let payloadAsBuffer;
|
|
119
|
+
if (typeof data === 'string') {
|
|
120
|
+
payloadAsBuffer = new TextEncoder().encode(data);
|
|
121
|
+
} else {
|
|
122
|
+
payloadAsBuffer = data;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const encryptedPayload = await cryptoEncrypt(
|
|
126
|
+
symmetricKey,
|
|
127
|
+
new Uint8Array(payloadAsBuffer),
|
|
128
|
+
iv,
|
|
129
|
+
authTagLengthInBytes * 8
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
// Create payload
|
|
133
|
+
const payload = new Payload(
|
|
134
|
+
iv.slice(-3),
|
|
135
|
+
new Uint8Array(encryptedPayload.slice(0, -authTagLengthInBytes)),
|
|
136
|
+
new Uint8Array(encryptedPayload.slice(-authTagLengthInBytes))
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
// Create a nanotdf.
|
|
140
|
+
const nanoTDF = new NanoTDF(header, payload);
|
|
141
|
+
return nanoTDF.toBuffer();
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Retrieves the curve name from a given ECDH private key.
|
|
146
|
+
*
|
|
147
|
+
* This function exports the provided ECDH private key in JWK format and extracts
|
|
148
|
+
* the curve name from the 'crv' property of the JWK.
|
|
149
|
+
*
|
|
150
|
+
* @param {CryptoKey} privateKey - The ECDH private key from which to retrieve the curve name.
|
|
151
|
+
* @returns {Promise<string>} - A promise that resolves to the curve name.
|
|
152
|
+
*
|
|
153
|
+
* @throws {Error} - Throws an error if the curve name is undefined.
|
|
154
|
+
*
|
|
155
|
+
*/
|
|
156
|
+
async function getCurveNameFromPrivateKey(privateKey: CryptoKey): Promise<string> {
|
|
157
|
+
// Export the private key
|
|
158
|
+
const keyData = await crypto.subtle.exportKey('jwk', privateKey);
|
|
159
|
+
|
|
160
|
+
// The curve name is stored in the 'crv' property of the JWK
|
|
161
|
+
if (!keyData.crv) {
|
|
162
|
+
throw new ConfigurationError('curve name is undefined (bad private key)');
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return keyData.crv;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Converts an ECDH private key to an ECDSA private key.
|
|
170
|
+
*
|
|
171
|
+
* This function exports the given ECDH private key in PKCS#8 format and then
|
|
172
|
+
* imports it as an ECDSA private key using the specified curve name.
|
|
173
|
+
*
|
|
174
|
+
* @param {CryptoKey} key - The ECDH private key to be converted.
|
|
175
|
+
* @param {string} curveName - The name of the elliptic curve to be used for the ECDSA key.
|
|
176
|
+
* @returns {Promise<CryptoKey>} - A promise that resolves to the converted ECDSA private key.
|
|
177
|
+
*
|
|
178
|
+
* @throws {Error} - Throws an error if the key export or import fails.
|
|
179
|
+
*/
|
|
180
|
+
async function convertECDHToECDSA(key: CryptoKey, curveName: string): Promise<CryptoKey> {
|
|
181
|
+
// Export the ECDH private key
|
|
182
|
+
const ecdhPrivateKey = await crypto.subtle.exportKey('pkcs8', key);
|
|
183
|
+
|
|
184
|
+
// Import the ECDH private key as an ECDSA private key
|
|
185
|
+
const ecdsaPrivateKey = await crypto.subtle.importKey(
|
|
186
|
+
KeyFormat.Pkcs8,
|
|
187
|
+
ecdhPrivateKey,
|
|
188
|
+
{
|
|
189
|
+
name: AlgorithmName.ECDSA,
|
|
190
|
+
namedCurve: curveName,
|
|
191
|
+
},
|
|
192
|
+
true,
|
|
193
|
+
[KeyUsageType.Sign]
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
return ecdsaPrivateKey;
|
|
197
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Signature ECC Mode is used to determine the length of the signature at the end of a nanotdf. This, in
|
|
3
|
+
* combination with the previous HAS_SIGNATURE section, describe the signature of the nanotdf. The following table
|
|
4
|
+
* describes the valid values and the associated ECC Params.
|
|
5
|
+
*/
|
|
6
|
+
enum CurveNameEnum {
|
|
7
|
+
SECP256R1,
|
|
8
|
+
SECP384R1,
|
|
9
|
+
SECP521R1,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default CurveNameEnum;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import CurveNameEnum from '../enum/CurveNameEnum.js';
|
|
2
|
+
import { getCurveLength } from '../models/EcCurves.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Length of public key
|
|
6
|
+
*
|
|
7
|
+
* @param curveName CurveNameEnum
|
|
8
|
+
* @returns number length of the public key
|
|
9
|
+
*/
|
|
10
|
+
export function lengthOfPublicKey(curveName: CurveNameEnum): number | never {
|
|
11
|
+
return Math.ceil(getCurveLength(curveName) / 8);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Length of signature
|
|
16
|
+
*
|
|
17
|
+
* ECDSA signatures are 2 times longer than the signer's private key for the curve used during the signing process.
|
|
18
|
+
* For example, for 256-bit elliptic curves (like secp256k1 ) the ECDSA signature is 512 bits (64 bytes) and for 521-bit
|
|
19
|
+
* curves (like secp521r1 ) the signature is 1042 bits.
|
|
20
|
+
*
|
|
21
|
+
* @param curveName CurveNameEnum
|
|
22
|
+
* @returns number length of the signature
|
|
23
|
+
*/
|
|
24
|
+
export function lengthOfSignature(curveName: CurveNameEnum): number | never {
|
|
25
|
+
return Math.ceil((getCurveLength(curveName) * 2) / 8);
|
|
26
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TypedArray } from '../../tdf/index.js';
|
|
2
|
+
|
|
3
|
+
import { digest, enums } from '../../nanotdf-crypto/index.js';
|
|
4
|
+
|
|
5
|
+
interface HkdfSalt {
|
|
6
|
+
hkdfSalt: ArrayBuffer;
|
|
7
|
+
hkdfHash: enums.HashType;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default async function getHkdfSalt(buffer: TypedArray | ArrayBuffer): Promise<HkdfSalt> {
|
|
11
|
+
return {
|
|
12
|
+
hkdfSalt: await digest(enums.HashType.Sha256, buffer),
|
|
13
|
+
hkdfHash: enums.HashType.Sha256,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Don't export named values or the enduser will
|
|
2
|
+
// have to call `const NanoTDF = require('nanotdf').default`
|
|
3
|
+
export { default as Client } from './Client.js';
|
|
4
|
+
export { default as Header } from './models/Header.js';
|
|
5
|
+
export { default as NanoTDF } from './NanoTDF.js';
|
|
6
|
+
export { default as decrypt } from './decrypt.js';
|
|
7
|
+
export { default as encrypt } from './encrypt.js';
|
|
8
|
+
export { default as encryptDataset } from './encrypt-dataset.js';
|
|
9
|
+
export { default as getHkdfSalt } from './helpers/getHkdfSalt.js';
|
|
10
|
+
export { default as DefaultParams } from './models/DefaultParams.js';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import PolicyTypeEnum from '../enum/PolicyTypeEnum.js';
|
|
2
|
+
import ResourceLocator from '../models/ResourceLocator.js';
|
|
3
|
+
|
|
4
|
+
export default interface PolicyInterface {
|
|
5
|
+
type: PolicyTypeEnum;
|
|
6
|
+
binding: Uint8Array;
|
|
7
|
+
|
|
8
|
+
// Remote policy
|
|
9
|
+
remotePolicy?: ResourceLocator;
|
|
10
|
+
|
|
11
|
+
// Embedded policy
|
|
12
|
+
content?: Uint8Array;
|
|
13
|
+
|
|
14
|
+
// Return the content of policy
|
|
15
|
+
toBuffer(): Uint8Array | never;
|
|
16
|
+
|
|
17
|
+
// Return the length of the policy
|
|
18
|
+
getLength(): number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface RemotePolicyInterface extends PolicyInterface {
|
|
22
|
+
remotePoilcy?: ResourceLocator;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface EmbeddedPolicyInterface extends PolicyInterface {
|
|
26
|
+
content: Uint8Array;
|
|
27
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import CipherEnum from '../enum/CipherEnum.js';
|
|
2
|
+
import { UnsupportedFeatureError } from '../../errors.js';
|
|
3
|
+
|
|
4
|
+
interface CipherInterface {
|
|
5
|
+
name: CipherEnum;
|
|
6
|
+
length: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const Aes256Gcm64: CipherInterface = {
|
|
10
|
+
name: CipherEnum.AES_256_GCM_64,
|
|
11
|
+
length: 64,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const Aes256Gcm96: CipherInterface = {
|
|
15
|
+
name: CipherEnum.AES_256_GCM_96,
|
|
16
|
+
length: 96,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const Aes256Gcm104: CipherInterface = {
|
|
20
|
+
name: CipherEnum.AES_256_GCM_104,
|
|
21
|
+
length: 104,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const Aes256Gcm112: CipherInterface = {
|
|
25
|
+
name: CipherEnum.AES_256_GCM_112,
|
|
26
|
+
length: 112,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const Aes256Gcm120: CipherInterface = {
|
|
30
|
+
name: CipherEnum.AES_256_GCM_120,
|
|
31
|
+
length: 120,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const Aes256Gcm128: CipherInterface = {
|
|
35
|
+
name: CipherEnum.AES_256_GCM_128,
|
|
36
|
+
length: 128,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export function getBitLength(cipher: CipherEnum): number {
|
|
40
|
+
switch (cipher) {
|
|
41
|
+
case CipherEnum.AES_256_GCM_64:
|
|
42
|
+
return Aes256Gcm64.length;
|
|
43
|
+
case CipherEnum.AES_256_GCM_96:
|
|
44
|
+
return Aes256Gcm96.length;
|
|
45
|
+
case CipherEnum.AES_256_GCM_104:
|
|
46
|
+
return Aes256Gcm104.length;
|
|
47
|
+
case CipherEnum.AES_256_GCM_112:
|
|
48
|
+
return Aes256Gcm112.length;
|
|
49
|
+
case CipherEnum.AES_256_GCM_120:
|
|
50
|
+
return Aes256Gcm120.length;
|
|
51
|
+
case CipherEnum.AES_256_GCM_128:
|
|
52
|
+
return Aes256Gcm128.length;
|
|
53
|
+
default:
|
|
54
|
+
throw new UnsupportedFeatureError(`unsupported cipher enum value: [${cipher}]`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// export default {
|
|
59
|
+
// Aes256Gcm64,
|
|
60
|
+
// Aes256Gcm96,
|
|
61
|
+
// Aes256Gcm104,
|
|
62
|
+
// Aes256Gcm112,
|
|
63
|
+
// Aes256Gcm120,
|
|
64
|
+
// Aes256Gcm128,
|
|
65
|
+
|
|
66
|
+
// getBitLength,
|
|
67
|
+
// };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import CipherEnum from '../enum/CipherEnum.js';
|
|
2
|
+
import CurveNameEnum from '../enum/CurveNameEnum.js';
|
|
3
|
+
import PolicyTypeEnum from '../enum/PolicyTypeEnum.js';
|
|
4
|
+
|
|
5
|
+
const enc = new TextEncoder();
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Default encrypt param builders
|
|
9
|
+
*
|
|
10
|
+
* @link https://github.com/virtru/tdf3-cpp/blob/develop/tdf3-src/lib/src/nanotdf_builder_impl.h
|
|
11
|
+
*/
|
|
12
|
+
const DefaultParams = {
|
|
13
|
+
ecdsaBinding: false,
|
|
14
|
+
ephemeralCurveName: CurveNameEnum.SECP256R1,
|
|
15
|
+
magicNumberVersion: enc.encode('L1L'),
|
|
16
|
+
offlineMode: false,
|
|
17
|
+
policyType: PolicyTypeEnum.EmbeddedEncrypted,
|
|
18
|
+
signature: false,
|
|
19
|
+
signatureCurveName: CurveNameEnum.SECP256R1,
|
|
20
|
+
symmetricCipher: CipherEnum.AES_256_GCM_96,
|
|
21
|
+
defaultECAlgorithm: 'ec:secp256r1',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default DefaultParams;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import CurveNameEnum from '../enum/CurveNameEnum.js';
|
|
2
|
+
import { UnsupportedFeatureError } from '../../errors.js';
|
|
3
|
+
|
|
4
|
+
export interface CurveInterface {
|
|
5
|
+
name: CurveNameEnum;
|
|
6
|
+
length: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const Secp256R1: CurveInterface = {
|
|
10
|
+
name: CurveNameEnum.SECP256R1,
|
|
11
|
+
length: 256,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const Secp384R1: CurveInterface = {
|
|
15
|
+
name: CurveNameEnum.SECP384R1,
|
|
16
|
+
length: 384,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const Secp521R1: CurveInterface = {
|
|
20
|
+
name: CurveNameEnum.SECP521R1,
|
|
21
|
+
length: 521,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Get size from Curve
|
|
26
|
+
*
|
|
27
|
+
* @param curveName CurveNameEnum name of the curve
|
|
28
|
+
*/
|
|
29
|
+
export function getCurveLength(curveName: CurveNameEnum): number {
|
|
30
|
+
switch (curveName) {
|
|
31
|
+
case Secp256R1.name:
|
|
32
|
+
return Secp256R1.length;
|
|
33
|
+
case Secp384R1.name:
|
|
34
|
+
return Secp384R1.length;
|
|
35
|
+
case Secp521R1.name:
|
|
36
|
+
return Secp521R1.length;
|
|
37
|
+
default:
|
|
38
|
+
throw new UnsupportedFeatureError(`unsupported curve name: ${curveName}`);
|
|
39
|
+
}
|
|
40
|
+
}
|