@zudojs/crypto 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +35 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/compare/compare.helper.d.ts +8 -0
- package/dist/compare/compare.helper.d.ts.map +1 -0
- package/dist/compare/compare.helper.js +17 -0
- package/dist/compare/compare.helper.js.map +1 -0
- package/dist/compare/index.d.ts +7 -0
- package/dist/compare/index.d.ts.map +1 -0
- package/dist/compare/index.js +7 -0
- package/dist/compare/index.js.map +1 -0
- package/dist/cryptoAlgorithm/index.d.ts +8 -0
- package/dist/cryptoAlgorithm/index.d.ts.map +1 -0
- package/dist/cryptoAlgorithm/index.js +8 -0
- package/dist/cryptoAlgorithm/index.js.map +1 -0
- package/dist/cryptoCipher/cryptoCipher.core.d.ts +25 -0
- package/dist/cryptoCipher/cryptoCipher.core.d.ts.map +1 -0
- package/dist/cryptoCipher/cryptoCipher.core.js +35 -0
- package/dist/cryptoCipher/cryptoCipher.core.js.map +1 -0
- package/dist/cryptoCipher/cryptoCipher.envelope.d.ts +16 -0
- package/dist/cryptoCipher/cryptoCipher.envelope.d.ts.map +1 -0
- package/dist/cryptoCipher/cryptoCipher.envelope.js +50 -0
- package/dist/cryptoCipher/cryptoCipher.envelope.js.map +1 -0
- package/dist/cryptoCipher/cryptoCipher.string.d.ts +10 -0
- package/dist/cryptoCipher/cryptoCipher.string.d.ts.map +1 -0
- package/dist/cryptoCipher/cryptoCipher.string.js +15 -0
- package/dist/cryptoCipher/cryptoCipher.string.js.map +1 -0
- package/dist/cryptoCipher/index.d.ts +9 -0
- package/dist/cryptoCipher/index.d.ts.map +1 -0
- package/dist/cryptoCipher/index.js +9 -0
- package/dist/cryptoCipher/index.js.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.config.d.ts +36 -0
- package/dist/cryptoConstants/cryptoConstants.config.d.ts.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.config.js +29 -0
- package/dist/cryptoConstants/cryptoConstants.config.js.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.guard.d.ts +28 -0
- package/dist/cryptoConstants/cryptoConstants.guard.d.ts.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.guard.js +45 -0
- package/dist/cryptoConstants/cryptoConstants.guard.js.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.security.d.ts +41 -0
- package/dist/cryptoConstants/cryptoConstants.security.d.ts.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.security.js +42 -0
- package/dist/cryptoConstants/cryptoConstants.security.js.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.token.d.ts +47 -0
- package/dist/cryptoConstants/cryptoConstants.token.d.ts.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.token.js +47 -0
- package/dist/cryptoConstants/cryptoConstants.token.js.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.type.d.ts +95 -0
- package/dist/cryptoConstants/cryptoConstants.type.d.ts.map +1 -0
- package/dist/cryptoConstants/cryptoConstants.type.js +116 -0
- package/dist/cryptoConstants/cryptoConstants.type.js.map +1 -0
- package/dist/cryptoConstants/index.d.ts +11 -0
- package/dist/cryptoConstants/index.d.ts.map +1 -0
- package/dist/cryptoConstants/index.js +11 -0
- package/dist/cryptoConstants/index.js.map +1 -0
- package/dist/cryptoEncoding/cryptoEncoding.arrayBuffer.d.ts +9 -0
- package/dist/cryptoEncoding/cryptoEncoding.arrayBuffer.d.ts.map +1 -0
- package/dist/cryptoEncoding/cryptoEncoding.arrayBuffer.js +19 -0
- package/dist/cryptoEncoding/cryptoEncoding.arrayBuffer.js.map +1 -0
- package/dist/cryptoEncoding/cryptoEncoding.compare.d.ts +8 -0
- package/dist/cryptoEncoding/cryptoEncoding.compare.d.ts.map +1 -0
- package/dist/cryptoEncoding/cryptoEncoding.compare.js +16 -0
- package/dist/cryptoEncoding/cryptoEncoding.compare.js.map +1 -0
- package/dist/cryptoEncoding/cryptoEncoding.core.d.ts +21 -0
- package/dist/cryptoEncoding/cryptoEncoding.core.d.ts.map +1 -0
- package/dist/cryptoEncoding/cryptoEncoding.core.js +63 -0
- package/dist/cryptoEncoding/cryptoEncoding.core.js.map +1 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.d.ts +13 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.d.ts.map +1 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.js +35 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.js.map +1 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.d.ts +13 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.d.ts.map +1 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.js +40 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.js.map +1 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.d.ts +13 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.d.ts.map +1 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.js +31 -0
- package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.js.map +1 -0
- package/dist/cryptoEncoding/encoding/index.d.ts +9 -0
- package/dist/cryptoEncoding/encoding/index.d.ts.map +1 -0
- package/dist/cryptoEncoding/encoding/index.js +9 -0
- package/dist/cryptoEncoding/encoding/index.js.map +1 -0
- package/dist/cryptoEncoding/index.d.ts +12 -0
- package/dist/cryptoEncoding/index.d.ts.map +1 -0
- package/dist/cryptoEncoding/index.js +12 -0
- package/dist/cryptoEncoding/index.js.map +1 -0
- package/dist/cryptoErrors/index.d.ts +11 -0
- package/dist/cryptoErrors/index.d.ts.map +1 -0
- package/dist/cryptoErrors/index.js +10 -0
- package/dist/cryptoErrors/index.js.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.core.d.ts +60 -0
- package/dist/cryptoFactory/cryptoFactory.core.d.ts.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.core.js +105 -0
- package/dist/cryptoFactory/cryptoFactory.core.js.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.encoding.d.ts +5 -0
- package/dist/cryptoFactory/cryptoFactory.encoding.d.ts.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.encoding.js +8 -0
- package/dist/cryptoFactory/cryptoFactory.encoding.js.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.options.d.ts +2 -0
- package/dist/cryptoFactory/cryptoFactory.options.d.ts.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.options.js +6 -0
- package/dist/cryptoFactory/cryptoFactory.options.js.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.password.d.ts +5 -0
- package/dist/cryptoFactory/cryptoFactory.password.d.ts.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.password.js +8 -0
- package/dist/cryptoFactory/cryptoFactory.password.js.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.token.d.ts +10 -0
- package/dist/cryptoFactory/cryptoFactory.token.d.ts.map +1 -0
- package/dist/cryptoFactory/cryptoFactory.token.js +30 -0
- package/dist/cryptoFactory/cryptoFactory.token.js.map +1 -0
- package/dist/cryptoFactory/index.d.ts +7 -0
- package/dist/cryptoFactory/index.d.ts.map +1 -0
- package/dist/cryptoFactory/index.js +7 -0
- package/dist/cryptoFactory/index.js.map +1 -0
- package/dist/cryptoHash/cryptoHash.codec.d.ts +10 -0
- package/dist/cryptoHash/cryptoHash.codec.d.ts.map +1 -0
- package/dist/cryptoHash/cryptoHash.codec.js +39 -0
- package/dist/cryptoHash/cryptoHash.codec.js.map +1 -0
- package/dist/cryptoHash/cryptoHash.compare.d.ts +5 -0
- package/dist/cryptoHash/cryptoHash.compare.d.ts.map +1 -0
- package/dist/cryptoHash/cryptoHash.compare.js +14 -0
- package/dist/cryptoHash/cryptoHash.compare.js.map +1 -0
- package/dist/cryptoHash/cryptoHash.convenience.d.ts +26 -0
- package/dist/cryptoHash/cryptoHash.convenience.d.ts.map +1 -0
- package/dist/cryptoHash/cryptoHash.convenience.js +56 -0
- package/dist/cryptoHash/cryptoHash.convenience.js.map +1 -0
- package/dist/cryptoHash/cryptoHash.core.d.ts +19 -0
- package/dist/cryptoHash/cryptoHash.core.d.ts.map +1 -0
- package/dist/cryptoHash/cryptoHash.core.js +17 -0
- package/dist/cryptoHash/cryptoHash.core.js.map +1 -0
- package/dist/cryptoHash/cryptoHmac.core.d.ts +19 -0
- package/dist/cryptoHash/cryptoHmac.core.d.ts.map +1 -0
- package/dist/cryptoHash/cryptoHmac.core.js +29 -0
- package/dist/cryptoHash/cryptoHmac.core.js.map +1 -0
- package/dist/cryptoHash/index.d.ts +11 -0
- package/dist/cryptoHash/index.d.ts.map +1 -0
- package/dist/cryptoHash/index.js +11 -0
- package/dist/cryptoHash/index.js.map +1 -0
- package/dist/cryptoKey/cryptoKey.factory.d.ts +21 -0
- package/dist/cryptoKey/cryptoKey.factory.d.ts.map +1 -0
- package/dist/cryptoKey/cryptoKey.factory.js +72 -0
- package/dist/cryptoKey/cryptoKey.factory.js.map +1 -0
- package/dist/cryptoKey/cryptoKey.type.d.ts +44 -0
- package/dist/cryptoKey/cryptoKey.type.d.ts.map +1 -0
- package/dist/cryptoKey/cryptoKey.type.js +32 -0
- package/dist/cryptoKey/cryptoKey.type.js.map +1 -0
- package/dist/cryptoKey/cryptoKey.utils.d.ts +13 -0
- package/dist/cryptoKey/cryptoKey.utils.d.ts.map +1 -0
- package/dist/cryptoKey/cryptoKey.utils.js +18 -0
- package/dist/cryptoKey/cryptoKey.utils.js.map +1 -0
- package/dist/cryptoKey/index.d.ts +9 -0
- package/dist/cryptoKey/index.d.ts.map +1 -0
- package/dist/cryptoKey/index.js +9 -0
- package/dist/cryptoKey/index.js.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.d.ts +16 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.d.ts.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.js +76 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.js.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.d.ts +5 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.d.ts.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.js +12 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.js.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.type.d.ts +23 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.type.d.ts.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.type.js +2 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.type.js.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.d.ts +9 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.d.ts.map +1 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.js +35 -0
- package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.js.map +1 -0
- package/dist/cryptoKeyDerivation/index.d.ts +10 -0
- package/dist/cryptoKeyDerivation/index.d.ts.map +1 -0
- package/dist/cryptoKeyDerivation/index.js +10 -0
- package/dist/cryptoKeyDerivation/index.js.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.codec.d.ts +14 -0
- package/dist/cryptoPassword/cryptoPassword.codec.d.ts.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.codec.js +87 -0
- package/dist/cryptoPassword/cryptoPassword.codec.js.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.core.d.ts +10 -0
- package/dist/cryptoPassword/cryptoPassword.core.d.ts.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.core.js +59 -0
- package/dist/cryptoPassword/cryptoPassword.core.js.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.helper.d.ts +14 -0
- package/dist/cryptoPassword/cryptoPassword.helper.d.ts.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.helper.js +33 -0
- package/dist/cryptoPassword/cryptoPassword.helper.js.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.type.d.ts +37 -0
- package/dist/cryptoPassword/cryptoPassword.type.d.ts.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.type.js +2 -0
- package/dist/cryptoPassword/cryptoPassword.type.js.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.validate.d.ts +23 -0
- package/dist/cryptoPassword/cryptoPassword.validate.d.ts.map +1 -0
- package/dist/cryptoPassword/cryptoPassword.validate.js +60 -0
- package/dist/cryptoPassword/cryptoPassword.validate.js.map +1 -0
- package/dist/cryptoPassword/index.d.ts +11 -0
- package/dist/cryptoPassword/index.d.ts.map +1 -0
- package/dist/cryptoPassword/index.js +11 -0
- package/dist/cryptoPassword/index.js.map +1 -0
- package/dist/cryptoProvider/cryptoProvider.core.d.ts +10 -0
- package/dist/cryptoProvider/cryptoProvider.core.d.ts.map +1 -0
- package/dist/cryptoProvider/cryptoProvider.core.js +2 -0
- package/dist/cryptoProvider/cryptoProvider.core.js.map +1 -0
- package/dist/cryptoProvider/cryptoProvider.interface.d.ts +91 -0
- package/dist/cryptoProvider/cryptoProvider.interface.d.ts.map +1 -0
- package/dist/cryptoProvider/cryptoProvider.interface.js +2 -0
- package/dist/cryptoProvider/cryptoProvider.interface.js.map +1 -0
- package/dist/cryptoProvider/cryptoProvider.type.d.ts +41 -0
- package/dist/cryptoProvider/cryptoProvider.type.d.ts.map +1 -0
- package/dist/cryptoProvider/cryptoProvider.type.js +2 -0
- package/dist/cryptoProvider/cryptoProvider.type.js.map +1 -0
- package/dist/cryptoProvider/index.d.ts +12 -0
- package/dist/cryptoProvider/index.d.ts.map +1 -0
- package/dist/cryptoProvider/index.js +2 -0
- package/dist/cryptoProvider/index.js.map +1 -0
- package/dist/cryptoProvider/types/cryptoCipher.type.d.ts +28 -0
- package/dist/cryptoProvider/types/cryptoCipher.type.d.ts.map +1 -0
- package/dist/cryptoProvider/types/cryptoCipher.type.js +2 -0
- package/dist/cryptoProvider/types/cryptoCipher.type.js.map +1 -0
- package/dist/cryptoProvider/types/cryptoHash.type.d.ts +14 -0
- package/dist/cryptoProvider/types/cryptoHash.type.d.ts.map +1 -0
- package/dist/cryptoProvider/types/cryptoHash.type.js +2 -0
- package/dist/cryptoProvider/types/cryptoHash.type.js.map +1 -0
- package/dist/cryptoProvider/types/cryptoKeyDerivation.type.d.ts +22 -0
- package/dist/cryptoProvider/types/cryptoKeyDerivation.type.d.ts.map +1 -0
- package/dist/cryptoProvider/types/cryptoKeyDerivation.type.js +2 -0
- package/dist/cryptoProvider/types/cryptoKeyDerivation.type.js.map +1 -0
- package/dist/cryptoProvider/types/cryptoRandom.type.d.ts +9 -0
- package/dist/cryptoProvider/types/cryptoRandom.type.d.ts.map +1 -0
- package/dist/cryptoProvider/types/cryptoRandom.type.js +2 -0
- package/dist/cryptoProvider/types/cryptoRandom.type.js.map +1 -0
- package/dist/cryptoProvider/types/cryptoSignature.type.d.ts +19 -0
- package/dist/cryptoProvider/types/cryptoSignature.type.d.ts.map +1 -0
- package/dist/cryptoProvider/types/cryptoSignature.type.js +2 -0
- package/dist/cryptoProvider/types/cryptoSignature.type.js.map +1 -0
- package/dist/cryptoProvider/types/index.d.ts +12 -0
- package/dist/cryptoProvider/types/index.d.ts.map +1 -0
- package/dist/cryptoProvider/types/index.js +8 -0
- package/dist/cryptoProvider/types/index.js.map +1 -0
- package/dist/cryptoRandom/cryptoRandom.choice.d.ts +14 -0
- package/dist/cryptoRandom/cryptoRandom.choice.d.ts.map +1 -0
- package/dist/cryptoRandom/cryptoRandom.choice.js +30 -0
- package/dist/cryptoRandom/cryptoRandom.choice.js.map +1 -0
- package/dist/cryptoRandom/cryptoRandom.core.d.ts +21 -0
- package/dist/cryptoRandom/cryptoRandom.core.d.ts.map +1 -0
- package/dist/cryptoRandom/cryptoRandom.core.js +31 -0
- package/dist/cryptoRandom/cryptoRandom.core.js.map +1 -0
- package/dist/cryptoRandom/cryptoRandom.string.d.ts +35 -0
- package/dist/cryptoRandom/cryptoRandom.string.d.ts.map +1 -0
- package/dist/cryptoRandom/cryptoRandom.string.js +74 -0
- package/dist/cryptoRandom/cryptoRandom.string.js.map +1 -0
- package/dist/cryptoRandom/index.d.ts +9 -0
- package/dist/cryptoRandom/index.d.ts.map +1 -0
- package/dist/cryptoRandom/index.js +9 -0
- package/dist/cryptoRandom/index.js.map +1 -0
- package/dist/cryptoService/cryptoService.core.d.ts +46 -0
- package/dist/cryptoService/cryptoService.core.d.ts.map +1 -0
- package/dist/cryptoService/cryptoService.core.js +101 -0
- package/dist/cryptoService/cryptoService.core.js.map +1 -0
- package/dist/cryptoService/cryptoService.derivation.d.ts +6 -0
- package/dist/cryptoService/cryptoService.derivation.d.ts.map +1 -0
- package/dist/cryptoService/cryptoService.derivation.js +12 -0
- package/dist/cryptoService/cryptoService.derivation.js.map +1 -0
- package/dist/cryptoService/cryptoService.encoding.d.ts +5 -0
- package/dist/cryptoService/cryptoService.encoding.d.ts.map +1 -0
- package/dist/cryptoService/cryptoService.encoding.js +19 -0
- package/dist/cryptoService/cryptoService.encoding.js.map +1 -0
- package/dist/cryptoService/index.d.ts +11 -0
- package/dist/cryptoService/index.d.ts.map +1 -0
- package/dist/cryptoService/index.js +11 -0
- package/dist/cryptoService/index.js.map +1 -0
- package/dist/cryptoService/operations/cryptoService.cipher.d.ts +5 -0
- package/dist/cryptoService/operations/cryptoService.cipher.d.ts.map +1 -0
- package/dist/cryptoService/operations/cryptoService.cipher.js +19 -0
- package/dist/cryptoService/operations/cryptoService.cipher.js.map +1 -0
- package/dist/cryptoService/operations/cryptoService.hash.d.ts +3 -0
- package/dist/cryptoService/operations/cryptoService.hash.d.ts.map +1 -0
- package/dist/cryptoService/operations/cryptoService.hash.js +16 -0
- package/dist/cryptoService/operations/cryptoService.hash.js.map +1 -0
- package/dist/cryptoService/operations/cryptoService.password.d.ts +5 -0
- package/dist/cryptoService/operations/cryptoService.password.d.ts.map +1 -0
- package/dist/cryptoService/operations/cryptoService.password.js +19 -0
- package/dist/cryptoService/operations/cryptoService.password.js.map +1 -0
- package/dist/cryptoService/operations/cryptoService.token.d.ts +7 -0
- package/dist/cryptoService/operations/cryptoService.token.d.ts.map +1 -0
- package/dist/cryptoService/operations/cryptoService.token.js +36 -0
- package/dist/cryptoService/operations/cryptoService.token.js.map +1 -0
- package/dist/cryptoService/operations/index.d.ts +11 -0
- package/dist/cryptoService/operations/index.d.ts.map +1 -0
- package/dist/cryptoService/operations/index.js +11 -0
- package/dist/cryptoService/operations/index.js.map +1 -0
- package/dist/cryptoSignature/cryptoSignature.core.d.ts +25 -0
- package/dist/cryptoSignature/cryptoSignature.core.d.ts.map +1 -0
- package/dist/cryptoSignature/cryptoSignature.core.js +36 -0
- package/dist/cryptoSignature/cryptoSignature.core.js.map +1 -0
- package/dist/cryptoSignature/index.d.ts +7 -0
- package/dist/cryptoSignature/index.d.ts.map +1 -0
- package/dist/cryptoSignature/index.js +7 -0
- package/dist/cryptoSignature/index.js.map +1 -0
- package/dist/cryptoToken/cryptoToken.core.d.ts +55 -0
- package/dist/cryptoToken/cryptoToken.core.d.ts.map +1 -0
- package/dist/cryptoToken/cryptoToken.core.js +90 -0
- package/dist/cryptoToken/cryptoToken.core.js.map +1 -0
- package/dist/cryptoToken/cryptoToken.hash.d.ts +24 -0
- package/dist/cryptoToken/cryptoToken.hash.d.ts.map +1 -0
- package/dist/cryptoToken/cryptoToken.hash.js +82 -0
- package/dist/cryptoToken/cryptoToken.hash.js.map +1 -0
- package/dist/cryptoToken/cryptoToken.utils.d.ts +13 -0
- package/dist/cryptoToken/cryptoToken.utils.d.ts.map +1 -0
- package/dist/cryptoToken/cryptoToken.utils.js +30 -0
- package/dist/cryptoToken/cryptoToken.utils.js.map +1 -0
- package/dist/cryptoToken/index.d.ts +9 -0
- package/dist/cryptoToken/index.d.ts.map +1 -0
- package/dist/cryptoToken/index.js +9 -0
- package/dist/cryptoToken/index.js.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.compare.d.ts +11 -0
- package/dist/cryptoUtils/cryptoUtils.compare.d.ts.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.compare.js +27 -0
- package/dist/cryptoUtils/cryptoUtils.compare.js.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.conversion.d.ts +25 -0
- package/dist/cryptoUtils/cryptoUtils.conversion.d.ts.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.conversion.js +50 -0
- package/dist/cryptoUtils/cryptoUtils.conversion.js.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.number.d.ts +9 -0
- package/dist/cryptoUtils/cryptoUtils.number.d.ts.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.number.js +35 -0
- package/dist/cryptoUtils/cryptoUtils.number.js.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.text.d.ts +13 -0
- package/dist/cryptoUtils/cryptoUtils.text.d.ts.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.text.js +23 -0
- package/dist/cryptoUtils/cryptoUtils.text.js.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.validation.d.ts +17 -0
- package/dist/cryptoUtils/cryptoUtils.validation.d.ts.map +1 -0
- package/dist/cryptoUtils/cryptoUtils.validation.js +29 -0
- package/dist/cryptoUtils/cryptoUtils.validation.js.map +1 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64.d.ts +9 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64.d.ts.map +1 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64.js +28 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64.js.map +1 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64url.d.ts +9 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64url.d.ts.map +1 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64url.js +37 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.base64url.js.map +1 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.hex.d.ts +9 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.hex.d.ts.map +1 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.hex.js +25 -0
- package/dist/cryptoUtils/encoding/cryptoUtils.hex.js.map +1 -0
- package/dist/cryptoUtils/encoding/index.d.ts +10 -0
- package/dist/cryptoUtils/encoding/index.d.ts.map +1 -0
- package/dist/cryptoUtils/encoding/index.js +10 -0
- package/dist/cryptoUtils/encoding/index.js.map +1 -0
- package/dist/cryptoUtils/index.d.ts +13 -0
- package/dist/cryptoUtils/index.d.ts.map +1 -0
- package/dist/cryptoUtils/index.js +13 -0
- package/dist/cryptoUtils/index.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/node/index.d.ts +8 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +8 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/nodeCryptoProvider/index.d.ts +14 -0
- package/dist/node/nodeCryptoProvider/index.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/index.js +14 -0
- package/dist/node/nodeCryptoProvider/index.js.map +1 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.d.ts +42 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.js +56 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.js.map +1 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.factory.d.ts +3 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.factory.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.factory.js +5 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.factory.js.map +1 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.d.ts +8 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.js +55 -0
- package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.js.map +1 -0
- package/dist/node/nodeCryptoProvider/operations/index.d.ts +8 -0
- package/dist/node/nodeCryptoProvider/operations/index.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/operations/index.js +8 -0
- package/dist/node/nodeCryptoProvider/operations/index.js.map +1 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.d.ts +3 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.js +45 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.js.map +1 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.d.ts +12 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.js +94 -0
- package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.js.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/index.d.ts +10 -0
- package/dist/node/nodeCryptoProvider/primitives/index.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/index.js +10 -0
- package/dist/node/nodeCryptoProvider/primitives/index.js.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.d.ts +13 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.js +35 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.js.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.hash.d.ts +4 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.hash.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.hash.js +16 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.hash.js.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.d.ts +4 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.js +39 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.js.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.d.ts +13 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.d.ts.map +1 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.js +29 -0
- package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.js.map +1 -0
- package/dist/node/signing/index.d.ts +9 -0
- package/dist/node/signing/index.d.ts.map +1 -0
- package/dist/node/signing/index.js +9 -0
- package/dist/node/signing/index.js.map +1 -0
- package/dist/node/signing/signing.conversion.d.ts +9 -0
- package/dist/node/signing/signing.conversion.d.ts.map +1 -0
- package/dist/node/signing/signing.conversion.js +51 -0
- package/dist/node/signing/signing.conversion.js.map +1 -0
- package/dist/node/signing/signing.core.d.ts +21 -0
- package/dist/node/signing/signing.core.d.ts.map +1 -0
- package/dist/node/signing/signing.core.js +45 -0
- package/dist/node/signing/signing.core.js.map +1 -0
- package/dist/node/signing/signing.utils.d.ts +15 -0
- package/dist/node/signing/signing.utils.d.ts.map +1 -0
- package/dist/node/signing/signing.utils.js +41 -0
- package/dist/node/signing/signing.utils.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { CryptoAlgorithm } from "../cryptoConstants/cryptoConstants.type.js";
|
|
2
|
+
import { decodeBase64Url, parsePositiveInteger, validateParameters, } from "./cryptoPassword.validate.js";
|
|
3
|
+
/**
|
|
4
|
+
* Current password hash encoding format version.
|
|
5
|
+
*/
|
|
6
|
+
export const PASSWORD_FORMAT_VERSION = "v1";
|
|
7
|
+
/**
|
|
8
|
+
* Decodes an encoded password hash into its parameters.
|
|
9
|
+
*/
|
|
10
|
+
export function decodePasswordHash(encoded) {
|
|
11
|
+
if (typeof encoded !== "string" || encoded.length === 0) {
|
|
12
|
+
throw new TypeError("Password hash must be a non-empty string.");
|
|
13
|
+
}
|
|
14
|
+
const parts = encoded.split("$");
|
|
15
|
+
if (parts.length !== 6) {
|
|
16
|
+
throw new TypeError("Invalid password hash format.");
|
|
17
|
+
}
|
|
18
|
+
const [version, algorithm, costPart, blockSizePart, parallelizationPart, payload,] = parts;
|
|
19
|
+
if (version !== PASSWORD_FORMAT_VERSION) {
|
|
20
|
+
throw new TypeError(`Unsupported password hash version: ${version}.`);
|
|
21
|
+
}
|
|
22
|
+
if (algorithm !== CryptoAlgorithm.SCRYPT) {
|
|
23
|
+
throw new TypeError(`Unsupported password hash algorithm: ${algorithm}.`);
|
|
24
|
+
}
|
|
25
|
+
const cost = parsePositiveInteger(costPart, "cost");
|
|
26
|
+
const blockSize = parsePositiveInteger(blockSizePart, "blockSize");
|
|
27
|
+
const parallelization = parsePositiveInteger(parallelizationPart, "parallelization");
|
|
28
|
+
const payloadParts = payload.split(".");
|
|
29
|
+
if (payloadParts.length !== 2) {
|
|
30
|
+
throw new TypeError("Invalid password hash payload.");
|
|
31
|
+
}
|
|
32
|
+
const [encodedSalt, encodedHash] = payloadParts;
|
|
33
|
+
const salt = decodeBase64Url(encodedSalt);
|
|
34
|
+
const hash = decodeBase64Url(encodedHash);
|
|
35
|
+
if (salt.byteLength === 0) {
|
|
36
|
+
throw new TypeError("Password hash salt cannot be empty.");
|
|
37
|
+
}
|
|
38
|
+
if (hash.byteLength === 0) {
|
|
39
|
+
throw new TypeError("Password hash cannot be empty.");
|
|
40
|
+
}
|
|
41
|
+
validateParameters({
|
|
42
|
+
saltBytes: salt.byteLength,
|
|
43
|
+
keyBytes: hash.byteLength,
|
|
44
|
+
cost,
|
|
45
|
+
blockSize,
|
|
46
|
+
parallelization,
|
|
47
|
+
});
|
|
48
|
+
return Object.freeze({
|
|
49
|
+
version,
|
|
50
|
+
algorithm: CryptoAlgorithm.SCRYPT,
|
|
51
|
+
salt,
|
|
52
|
+
hash,
|
|
53
|
+
cost,
|
|
54
|
+
blockSize,
|
|
55
|
+
parallelization,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Encodes password hashing parameters into a portable string.
|
|
60
|
+
*/
|
|
61
|
+
export function encodePasswordHash(parameters) {
|
|
62
|
+
if (parameters.algorithm !== CryptoAlgorithm.SCRYPT) {
|
|
63
|
+
throw new TypeError("Only scrypt password hashes are supported.");
|
|
64
|
+
}
|
|
65
|
+
validateParameters({
|
|
66
|
+
saltBytes: parameters.salt.byteLength,
|
|
67
|
+
keyBytes: parameters.hash.byteLength,
|
|
68
|
+
cost: parameters.cost,
|
|
69
|
+
blockSize: parameters.blockSize,
|
|
70
|
+
parallelization: parameters.parallelization,
|
|
71
|
+
});
|
|
72
|
+
if (parameters.version !== PASSWORD_FORMAT_VERSION) {
|
|
73
|
+
throw new TypeError(`Unsupported password hash version: ${parameters.version}.`);
|
|
74
|
+
}
|
|
75
|
+
return [
|
|
76
|
+
parameters.version,
|
|
77
|
+
parameters.algorithm,
|
|
78
|
+
parameters.cost,
|
|
79
|
+
parameters.blockSize,
|
|
80
|
+
parameters.parallelization,
|
|
81
|
+
[
|
|
82
|
+
Buffer.from(parameters.salt).toString("base64url"),
|
|
83
|
+
Buffer.from(parameters.hash).toString("base64url"),
|
|
84
|
+
].join("."),
|
|
85
|
+
].join("$");
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=cryptoPassword.codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.codec.js","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PasswordHashOptions, PasswordHashResult } from "./cryptoPassword.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Hashes a password using the configured algorithm.
|
|
4
|
+
*/
|
|
5
|
+
export declare function hashPassword(password: string, options?: PasswordHashOptions): Promise<PasswordHashResult>;
|
|
6
|
+
/**
|
|
7
|
+
* Verifies a password against an encoded password hash.
|
|
8
|
+
*/
|
|
9
|
+
export declare function verifyPassword(password: string, encoded: string): Promise<boolean>;
|
|
10
|
+
//# sourceMappingURL=cryptoPassword.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.core.d.ts","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAclC;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA6C7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAQlB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { createNodeCryptoProvider } from "../node/index.js";
|
|
2
|
+
import { CryptoAlgorithm } from "../cryptoConstants/cryptoConstants.type.js";
|
|
3
|
+
import { assertPassword, validateParameters, } from "./cryptoPassword.validate.js";
|
|
4
|
+
import { decodePasswordHash, PASSWORD_FORMAT_VERSION, } from "./cryptoPassword.codec.js";
|
|
5
|
+
const provider = createNodeCryptoProvider();
|
|
6
|
+
/**
|
|
7
|
+
* Hashes a password using the configured algorithm.
|
|
8
|
+
*/
|
|
9
|
+
export async function hashPassword(password, options = {}) {
|
|
10
|
+
assertPassword(password);
|
|
11
|
+
const algorithm = options.cost !== undefined ||
|
|
12
|
+
options.blockSize !== undefined ||
|
|
13
|
+
options.parallelization !== undefined
|
|
14
|
+
? "scrypt"
|
|
15
|
+
: "scrypt";
|
|
16
|
+
const saltBytes = options.saltBytes ?? 16;
|
|
17
|
+
const keyBytes = options.keyBytes ?? 32;
|
|
18
|
+
const cost = options.cost ?? 16_384;
|
|
19
|
+
const blockSize = options.blockSize ?? 8;
|
|
20
|
+
const parallelization = options.parallelization ?? 1;
|
|
21
|
+
validateParameters({
|
|
22
|
+
saltBytes,
|
|
23
|
+
keyBytes,
|
|
24
|
+
cost,
|
|
25
|
+
blockSize,
|
|
26
|
+
parallelization,
|
|
27
|
+
});
|
|
28
|
+
const salt = new Uint8Array(await provider.randomBytes(saltBytes));
|
|
29
|
+
const encoded = await provider.hashPassword(password, {
|
|
30
|
+
algorithm: "scrypt",
|
|
31
|
+
memoryCost: cost,
|
|
32
|
+
blockSize,
|
|
33
|
+
parallelism: parallelization,
|
|
34
|
+
});
|
|
35
|
+
const hash = decodePasswordHash(encoded).hash;
|
|
36
|
+
return Object.freeze({
|
|
37
|
+
algorithm: CryptoAlgorithm.SCRYPT,
|
|
38
|
+
version: PASSWORD_FORMAT_VERSION,
|
|
39
|
+
salt,
|
|
40
|
+
hash,
|
|
41
|
+
encoded,
|
|
42
|
+
cost,
|
|
43
|
+
blockSize,
|
|
44
|
+
parallelization,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Verifies a password against an encoded password hash.
|
|
49
|
+
*/
|
|
50
|
+
export async function verifyPassword(password, encoded) {
|
|
51
|
+
try {
|
|
52
|
+
assertPassword(password);
|
|
53
|
+
return provider.verifyPassword(password, encoded);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=cryptoPassword.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.core.js","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAO7E,OAAO,EACL,cAAc,EACd,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,OAAO,GAAwB,EAAE;IAEjC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzB,MAAM,SAAS,GACb,OAAO,CAAC,IAAI,KAAK,SAAS;QAC1B,OAAO,CAAC,SAAS,KAAK,SAAS;QAC/B,OAAO,CAAC,eAAe,KAAK,SAAS;QACnC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,QAAQ,CAAC;IAEf,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IAErD,kBAAkB,CAAC;QACjB,SAAS;QACT,QAAQ;QACR,IAAI;QACJ,SAAS;QACT,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;QACpD,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,IAAI;QAChB,SAAS;QACT,WAAW,EAAE,eAAe;KAC7B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAE9C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,uBAAuB;QAChC,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,IAAI;QACJ,SAAS;QACT,eAAe;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,OAAe;IAEf,IAAI,CAAC;QACH,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEzB,OAAO,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PasswordHashOptions } from "./cryptoPassword.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the default password hashing parameters.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getDefaultPasswordHashOptions(): Required<PasswordHashOptions>;
|
|
6
|
+
/**
|
|
7
|
+
* Returns whether an encoded value is a valid password hash.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isPasswordHash(encoded: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Returns whether a password meets the basic requirements.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isValidPassword(password: string, minimumLength?: number): boolean;
|
|
14
|
+
//# sourceMappingURL=cryptoPassword.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.helper.d.ts","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMpE;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAQ7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,aAAa,SAAkC,GAC9C,OAAO,CAET"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { decodePasswordHash } from "./cryptoPassword.codec.js";
|
|
2
|
+
const PASSWORD_MINIMUM_DEFAULT_LENGTH = 8;
|
|
3
|
+
/**
|
|
4
|
+
* Returns the default password hashing parameters.
|
|
5
|
+
*/
|
|
6
|
+
export function getDefaultPasswordHashOptions() {
|
|
7
|
+
return {
|
|
8
|
+
saltBytes: 16,
|
|
9
|
+
keyBytes: 32,
|
|
10
|
+
cost: 16_384,
|
|
11
|
+
blockSize: 8,
|
|
12
|
+
parallelization: 1,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns whether an encoded value is a valid password hash.
|
|
17
|
+
*/
|
|
18
|
+
export function isPasswordHash(encoded) {
|
|
19
|
+
try {
|
|
20
|
+
decodePasswordHash(encoded);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns whether a password meets the basic requirements.
|
|
29
|
+
*/
|
|
30
|
+
export function isValidPassword(password, minimumLength = PASSWORD_MINIMUM_DEFAULT_LENGTH) {
|
|
31
|
+
return typeof password === "string" && password.length >= minimumLength;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=cryptoPassword.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.helper.js","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.helper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,CAAC;KACnB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,aAAa,GAAG,+BAA+B;IAE/C,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,aAAa,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { CryptoAlgorithm } from "../cryptoConstants/cryptoConstants.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Options used for password hashing.
|
|
4
|
+
*/
|
|
5
|
+
export interface PasswordHashOptions {
|
|
6
|
+
readonly saltBytes?: number;
|
|
7
|
+
readonly keyBytes?: number;
|
|
8
|
+
readonly cost?: number;
|
|
9
|
+
readonly blockSize?: number;
|
|
10
|
+
readonly parallelization?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Result returned by password hashing.
|
|
14
|
+
*/
|
|
15
|
+
export interface PasswordHashResult {
|
|
16
|
+
readonly algorithm: CryptoAlgorithm;
|
|
17
|
+
readonly version: string;
|
|
18
|
+
readonly salt: Uint8Array;
|
|
19
|
+
readonly hash: Uint8Array;
|
|
20
|
+
readonly encoded: string;
|
|
21
|
+
readonly cost: number;
|
|
22
|
+
readonly blockSize: number;
|
|
23
|
+
readonly parallelization: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parameters encoded into a password hash.
|
|
27
|
+
*/
|
|
28
|
+
export interface PasswordHashParameters {
|
|
29
|
+
readonly version: string;
|
|
30
|
+
readonly algorithm: CryptoAlgorithm;
|
|
31
|
+
readonly salt: Uint8Array;
|
|
32
|
+
readonly hash: Uint8Array;
|
|
33
|
+
readonly cost: number;
|
|
34
|
+
readonly blockSize: number;
|
|
35
|
+
readonly parallelization: number;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=cryptoPassword.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.type.d.ts","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.type.js","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates the structural constraints of password hashing parameters.
|
|
3
|
+
*/
|
|
4
|
+
export declare function validateParameters(parameters: {
|
|
5
|
+
readonly saltBytes: number;
|
|
6
|
+
readonly keyBytes: number;
|
|
7
|
+
readonly cost: number;
|
|
8
|
+
readonly blockSize: number;
|
|
9
|
+
readonly parallelization: number;
|
|
10
|
+
}): void;
|
|
11
|
+
/**
|
|
12
|
+
* Parses a string into a positive safe integer.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parsePositiveInteger(value: string, name: string): number;
|
|
15
|
+
/**
|
|
16
|
+
* Decodes a Base64URL string into bytes.
|
|
17
|
+
*/
|
|
18
|
+
export declare function decodeBase64Url(value: string): Uint8Array;
|
|
19
|
+
/**
|
|
20
|
+
* Asserts that a value is a non-empty password string.
|
|
21
|
+
*/
|
|
22
|
+
export declare function assertPassword(password: string): void;
|
|
23
|
+
//# sourceMappingURL=cryptoPassword.validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.validate.d.ts","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.validate.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,GAAG,IAAI,CA6BP;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAUzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQrD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates the structural constraints of password hashing parameters.
|
|
3
|
+
*/
|
|
4
|
+
export function validateParameters(parameters) {
|
|
5
|
+
if (!Number.isInteger(parameters.saltBytes) || parameters.saltBytes < 16) {
|
|
6
|
+
throw new RangeError("saltBytes must be an integer of at least 16.");
|
|
7
|
+
}
|
|
8
|
+
if (!Number.isInteger(parameters.keyBytes) || parameters.keyBytes < 16) {
|
|
9
|
+
throw new RangeError("keyBytes must be an integer of at least 16.");
|
|
10
|
+
}
|
|
11
|
+
if (!Number.isInteger(parameters.cost) ||
|
|
12
|
+
parameters.cost < 2 ||
|
|
13
|
+
(parameters.cost & (parameters.cost - 1)) !== 0) {
|
|
14
|
+
throw new RangeError("cost must be a power of two greater than or equal to 2.");
|
|
15
|
+
}
|
|
16
|
+
if (!Number.isInteger(parameters.blockSize) || parameters.blockSize <= 0) {
|
|
17
|
+
throw new RangeError("blockSize must be a positive integer.");
|
|
18
|
+
}
|
|
19
|
+
if (!Number.isInteger(parameters.parallelization) ||
|
|
20
|
+
parameters.parallelization <= 0) {
|
|
21
|
+
throw new RangeError("parallelization must be a positive integer.");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parses a string into a positive safe integer.
|
|
26
|
+
*/
|
|
27
|
+
export function parsePositiveInteger(value, name) {
|
|
28
|
+
if (!/^\d+$/.test(value)) {
|
|
29
|
+
throw new TypeError(`${name} must be a positive integer.`);
|
|
30
|
+
}
|
|
31
|
+
const parsed = Number(value);
|
|
32
|
+
if (!Number.isSafeInteger(parsed) || parsed <= 0) {
|
|
33
|
+
throw new RangeError(`${name} is outside the supported integer range.`);
|
|
34
|
+
}
|
|
35
|
+
return parsed;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Decodes a Base64URL string into bytes.
|
|
39
|
+
*/
|
|
40
|
+
export function decodeBase64Url(value) {
|
|
41
|
+
if (value.length === 0 || !/^[A-Za-z0-9_-]+$/.test(value)) {
|
|
42
|
+
throw new TypeError("Invalid Base64URL value.");
|
|
43
|
+
}
|
|
44
|
+
if (value.length % 4 === 1) {
|
|
45
|
+
throw new TypeError("Invalid Base64URL length.");
|
|
46
|
+
}
|
|
47
|
+
return new Uint8Array(Buffer.from(value, "base64url"));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Asserts that a value is a non-empty password string.
|
|
51
|
+
*/
|
|
52
|
+
export function assertPassword(password) {
|
|
53
|
+
if (typeof password !== "string") {
|
|
54
|
+
throw new TypeError("Password must be a string.");
|
|
55
|
+
}
|
|
56
|
+
if (password.length === 0) {
|
|
57
|
+
throw new TypeError("Password cannot be empty.");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=cryptoPassword.validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoPassword.validate.js","sourceRoot":"","sources":["../../src/cryptoPassword/cryptoPassword.validate.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAMlC;IACC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;QACzE,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC;QACvE,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAC;IACtE,CAAC;IAED,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,UAAU,CAAC,IAAI,GAAG,CAAC;QACnB,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/C,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;IAED,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC;QAC7C,UAAU,CAAC,eAAe,IAAI,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,IAAY;IAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,0CAA0C,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/crypto/cryptoPassword
|
|
3
|
+
*
|
|
4
|
+
* Password hashing and verification.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./cryptoPassword.core.js";
|
|
7
|
+
export * from "./cryptoPassword.type.js";
|
|
8
|
+
export * from "./cryptoPassword.codec.js";
|
|
9
|
+
export * from "./cryptoPassword.validate.js";
|
|
10
|
+
export * from "./cryptoPassword.helper.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cryptoPassword/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/crypto/cryptoPassword
|
|
3
|
+
*
|
|
4
|
+
* Password hashing and verification.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./cryptoPassword.core.js";
|
|
7
|
+
export * from "./cryptoPassword.type.js";
|
|
8
|
+
export * from "./cryptoPassword.codec.js";
|
|
9
|
+
export * from "./cryptoPassword.validate.js";
|
|
10
|
+
export * from "./cryptoPassword.helper.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cryptoPassword/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RandomProvider, HashProvider, HmacProvider, EncryptionProvider, SigningProvider, KeyDerivationProvider, PasswordProvider } from "./cryptoProvider.interface.js";
|
|
2
|
+
import type { CryptoCapabilities } from "./cryptoProvider.type.js";
|
|
3
|
+
/**
|
|
4
|
+
* Complete crypto provider combining all capabilities.
|
|
5
|
+
*/
|
|
6
|
+
export interface CryptoProvider extends RandomProvider, HashProvider, HmacProvider, EncryptionProvider, SigningProvider, KeyDerivationProvider, PasswordProvider {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly capabilities: CryptoCapabilities;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=cryptoProvider.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoProvider.core.d.ts","sourceRoot":"","sources":["../../src/cryptoProvider/cryptoProvider.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,cACf,SACE,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,gBAAgB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;CAC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoProvider.core.js","sourceRoot":"","sources":["../../src/cryptoProvider/cryptoProvider.core.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { HashAlgorithm, HmacAlgorithm, SignatureAlgorithm, KeyDerivationAlgorithm, CryptoInput, CryptoCapabilities } from "./cryptoProvider.type.js";
|
|
2
|
+
import type { EncryptedData } from "./types/cryptoCipher.type.js";
|
|
3
|
+
import type { DeriveKeyOptions } from "./types/cryptoKeyDerivation.type.js";
|
|
4
|
+
/**
|
|
5
|
+
* Provider for cryptographically secure random bytes.
|
|
6
|
+
*/
|
|
7
|
+
export interface RandomProvider {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly capabilities: CryptoCapabilities;
|
|
10
|
+
randomBytes(length: number): Promise<Uint8Array>;
|
|
11
|
+
randomInt(min: number, max: number): Promise<number>;
|
|
12
|
+
randomUUID(): Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Provider for cryptographic hashing.
|
|
16
|
+
*/
|
|
17
|
+
export interface HashProvider {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly capabilities: CryptoCapabilities;
|
|
20
|
+
hash(algorithm: HashAlgorithm, data: CryptoInput): Promise<Uint8Array>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Provider for HMAC operations.
|
|
24
|
+
*/
|
|
25
|
+
export interface HmacProvider {
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly capabilities: CryptoCapabilities;
|
|
28
|
+
hmac(algorithm: HmacAlgorithm, key: CryptoInput, data: CryptoInput): Promise<Uint8Array>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Provider for symmetric encryption and decryption.
|
|
32
|
+
*/
|
|
33
|
+
export interface EncryptionProvider {
|
|
34
|
+
readonly name: string;
|
|
35
|
+
readonly capabilities: CryptoCapabilities;
|
|
36
|
+
encrypt(options: {
|
|
37
|
+
key: CryptoInput;
|
|
38
|
+
plaintext: CryptoInput;
|
|
39
|
+
associatedData?: CryptoInput;
|
|
40
|
+
nonce?: Uint8Array;
|
|
41
|
+
}): Promise<EncryptedData>;
|
|
42
|
+
decrypt(options: {
|
|
43
|
+
key: CryptoInput;
|
|
44
|
+
encrypted: EncryptedData;
|
|
45
|
+
associatedData?: CryptoInput;
|
|
46
|
+
}): Promise<Uint8Array>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Provider for digital signing.
|
|
50
|
+
*/
|
|
51
|
+
export interface SigningProvider {
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly capabilities: CryptoCapabilities;
|
|
54
|
+
sign(options: {
|
|
55
|
+
key: CryptoInput;
|
|
56
|
+
data: CryptoInput;
|
|
57
|
+
algorithm?: SignatureAlgorithm;
|
|
58
|
+
}): Promise<Uint8Array>;
|
|
59
|
+
verify(options: {
|
|
60
|
+
key: CryptoInput;
|
|
61
|
+
data: CryptoInput;
|
|
62
|
+
signature: Uint8Array;
|
|
63
|
+
algorithm?: SignatureAlgorithm;
|
|
64
|
+
}): Promise<boolean>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Provider for key derivation.
|
|
68
|
+
*/
|
|
69
|
+
export interface KeyDerivationProvider {
|
|
70
|
+
readonly name: string;
|
|
71
|
+
readonly capabilities: CryptoCapabilities;
|
|
72
|
+
deriveKey(options: DeriveKeyOptions): Promise<Uint8Array>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Provider for password hashing.
|
|
76
|
+
*/
|
|
77
|
+
export interface PasswordProvider {
|
|
78
|
+
readonly name: string;
|
|
79
|
+
readonly capabilities: CryptoCapabilities;
|
|
80
|
+
hashPassword(password: CryptoInput, options?: {
|
|
81
|
+
algorithm?: KeyDerivationAlgorithm;
|
|
82
|
+
memoryCost?: number;
|
|
83
|
+
timeCost?: number;
|
|
84
|
+
blockSize?: number;
|
|
85
|
+
parallelism?: number;
|
|
86
|
+
keyBytes?: number;
|
|
87
|
+
salt?: Uint8Array;
|
|
88
|
+
}): Promise<string>;
|
|
89
|
+
verifyPassword(password: CryptoInput, hash: string): Promise<boolean>;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=cryptoProvider.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoProvider.interface.d.ts","sourceRoot":"","sources":["../../src/cryptoProvider/cryptoProvider.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoProvider.interface.js","sourceRoot":"","sources":["../../src/cryptoProvider/cryptoProvider.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported hash algorithm identifiers.
|
|
3
|
+
*/
|
|
4
|
+
export type HashAlgorithm = "sha256" | "sha384" | "sha512" | "sha3-256" | "sha3-384" | "sha3-512";
|
|
5
|
+
/**
|
|
6
|
+
* Supported HMAC algorithm identifiers.
|
|
7
|
+
*/
|
|
8
|
+
export type HmacAlgorithm = "sha256" | "sha384" | "sha512";
|
|
9
|
+
/**
|
|
10
|
+
* Supported encryption algorithm identifiers.
|
|
11
|
+
*/
|
|
12
|
+
export type EncryptionAlgorithm = "aes-256-gcm" | "chacha20-poly1305";
|
|
13
|
+
/**
|
|
14
|
+
* Supported signature algorithm identifiers.
|
|
15
|
+
*/
|
|
16
|
+
export type SignatureAlgorithm = "ed25519" | "rsa-sha256" | "rsa-sha384" | "rsa-sha512" | "ecdsa-sha256" | "ecdsa-sha384" | "ecdsa-sha512";
|
|
17
|
+
/**
|
|
18
|
+
* Supported key derivation algorithm identifiers.
|
|
19
|
+
*/
|
|
20
|
+
export type KeyDerivationAlgorithm = "pbkdf2" | "scrypt" | "argon2id";
|
|
21
|
+
/**
|
|
22
|
+
* Supported encoding formats.
|
|
23
|
+
*/
|
|
24
|
+
export type EncodingFormat = "hex" | "base64" | "base64url" | "utf8";
|
|
25
|
+
/**
|
|
26
|
+
* Normalized cryptographic input.
|
|
27
|
+
*/
|
|
28
|
+
export type CryptoInput = string | Uint8Array | ArrayBuffer;
|
|
29
|
+
/**
|
|
30
|
+
* Capabilities of a crypto provider.
|
|
31
|
+
*/
|
|
32
|
+
export interface CryptoCapabilities {
|
|
33
|
+
readonly hash: boolean;
|
|
34
|
+
readonly hmac: boolean;
|
|
35
|
+
readonly encryption: boolean;
|
|
36
|
+
readonly signing: boolean;
|
|
37
|
+
readonly random: boolean;
|
|
38
|
+
readonly passwordHashing: boolean;
|
|
39
|
+
readonly keyDerivation: boolean;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=cryptoProvider.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoProvider.type.d.ts","sourceRoot":"","sources":["../../src/cryptoProvider/cryptoProvider.type.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,aAAa,GACvB,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,mBAAmB,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,cAAc,GACd,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoProvider.type.js","sourceRoot":"","sources":["../../src/cryptoProvider/cryptoProvider.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crypto provider abstraction.
|
|
3
|
+
*
|
|
4
|
+
* Provides capability-based provider interfaces for all
|
|
5
|
+
* cryptographic operations, enabling testability and
|
|
6
|
+
* runtime provider selection.
|
|
7
|
+
*/
|
|
8
|
+
export type { CryptoProvider } from "./cryptoProvider.core.js";
|
|
9
|
+
export type { CryptoCapabilities, HashAlgorithm, HmacAlgorithm, EncryptionAlgorithm, SignatureAlgorithm, KeyDerivationAlgorithm, EncodingFormat, CryptoInput, } from "./cryptoProvider.type.js";
|
|
10
|
+
export type { RandomProvider, HashProvider, HmacProvider, EncryptionProvider, SigningProvider, KeyDerivationProvider, PasswordProvider, } from "./cryptoProvider.interface.js";
|
|
11
|
+
export * from "./types/index.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cryptoProvider/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAEvC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cryptoProvider/index.ts"],"names":[],"mappings":"AA8BA,cAAc,kBAAkB,CAAC"}
|