@zudojs/crypto 0.1.0 → 1.0.0

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.
Files changed (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -14
  3. package/dist/compare/compare.helper.d.ts +10 -2
  4. package/dist/compare/compare.helper.js +22 -6
  5. package/dist/cryptoCipher/cryptoCipher.core.d.ts +11 -1
  6. package/dist/cryptoCipher/cryptoCipher.core.js +19 -3
  7. package/dist/cryptoCipher/cryptoCipher.envelope.d.ts +7 -2
  8. package/dist/cryptoCipher/cryptoCipher.envelope.js +33 -14
  9. package/dist/cryptoCipher/cryptoCipher.string.d.ts +2 -1
  10. package/dist/cryptoCipher/cryptoCipher.string.js +2 -2
  11. package/dist/cryptoConstants/cryptoConstants.guard.d.ts +9 -0
  12. package/dist/cryptoConstants/cryptoConstants.guard.js +16 -1
  13. package/dist/cryptoConstants/cryptoConstants.security.d.ts +34 -1
  14. package/dist/cryptoConstants/cryptoConstants.security.js +34 -1
  15. package/dist/cryptoConstants/cryptoConstants.token.d.ts +2 -0
  16. package/dist/cryptoConstants/cryptoConstants.token.js +2 -0
  17. package/dist/cryptoConstants/cryptoConstants.type.d.ts +36 -14
  18. package/dist/cryptoConstants/cryptoConstants.type.js +36 -14
  19. package/dist/cryptoEncoding/cryptoEncoding.compare.d.ts +4 -1
  20. package/dist/cryptoEncoding/cryptoEncoding.compare.js +11 -4
  21. package/dist/cryptoEncoding/cryptoEncoding.core.d.ts +22 -0
  22. package/dist/cryptoEncoding/cryptoEncoding.core.js +41 -3
  23. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.d.ts +10 -2
  24. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.js +24 -16
  25. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.d.ts +9 -1
  26. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.js +23 -20
  27. package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.d.ts +9 -2
  28. package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.js +17 -11
  29. package/dist/cryptoErrors/cryptoErrors.helper.d.ts +30 -0
  30. package/dist/cryptoErrors/cryptoErrors.helper.js +72 -0
  31. package/dist/cryptoFactory/cryptoFactory.core.d.ts +37 -6
  32. package/dist/cryptoFactory/cryptoFactory.core.js +56 -30
  33. package/dist/cryptoFactory/cryptoFactory.password.d.ts +4 -3
  34. package/dist/cryptoFactory/cryptoFactory.password.js +4 -4
  35. package/dist/cryptoFactory/cryptoFactory.token.d.ts +9 -8
  36. package/dist/cryptoFactory/cryptoFactory.token.js +16 -15
  37. package/dist/cryptoHash/cryptoHash.codec.d.ts +2 -0
  38. package/dist/cryptoHash/cryptoHash.codec.js +12 -12
  39. package/dist/cryptoHash/cryptoHash.compare.d.ts +3 -1
  40. package/dist/cryptoHash/cryptoHash.compare.js +5 -9
  41. package/dist/cryptoHash/cryptoHash.core.d.ts +6 -2
  42. package/dist/cryptoHash/cryptoHash.core.js +9 -2
  43. package/dist/cryptoHash/cryptoHmac.core.d.ts +8 -5
  44. package/dist/cryptoHash/cryptoHmac.core.js +22 -9
  45. package/dist/cryptoKey/cryptoKey.factory.d.ts +29 -2
  46. package/dist/cryptoKey/cryptoKey.factory.js +82 -18
  47. package/dist/cryptoKey/cryptoKey.utils.d.ts +5 -3
  48. package/dist/cryptoKey/cryptoKey.utils.js +5 -3
  49. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.d.ts +7 -1
  50. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.js +40 -15
  51. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.d.ts +2 -1
  52. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.js +2 -3
  53. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.type.d.ts +5 -1
  54. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.d.ts +2 -2
  55. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.js +16 -6
  56. package/dist/cryptoPassword/cryptoPassword.codec.d.ts +15 -1
  57. package/dist/cryptoPassword/cryptoPassword.codec.js +127 -56
  58. package/dist/cryptoPassword/cryptoPassword.core.d.ts +17 -3
  59. package/dist/cryptoPassword/cryptoPassword.core.js +29 -21
  60. package/dist/cryptoPassword/cryptoPassword.helper.js +6 -5
  61. package/dist/cryptoPassword/cryptoPassword.type.d.ts +33 -5
  62. package/dist/cryptoPassword/cryptoPassword.validate.d.ts +14 -3
  63. package/dist/cryptoPassword/cryptoPassword.validate.js +51 -20
  64. package/dist/cryptoProvider/cryptoProvider.default.d.ts +18 -0
  65. package/dist/cryptoProvider/cryptoProvider.default.js +31 -0
  66. package/dist/cryptoProvider/cryptoProvider.interface.d.ts +9 -34
  67. package/dist/cryptoProvider/cryptoProvider.type.d.ts +32 -3
  68. package/dist/cryptoProvider/cryptoProvider.type.js +40 -1
  69. package/dist/cryptoProvider/index.d.ts +5 -2
  70. package/dist/cryptoProvider/index.js +2 -0
  71. package/dist/cryptoProvider/types/cryptoCipher.type.d.ts +11 -6
  72. package/dist/cryptoProvider/types/cryptoKeyDerivation.type.d.ts +39 -3
  73. package/dist/cryptoProvider/types/cryptoSignature.type.d.ts +5 -5
  74. package/dist/cryptoProvider/types/index.d.ts +1 -1
  75. package/dist/cryptoRandom/cryptoRandom.choice.d.ts +6 -3
  76. package/dist/cryptoRandom/cryptoRandom.choice.js +10 -6
  77. package/dist/cryptoRandom/cryptoRandom.core.d.ts +8 -5
  78. package/dist/cryptoRandom/cryptoRandom.core.js +8 -7
  79. package/dist/cryptoRandom/cryptoRandom.string.d.ts +11 -9
  80. package/dist/cryptoRandom/cryptoRandom.string.js +28 -29
  81. package/dist/cryptoService/cryptoService.core.d.ts +47 -9
  82. package/dist/cryptoService/cryptoService.core.js +65 -33
  83. package/dist/cryptoService/cryptoService.derivation.d.ts +3 -3
  84. package/dist/cryptoService/cryptoService.derivation.js +8 -6
  85. package/dist/cryptoService/cryptoService.encoding.js +6 -5
  86. package/dist/cryptoService/index.d.ts +1 -5
  87. package/dist/cryptoService/index.js +1 -5
  88. package/dist/cryptoService/operations/cryptoService.cipher.d.ts +3 -2
  89. package/dist/cryptoService/operations/cryptoService.cipher.js +13 -9
  90. package/dist/cryptoService/operations/cryptoService.hash.d.ts +3 -2
  91. package/dist/cryptoService/operations/cryptoService.hash.js +7 -8
  92. package/dist/cryptoService/operations/cryptoService.password.d.ts +7 -2
  93. package/dist/cryptoService/operations/cryptoService.password.js +20 -9
  94. package/dist/cryptoService/operations/cryptoService.token.d.ts +9 -4
  95. package/dist/cryptoService/operations/cryptoService.token.js +31 -17
  96. package/dist/cryptoSignature/cryptoSignature.core.d.ts +10 -2
  97. package/dist/cryptoSignature/cryptoSignature.core.js +7 -3
  98. package/dist/cryptoToken/cryptoToken.core.d.ts +15 -9
  99. package/dist/cryptoToken/cryptoToken.core.js +63 -38
  100. package/dist/cryptoToken/cryptoToken.hash.d.ts +9 -7
  101. package/dist/cryptoToken/cryptoToken.hash.js +19 -43
  102. package/dist/cryptoUtils/cryptoUtils.compare.d.ts +3 -1
  103. package/dist/cryptoUtils/cryptoUtils.compare.js +5 -14
  104. package/dist/cryptoUtils/cryptoUtils.number.d.ts +3 -0
  105. package/dist/cryptoUtils/cryptoUtils.number.js +12 -6
  106. package/dist/cryptoUtils/cryptoUtils.validation.d.ts +2 -2
  107. package/dist/cryptoUtils/cryptoUtils.validation.js +6 -8
  108. package/dist/cryptoUtils/encoding/cryptoUtils.base64.d.ts +4 -4
  109. package/dist/cryptoUtils/encoding/cryptoUtils.base64.js +5 -23
  110. package/dist/cryptoUtils/encoding/cryptoUtils.base64url.d.ts +4 -4
  111. package/dist/cryptoUtils/encoding/cryptoUtils.base64url.js +5 -32
  112. package/dist/cryptoUtils/encoding/cryptoUtils.hex.d.ts +4 -4
  113. package/dist/cryptoUtils/encoding/cryptoUtils.hex.js +5 -20
  114. package/dist/index.d.ts +1 -2
  115. package/dist/index.js +1 -2
  116. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.d.ts +6 -29
  117. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.js +0 -1
  118. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.d.ts +9 -4
  119. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.js +25 -43
  120. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.d.ts +7 -0
  121. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.js +89 -30
  122. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.d.ts +17 -10
  123. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.js +112 -72
  124. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.d.ts +3 -12
  125. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.js +74 -25
  126. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.hash.js +7 -2
  127. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.d.ts +6 -0
  128. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.js +18 -18
  129. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.d.ts +10 -12
  130. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.js +75 -20
  131. package/dist/node/signing/signing.conversion.d.ts +13 -3
  132. package/dist/node/signing/signing.conversion.js +35 -15
  133. package/dist/node/signing/signing.core.d.ts +2 -1
  134. package/dist/node/signing/signing.core.js +2 -3
  135. package/dist/node/signing/signing.utils.d.ts +10 -2
  136. package/dist/node/signing/signing.utils.js +26 -5
  137. package/package.json +24 -14
  138. package/dist/.tsbuildinfo +0 -1
  139. package/dist/compare/compare.helper.d.ts.map +0 -1
  140. package/dist/compare/compare.helper.js.map +0 -1
  141. package/dist/compare/index.d.ts.map +0 -1
  142. package/dist/compare/index.js.map +0 -1
  143. package/dist/cryptoAlgorithm/index.d.ts +0 -8
  144. package/dist/cryptoAlgorithm/index.d.ts.map +0 -1
  145. package/dist/cryptoAlgorithm/index.js +0 -8
  146. package/dist/cryptoAlgorithm/index.js.map +0 -1
  147. package/dist/cryptoCipher/cryptoCipher.core.d.ts.map +0 -1
  148. package/dist/cryptoCipher/cryptoCipher.core.js.map +0 -1
  149. package/dist/cryptoCipher/cryptoCipher.envelope.d.ts.map +0 -1
  150. package/dist/cryptoCipher/cryptoCipher.envelope.js.map +0 -1
  151. package/dist/cryptoCipher/cryptoCipher.string.d.ts.map +0 -1
  152. package/dist/cryptoCipher/cryptoCipher.string.js.map +0 -1
  153. package/dist/cryptoCipher/index.d.ts.map +0 -1
  154. package/dist/cryptoCipher/index.js.map +0 -1
  155. package/dist/cryptoConstants/cryptoConstants.config.d.ts.map +0 -1
  156. package/dist/cryptoConstants/cryptoConstants.config.js.map +0 -1
  157. package/dist/cryptoConstants/cryptoConstants.guard.d.ts.map +0 -1
  158. package/dist/cryptoConstants/cryptoConstants.guard.js.map +0 -1
  159. package/dist/cryptoConstants/cryptoConstants.security.d.ts.map +0 -1
  160. package/dist/cryptoConstants/cryptoConstants.security.js.map +0 -1
  161. package/dist/cryptoConstants/cryptoConstants.token.d.ts.map +0 -1
  162. package/dist/cryptoConstants/cryptoConstants.token.js.map +0 -1
  163. package/dist/cryptoConstants/cryptoConstants.type.d.ts.map +0 -1
  164. package/dist/cryptoConstants/cryptoConstants.type.js.map +0 -1
  165. package/dist/cryptoConstants/index.d.ts.map +0 -1
  166. package/dist/cryptoConstants/index.js.map +0 -1
  167. package/dist/cryptoEncoding/cryptoEncoding.arrayBuffer.d.ts.map +0 -1
  168. package/dist/cryptoEncoding/cryptoEncoding.arrayBuffer.js.map +0 -1
  169. package/dist/cryptoEncoding/cryptoEncoding.compare.d.ts.map +0 -1
  170. package/dist/cryptoEncoding/cryptoEncoding.compare.js.map +0 -1
  171. package/dist/cryptoEncoding/cryptoEncoding.core.d.ts.map +0 -1
  172. package/dist/cryptoEncoding/cryptoEncoding.core.js.map +0 -1
  173. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.d.ts.map +0 -1
  174. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64.js.map +0 -1
  175. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.d.ts.map +0 -1
  176. package/dist/cryptoEncoding/encoding/cryptoEncoding.base64url.js.map +0 -1
  177. package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.d.ts.map +0 -1
  178. package/dist/cryptoEncoding/encoding/cryptoEncoding.hex.js.map +0 -1
  179. package/dist/cryptoEncoding/encoding/index.d.ts.map +0 -1
  180. package/dist/cryptoEncoding/encoding/index.js.map +0 -1
  181. package/dist/cryptoEncoding/index.d.ts.map +0 -1
  182. package/dist/cryptoEncoding/index.js.map +0 -1
  183. package/dist/cryptoErrors/index.d.ts.map +0 -1
  184. package/dist/cryptoErrors/index.js.map +0 -1
  185. package/dist/cryptoFactory/cryptoFactory.core.d.ts.map +0 -1
  186. package/dist/cryptoFactory/cryptoFactory.core.js.map +0 -1
  187. package/dist/cryptoFactory/cryptoFactory.encoding.d.ts.map +0 -1
  188. package/dist/cryptoFactory/cryptoFactory.encoding.js.map +0 -1
  189. package/dist/cryptoFactory/cryptoFactory.options.d.ts +0 -2
  190. package/dist/cryptoFactory/cryptoFactory.options.d.ts.map +0 -1
  191. package/dist/cryptoFactory/cryptoFactory.options.js +0 -6
  192. package/dist/cryptoFactory/cryptoFactory.options.js.map +0 -1
  193. package/dist/cryptoFactory/cryptoFactory.password.d.ts.map +0 -1
  194. package/dist/cryptoFactory/cryptoFactory.password.js.map +0 -1
  195. package/dist/cryptoFactory/cryptoFactory.token.d.ts.map +0 -1
  196. package/dist/cryptoFactory/cryptoFactory.token.js.map +0 -1
  197. package/dist/cryptoFactory/index.d.ts.map +0 -1
  198. package/dist/cryptoFactory/index.js.map +0 -1
  199. package/dist/cryptoHash/cryptoHash.codec.d.ts.map +0 -1
  200. package/dist/cryptoHash/cryptoHash.codec.js.map +0 -1
  201. package/dist/cryptoHash/cryptoHash.compare.d.ts.map +0 -1
  202. package/dist/cryptoHash/cryptoHash.compare.js.map +0 -1
  203. package/dist/cryptoHash/cryptoHash.convenience.d.ts.map +0 -1
  204. package/dist/cryptoHash/cryptoHash.convenience.js.map +0 -1
  205. package/dist/cryptoHash/cryptoHash.core.d.ts.map +0 -1
  206. package/dist/cryptoHash/cryptoHash.core.js.map +0 -1
  207. package/dist/cryptoHash/cryptoHmac.core.d.ts.map +0 -1
  208. package/dist/cryptoHash/cryptoHmac.core.js.map +0 -1
  209. package/dist/cryptoHash/index.d.ts.map +0 -1
  210. package/dist/cryptoHash/index.js.map +0 -1
  211. package/dist/cryptoKey/cryptoKey.factory.d.ts.map +0 -1
  212. package/dist/cryptoKey/cryptoKey.factory.js.map +0 -1
  213. package/dist/cryptoKey/cryptoKey.type.d.ts.map +0 -1
  214. package/dist/cryptoKey/cryptoKey.type.js.map +0 -1
  215. package/dist/cryptoKey/cryptoKey.utils.d.ts.map +0 -1
  216. package/dist/cryptoKey/cryptoKey.utils.js.map +0 -1
  217. package/dist/cryptoKey/index.d.ts.map +0 -1
  218. package/dist/cryptoKey/index.js.map +0 -1
  219. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.d.ts.map +0 -1
  220. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.core.js.map +0 -1
  221. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.d.ts.map +0 -1
  222. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.salt.js.map +0 -1
  223. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.type.d.ts.map +0 -1
  224. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.type.js.map +0 -1
  225. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.d.ts.map +0 -1
  226. package/dist/cryptoKeyDerivation/cryptoKeyDerivation.validate.js.map +0 -1
  227. package/dist/cryptoKeyDerivation/index.d.ts.map +0 -1
  228. package/dist/cryptoKeyDerivation/index.js.map +0 -1
  229. package/dist/cryptoPassword/cryptoPassword.codec.d.ts.map +0 -1
  230. package/dist/cryptoPassword/cryptoPassword.codec.js.map +0 -1
  231. package/dist/cryptoPassword/cryptoPassword.core.d.ts.map +0 -1
  232. package/dist/cryptoPassword/cryptoPassword.core.js.map +0 -1
  233. package/dist/cryptoPassword/cryptoPassword.helper.d.ts.map +0 -1
  234. package/dist/cryptoPassword/cryptoPassword.helper.js.map +0 -1
  235. package/dist/cryptoPassword/cryptoPassword.type.d.ts.map +0 -1
  236. package/dist/cryptoPassword/cryptoPassword.type.js.map +0 -1
  237. package/dist/cryptoPassword/cryptoPassword.validate.d.ts.map +0 -1
  238. package/dist/cryptoPassword/cryptoPassword.validate.js.map +0 -1
  239. package/dist/cryptoPassword/index.d.ts.map +0 -1
  240. package/dist/cryptoPassword/index.js.map +0 -1
  241. package/dist/cryptoProvider/cryptoProvider.core.d.ts.map +0 -1
  242. package/dist/cryptoProvider/cryptoProvider.core.js.map +0 -1
  243. package/dist/cryptoProvider/cryptoProvider.interface.d.ts.map +0 -1
  244. package/dist/cryptoProvider/cryptoProvider.interface.js.map +0 -1
  245. package/dist/cryptoProvider/cryptoProvider.type.d.ts.map +0 -1
  246. package/dist/cryptoProvider/cryptoProvider.type.js.map +0 -1
  247. package/dist/cryptoProvider/index.d.ts.map +0 -1
  248. package/dist/cryptoProvider/index.js.map +0 -1
  249. package/dist/cryptoProvider/types/cryptoCipher.type.d.ts.map +0 -1
  250. package/dist/cryptoProvider/types/cryptoCipher.type.js.map +0 -1
  251. package/dist/cryptoProvider/types/cryptoHash.type.d.ts.map +0 -1
  252. package/dist/cryptoProvider/types/cryptoHash.type.js.map +0 -1
  253. package/dist/cryptoProvider/types/cryptoKeyDerivation.type.d.ts.map +0 -1
  254. package/dist/cryptoProvider/types/cryptoKeyDerivation.type.js.map +0 -1
  255. package/dist/cryptoProvider/types/cryptoRandom.type.d.ts.map +0 -1
  256. package/dist/cryptoProvider/types/cryptoRandom.type.js.map +0 -1
  257. package/dist/cryptoProvider/types/cryptoSignature.type.d.ts.map +0 -1
  258. package/dist/cryptoProvider/types/cryptoSignature.type.js.map +0 -1
  259. package/dist/cryptoProvider/types/index.d.ts.map +0 -1
  260. package/dist/cryptoProvider/types/index.js.map +0 -1
  261. package/dist/cryptoRandom/cryptoRandom.choice.d.ts.map +0 -1
  262. package/dist/cryptoRandom/cryptoRandom.choice.js.map +0 -1
  263. package/dist/cryptoRandom/cryptoRandom.core.d.ts.map +0 -1
  264. package/dist/cryptoRandom/cryptoRandom.core.js.map +0 -1
  265. package/dist/cryptoRandom/cryptoRandom.string.d.ts.map +0 -1
  266. package/dist/cryptoRandom/cryptoRandom.string.js.map +0 -1
  267. package/dist/cryptoRandom/index.d.ts.map +0 -1
  268. package/dist/cryptoRandom/index.js.map +0 -1
  269. package/dist/cryptoService/cryptoService.core.d.ts.map +0 -1
  270. package/dist/cryptoService/cryptoService.core.js.map +0 -1
  271. package/dist/cryptoService/cryptoService.derivation.d.ts.map +0 -1
  272. package/dist/cryptoService/cryptoService.derivation.js.map +0 -1
  273. package/dist/cryptoService/cryptoService.encoding.d.ts.map +0 -1
  274. package/dist/cryptoService/cryptoService.encoding.js.map +0 -1
  275. package/dist/cryptoService/index.d.ts.map +0 -1
  276. package/dist/cryptoService/index.js.map +0 -1
  277. package/dist/cryptoService/operations/cryptoService.cipher.d.ts.map +0 -1
  278. package/dist/cryptoService/operations/cryptoService.cipher.js.map +0 -1
  279. package/dist/cryptoService/operations/cryptoService.hash.d.ts.map +0 -1
  280. package/dist/cryptoService/operations/cryptoService.hash.js.map +0 -1
  281. package/dist/cryptoService/operations/cryptoService.password.d.ts.map +0 -1
  282. package/dist/cryptoService/operations/cryptoService.password.js.map +0 -1
  283. package/dist/cryptoService/operations/cryptoService.token.d.ts.map +0 -1
  284. package/dist/cryptoService/operations/cryptoService.token.js.map +0 -1
  285. package/dist/cryptoService/operations/index.d.ts.map +0 -1
  286. package/dist/cryptoService/operations/index.js.map +0 -1
  287. package/dist/cryptoSignature/cryptoSignature.core.d.ts.map +0 -1
  288. package/dist/cryptoSignature/cryptoSignature.core.js.map +0 -1
  289. package/dist/cryptoSignature/index.d.ts.map +0 -1
  290. package/dist/cryptoSignature/index.js.map +0 -1
  291. package/dist/cryptoToken/cryptoToken.core.d.ts.map +0 -1
  292. package/dist/cryptoToken/cryptoToken.core.js.map +0 -1
  293. package/dist/cryptoToken/cryptoToken.hash.d.ts.map +0 -1
  294. package/dist/cryptoToken/cryptoToken.hash.js.map +0 -1
  295. package/dist/cryptoToken/cryptoToken.utils.d.ts.map +0 -1
  296. package/dist/cryptoToken/cryptoToken.utils.js.map +0 -1
  297. package/dist/cryptoToken/index.d.ts.map +0 -1
  298. package/dist/cryptoToken/index.js.map +0 -1
  299. package/dist/cryptoUtils/cryptoUtils.compare.d.ts.map +0 -1
  300. package/dist/cryptoUtils/cryptoUtils.compare.js.map +0 -1
  301. package/dist/cryptoUtils/cryptoUtils.conversion.d.ts.map +0 -1
  302. package/dist/cryptoUtils/cryptoUtils.conversion.js.map +0 -1
  303. package/dist/cryptoUtils/cryptoUtils.number.d.ts.map +0 -1
  304. package/dist/cryptoUtils/cryptoUtils.number.js.map +0 -1
  305. package/dist/cryptoUtils/cryptoUtils.text.d.ts.map +0 -1
  306. package/dist/cryptoUtils/cryptoUtils.text.js.map +0 -1
  307. package/dist/cryptoUtils/cryptoUtils.validation.d.ts.map +0 -1
  308. package/dist/cryptoUtils/cryptoUtils.validation.js.map +0 -1
  309. package/dist/cryptoUtils/encoding/cryptoUtils.base64.d.ts.map +0 -1
  310. package/dist/cryptoUtils/encoding/cryptoUtils.base64.js.map +0 -1
  311. package/dist/cryptoUtils/encoding/cryptoUtils.base64url.d.ts.map +0 -1
  312. package/dist/cryptoUtils/encoding/cryptoUtils.base64url.js.map +0 -1
  313. package/dist/cryptoUtils/encoding/cryptoUtils.hex.d.ts.map +0 -1
  314. package/dist/cryptoUtils/encoding/cryptoUtils.hex.js.map +0 -1
  315. package/dist/cryptoUtils/encoding/index.d.ts.map +0 -1
  316. package/dist/cryptoUtils/encoding/index.js.map +0 -1
  317. package/dist/cryptoUtils/index.d.ts.map +0 -1
  318. package/dist/cryptoUtils/index.js.map +0 -1
  319. package/dist/index.d.ts.map +0 -1
  320. package/dist/index.js.map +0 -1
  321. package/dist/node/index.d.ts.map +0 -1
  322. package/dist/node/index.js.map +0 -1
  323. package/dist/node/nodeCryptoProvider/index.d.ts.map +0 -1
  324. package/dist/node/nodeCryptoProvider/index.js.map +0 -1
  325. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.d.ts.map +0 -1
  326. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.core.js.map +0 -1
  327. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.factory.d.ts.map +0 -1
  328. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.factory.js.map +0 -1
  329. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.d.ts.map +0 -1
  330. package/dist/node/nodeCryptoProvider/nodeCryptoProvider.helper.js.map +0 -1
  331. package/dist/node/nodeCryptoProvider/operations/index.d.ts.map +0 -1
  332. package/dist/node/nodeCryptoProvider/operations/index.js.map +0 -1
  333. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.d.ts.map +0 -1
  334. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.derivation.js.map +0 -1
  335. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.d.ts.map +0 -1
  336. package/dist/node/nodeCryptoProvider/operations/nodeCryptoProvider.password.js.map +0 -1
  337. package/dist/node/nodeCryptoProvider/primitives/index.d.ts.map +0 -1
  338. package/dist/node/nodeCryptoProvider/primitives/index.js.map +0 -1
  339. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.d.ts.map +0 -1
  340. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.encryption.js.map +0 -1
  341. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.hash.d.ts.map +0 -1
  342. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.hash.js.map +0 -1
  343. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.d.ts.map +0 -1
  344. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.random.js.map +0 -1
  345. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.d.ts.map +0 -1
  346. package/dist/node/nodeCryptoProvider/primitives/nodeCryptoProvider.signing.js.map +0 -1
  347. package/dist/node/signing/index.d.ts.map +0 -1
  348. package/dist/node/signing/index.js.map +0 -1
  349. package/dist/node/signing/signing.conversion.d.ts.map +0 -1
  350. package/dist/node/signing/signing.conversion.js.map +0 -1
  351. package/dist/node/signing/signing.core.d.ts.map +0 -1
  352. package/dist/node/signing/signing.core.js.map +0 -1
  353. package/dist/node/signing/signing.utils.d.ts.map +0 -1
  354. package/dist/node/signing/signing.utils.js.map +0 -1
@@ -1,22 +1,58 @@
1
- import type { KeyDerivationAlgorithm, CryptoInput } from "../cryptoProvider.type.js";
1
+ import type { KeyDerivationAlgorithm, CryptoInput, Pbkdf2Digest } from "../cryptoProvider.type.js";
2
+ import type { CryptoAlgorithm } from "../../cryptoConstants/cryptoConstants.type.js";
3
+ /**
4
+ * Algorithm labels produced by the public key derivation helpers.
5
+ *
6
+ * These are the values actually present on `DerivedKeyResult.algorithm`.
7
+ */
8
+ export type DerivedKeyAlgorithm = CryptoAlgorithm.PBKDF2_SHA256 | CryptoAlgorithm.PBKDF2_SHA384 | CryptoAlgorithm.PBKDF2_SHA512 | CryptoAlgorithm.SCRYPT;
2
9
  /**
3
10
  * Result of a key derivation operation.
4
11
  */
5
12
  export interface DerivedKeyResult {
6
13
  readonly key: Uint8Array;
7
14
  readonly salt: Uint8Array;
8
- readonly algorithm: KeyDerivationAlgorithm;
15
+ readonly algorithm: DerivedKeyAlgorithm;
16
+ /** Digest used by PBKDF2; absent for scrypt. */
17
+ readonly digest?: Pbkdf2Digest;
9
18
  }
10
19
  /**
11
- * Options for key derivation.
20
+ * Options for provider-level key derivation.
12
21
  */
13
22
  export interface DeriveKeyOptions {
14
23
  readonly password: CryptoInput;
15
24
  readonly salt: Uint8Array;
16
25
  readonly algorithm: KeyDerivationAlgorithm;
17
26
  readonly keyLength?: number;
27
+ /** PBKDF2 iteration count. */
18
28
  readonly iterations?: number;
29
+ /** PBKDF2 digest (default sha256). */
30
+ readonly digest?: Pbkdf2Digest;
31
+ /** scrypt cost parameter N. */
32
+ readonly memoryCost?: number;
33
+ /** scrypt block size parameter r. */
34
+ readonly blockSize?: number;
35
+ /** scrypt parallelization parameter p. */
36
+ readonly parallelism?: number;
37
+ /** scrypt memory upper bound in bytes (default derived from N, r, p). */
38
+ readonly maxMemory?: number;
39
+ }
40
+ /**
41
+ * Options for provider-level password hashing.
42
+ */
43
+ export interface PasswordHashProviderOptions {
44
+ readonly algorithm?: KeyDerivationAlgorithm;
45
+ /** scrypt cost N. */
19
46
  readonly memoryCost?: number;
47
+ /** PBKDF2 iteration count. */
48
+ readonly timeCost?: number;
49
+ /** PBKDF2 digest (default sha256). */
50
+ readonly digest?: Pbkdf2Digest;
51
+ /** scrypt block size r. */
52
+ readonly blockSize?: number;
53
+ /** scrypt parallelization p. */
20
54
  readonly parallelism?: number;
55
+ readonly keyBytes?: number;
56
+ readonly salt?: Uint8Array;
21
57
  }
22
58
  //# sourceMappingURL=cryptoKeyDerivation.type.d.ts.map
@@ -1,18 +1,18 @@
1
- import type { SignatureAlgorithm } from "../cryptoProvider.type.js";
1
+ import type { CryptoInput, SignatureAlgorithm } from "../cryptoProvider.type.js";
2
2
  /**
3
3
  * Options for signing.
4
4
  */
5
5
  export interface SignOptions {
6
- readonly key: Uint8Array;
7
- readonly data: Uint8Array;
6
+ readonly key: CryptoInput;
7
+ readonly data: CryptoInput;
8
8
  readonly algorithm?: SignatureAlgorithm;
9
9
  }
10
10
  /**
11
11
  * Options for verification.
12
12
  */
13
13
  export interface VerifyOptions {
14
- readonly key: Uint8Array;
15
- readonly data: Uint8Array;
14
+ readonly key: CryptoInput;
15
+ readonly data: CryptoInput;
16
16
  readonly signature: Uint8Array;
17
17
  readonly algorithm?: SignatureAlgorithm;
18
18
  }
@@ -7,6 +7,6 @@
7
7
  export type { HashResult, HashEncoding } from "./cryptoHash.type.js";
8
8
  export type { EncryptedData, EncryptOptions, DecryptOptions, } from "./cryptoCipher.type.js";
9
9
  export type { SignOptions, VerifyOptions } from "./cryptoSignature.type.js";
10
- export type { DerivedKeyResult, DeriveKeyOptions, } from "./cryptoKeyDerivation.type.js";
10
+ export type { DerivedKeyResult, DerivedKeyAlgorithm, DeriveKeyOptions, PasswordHashProviderOptions, } from "./cryptoKeyDerivation.type.js";
11
11
  export type { RandomTokenOptions } from "./cryptoRandom.type.js";
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1,14 +1,17 @@
1
+ import type { CryptoProvider } from "../cryptoProvider/index.js";
1
2
  /**
2
3
  * Generates a cryptographically secure random boolean.
3
4
  */
4
- export declare function randomBoolean(): Promise<boolean>;
5
+ export declare function randomBoolean(provider?: CryptoProvider): Promise<boolean>;
5
6
  /**
6
7
  * Generates a random value from a collection.
8
+ *
9
+ * A single-element collection returns that element.
7
10
  */
8
- export declare function randomChoice<T>(values: readonly T[]): Promise<T>;
11
+ export declare function randomChoice<T>(values: readonly T[], provider?: CryptoProvider): Promise<T>;
9
12
  /**
10
13
  * Fills an existing Uint8Array with cryptographically secure
11
14
  * random bytes.
12
15
  */
13
- export declare function fillRandomBytes(target: Uint8Array): Promise<Uint8Array>;
16
+ export declare function fillRandomBytes(target: Uint8Array, provider?: CryptoProvider): Promise<Uint8Array>;
14
17
  //# sourceMappingURL=cryptoRandom.choice.d.ts.map
@@ -1,16 +1,17 @@
1
- import { createNodeCryptoProvider } from "../node/index.js";
2
- const provider = createNodeCryptoProvider();
1
+ import { getDefaultCryptoProvider } from "../cryptoProvider/cryptoProvider.default.js";
3
2
  /**
4
3
  * Generates a cryptographically secure random boolean.
5
4
  */
6
- export async function randomBoolean() {
5
+ export async function randomBoolean(provider = getDefaultCryptoProvider()) {
7
6
  return (await provider.randomInt(0, 2)) === 1;
8
7
  }
9
8
  /**
10
9
  * Generates a random value from a collection.
10
+ *
11
+ * A single-element collection returns that element.
11
12
  */
12
- export async function randomChoice(values) {
13
- if (values.length === 0) {
13
+ export async function randomChoice(values, provider = getDefaultCryptoProvider()) {
14
+ if (!Array.isArray(values) || values.length === 0) {
14
15
  throw new RangeError("Cannot choose from an empty collection.");
15
16
  }
16
17
  return values[await provider.randomInt(0, values.length)];
@@ -19,10 +20,13 @@ export async function randomChoice(values) {
19
20
  * Fills an existing Uint8Array with cryptographically secure
20
21
  * random bytes.
21
22
  */
22
- export async function fillRandomBytes(target) {
23
+ export async function fillRandomBytes(target, provider = getDefaultCryptoProvider()) {
23
24
  if (!(target instanceof Uint8Array)) {
24
25
  throw new TypeError("target must be a Uint8Array.");
25
26
  }
27
+ if (target.byteLength === 0) {
28
+ return target;
29
+ }
26
30
  const bytes = await provider.randomBytes(target.byteLength);
27
31
  target.set(bytes);
28
32
  return target;
@@ -1,21 +1,24 @@
1
+ import type { CryptoProvider } from "../cryptoProvider/index.js";
1
2
  /**
2
3
  * Generates cryptographically secure random bytes.
3
4
  */
4
- export declare function randomBytesSecure(length: number): Promise<Uint8Array>;
5
+ export declare function randomBytesSecure(length: number, provider?: CryptoProvider): Promise<Uint8Array>;
5
6
  /**
6
- * Generates a cryptographically secure random integer.
7
+ * Generates a cryptographically secure, uniformly distributed integer.
7
8
  *
8
9
  * The returned value is in the range:
9
10
  * min <= value < max
11
+ *
12
+ * Ranges up to 2^48 are supported; a range of one value returns `min`.
10
13
  */
11
- export declare function randomInteger(min: number, max: number): Promise<number>;
14
+ export declare function randomInteger(min: number, max: number, provider?: CryptoProvider): Promise<number>;
12
15
  /**
13
16
  * Generates a cryptographically secure random integer
14
17
  * from zero up to, but excluding, max.
15
18
  */
16
- export declare function randomIntegerBelow(max: number): Promise<number>;
19
+ export declare function randomIntegerBelow(max: number, provider?: CryptoProvider): Promise<number>;
17
20
  /**
18
21
  * Generates a random UUID v4.
19
22
  */
20
- export declare function randomUuid(): Promise<string>;
23
+ export declare function randomUuid(provider?: CryptoProvider): Promise<string>;
21
24
  //# sourceMappingURL=cryptoRandom.core.d.ts.map
@@ -1,31 +1,32 @@
1
- import { createNodeCryptoProvider } from "../node/index.js";
2
- const provider = createNodeCryptoProvider();
1
+ import { getDefaultCryptoProvider } from "../cryptoProvider/cryptoProvider.default.js";
3
2
  /**
4
3
  * Generates cryptographically secure random bytes.
5
4
  */
6
- export async function randomBytesSecure(length) {
5
+ export async function randomBytesSecure(length, provider = getDefaultCryptoProvider()) {
7
6
  return provider.randomBytes(length);
8
7
  }
9
8
  /**
10
- * Generates a cryptographically secure random integer.
9
+ * Generates a cryptographically secure, uniformly distributed integer.
11
10
  *
12
11
  * The returned value is in the range:
13
12
  * min <= value < max
13
+ *
14
+ * Ranges up to 2^48 are supported; a range of one value returns `min`.
14
15
  */
15
- export async function randomInteger(min, max) {
16
+ export async function randomInteger(min, max, provider = getDefaultCryptoProvider()) {
16
17
  return provider.randomInt(min, max);
17
18
  }
18
19
  /**
19
20
  * Generates a cryptographically secure random integer
20
21
  * from zero up to, but excluding, max.
21
22
  */
22
- export async function randomIntegerBelow(max) {
23
+ export async function randomIntegerBelow(max, provider = getDefaultCryptoProvider()) {
23
24
  return provider.randomInt(0, max);
24
25
  }
25
26
  /**
26
27
  * Generates a random UUID v4.
27
28
  */
28
- export async function randomUuid() {
29
+ export async function randomUuid(provider = getDefaultCryptoProvider()) {
29
30
  return provider.randomUUID();
30
31
  }
31
32
  //# sourceMappingURL=cryptoRandom.core.js.map
@@ -1,35 +1,37 @@
1
+ import type { CryptoProvider } from "../cryptoProvider/index.js";
1
2
  /**
2
3
  * Generates a cryptographically secure random hexadecimal string.
3
4
  */
4
- export declare function randomHex(length: number): Promise<string>;
5
+ export declare function randomHex(length: number, provider?: CryptoProvider): Promise<string>;
5
6
  /**
6
7
  * Generates a cryptographically secure random base64 string.
7
8
  */
8
- export declare function randomBase64(byteLength: number): Promise<string>;
9
+ export declare function randomBase64(byteLength: number, provider?: CryptoProvider): Promise<string>;
9
10
  /**
10
11
  * Generates a cryptographically secure URL-safe random string.
11
12
  */
12
- export declare function randomBase64Url(byteLength: number): Promise<string>;
13
+ export declare function randomBase64Url(byteLength: number, provider?: CryptoProvider): Promise<string>;
13
14
  /**
14
15
  * Generates a random token suitable for use as an opaque identifier.
15
16
  *
16
17
  * The returned token contains only URL-safe characters.
17
18
  */
18
- export declare function randomToken(byteLength?: number): Promise<string>;
19
+ export declare function randomToken(byteLength?: number, provider?: CryptoProvider): Promise<string>;
19
20
  /**
20
21
  * Generates a random numeric code.
21
22
  *
22
- * Leading zeroes are preserved.
23
+ * Leading zeroes are preserved. Each digit is drawn uniformly.
23
24
  */
24
- export declare function randomNumericCode(length?: number): Promise<string>;
25
+ export declare function randomNumericCode(length?: number, provider?: CryptoProvider): Promise<string>;
25
26
  /**
26
27
  * Generates a random alphanumeric token.
27
28
  */
28
- export declare function randomAlphanumeric(length: number): Promise<string>;
29
+ export declare function randomAlphanumeric(length: number, provider?: CryptoProvider): Promise<string>;
29
30
  /**
30
31
  * Generates random characters from a caller-provided alphabet.
31
32
  *
32
- * The alphabet must not be empty.
33
+ * `length` counts Unicode code points (so astral characters count once),
34
+ * the alphabet must not be empty, and each character is drawn uniformly.
33
35
  */
34
- export declare function randomFromAlphabet(length: number, alphabet: string): Promise<string>;
36
+ export declare function randomFromAlphabet(length: number, alphabet: string, provider?: CryptoProvider): Promise<string>;
35
37
  //# sourceMappingURL=cryptoRandom.string.d.ts.map
@@ -1,23 +1,30 @@
1
- import { createNodeCryptoProvider } from "../node/index.js";
2
- const provider = createNodeCryptoProvider();
1
+ import { getDefaultCryptoProvider } from "../cryptoProvider/cryptoProvider.default.js";
2
+ function assertLength(length, name = "length") {
3
+ if (!Number.isInteger(length) || length <= 0) {
4
+ throw new RangeError(`${name} must be a positive integer.`);
5
+ }
6
+ }
3
7
  /**
4
8
  * Generates a cryptographically secure random hexadecimal string.
5
9
  */
6
- export async function randomHex(length) {
10
+ export async function randomHex(length, provider = getDefaultCryptoProvider()) {
11
+ assertLength(length);
7
12
  const bytes = await provider.randomBytes(Math.ceil(length / 2));
8
13
  return Buffer.from(bytes).toString("hex").slice(0, length);
9
14
  }
10
15
  /**
11
16
  * Generates a cryptographically secure random base64 string.
12
17
  */
13
- export async function randomBase64(byteLength) {
18
+ export async function randomBase64(byteLength, provider = getDefaultCryptoProvider()) {
19
+ assertLength(byteLength, "byteLength");
14
20
  const bytes = await provider.randomBytes(byteLength);
15
21
  return Buffer.from(bytes).toString("base64");
16
22
  }
17
23
  /**
18
24
  * Generates a cryptographically secure URL-safe random string.
19
25
  */
20
- export async function randomBase64Url(byteLength) {
26
+ export async function randomBase64Url(byteLength, provider = getDefaultCryptoProvider()) {
27
+ assertLength(byteLength, "byteLength");
21
28
  const bytes = await provider.randomBytes(byteLength);
22
29
  return Buffer.from(bytes).toString("base64url");
23
30
  }
@@ -26,49 +33,41 @@ export async function randomBase64Url(byteLength) {
26
33
  *
27
34
  * The returned token contains only URL-safe characters.
28
35
  */
29
- export async function randomToken(byteLength = 32) {
30
- return randomBase64Url(byteLength);
36
+ export async function randomToken(byteLength = 32, provider) {
37
+ return randomBase64Url(byteLength, provider);
31
38
  }
32
39
  /**
33
40
  * Generates a random numeric code.
34
41
  *
35
- * Leading zeroes are preserved.
42
+ * Leading zeroes are preserved. Each digit is drawn uniformly.
36
43
  */
37
- export async function randomNumericCode(length = 6) {
38
- let result = "";
39
- while (result.length < length) {
40
- const value = await provider.randomInt(0, 1_000_000);
41
- result += String(value).padStart(6, "0");
42
- }
43
- return result.slice(0, length);
44
+ export async function randomNumericCode(length = 6, provider = getDefaultCryptoProvider()) {
45
+ assertLength(length);
46
+ return randomFromAlphabet(length, "0123456789", provider);
44
47
  }
45
48
  /**
46
49
  * Generates a random alphanumeric token.
47
50
  */
48
- export async function randomAlphanumeric(length) {
49
- const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
50
- let result = "";
51
- while (result.length < length) {
52
- const index = await provider.randomInt(0, alphabet.length);
53
- result += alphabet[index];
54
- }
55
- return result;
51
+ export async function randomAlphanumeric(length, provider = getDefaultCryptoProvider()) {
52
+ return randomFromAlphabet(length, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", provider);
56
53
  }
57
54
  /**
58
55
  * Generates random characters from a caller-provided alphabet.
59
56
  *
60
- * The alphabet must not be empty.
57
+ * `length` counts Unicode code points (so astral characters count once),
58
+ * the alphabet must not be empty, and each character is drawn uniformly.
61
59
  */
62
- export async function randomFromAlphabet(length, alphabet) {
63
- if (alphabet.length === 0) {
60
+ export async function randomFromAlphabet(length, alphabet, provider = getDefaultCryptoProvider()) {
61
+ assertLength(length);
62
+ if (typeof alphabet !== "string" || alphabet.length === 0) {
64
63
  throw new RangeError("alphabet must not be empty.");
65
64
  }
66
65
  const characters = Array.from(alphabet);
67
- let result = "";
66
+ const result = [];
68
67
  while (result.length < length) {
69
68
  const index = await provider.randomInt(0, characters.length);
70
- result += characters[index];
69
+ result.push(characters[index]);
71
70
  }
72
- return result;
71
+ return result.join("");
73
72
  }
74
73
  //# sourceMappingURL=cryptoRandom.string.js.map
@@ -1,29 +1,61 @@
1
+ import type { CryptoProvider } from "../cryptoProvider/index.js";
1
2
  import { CryptoAlgorithm } from "../cryptoConstants/cryptoConstants.type.js";
3
+ import { type CipherOptions, type CipherResult } from "./operations/cryptoService.cipher.js";
4
+ import { type PasswordHashOptions, type PasswordHashResult } from "./operations/cryptoService.password.js";
5
+ import { type Pbkdf2Options, type ScryptOptions, type DerivedKeyResult } from "./cryptoService.derivation.js";
6
+ import { type TokenOptions } from "./operations/cryptoService.token.js";
7
+ import { type CryptoEncoding } from "./cryptoService.encoding.js";
2
8
  import type { CryptoKey as ZudojsCryptoKey } from "../cryptoKey/cryptoKey.type.js";
9
+ /**
10
+ * Options for constructing a CryptoService.
11
+ */
12
+ export interface CryptoServiceOptions {
13
+ /** Provider used for every operation (defaults to the process-wide default). */
14
+ readonly provider?: CryptoProvider;
15
+ }
3
16
  /**
4
17
  * High-level service facade for cryptographic operations.
18
+ *
19
+ * Every failure is surfaced as a `CryptoError` whose `cause` holds the
20
+ * underlying error, so misconfiguration (wrong key length, invalid
21
+ * option) can be distinguished from environmental failures.
5
22
  */
6
23
  export declare class CryptoService {
7
- /** Generates a cryptographic key. */
24
+ private readonly configuredProvider;
25
+ constructor(options?: CryptoServiceOptions);
26
+ /**
27
+ * Returns the provider backing this service.
28
+ *
29
+ * When none was configured, the process-wide default is resolved on
30
+ * each call, so `setDefaultCryptoProvider` also affects this service.
31
+ */
32
+ getProvider(): CryptoProvider;
33
+ private get provider();
34
+ /**
35
+ * Generates a random symmetric key sized for the algorithm.
36
+ *
37
+ * Asymmetric algorithms are rejected: random bytes are not a usable
38
+ * signing key. Use `generateEd25519KeyPair` for those.
39
+ */
8
40
  generateKey(algorithm?: CryptoAlgorithm): Promise<ZudojsCryptoKey>;
9
41
  /** Generates random bytes. */
10
42
  randomBytes(length?: number): Promise<Uint8Array>;
11
43
  /** Encrypts data using the supplied key. */
12
- encrypt(plaintext: Uint8Array, key: Uint8Array, options?: import("./operations/cryptoService.cipher.js").CipherOptions): Promise<import("./operations/cryptoService.cipher.js").CipherResult>;
44
+ encrypt(plaintext: Uint8Array, key: Uint8Array, options?: CipherOptions): Promise<CipherResult>;
13
45
  /** Decrypts data using the supplied key. */
14
46
  decrypt(ciphertext: Uint8Array, key: Uint8Array, iv: Uint8Array, authTag: Uint8Array, aad?: Uint8Array): Promise<Uint8Array>;
15
47
  /** Hashes arbitrary data with SHA-256. */
16
48
  hash(value: string | Uint8Array): Promise<Uint8Array>;
17
49
  /** Hashes arbitrary data and returns hexadecimal output. */
18
50
  hashHex(value: string | Uint8Array): Promise<string>;
19
- /** Hashes a password using the configured algorithm. */
20
- hashPassword(password: string, options?: import("./operations/cryptoService.password.js").PasswordHashOptions): Promise<import("./operations/cryptoService.password.js").PasswordHashResult>;
51
+ /** Hashes a password using scrypt. */
52
+ hashPassword(password: string, options?: PasswordHashOptions): Promise<PasswordHashResult>;
21
53
  /** Verifies a password against a stored password hash. */
22
54
  verifyPassword(password: string, encodedHash: string): Promise<boolean>;
23
55
  /** Derives a cryptographic key from password material. */
24
- deriveKey(password: string | Uint8Array, algorithm: CryptoAlgorithm, options?: import("./cryptoService.derivation.js").Pbkdf2Options | import("./cryptoService.derivation.js").ScryptOptions): Promise<import("./cryptoService.derivation.js").DerivedKeyResult>;
56
+ deriveKey(password: string | Uint8Array, algorithm: CryptoAlgorithm, options?: Pbkdf2Options | ScryptOptions): Promise<DerivedKeyResult>;
25
57
  /** Generates a cryptographically secure opaque token. */
26
- generateToken(options?: import("./operations/cryptoService.token.js").TokenOptions): Promise<string>;
58
+ generateToken(options?: TokenOptions): Promise<string>;
27
59
  /** Generates a secure one-time password. */
28
60
  generateOtp(digits?: number): Promise<string>;
29
61
  /** Hashes an opaque token before database storage. */
@@ -31,16 +63,22 @@ export declare class CryptoService {
31
63
  /** Verifies an opaque token against its stored hash. */
32
64
  verifyToken(token: string, expectedHash: string): Promise<boolean>;
33
65
  /** Encodes binary data. */
34
- encode(value: Uint8Array, encoding?: import("./cryptoService.encoding.js").CryptoEncoding): string;
66
+ encode(value: Uint8Array, encoding?: CryptoEncoding): string;
35
67
  /** Decodes encoded binary data. */
36
- decode(value: string, encoding?: import("./cryptoService.encoding.js").CryptoEncoding): Uint8Array;
68
+ decode(value: string, encoding?: CryptoEncoding): Uint8Array;
37
69
  }
38
70
  /**
39
71
  * Creates a new CryptoService instance.
40
72
  */
41
- export declare function createCryptoService(): CryptoService;
73
+ export declare function createCryptoService(options?: CryptoServiceOptions): CryptoService;
42
74
  /**
43
75
  * Default crypto service instance.
76
+ *
77
+ * Construction is trivial (no provider is created until first use).
44
78
  */
45
79
  export declare const cryptoService: CryptoService;
80
+ /**
81
+ * Returns the default crypto service instance.
82
+ */
83
+ export declare function getCryptoService(): CryptoService;
46
84
  //# sourceMappingURL=cryptoService.core.d.ts.map
@@ -1,83 +1,107 @@
1
- import { createNodeCryptoProvider } from "../node/index.js";
2
- import { generateCryptoKey } from "../cryptoKey/cryptoKey.factory.js";
1
+ import { getDefaultCryptoProvider } from "../cryptoProvider/cryptoProvider.default.js";
2
+ import { generateCryptoKey, defaultKeyLength, } from "../cryptoKey/cryptoKey.factory.js";
3
3
  import { CryptoAlgorithm } from "../cryptoConstants/cryptoConstants.type.js";
4
- import { createCryptoError } from "@zudojs/errors";
4
+ import { CryptoOperation } from "@zudojs/errors";
5
+ import { operationError, rethrowAsCryptoError, } from "../cryptoErrors/cryptoErrors.helper.js";
5
6
  import { serviceEncrypt, serviceDecrypt, } from "./operations/cryptoService.cipher.js";
6
7
  import { serviceHash, serviceHashHex, } from "./operations/cryptoService.hash.js";
7
8
  import { serviceHashPassword, serviceVerifyPassword, } from "./operations/cryptoService.password.js";
8
- import { serviceDeriveKey } from "./cryptoService.derivation.js";
9
+ import { serviceDeriveKey, } from "./cryptoService.derivation.js";
9
10
  import { serviceGenerateToken, serviceGenerateOtp, serviceHashToken, serviceVerifyToken, } from "./operations/cryptoService.token.js";
10
- import { serviceEncode, serviceDecode } from "./cryptoService.encoding.js";
11
- const provider = createNodeCryptoProvider();
11
+ import { serviceEncode, serviceDecode, } from "./cryptoService.encoding.js";
12
12
  /**
13
13
  * High-level service facade for cryptographic operations.
14
+ *
15
+ * Every failure is surfaced as a `CryptoError` whose `cause` holds the
16
+ * underlying error, so misconfiguration (wrong key length, invalid
17
+ * option) can be distinguished from environmental failures.
14
18
  */
15
19
  export class CryptoService {
16
- /** Generates a cryptographic key. */
20
+ configuredProvider;
21
+ constructor(options = {}) {
22
+ this.configuredProvider = options.provider;
23
+ }
24
+ /**
25
+ * Returns the provider backing this service.
26
+ *
27
+ * When none was configured, the process-wide default is resolved on
28
+ * each call, so `setDefaultCryptoProvider` also affects this service.
29
+ */
30
+ getProvider() {
31
+ return this.configuredProvider ?? getDefaultCryptoProvider();
32
+ }
33
+ get provider() {
34
+ return this.getProvider();
35
+ }
36
+ /**
37
+ * Generates a random symmetric key sized for the algorithm.
38
+ *
39
+ * Asymmetric algorithms are rejected: random bytes are not a usable
40
+ * signing key. Use `generateEd25519KeyPair` for those.
41
+ */
17
42
  async generateKey(algorithm = CryptoAlgorithm.AES_256_GCM) {
18
- const length = algorithm.includes("256")
19
- ? 32
20
- : algorithm.includes("384")
21
- ? 48
22
- : algorithm.includes("512")
23
- ? 64
24
- : 32;
25
- return generateCryptoKey(length, { algorithm, extractable: true });
43
+ try {
44
+ return await generateCryptoKey(defaultKeyLength(algorithm), { algorithm, extractable: true }, this.provider);
45
+ }
46
+ catch (error) {
47
+ return rethrowAsCryptoError(error, (cause) => operationError("Key generation failed.", CryptoOperation.KEY_GENERATION, cause));
48
+ }
26
49
  }
27
50
  /** Generates random bytes. */
28
51
  async randomBytes(length = 32) {
29
- if (!Number.isInteger(length) || length <= 0)
52
+ if (!Number.isInteger(length) || length <= 0) {
30
53
  throw new TypeError("Random byte length must be a positive integer.");
54
+ }
31
55
  try {
32
- return await provider.randomBytes(length);
56
+ return await this.provider.randomBytes(length);
33
57
  }
34
- catch {
35
- throw createCryptoError("Failed to generate random bytes.", {});
58
+ catch (error) {
59
+ return rethrowAsCryptoError(error, (cause) => operationError("Failed to generate random bytes.", CryptoOperation.RANDOM, cause));
36
60
  }
37
61
  }
38
62
  /** Encrypts data using the supplied key. */
39
63
  async encrypt(plaintext, key, options) {
40
- return serviceEncrypt(plaintext, key, options);
64
+ return serviceEncrypt(plaintext, key, options, this.provider);
41
65
  }
42
66
  /** Decrypts data using the supplied key. */
43
67
  async decrypt(ciphertext, key, iv, authTag, aad) {
44
- return serviceDecrypt(ciphertext, key, iv, authTag, aad);
68
+ return serviceDecrypt(ciphertext, key, iv, authTag, aad, this.provider);
45
69
  }
46
70
  /** Hashes arbitrary data with SHA-256. */
47
71
  async hash(value) {
48
- return serviceHash(value);
72
+ return serviceHash(value, this.provider);
49
73
  }
50
74
  /** Hashes arbitrary data and returns hexadecimal output. */
51
75
  async hashHex(value) {
52
- return serviceHashHex(value);
76
+ return serviceHashHex(value, this.provider);
53
77
  }
54
- /** Hashes a password using the configured algorithm. */
78
+ /** Hashes a password using scrypt. */
55
79
  async hashPassword(password, options) {
56
- return serviceHashPassword(password, options);
80
+ return serviceHashPassword(password, options, this.provider);
57
81
  }
58
82
  /** Verifies a password against a stored password hash. */
59
83
  async verifyPassword(password, encodedHash) {
60
- return serviceVerifyPassword(password, encodedHash);
84
+ return serviceVerifyPassword(password, encodedHash, this.provider);
61
85
  }
62
86
  /** Derives a cryptographic key from password material. */
63
87
  async deriveKey(password, algorithm, options) {
64
- return serviceDeriveKey(password, algorithm, options);
88
+ return serviceDeriveKey(password, algorithm, options, this.provider);
65
89
  }
66
90
  /** Generates a cryptographically secure opaque token. */
67
91
  async generateToken(options) {
68
- return serviceGenerateToken(options);
92
+ return serviceGenerateToken(options, this.provider);
69
93
  }
70
94
  /** Generates a secure one-time password. */
71
95
  async generateOtp(digits = 6) {
72
- return serviceGenerateOtp(digits);
96
+ return serviceGenerateOtp(digits, this.provider);
73
97
  }
74
98
  /** Hashes an opaque token before database storage. */
75
99
  async hashToken(token) {
76
- return serviceHashToken(token);
100
+ return serviceHashToken(token, this.provider);
77
101
  }
78
102
  /** Verifies an opaque token against its stored hash. */
79
103
  async verifyToken(token, expectedHash) {
80
- return serviceVerifyToken(token, expectedHash);
104
+ return serviceVerifyToken(token, expectedHash, this.provider);
81
105
  }
82
106
  /** Encodes binary data. */
83
107
  encode(value, encoding = "base64url") {
@@ -91,11 +115,19 @@ export class CryptoService {
91
115
  /**
92
116
  * Creates a new CryptoService instance.
93
117
  */
94
- export function createCryptoService() {
95
- return new CryptoService();
118
+ export function createCryptoService(options = {}) {
119
+ return new CryptoService(options);
96
120
  }
97
121
  /**
98
122
  * Default crypto service instance.
123
+ *
124
+ * Construction is trivial (no provider is created until first use).
99
125
  */
100
126
  export const cryptoService = createCryptoService();
127
+ /**
128
+ * Returns the default crypto service instance.
129
+ */
130
+ export function getCryptoService() {
131
+ return cryptoService;
132
+ }
101
133
  //# sourceMappingURL=cryptoService.core.js.map
@@ -1,6 +1,6 @@
1
- import type { DerivedKeyResult } from "../cryptoProvider/index.js";
1
+ import type { CryptoProvider, DerivedKeyResult } from "../cryptoProvider/index.js";
2
2
  import type { Pbkdf2Options, ScryptOptions } from "../cryptoKeyDerivation/cryptoKeyDerivation.type.js";
3
- import { CryptoAlgorithm } from "../cryptoConstants/cryptoConstants.type.js";
3
+ import type { CryptoAlgorithm } from "../cryptoConstants/cryptoConstants.type.js";
4
4
  export type { DerivedKeyResult, Pbkdf2Options, ScryptOptions };
5
- export declare function serviceDeriveKey(password: string | Uint8Array, algorithm: CryptoAlgorithm, options?: Pbkdf2Options | ScryptOptions): Promise<DerivedKeyResult>;
5
+ export declare function serviceDeriveKey(password: string | Uint8Array, algorithm: CryptoAlgorithm, options?: Pbkdf2Options | ScryptOptions, provider?: CryptoProvider): Promise<DerivedKeyResult>;
6
6
  //# sourceMappingURL=cryptoService.derivation.d.ts.map