@hxa-rn/react-native-quick-crypto 1.1.0-beta.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.
Files changed (1236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/dist/commonjs/argon2.js +39 -0
  4. package/dist/commonjs/argon2.js.map +1 -0
  5. package/dist/commonjs/blake3.js +106 -0
  6. package/dist/commonjs/blake3.js.map +1 -0
  7. package/dist/commonjs/certificate.js +35 -0
  8. package/dist/commonjs/certificate.js.map +1 -0
  9. package/dist/commonjs/cipher.js +202 -0
  10. package/dist/commonjs/cipher.js.map +1 -0
  11. package/dist/commonjs/constants.js +32 -0
  12. package/dist/commonjs/constants.js.map +1 -0
  13. package/dist/commonjs/dh-groups.js +29 -0
  14. package/dist/commonjs/dh-groups.js.map +1 -0
  15. package/dist/commonjs/dhKeyPair.js +113 -0
  16. package/dist/commonjs/dhKeyPair.js.map +1 -0
  17. package/dist/commonjs/diffie-hellman.js +155 -0
  18. package/dist/commonjs/diffie-hellman.js.map +1 -0
  19. package/dist/commonjs/dsa.js +96 -0
  20. package/dist/commonjs/dsa.js.map +1 -0
  21. package/dist/commonjs/ec.js +368 -0
  22. package/dist/commonjs/ec.js.map +1 -0
  23. package/dist/commonjs/ecdh.js +114 -0
  24. package/dist/commonjs/ecdh.js.map +1 -0
  25. package/dist/commonjs/ed.js +395 -0
  26. package/dist/commonjs/ed.js.map +1 -0
  27. package/dist/commonjs/expo-plugin/@types.js +2 -0
  28. package/dist/commonjs/expo-plugin/@types.js.map +1 -0
  29. package/dist/commonjs/expo-plugin/withRNQC.js +25 -0
  30. package/dist/commonjs/expo-plugin/withRNQC.js.map +1 -0
  31. package/dist/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
  32. package/dist/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
  33. package/dist/commonjs/expo-plugin/withSodiumIos.js +23 -0
  34. package/dist/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
  35. package/dist/commonjs/expo-plugin/withXCode.js +51 -0
  36. package/dist/commonjs/expo-plugin/withXCode.js.map +1 -0
  37. package/dist/commonjs/hash.js +241 -0
  38. package/dist/commonjs/hash.js.map +1 -0
  39. package/dist/commonjs/hkdf.js +81 -0
  40. package/dist/commonjs/hkdf.js.map +1 -0
  41. package/dist/commonjs/hmac.js +121 -0
  42. package/dist/commonjs/hmac.js.map +1 -0
  43. package/dist/commonjs/index.js +358 -0
  44. package/dist/commonjs/index.js.map +1 -0
  45. package/dist/commonjs/keys/classes.js +272 -0
  46. package/dist/commonjs/keys/classes.js.map +1 -0
  47. package/dist/commonjs/keys/generateKeyPair.js +156 -0
  48. package/dist/commonjs/keys/generateKeyPair.js.map +1 -0
  49. package/dist/commonjs/keys/index.js +327 -0
  50. package/dist/commonjs/keys/index.js.map +1 -0
  51. package/dist/commonjs/keys/publicCipher.js +165 -0
  52. package/dist/commonjs/keys/publicCipher.js.map +1 -0
  53. package/dist/commonjs/keys/signVerify.js +225 -0
  54. package/dist/commonjs/keys/signVerify.js.map +1 -0
  55. package/dist/commonjs/keys/utils.js +123 -0
  56. package/dist/commonjs/keys/utils.js.map +1 -0
  57. package/dist/commonjs/mldsa.js +74 -0
  58. package/dist/commonjs/mldsa.js.map +1 -0
  59. package/dist/commonjs/mlkem.js +224 -0
  60. package/dist/commonjs/mlkem.js.map +1 -0
  61. package/dist/commonjs/pbkdf2.js +106 -0
  62. package/dist/commonjs/pbkdf2.js.map +1 -0
  63. package/dist/commonjs/prime.js +96 -0
  64. package/dist/commonjs/prime.js.map +1 -0
  65. package/dist/commonjs/random.js +233 -0
  66. package/dist/commonjs/random.js.map +1 -0
  67. package/dist/commonjs/rsa.js +207 -0
  68. package/dist/commonjs/rsa.js.map +1 -0
  69. package/dist/commonjs/scrypt.js +98 -0
  70. package/dist/commonjs/scrypt.js.map +1 -0
  71. package/dist/commonjs/specs/v1/NativeQuickCrypto.js +17 -0
  72. package/dist/commonjs/specs/v1/NativeQuickCrypto.js.map +1 -0
  73. package/dist/commonjs/specs/v1/argon2.nitro.js +6 -0
  74. package/dist/commonjs/specs/v1/argon2.nitro.js.map +1 -0
  75. package/dist/commonjs/specs/v1/blake3.nitro.js +6 -0
  76. package/dist/commonjs/specs/v1/blake3.nitro.js.map +1 -0
  77. package/dist/commonjs/specs/v1/certificate.nitro.js +6 -0
  78. package/dist/commonjs/specs/v1/certificate.nitro.js.map +1 -0
  79. package/dist/commonjs/specs/v1/cipher.nitro.js +6 -0
  80. package/dist/commonjs/specs/v1/cipher.nitro.js.map +1 -0
  81. package/dist/commonjs/specs/v1/dhKeyPair.nitro.js +6 -0
  82. package/dist/commonjs/specs/v1/dhKeyPair.nitro.js.map +1 -0
  83. package/dist/commonjs/specs/v1/diffie-hellman.nitro.js +6 -0
  84. package/dist/commonjs/specs/v1/diffie-hellman.nitro.js.map +1 -0
  85. package/dist/commonjs/specs/v1/dsaKeyPair.nitro.js +6 -0
  86. package/dist/commonjs/specs/v1/dsaKeyPair.nitro.js.map +1 -0
  87. package/dist/commonjs/specs/v1/ecKeyPair.nitro.js +6 -0
  88. package/dist/commonjs/specs/v1/ecKeyPair.nitro.js.map +1 -0
  89. package/dist/commonjs/specs/v1/ecdh.nitro.js +6 -0
  90. package/dist/commonjs/specs/v1/ecdh.nitro.js.map +1 -0
  91. package/dist/commonjs/specs/v1/edKeyPair.nitro.js +6 -0
  92. package/dist/commonjs/specs/v1/edKeyPair.nitro.js.map +1 -0
  93. package/dist/commonjs/specs/v1/hash.nitro.js +6 -0
  94. package/dist/commonjs/specs/v1/hash.nitro.js.map +1 -0
  95. package/dist/commonjs/specs/v1/hkdf.nitro.js +6 -0
  96. package/dist/commonjs/specs/v1/hkdf.nitro.js.map +1 -0
  97. package/dist/commonjs/specs/v1/hmac.nitro.js +6 -0
  98. package/dist/commonjs/specs/v1/hmac.nitro.js.map +1 -0
  99. package/dist/commonjs/specs/v1/keyObjectHandle.nitro.js +6 -0
  100. package/dist/commonjs/specs/v1/keyObjectHandle.nitro.js.map +1 -0
  101. package/dist/commonjs/specs/v1/kmac.nitro.js +6 -0
  102. package/dist/commonjs/specs/v1/kmac.nitro.js.map +1 -0
  103. package/dist/commonjs/specs/v1/mlDsaKeyPair.nitro.js +6 -0
  104. package/dist/commonjs/specs/v1/mlDsaKeyPair.nitro.js.map +1 -0
  105. package/dist/commonjs/specs/v1/mlKemKeyPair.nitro.js +6 -0
  106. package/dist/commonjs/specs/v1/mlKemKeyPair.nitro.js.map +1 -0
  107. package/dist/commonjs/specs/v1/pbkdf2.nitro.js +6 -0
  108. package/dist/commonjs/specs/v1/pbkdf2.nitro.js.map +1 -0
  109. package/dist/commonjs/specs/v1/prime.nitro.js +6 -0
  110. package/dist/commonjs/specs/v1/prime.nitro.js.map +1 -0
  111. package/dist/commonjs/specs/v1/random.nitro.js +6 -0
  112. package/dist/commonjs/specs/v1/random.nitro.js.map +1 -0
  113. package/dist/commonjs/specs/v1/rsaCipher.nitro.js +6 -0
  114. package/dist/commonjs/specs/v1/rsaCipher.nitro.js.map +1 -0
  115. package/dist/commonjs/specs/v1/rsaKeyPair.nitro.js +6 -0
  116. package/dist/commonjs/specs/v1/rsaKeyPair.nitro.js.map +1 -0
  117. package/dist/commonjs/specs/v1/scrypt.nitro.js +6 -0
  118. package/dist/commonjs/specs/v1/scrypt.nitro.js.map +1 -0
  119. package/dist/commonjs/specs/v1/sign.nitro.js +6 -0
  120. package/dist/commonjs/specs/v1/sign.nitro.js.map +1 -0
  121. package/dist/commonjs/specs/v1/utils.nitro.js +6 -0
  122. package/dist/commonjs/specs/v1/utils.nitro.js.map +1 -0
  123. package/dist/commonjs/specs/v1/x509certificate.nitro.js +6 -0
  124. package/dist/commonjs/specs/v1/x509certificate.nitro.js.map +1 -0
  125. package/dist/commonjs/subtle.js +1811 -0
  126. package/dist/commonjs/subtle.js.map +1 -0
  127. package/dist/commonjs/utils/cipher.js +64 -0
  128. package/dist/commonjs/utils/cipher.js.map +1 -0
  129. package/dist/commonjs/utils/conversion.js +181 -0
  130. package/dist/commonjs/utils/conversion.js.map +1 -0
  131. package/dist/commonjs/utils/errors.js +14 -0
  132. package/dist/commonjs/utils/errors.js.map +1 -0
  133. package/dist/commonjs/utils/hashnames.js +122 -0
  134. package/dist/commonjs/utils/hashnames.js.map +1 -0
  135. package/dist/commonjs/utils/index.js +83 -0
  136. package/dist/commonjs/utils/index.js.map +1 -0
  137. package/dist/commonjs/utils/noble.js +82 -0
  138. package/dist/commonjs/utils/noble.js.map +1 -0
  139. package/dist/commonjs/utils/timingSafeEqual.js +24 -0
  140. package/dist/commonjs/utils/timingSafeEqual.js.map +1 -0
  141. package/dist/commonjs/utils/types.js +55 -0
  142. package/dist/commonjs/utils/types.js.map +1 -0
  143. package/dist/commonjs/utils/validation.js +98 -0
  144. package/dist/commonjs/utils/validation.js.map +1 -0
  145. package/dist/commonjs/x509certificate.js +193 -0
  146. package/dist/commonjs/x509certificate.js.map +1 -0
  147. package/dist/module/argon2.js +32 -0
  148. package/dist/module/argon2.js.map +1 -0
  149. package/dist/module/blake3.js +96 -0
  150. package/dist/module/blake3.js.map +1 -0
  151. package/dist/module/certificate.js +28 -0
  152. package/dist/module/certificate.js.map +1 -0
  153. package/dist/module/cipher.js +194 -0
  154. package/dist/module/cipher.js.map +1 -0
  155. package/dist/module/constants.js +26 -0
  156. package/dist/module/constants.js.map +1 -0
  157. package/dist/module/dh-groups.js +23 -0
  158. package/dist/module/dh-groups.js.map +1 -0
  159. package/dist/module/dhKeyPair.js +104 -0
  160. package/dist/module/dhKeyPair.js.map +1 -0
  161. package/dist/module/diffie-hellman.js +147 -0
  162. package/dist/module/diffie-hellman.js.map +1 -0
  163. package/dist/module/dsa.js +87 -0
  164. package/dist/module/dsa.js.map +1 -0
  165. package/dist/module/ec.js +354 -0
  166. package/dist/module/ec.js.map +1 -0
  167. package/dist/module/ecdh.js +106 -0
  168. package/dist/module/ecdh.js.map +1 -0
  169. package/dist/module/ed.js +383 -0
  170. package/dist/module/ed.js.map +1 -0
  171. package/dist/module/expo-plugin/@types.js +2 -0
  172. package/dist/module/expo-plugin/@types.js.map +1 -0
  173. package/dist/module/expo-plugin/withRNQC.js +19 -0
  174. package/dist/module/expo-plugin/withRNQC.js.map +1 -0
  175. package/dist/module/expo-plugin/withSodiumAndroid.js +18 -0
  176. package/dist/module/expo-plugin/withSodiumAndroid.js.map +1 -0
  177. package/dist/module/expo-plugin/withSodiumIos.js +15 -0
  178. package/dist/module/expo-plugin/withSodiumIos.js.map +1 -0
  179. package/dist/module/expo-plugin/withXCode.js +44 -0
  180. package/dist/module/expo-plugin/withXCode.js.map +1 -0
  181. package/dist/module/hash.js +230 -0
  182. package/dist/module/hash.js.map +1 -0
  183. package/dist/module/hkdf.js +73 -0
  184. package/dist/module/hkdf.js.map +1 -0
  185. package/dist/module/hmac.js +114 -0
  186. package/dist/module/hmac.js.map +1 -0
  187. package/dist/module/index.js +134 -0
  188. package/dist/module/index.js.map +1 -0
  189. package/dist/module/keys/classes.js +261 -0
  190. package/dist/module/keys/classes.js.map +1 -0
  191. package/dist/module/keys/generateKeyPair.js +148 -0
  192. package/dist/module/keys/generateKeyPair.js.map +1 -0
  193. package/dist/module/keys/index.js +190 -0
  194. package/dist/module/keys/index.js.map +1 -0
  195. package/dist/module/keys/publicCipher.js +156 -0
  196. package/dist/module/keys/publicCipher.js.map +1 -0
  197. package/dist/module/keys/signVerify.js +213 -0
  198. package/dist/module/keys/signVerify.js.map +1 -0
  199. package/dist/module/keys/utils.js +112 -0
  200. package/dist/module/keys/utils.js.map +1 -0
  201. package/dist/module/mldsa.js +66 -0
  202. package/dist/module/mldsa.js.map +1 -0
  203. package/dist/module/mlkem.js +214 -0
  204. package/dist/module/mlkem.js.map +1 -0
  205. package/dist/module/pbkdf2.js +98 -0
  206. package/dist/module/pbkdf2.js.map +1 -0
  207. package/dist/module/prime.js +87 -0
  208. package/dist/module/prime.js.map +1 -0
  209. package/dist/module/random.js +220 -0
  210. package/dist/module/random.js.map +1 -0
  211. package/dist/module/rsa.js +197 -0
  212. package/dist/module/rsa.js.map +1 -0
  213. package/dist/module/scrypt.js +91 -0
  214. package/dist/module/scrypt.js.map +1 -0
  215. package/dist/module/specs/v1/NativeQuickCrypto.js +13 -0
  216. package/dist/module/specs/v1/NativeQuickCrypto.js.map +1 -0
  217. package/dist/module/specs/v1/argon2.nitro.js +2 -0
  218. package/dist/module/specs/v1/argon2.nitro.js.map +1 -0
  219. package/dist/module/specs/v1/blake3.nitro.js +2 -0
  220. package/dist/module/specs/v1/blake3.nitro.js.map +1 -0
  221. package/dist/module/specs/v1/certificate.nitro.js +2 -0
  222. package/dist/module/specs/v1/certificate.nitro.js.map +1 -0
  223. package/dist/module/specs/v1/cipher.nitro.js +2 -0
  224. package/dist/module/specs/v1/cipher.nitro.js.map +1 -0
  225. package/dist/module/specs/v1/dhKeyPair.nitro.js +2 -0
  226. package/dist/module/specs/v1/dhKeyPair.nitro.js.map +1 -0
  227. package/dist/module/specs/v1/diffie-hellman.nitro.js +2 -0
  228. package/dist/module/specs/v1/diffie-hellman.nitro.js.map +1 -0
  229. package/dist/module/specs/v1/dsaKeyPair.nitro.js +2 -0
  230. package/dist/module/specs/v1/dsaKeyPair.nitro.js.map +1 -0
  231. package/dist/module/specs/v1/ecKeyPair.nitro.js +2 -0
  232. package/dist/module/specs/v1/ecKeyPair.nitro.js.map +1 -0
  233. package/dist/module/specs/v1/ecdh.nitro.js +2 -0
  234. package/dist/module/specs/v1/ecdh.nitro.js.map +1 -0
  235. package/dist/module/specs/v1/edKeyPair.nitro.js +2 -0
  236. package/dist/module/specs/v1/edKeyPair.nitro.js.map +1 -0
  237. package/dist/module/specs/v1/hash.nitro.js +2 -0
  238. package/dist/module/specs/v1/hash.nitro.js.map +1 -0
  239. package/dist/module/specs/v1/hkdf.nitro.js +2 -0
  240. package/dist/module/specs/v1/hkdf.nitro.js.map +1 -0
  241. package/dist/module/specs/v1/hmac.nitro.js +2 -0
  242. package/dist/module/specs/v1/hmac.nitro.js.map +1 -0
  243. package/dist/module/specs/v1/keyObjectHandle.nitro.js +2 -0
  244. package/dist/module/specs/v1/keyObjectHandle.nitro.js.map +1 -0
  245. package/dist/module/specs/v1/kmac.nitro.js +2 -0
  246. package/dist/module/specs/v1/kmac.nitro.js.map +1 -0
  247. package/dist/module/specs/v1/mlDsaKeyPair.nitro.js +2 -0
  248. package/dist/module/specs/v1/mlDsaKeyPair.nitro.js.map +1 -0
  249. package/dist/module/specs/v1/mlKemKeyPair.nitro.js +2 -0
  250. package/dist/module/specs/v1/mlKemKeyPair.nitro.js.map +1 -0
  251. package/dist/module/specs/v1/pbkdf2.nitro.js +2 -0
  252. package/dist/module/specs/v1/pbkdf2.nitro.js.map +1 -0
  253. package/dist/module/specs/v1/prime.nitro.js +2 -0
  254. package/dist/module/specs/v1/prime.nitro.js.map +1 -0
  255. package/dist/module/specs/v1/random.nitro.js +2 -0
  256. package/dist/module/specs/v1/random.nitro.js.map +1 -0
  257. package/dist/module/specs/v1/rsaCipher.nitro.js +2 -0
  258. package/dist/module/specs/v1/rsaCipher.nitro.js.map +1 -0
  259. package/dist/module/specs/v1/rsaKeyPair.nitro.js +2 -0
  260. package/dist/module/specs/v1/rsaKeyPair.nitro.js.map +1 -0
  261. package/dist/module/specs/v1/scrypt.nitro.js +2 -0
  262. package/dist/module/specs/v1/scrypt.nitro.js.map +1 -0
  263. package/dist/module/specs/v1/sign.nitro.js +2 -0
  264. package/dist/module/specs/v1/sign.nitro.js.map +1 -0
  265. package/dist/module/specs/v1/utils.nitro.js +2 -0
  266. package/dist/module/specs/v1/utils.nitro.js.map +1 -0
  267. package/dist/module/specs/v1/x509certificate.nitro.js +2 -0
  268. package/dist/module/specs/v1/x509certificate.nitro.js.map +1 -0
  269. package/dist/module/subtle.js +1803 -0
  270. package/dist/module/subtle.js.map +1 -0
  271. package/dist/module/utils/cipher.js +54 -0
  272. package/dist/module/utils/cipher.js.map +1 -0
  273. package/dist/module/utils/conversion.js +146 -0
  274. package/dist/module/utils/conversion.js.map +1 -0
  275. package/dist/module/utils/errors.js +8 -0
  276. package/dist/module/utils/errors.js.map +1 -0
  277. package/dist/module/utils/hashnames.js +118 -0
  278. package/dist/module/utils/hashnames.js.map +1 -0
  279. package/dist/module/utils/index.js +8 -0
  280. package/dist/module/utils/index.js.map +1 -0
  281. package/dist/module/utils/noble.js +74 -0
  282. package/dist/module/utils/noble.js.map +1 -0
  283. package/dist/module/utils/timingSafeEqual.js +18 -0
  284. package/dist/module/utils/timingSafeEqual.js.map +1 -0
  285. package/dist/module/utils/types.js +55 -0
  286. package/dist/module/utils/types.js.map +1 -0
  287. package/dist/module/utils/validation.js +85 -0
  288. package/dist/module/utils/validation.js.map +1 -0
  289. package/dist/module/x509certificate.js +186 -0
  290. package/dist/module/x509certificate.js.map +1 -0
  291. package/dist/typescript/argon2.d.ts +15 -0
  292. package/dist/typescript/blake3.d.ts +32 -0
  293. package/dist/typescript/certificate.d.ts +7 -0
  294. package/dist/typescript/cipher.d.ts +74 -0
  295. package/dist/typescript/constants.d.ts +20 -0
  296. package/dist/typescript/dh-groups.d.ts +4 -0
  297. package/dist/typescript/dhKeyPair.d.ts +18 -0
  298. package/dist/typescript/diffie-hellman.d.ts +17 -0
  299. package/dist/typescript/dsa.d.ts +18 -0
  300. package/dist/typescript/ec.d.ts +23 -0
  301. package/dist/typescript/ecdh.d.ts +18 -0
  302. package/dist/typescript/ed.d.ts +46 -0
  303. package/dist/typescript/hash.d.ts +125 -0
  304. package/dist/typescript/hkdf.d.ts +21 -0
  305. package/dist/typescript/hmac.d.ts +65 -0
  306. package/dist/typescript/index.d.ts +224 -0
  307. package/dist/typescript/keys/classes.d.ts +85 -0
  308. package/dist/typescript/keys/generateKeyPair.d.ts +5 -0
  309. package/dist/typescript/keys/index.d.ts +23 -0
  310. package/dist/typescript/keys/publicCipher.d.ts +22 -0
  311. package/dist/typescript/keys/signVerify.d.ts +34 -0
  312. package/dist/typescript/keys/utils.d.ts +33 -0
  313. package/dist/typescript/mldsa.d.ts +17 -0
  314. package/dist/typescript/mlkem.d.ts +29 -0
  315. package/dist/typescript/pbkdf2.d.ts +11 -0
  316. package/dist/typescript/prime.d.ts +18 -0
  317. package/dist/typescript/random.d.ts +26 -0
  318. package/dist/typescript/rsa.d.ts +19 -0
  319. package/dist/typescript/scrypt.d.ts +17 -0
  320. package/dist/typescript/specs/v1/NativeQuickCrypto.d.ts +17 -0
  321. package/dist/typescript/specs/v1/argon2.nitro.d.ts +8 -0
  322. package/dist/typescript/specs/v1/blake3.nitro.d.ts +14 -0
  323. package/dist/typescript/specs/v1/certificate.nitro.d.ts +9 -0
  324. package/dist/typescript/specs/v1/cipher.nitro.d.ts +37 -0
  325. package/dist/typescript/specs/v1/dhKeyPair.nitro.d.ts +13 -0
  326. package/dist/typescript/specs/v1/diffie-hellman.nitro.d.ts +17 -0
  327. package/dist/typescript/specs/v1/dsaKeyPair.nitro.d.ts +12 -0
  328. package/dist/typescript/specs/v1/ecKeyPair.nitro.d.ts +20 -0
  329. package/dist/typescript/specs/v1/ecdh.nitro.d.ts +14 -0
  330. package/dist/typescript/specs/v1/edKeyPair.nitro.d.ts +16 -0
  331. package/dist/typescript/specs/v1/hash.nitro.d.ts +12 -0
  332. package/dist/typescript/specs/v1/hkdf.nitro.d.ts +8 -0
  333. package/dist/typescript/specs/v1/hmac.nitro.d.ts +9 -0
  334. package/dist/typescript/specs/v1/keyObjectHandle.nitro.d.ts +17 -0
  335. package/dist/typescript/specs/v1/kmac.nitro.d.ts +9 -0
  336. package/dist/typescript/specs/v1/mlDsaKeyPair.nitro.d.ts +15 -0
  337. package/dist/typescript/specs/v1/mlKemKeyPair.nitro.d.ts +17 -0
  338. package/dist/typescript/specs/v1/pbkdf2.nitro.d.ts +8 -0
  339. package/dist/typescript/specs/v1/prime.nitro.d.ts +10 -0
  340. package/dist/typescript/specs/v1/random.nitro.d.ts +8 -0
  341. package/dist/typescript/specs/v1/rsaCipher.nitro.d.ts +53 -0
  342. package/dist/typescript/specs/v1/rsaKeyPair.nitro.d.ts +19 -0
  343. package/dist/typescript/specs/v1/scrypt.nitro.d.ts +8 -0
  344. package/dist/typescript/specs/v1/sign.nitro.d.ts +18 -0
  345. package/dist/typescript/specs/v1/utils.nitro.d.ts +9 -0
  346. package/dist/typescript/specs/v1/x509certificate.nitro.d.ts +33 -0
  347. package/dist/typescript/subtle.d.ts +31 -0
  348. package/dist/typescript/utils/cipher.d.ts +6 -0
  349. package/dist/typescript/utils/conversion.d.ts +29 -0
  350. package/dist/typescript/utils/errors.d.ts +6 -0
  351. package/dist/typescript/utils/hashnames.d.ts +12 -0
  352. package/dist/typescript/utils/index.d.ts +7 -0
  353. package/dist/typescript/utils/noble.d.ts +18 -0
  354. package/dist/typescript/utils/timingSafeEqual.d.ts +2 -0
  355. package/dist/typescript/utils/types.d.ts +294 -0
  356. package/dist/typescript/utils/validation.d.ts +12 -0
  357. package/dist/typescript/x509certificate.d.ts +63 -0
  358. package/harmony/quick_crypto/LICENSE +21 -0
  359. package/harmony/quick_crypto/NOTICE +33 -0
  360. package/harmony/quick_crypto/OAT.xml +38 -0
  361. package/harmony/quick_crypto/build-profile.json5 +16 -0
  362. package/harmony/quick_crypto/deps/blake3/blake3.c +650 -0
  363. package/harmony/quick_crypto/deps/blake3/blake3.h +86 -0
  364. package/harmony/quick_crypto/deps/blake3/blake3_avx2.c +326 -0
  365. package/harmony/quick_crypto/deps/blake3/blake3_avx512.c +1388 -0
  366. package/harmony/quick_crypto/deps/blake3/blake3_dispatch.c +332 -0
  367. package/harmony/quick_crypto/deps/blake3/blake3_impl.h +333 -0
  368. package/harmony/quick_crypto/deps/blake3/blake3_neon.c +366 -0
  369. package/harmony/quick_crypto/deps/blake3/blake3_portable.c +160 -0
  370. package/harmony/quick_crypto/deps/blake3/blake3_sse2.c +566 -0
  371. package/harmony/quick_crypto/deps/blake3/blake3_sse41.c +560 -0
  372. package/harmony/quick_crypto/deps/blake3/example.c +36 -0
  373. package/harmony/quick_crypto/deps/blake3/example_tbb.c +57 -0
  374. package/harmony/quick_crypto/deps/blake3/main.c +166 -0
  375. package/harmony/quick_crypto/deps/fastpbkdf2/fastpbkdf2.c +356 -0
  376. package/harmony/quick_crypto/deps/fastpbkdf2/fastpbkdf2.h +68 -0
  377. package/harmony/quick_crypto/deps/ncrypto/include/dh-primes.h +67 -0
  378. package/harmony/quick_crypto/deps/ncrypto/include/ncrypto/aead.h +137 -0
  379. package/harmony/quick_crypto/deps/ncrypto/include/ncrypto/version.h +14 -0
  380. package/harmony/quick_crypto/deps/ncrypto/include/ncrypto.h +1752 -0
  381. package/harmony/quick_crypto/deps/ncrypto/src/aead.cpp +302 -0
  382. package/harmony/quick_crypto/deps/ncrypto/src/engine.cpp +93 -0
  383. package/harmony/quick_crypto/deps/ncrypto/src/ncrypto.cpp +5331 -0
  384. package/harmony/quick_crypto/deps/simdutf/include/simdutf/avx512.h +79 -0
  385. package/harmony/quick_crypto/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
  386. package/harmony/quick_crypto/deps/simdutf/include/simdutf/base64_tables.h +887 -0
  387. package/harmony/quick_crypto/deps/simdutf/include/simdutf/common_defs.h +186 -0
  388. package/harmony/quick_crypto/deps/simdutf/include/simdutf/compiler_check.h +50 -0
  389. package/harmony/quick_crypto/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
  390. package/harmony/quick_crypto/deps/simdutf/include/simdutf/encoding_types.h +189 -0
  391. package/harmony/quick_crypto/deps/simdutf/include/simdutf/error.h +126 -0
  392. package/harmony/quick_crypto/deps/simdutf/include/simdutf/implementation.h +7081 -0
  393. package/harmony/quick_crypto/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
  394. package/harmony/quick_crypto/deps/simdutf/include/simdutf/portability.h +285 -0
  395. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
  396. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
  397. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
  398. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
  399. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
  400. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
  401. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
  402. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
  403. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
  404. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
  405. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
  406. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
  407. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
  408. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
  409. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
  410. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
  411. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
  412. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
  413. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
  414. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
  415. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
  416. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
  417. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
  418. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
  419. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
  420. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
  421. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
  422. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
  423. package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
  424. package/harmony/quick_crypto/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
  425. package/harmony/quick_crypto/deps/simdutf/include/simdutf.h +26 -0
  426. package/harmony/quick_crypto/deps/simdutf/include/simdutf_c.h +342 -0
  427. package/harmony/quick_crypto/deps/simdutf/src/CMakeLists.txt +78 -0
  428. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
  429. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
  430. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
  431. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
  432. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
  433. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
  434. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
  435. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
  436. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
  437. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
  438. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
  439. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
  440. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
  441. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_find.cpp +199 -0
  442. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
  443. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
  444. package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
  445. package/harmony/quick_crypto/deps/simdutf/src/arm64/implementation.cpp +1442 -0
  446. package/harmony/quick_crypto/deps/simdutf/src/encoding_types.cpp +67 -0
  447. package/harmony/quick_crypto/deps/simdutf/src/error.cpp +3 -0
  448. package/harmony/quick_crypto/deps/simdutf/src/fallback/implementation.cpp +589 -0
  449. package/harmony/quick_crypto/deps/simdutf/src/generic/ascii_validation.h +50 -0
  450. package/harmony/quick_crypto/deps/simdutf/src/generic/base64.h +233 -0
  451. package/harmony/quick_crypto/deps/simdutf/src/generic/base64lengths.h +63 -0
  452. package/harmony/quick_crypto/deps/simdutf/src/generic/buf_block_reader.h +109 -0
  453. package/harmony/quick_crypto/deps/simdutf/src/generic/find.h +75 -0
  454. package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
  455. package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
  456. package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
  457. package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
  458. package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
  459. package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
  460. package/harmony/quick_crypto/deps/simdutf/src/generic/utf16.h +73 -0
  461. package/harmony/quick_crypto/deps/simdutf/src/generic/utf32.h +136 -0
  462. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
  463. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8.h +92 -0
  464. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
  465. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
  466. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
  467. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
  468. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
  469. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
  470. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
  471. package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
  472. package/harmony/quick_crypto/deps/simdutf/src/generic/validate_utf16.h +164 -0
  473. package/harmony/quick_crypto/deps/simdutf/src/generic/validate_utf32.h +99 -0
  474. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
  475. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
  476. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
  477. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
  478. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
  479. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
  480. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
  481. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
  482. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
  483. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
  484. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
  485. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
  486. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
  487. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
  488. package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
  489. package/harmony/quick_crypto/deps/simdutf/src/haswell/implementation.cpp +1447 -0
  490. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
  491. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
  492. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
  493. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
  494. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
  495. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
  496. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
  497. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
  498. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
  499. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
  500. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
  501. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
  502. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
  503. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
  504. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
  505. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
  506. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
  507. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
  508. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
  509. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
  510. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
  511. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
  512. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
  513. package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
  514. package/harmony/quick_crypto/deps/simdutf/src/icelake/implementation.cpp +1903 -0
  515. package/harmony/quick_crypto/deps/simdutf/src/implementation.cpp +2526 -0
  516. package/harmony/quick_crypto/deps/simdutf/src/lasx/implementation.cpp +1531 -0
  517. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
  518. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
  519. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
  520. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
  521. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
  522. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
  523. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
  524. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
  525. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
  526. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
  527. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
  528. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
  529. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
  530. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
  531. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
  532. package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
  533. package/harmony/quick_crypto/deps/simdutf/src/lsx/implementation.cpp +1417 -0
  534. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
  535. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
  536. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
  537. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
  538. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
  539. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
  540. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
  541. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
  542. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
  543. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
  544. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
  545. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
  546. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
  547. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
  548. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
  549. package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
  550. package/harmony/quick_crypto/deps/simdutf/src/ppc64/implementation.cpp +992 -0
  551. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
  552. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
  553. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
  554. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
  555. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
  556. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
  557. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
  558. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
  559. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
  560. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
  561. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
  562. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
  563. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
  564. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
  565. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
  566. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
  567. package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
  568. package/harmony/quick_crypto/deps/simdutf/src/ppc64/templates.cpp +91 -0
  569. package/harmony/quick_crypto/deps/simdutf/src/rvv/implementation.cpp +138 -0
  570. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
  571. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
  572. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
  573. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
  574. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
  575. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
  576. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
  577. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
  578. package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
  579. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
  580. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
  581. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/end.h +2 -0
  582. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
  583. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
  584. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
  585. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
  586. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
  587. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
  588. package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64.h +43 -0
  589. package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
  590. package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
  591. package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/end.h +1 -0
  592. package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
  593. package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback.h +42 -0
  594. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
  595. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
  596. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/end.h +13 -0
  597. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
  598. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
  599. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
  600. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
  601. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
  602. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
  603. package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell.h +63 -0
  604. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
  605. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
  606. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/end.h +12 -0
  607. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
  608. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
  609. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
  610. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
  611. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
  612. package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake.h +81 -0
  613. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
  614. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
  615. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/end.h +8 -0
  616. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
  617. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
  618. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
  619. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
  620. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
  621. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
  622. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx.h +49 -0
  623. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
  624. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
  625. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/end.h +2 -0
  626. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
  627. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
  628. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
  629. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
  630. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
  631. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
  632. package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx.h +52 -0
  633. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
  634. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
  635. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
  636. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
  637. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
  638. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
  639. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
  640. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
  641. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
  642. package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64.h +40 -0
  643. package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
  644. package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/end.h +7 -0
  645. package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
  646. package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
  647. package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv.h +41 -0
  648. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
  649. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
  650. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/end.h +8 -0
  651. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
  652. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
  653. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
  654. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
  655. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
  656. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
  657. package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere.h +59 -0
  658. package/harmony/quick_crypto/deps/simdutf/src/simdutf.cpp +152 -0
  659. package/harmony/quick_crypto/deps/simdutf/src/simdutf_c.cpp +525 -0
  660. package/harmony/quick_crypto/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
  661. package/harmony/quick_crypto/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
  662. package/harmony/quick_crypto/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
  663. package/harmony/quick_crypto/deps/simdutf/src/westmere/implementation.cpp +1479 -0
  664. package/harmony/quick_crypto/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
  665. package/harmony/quick_crypto/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
  666. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
  667. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
  668. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
  669. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
  670. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
  671. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
  672. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
  673. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
  674. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
  675. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
  676. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
  677. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
  678. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
  679. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
  680. package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
  681. package/harmony/quick_crypto/hvigorfile.ts +2 -0
  682. package/harmony/quick_crypto/index.ets +1 -0
  683. package/harmony/quick_crypto/oh-package.json5 +14 -0
  684. package/harmony/quick_crypto/src/main/cpp/CMakeLists.txt +296 -0
  685. package/harmony/quick_crypto/src/main/cpp/QuickCryptoOnLoad.cpp +211 -0
  686. package/harmony/quick_crypto/src/main/cpp/QuickCryptoOnLoad.hpp +16 -0
  687. package/harmony/quick_crypto/src/main/cpp/QuickCryptoPackage.h +50 -0
  688. package/harmony/quick_crypto/src/main/cpp/cpp/argon2/HybridArgon2.cpp +103 -0
  689. package/harmony/quick_crypto/src/main/cpp/cpp/argon2/HybridArgon2.hpp +32 -0
  690. package/harmony/quick_crypto/src/main/cpp/cpp/blake3/HybridBlake3.cpp +118 -0
  691. package/harmony/quick_crypto/src/main/cpp/cpp/blake3/HybridBlake3.hpp +35 -0
  692. package/harmony/quick_crypto/src/main/cpp/cpp/certificate/HybridCertificate.cpp +42 -0
  693. package/harmony/quick_crypto/src/main/cpp/cpp/certificate/HybridCertificate.hpp +16 -0
  694. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/CCMCipher.cpp +202 -0
  695. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/CCMCipher.hpp +26 -0
  696. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Cipher.cpp +99 -0
  697. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Cipher.hpp +25 -0
  698. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Poly1305Cipher.cpp +170 -0
  699. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Poly1305Cipher.hpp +29 -0
  700. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/GCMCipher.cpp +68 -0
  701. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/GCMCipher.hpp +14 -0
  702. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridCipher.cpp +415 -0
  703. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridCipher.hpp +74 -0
  704. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridCipherFactory.hpp +119 -0
  705. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridRsaCipher.cpp +440 -0
  706. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridRsaCipher.hpp +33 -0
  707. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/OCBCipher.cpp +55 -0
  708. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/OCBCipher.hpp +19 -0
  709. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XChaCha20Poly1305Cipher.cpp +163 -0
  710. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XChaCha20Poly1305Cipher.hpp +42 -0
  711. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Cipher.cpp +65 -0
  712. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Cipher.hpp +33 -0
  713. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Poly1305Cipher.cpp +147 -0
  714. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Poly1305Cipher.hpp +41 -0
  715. package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDhKeyPair.cpp +179 -0
  716. package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDhKeyPair.hpp +37 -0
  717. package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDiffieHellman.cpp +501 -0
  718. package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDiffieHellman.hpp +42 -0
  719. package/harmony/quick_crypto/src/main/cpp/cpp/dsa/HybridDsaKeyPair.cpp +128 -0
  720. package/harmony/quick_crypto/src/main/cpp/cpp/dsa/HybridDsaKeyPair.hpp +32 -0
  721. package/harmony/quick_crypto/src/main/cpp/cpp/ec/HybridEcKeyPair.cpp +479 -0
  722. package/harmony/quick_crypto/src/main/cpp/cpp/ec/HybridEcKeyPair.hpp +49 -0
  723. package/harmony/quick_crypto/src/main/cpp/cpp/ecdh/HybridECDH.cpp +228 -0
  724. package/harmony/quick_crypto/src/main/cpp/cpp/ecdh/HybridECDH.hpp +43 -0
  725. package/harmony/quick_crypto/src/main/cpp/cpp/ed25519/HybridEdKeyPair.cpp +404 -0
  726. package/harmony/quick_crypto/src/main/cpp/cpp/ed25519/HybridEdKeyPair.hpp +71 -0
  727. package/harmony/quick_crypto/src/main/cpp/cpp/hash/HybridHash.cpp +207 -0
  728. package/harmony/quick_crypto/src/main/cpp/cpp/hash/HybridHash.hpp +43 -0
  729. package/harmony/quick_crypto/src/main/cpp/cpp/hkdf/HybridHkdf.cpp +96 -0
  730. package/harmony/quick_crypto/src/main/cpp/cpp/hkdf/HybridHkdf.hpp +28 -0
  731. package/harmony/quick_crypto/src/main/cpp/cpp/hmac/HybridHmac.cpp +104 -0
  732. package/harmony/quick_crypto/src/main/cpp/cpp/hmac/HybridHmac.hpp +32 -0
  733. package/harmony/quick_crypto/src/main/cpp/cpp/keys/HybridKeyObjectHandle.cpp +891 -0
  734. package/harmony/quick_crypto/src/main/cpp/cpp/keys/HybridKeyObjectHandle.hpp +58 -0
  735. package/harmony/quick_crypto/src/main/cpp/cpp/keys/KeyObjectData.cpp +284 -0
  736. package/harmony/quick_crypto/src/main/cpp/cpp/keys/KeyObjectData.hpp +73 -0
  737. package/harmony/quick_crypto/src/main/cpp/cpp/keys/node.h +5 -0
  738. package/harmony/quick_crypto/src/main/cpp/cpp/kmac/HybridKmac.cpp +83 -0
  739. package/harmony/quick_crypto/src/main/cpp/cpp/kmac/HybridKmac.hpp +31 -0
  740. package/harmony/quick_crypto/src/main/cpp/cpp/mldsa/HybridMlDsaKeyPair.cpp +255 -0
  741. package/harmony/quick_crypto/src/main/cpp/cpp/mldsa/HybridMlDsaKeyPair.hpp +49 -0
  742. package/harmony/quick_crypto/src/main/cpp/cpp/mlkem/HybridMlKemKeyPair.cpp +319 -0
  743. package/harmony/quick_crypto/src/main/cpp/cpp/mlkem/HybridMlKemKeyPair.hpp +48 -0
  744. package/harmony/quick_crypto/src/main/cpp/cpp/pbkdf2/HybridPbkdf2.cpp +51 -0
  745. package/harmony/quick_crypto/src/main/cpp/cpp/pbkdf2/HybridPbkdf2.hpp +24 -0
  746. package/harmony/quick_crypto/src/main/cpp/cpp/prime/HybridPrime.cpp +81 -0
  747. package/harmony/quick_crypto/src/main/cpp/cpp/prime/HybridPrime.hpp +20 -0
  748. package/harmony/quick_crypto/src/main/cpp/cpp/random/HybridRandom.cpp +48 -0
  749. package/harmony/quick_crypto/src/main/cpp/cpp/random/HybridRandom.hpp +32 -0
  750. package/harmony/quick_crypto/src/main/cpp/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
  751. package/harmony/quick_crypto/src/main/cpp/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
  752. package/harmony/quick_crypto/src/main/cpp/cpp/scrypt/HybridScrypt.cpp +62 -0
  753. package/harmony/quick_crypto/src/main/cpp/cpp/scrypt/HybridScrypt.hpp +28 -0
  754. package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridSignHandle.cpp +266 -0
  755. package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridSignHandle.hpp +36 -0
  756. package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridVerifyHandle.cpp +227 -0
  757. package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridVerifyHandle.hpp +36 -0
  758. package/harmony/quick_crypto/src/main/cpp/cpp/sign/SignUtils.hpp +91 -0
  759. package/harmony/quick_crypto/src/main/cpp/cpp/utils/HybridUtils.cpp +197 -0
  760. package/harmony/quick_crypto/src/main/cpp/cpp/utils/HybridUtils.hpp +17 -0
  761. package/harmony/quick_crypto/src/main/cpp/cpp/utils/Macros.hpp +68 -0
  762. package/harmony/quick_crypto/src/main/cpp/cpp/utils/QuickCryptoUtils.cpp +44 -0
  763. package/harmony/quick_crypto/src/main/cpp/cpp/utils/QuickCryptoUtils.hpp +114 -0
  764. package/harmony/quick_crypto/src/main/cpp/cpp/utils/base64.h +309 -0
  765. package/harmony/quick_crypto/src/main/cpp/cpp/x509/HybridX509Certificate.cpp +174 -0
  766. package/harmony/quick_crypto/src/main/cpp/cpp/x509/HybridX509Certificate.hpp +51 -0
  767. package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/BaseQuickCryptoPackage.h +72 -0
  768. package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/dummy.cpp +2 -0
  769. package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/turbo_modules/QuickCrypto.cpp +16 -0
  770. package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/turbo_modules/QuickCrypto.h +16 -0
  771. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/ComponentDescriptors.h +24 -0
  772. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/EventEmitters.cpp +16 -0
  773. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/EventEmitters.h +17 -0
  774. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/Props.cpp +19 -0
  775. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/Props.h +18 -0
  776. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/ShadowNodes.cpp +17 -0
  777. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/ShadowNodes.h +23 -0
  778. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/States.cpp +16 -0
  779. package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/States.h +19 -0
  780. package/harmony/quick_crypto/src/main/cpp/nitro/HarmonyDispatcher.h +84 -0
  781. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/AnyMap.hpp +216 -0
  782. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ArrayBuffer.hpp +157 -0
  783. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/AssertPromiseState.hpp +34 -0
  784. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/BorrowingReference.hpp +223 -0
  785. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/BoxedHybridObject.hpp +36 -0
  786. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/CachedProp.hpp +44 -0
  787. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/CallInvokerDispatcher.hpp +38 -0
  788. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/CountTrailingOptionals.hpp +64 -0
  789. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Dispatcher.hpp +83 -0
  790. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/FastVectorCopy.hpp +45 -0
  791. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/FutureType.hpp +28 -0
  792. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridFunction.hpp +269 -0
  793. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridNitroModulesProxy.hpp +52 -0
  794. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridObject.hpp +152 -0
  795. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridObjectPrototype.hpp +93 -0
  796. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridObjectRegistry.hpp +53 -0
  797. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/InstallNitro.hpp +41 -0
  798. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/InstanceMethod.hpp +23 -0
  799. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/IsSharedPtrTo.hpp +27 -0
  800. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSCallback.hpp +132 -0
  801. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSICache.hpp +123 -0
  802. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+AnyMap.hpp +86 -0
  803. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+ArrayBuffer.hpp +96 -0
  804. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Date.hpp +83 -0
  805. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Exception.hpp +59 -0
  806. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Function.hpp +92 -0
  807. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+HostObject.hpp +73 -0
  808. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+NativeState.hpp +93 -0
  809. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Null.hpp +38 -0
  810. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Optional.hpp +50 -0
  811. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Promise.hpp +112 -0
  812. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Tuple.hpp +93 -0
  813. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+UnorderedMap.hpp +70 -0
  814. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Variant.hpp +67 -0
  815. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Vector.hpp +69 -0
  816. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter.hpp +197 -0
  817. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIHelpers.hpp +52 -0
  818. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroDefines.hpp +73 -0
  819. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroHash.hpp +61 -0
  820. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroLogger.hpp +69 -0
  821. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroTypeInfo.hpp +66 -0
  822. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Null.hpp +42 -0
  823. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ObjectUtils.hpp +94 -0
  824. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Promise.hpp +324 -0
  825. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/PromiseType.hpp +44 -0
  826. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/PropNameIDCache.hpp +24 -0
  827. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Prototype.hpp +182 -0
  828. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/PrototypeChain.hpp +78 -0
  829. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ReferenceState.hpp +40 -0
  830. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ThreadPool.hpp +66 -0
  831. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ThreadUtils.hpp +31 -0
  832. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/TypeIndex.hpp +29 -0
  833. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/WeakReference+Owning.hpp +33 -0
  834. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/WeakReference.hpp +102 -0
  835. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModulesTurboModule.cpp +92 -0
  836. package/harmony/quick_crypto/src/main/cpp/nitro/NitroModulesTurboModule.h +74 -0
  837. package/harmony/quick_crypto/src/main/cpp/nitro/platform/ThreadUtils.cpp +60 -0
  838. package/harmony/quick_crypto/src/main/cpp/nitro/shared/AnyMap.cpp +202 -0
  839. package/harmony/quick_crypto/src/main/cpp/nitro/shared/AnyMap.hpp +216 -0
  840. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ArrayBuffer.cpp +125 -0
  841. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ArrayBuffer.hpp +157 -0
  842. package/harmony/quick_crypto/src/main/cpp/nitro/shared/AssertPromiseState.hpp +34 -0
  843. package/harmony/quick_crypto/src/main/cpp/nitro/shared/BorrowingReference.hpp +223 -0
  844. package/harmony/quick_crypto/src/main/cpp/nitro/shared/BoxedHybridObject.cpp +30 -0
  845. package/harmony/quick_crypto/src/main/cpp/nitro/shared/BoxedHybridObject.hpp +36 -0
  846. package/harmony/quick_crypto/src/main/cpp/nitro/shared/CachedProp.hpp +44 -0
  847. package/harmony/quick_crypto/src/main/cpp/nitro/shared/CallInvokerDispatcher.hpp +38 -0
  848. package/harmony/quick_crypto/src/main/cpp/nitro/shared/CountTrailingOptionals.hpp +64 -0
  849. package/harmony/quick_crypto/src/main/cpp/nitro/shared/Dispatcher.cpp +71 -0
  850. package/harmony/quick_crypto/src/main/cpp/nitro/shared/Dispatcher.hpp +83 -0
  851. package/harmony/quick_crypto/src/main/cpp/nitro/shared/FastVectorCopy.hpp +45 -0
  852. package/harmony/quick_crypto/src/main/cpp/nitro/shared/FutureType.hpp +28 -0
  853. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridFunction.hpp +269 -0
  854. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridNitroModulesProxy.cpp +92 -0
  855. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridNitroModulesProxy.hpp +52 -0
  856. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObject.cpp +107 -0
  857. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObject.hpp +152 -0
  858. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectPrototype.cpp +113 -0
  859. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectPrototype.hpp +93 -0
  860. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectRegistry.cpp +105 -0
  861. package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectRegistry.hpp +53 -0
  862. package/harmony/quick_crypto/src/main/cpp/nitro/shared/InstallNitro.cpp +29 -0
  863. package/harmony/quick_crypto/src/main/cpp/nitro/shared/InstallNitro.hpp +41 -0
  864. package/harmony/quick_crypto/src/main/cpp/nitro/shared/InstanceMethod.hpp +23 -0
  865. package/harmony/quick_crypto/src/main/cpp/nitro/shared/IsSharedPtrTo.hpp +27 -0
  866. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSCallback.hpp +132 -0
  867. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSICache.cpp +66 -0
  868. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSICache.hpp +123 -0
  869. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+AnyMap.hpp +86 -0
  870. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+ArrayBuffer.hpp +96 -0
  871. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Date.hpp +83 -0
  872. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Exception.hpp +59 -0
  873. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Function.hpp +92 -0
  874. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+HostObject.hpp +73 -0
  875. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+NativeState.hpp +93 -0
  876. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Null.hpp +38 -0
  877. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Optional.hpp +50 -0
  878. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Promise.hpp +112 -0
  879. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Tuple.hpp +93 -0
  880. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+UnorderedMap.hpp +70 -0
  881. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Variant.hpp +67 -0
  882. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Vector.hpp +69 -0
  883. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter.hpp +197 -0
  884. package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIHelpers.hpp +52 -0
  885. package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroDefines.hpp +73 -0
  886. package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroHash.hpp +61 -0
  887. package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroLogger.hpp +69 -0
  888. package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroTypeInfo.cpp +80 -0
  889. package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroTypeInfo.hpp +66 -0
  890. package/harmony/quick_crypto/src/main/cpp/nitro/shared/Null.hpp +42 -0
  891. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ObjectUtils.cpp +172 -0
  892. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ObjectUtils.hpp +94 -0
  893. package/harmony/quick_crypto/src/main/cpp/nitro/shared/Promise.cpp +136 -0
  894. package/harmony/quick_crypto/src/main/cpp/nitro/shared/Promise.hpp +324 -0
  895. package/harmony/quick_crypto/src/main/cpp/nitro/shared/PromiseType.hpp +44 -0
  896. package/harmony/quick_crypto/src/main/cpp/nitro/shared/Prototype.hpp +182 -0
  897. package/harmony/quick_crypto/src/main/cpp/nitro/shared/PrototypeChain.hpp +78 -0
  898. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ReferenceState.hpp +40 -0
  899. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ThreadPool.cpp +99 -0
  900. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ThreadPool.hpp +66 -0
  901. package/harmony/quick_crypto/src/main/cpp/nitro/shared/ThreadUtils.hpp +31 -0
  902. package/harmony/quick_crypto/src/main/cpp/nitro/shared/TypeIndex.hpp +29 -0
  903. package/harmony/quick_crypto/src/main/cpp/nitro/shared/WeakReference+Owning.hpp +33 -0
  904. package/harmony/quick_crypto/src/main/cpp/nitro/shared/WeakReference.hpp +102 -0
  905. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/AsymmetricKeyType.hpp +128 -0
  906. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/CipherArgs.hpp +101 -0
  907. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/CipherInfo.hpp +104 -0
  908. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridArgon2Spec.cpp +22 -0
  909. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridArgon2Spec.hpp +66 -0
  910. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridBlake3Spec.cpp +28 -0
  911. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridBlake3Spec.hpp +74 -0
  912. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCertificateSpec.cpp +23 -0
  913. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCertificateSpec.hpp +64 -0
  914. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherFactorySpec.cpp +21 -0
  915. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherFactorySpec.hpp +67 -0
  916. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherSpec.cpp +29 -0
  917. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherSpec.hpp +78 -0
  918. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDhKeyPairSpec.cpp +27 -0
  919. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDhKeyPairSpec.hpp +69 -0
  920. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDiffieHellmanSpec.cpp +31 -0
  921. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDiffieHellmanSpec.hpp +72 -0
  922. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDsaKeyPairSpec.cpp +26 -0
  923. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDsaKeyPairSpec.hpp +68 -0
  924. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridECDHSpec.cpp +28 -0
  925. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridECDHSpec.hpp +70 -0
  926. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEcKeyPairSpec.cpp +30 -0
  927. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEcKeyPairSpec.hpp +76 -0
  928. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEdKeyPairSpec.cpp +30 -0
  929. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEdKeyPairSpec.hpp +74 -0
  930. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHashSpec.cpp +26 -0
  931. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHashSpec.hpp +74 -0
  932. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHkdfSpec.cpp +22 -0
  933. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHkdfSpec.hpp +65 -0
  934. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHmacSpec.cpp +23 -0
  935. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHmacSpec.hpp +66 -0
  936. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKeyObjectHandleSpec.cpp +30 -0
  937. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKeyObjectHandleSpec.hpp +98 -0
  938. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKmacSpec.cpp +23 -0
  939. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKmacSpec.hpp +66 -0
  940. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlDsaKeyPairSpec.cpp +29 -0
  941. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlDsaKeyPairSpec.hpp +72 -0
  942. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlKemKeyPairSpec.cpp +31 -0
  943. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlKemKeyPairSpec.hpp +74 -0
  944. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPbkdf2Spec.cpp +22 -0
  945. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPbkdf2Spec.hpp +65 -0
  946. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPrimeSpec.cpp +24 -0
  947. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPrimeSpec.hpp +67 -0
  948. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRandomSpec.cpp +22 -0
  949. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRandomSpec.hpp +64 -0
  950. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaCipherSpec.cpp +25 -0
  951. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaCipherSpec.hpp +71 -0
  952. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaKeyPairSpec.cpp +29 -0
  953. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaKeyPairSpec.hpp +75 -0
  954. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridScryptSpec.cpp +22 -0
  955. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridScryptSpec.hpp +64 -0
  956. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridSignHandleSpec.cpp +23 -0
  957. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridSignHandleSpec.hpp +69 -0
  958. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridUtilsSpec.cpp +23 -0
  959. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridUtilsSpec.hpp +65 -0
  960. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridVerifyHandleSpec.cpp +23 -0
  961. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridVerifyHandleSpec.hpp +69 -0
  962. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridX509CertificateHandleSpec.cpp +46 -0
  963. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridX509CertificateHandleSpec.hpp +96 -0
  964. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/JWK.hpp +177 -0
  965. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/JWKkty.hpp +88 -0
  966. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/JWKuse.hpp +76 -0
  967. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KFormatType.hpp +63 -0
  968. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyDetail.hpp +108 -0
  969. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyEncoding.hpp +64 -0
  970. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyObject.hpp +83 -0
  971. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyType.hpp +63 -0
  972. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyUsage.hpp +116 -0
  973. package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/NamedCurve.hpp +80 -0
  974. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/README.md +11 -0
  975. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H +22 -0
  976. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H +26 -0
  977. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/aes.h +111 -0
  978. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1.h +1134 -0
  979. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1.h.in +967 -0
  980. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1err.h +142 -0
  981. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1t.h +946 -0
  982. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1t.h.in +923 -0
  983. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/async.h +104 -0
  984. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asyncerr.h +29 -0
  985. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bio.h +1022 -0
  986. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bio.h.in +999 -0
  987. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bioerr.h +72 -0
  988. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/blowfish.h +78 -0
  989. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bn.h +590 -0
  990. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bnerr.h +47 -0
  991. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/buffer.h +62 -0
  992. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/buffererr.h +25 -0
  993. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/byteorder.h +339 -0
  994. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/camellia.h +117 -0
  995. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cast.h +71 -0
  996. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmac.h +52 -0
  997. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmp.h +727 -0
  998. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmp.h.in +584 -0
  999. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmp_util.h +56 -0
  1000. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmperr.h +134 -0
  1001. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cms.h +520 -0
  1002. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cms.h.in +422 -0
  1003. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmserr.h +129 -0
  1004. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/comp.h +98 -0
  1005. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/comp.h.in +76 -0
  1006. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/comperr.h +38 -0
  1007. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conf.h +214 -0
  1008. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conf.h.in +177 -0
  1009. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conf_api.h +46 -0
  1010. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conferr.h +52 -0
  1011. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/configuration.h +224 -0
  1012. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/configuration.h.in +75 -0
  1013. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conftypes.h +44 -0
  1014. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core.h +236 -0
  1015. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_dispatch.h +1156 -0
  1016. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_names.h +584 -0
  1017. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_names.h.in +129 -0
  1018. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_object.h +41 -0
  1019. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crmf.h +278 -0
  1020. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crmf.h.in +207 -0
  1021. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crmferr.h +57 -0
  1022. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crypto.h +614 -0
  1023. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crypto.h.in +591 -0
  1024. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cryptoerr.h +56 -0
  1025. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cryptoerr_legacy.h +1466 -0
  1026. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ct.h +573 -0
  1027. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ct.h.in +525 -0
  1028. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cterr.h +45 -0
  1029. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/decoder.h +133 -0
  1030. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/decodererr.h +28 -0
  1031. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/des.h +211 -0
  1032. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dh.h +339 -0
  1033. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dherr.h +59 -0
  1034. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dsa.h +280 -0
  1035. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dsaerr.h +44 -0
  1036. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dtls1.h +57 -0
  1037. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/e_os2.h +310 -0
  1038. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/e_ostime.h +38 -0
  1039. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ebcdic.h +39 -0
  1040. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ec.h +1588 -0
  1041. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ecdh.h +10 -0
  1042. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ecdsa.h +10 -0
  1043. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ecerr.h +104 -0
  1044. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/encoder.h +124 -0
  1045. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/encodererr.h +28 -0
  1046. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/engine.h +833 -0
  1047. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/engineerr.h +63 -0
  1048. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/err.h +512 -0
  1049. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/err.h.in +501 -0
  1050. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ess.h +128 -0
  1051. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ess.h.in +81 -0
  1052. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/esserr.h +32 -0
  1053. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/evp.h +2345 -0
  1054. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/evperr.h +148 -0
  1055. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/fips_names.h +50 -0
  1056. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/fipskey.h +41 -0
  1057. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/fipskey.h.in +40 -0
  1058. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/hmac.h +62 -0
  1059. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/hpke.h +169 -0
  1060. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/http.h +119 -0
  1061. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/httperr.h +56 -0
  1062. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/idea.h +82 -0
  1063. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/indicator.h +31 -0
  1064. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/kdf.h +142 -0
  1065. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/kdferr.h +16 -0
  1066. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/lhash.h +398 -0
  1067. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/lhash.h.in +373 -0
  1068. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/macros.h +361 -0
  1069. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/md2.h +56 -0
  1070. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/md4.h +63 -0
  1071. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/md5.h +62 -0
  1072. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/mdc2.h +55 -0
  1073. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ml_kem.h +31 -0
  1074. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/modes.h +219 -0
  1075. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/obj_mac.h +6695 -0
  1076. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/objects.h +184 -0
  1077. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/objectserr.h +28 -0
  1078. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ocsp.h +483 -0
  1079. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ocsp.h.in +387 -0
  1080. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ocsperr.h +53 -0
  1081. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/opensslconf.h +17 -0
  1082. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/opensslv.h +109 -0
  1083. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/opensslv.h.in +108 -0
  1084. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ossl_typ.h +16 -0
  1085. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/param_build.h +63 -0
  1086. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/params.h +166 -0
  1087. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pem.h +548 -0
  1088. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pem2.h +19 -0
  1089. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pemerr.h +59 -0
  1090. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs12.h +372 -0
  1091. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs12.h.in +349 -0
  1092. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs12err.h +46 -0
  1093. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs7.h +430 -0
  1094. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs7.h.in +359 -0
  1095. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs7err.h +63 -0
  1096. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/prov_ssl.h +38 -0
  1097. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/proverr.h +171 -0
  1098. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/provider.h +94 -0
  1099. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/quic.h +75 -0
  1100. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rand.h +131 -0
  1101. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/randerr.h +70 -0
  1102. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rc2.h +68 -0
  1103. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rc4.h +47 -0
  1104. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rc5.h +79 -0
  1105. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ripemd.h +59 -0
  1106. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rsa.h +615 -0
  1107. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rsaerr.h +107 -0
  1108. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/safestack.h +320 -0
  1109. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/safestack.h.in +250 -0
  1110. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/seed.h +113 -0
  1111. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/self_test.h +116 -0
  1112. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/sha.h +139 -0
  1113. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/srp.h +285 -0
  1114. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/srp.h.in +214 -0
  1115. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/srtp.h +68 -0
  1116. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl.h +2940 -0
  1117. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl.h.in +2893 -0
  1118. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl2.h +30 -0
  1119. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl3.h +358 -0
  1120. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/sslerr.h +382 -0
  1121. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/sslerr_legacy.h +467 -0
  1122. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/stack.h +92 -0
  1123. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/store.h +379 -0
  1124. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/storeerr.h +49 -0
  1125. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/symhacks.h +39 -0
  1126. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/thread.h +31 -0
  1127. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/tls1.h +1226 -0
  1128. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/trace.h +321 -0
  1129. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ts.h +522 -0
  1130. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/tserr.h +67 -0
  1131. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/txt_db.h +63 -0
  1132. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/types.h +248 -0
  1133. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ui.h +407 -0
  1134. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ui.h.in +384 -0
  1135. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/uierr.h +38 -0
  1136. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/whrlpool.h +62 -0
  1137. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509.h +1304 -0
  1138. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509.h.in +1110 -0
  1139. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_acert.h +294 -0
  1140. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_acert.h.in +199 -0
  1141. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_vfy.h +921 -0
  1142. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_vfy.h.in +824 -0
  1143. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509err.h +70 -0
  1144. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509v3.h +1968 -0
  1145. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509v3.h.in +1367 -0
  1146. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509v3err.h +97 -0
  1147. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/lib/libcrypto.a +0 -0
  1148. package/harmony/quick_crypto/src/main/cpp/third_party/openssl/lib/libssl.a +0 -0
  1149. package/harmony/quick_crypto/src/main/ets/QuickCryptoTurboModule.ts +14 -0
  1150. package/harmony/quick_crypto/src/main/ets/QuickCryptoTurboModulesFactory.ets +26 -0
  1151. package/harmony/quick_crypto/src/main/ets/generated/index.ets +5 -0
  1152. package/harmony/quick_crypto/src/main/ets/generated/ts.ts +5 -0
  1153. package/harmony/quick_crypto/src/main/ets/generated/turboModules/QuickCrypto.ts +14 -0
  1154. package/harmony/quick_crypto/src/main/ets/generated/turboModules/ts.ts +5 -0
  1155. package/harmony/quick_crypto/src/main/ets/nitro/Logger.ts +58 -0
  1156. package/harmony/quick_crypto/src/main/ets/nitro/NitroModulesModule.ts +134 -0
  1157. package/harmony/quick_crypto/src/main/module.json5 +13 -0
  1158. package/harmony/quick_crypto/src/main/resources/base/element/string.json +8 -0
  1159. package/harmony/quick_crypto/src/main/resources/en_US/element/string.json +8 -0
  1160. package/harmony/quick_crypto/src/main/resources/zh_CN/element/string.json +8 -0
  1161. package/harmony/quick_crypto.har +0 -0
  1162. package/package.json +87 -0
  1163. package/src/argon2.ts +83 -0
  1164. package/src/blake3.ts +124 -0
  1165. package/src/certificate.ts +41 -0
  1166. package/src/cipher.ts +373 -0
  1167. package/src/constants.ts +32 -0
  1168. package/src/dh-groups.ts +27 -0
  1169. package/src/dhKeyPair.ts +156 -0
  1170. package/src/diffie-hellman.ts +195 -0
  1171. package/src/dsa.ts +129 -0
  1172. package/src/ec.ts +557 -0
  1173. package/src/ecdh.ts +132 -0
  1174. package/src/ed.ts +526 -0
  1175. package/src/expo-plugin/@types.ts +7 -0
  1176. package/src/expo-plugin/withRNQC.ts +23 -0
  1177. package/src/expo-plugin/withSodiumAndroid.ts +24 -0
  1178. package/src/expo-plugin/withSodiumIos.ts +25 -0
  1179. package/src/expo-plugin/withXCode.ts +55 -0
  1180. package/src/hash.ts +320 -0
  1181. package/src/hkdf.ts +147 -0
  1182. package/src/hmac.ts +140 -0
  1183. package/src/index.ts +144 -0
  1184. package/src/keys/classes.ts +332 -0
  1185. package/src/keys/generateKeyPair.ts +212 -0
  1186. package/src/keys/index.ts +298 -0
  1187. package/src/keys/publicCipher.ts +250 -0
  1188. package/src/keys/signVerify.ts +318 -0
  1189. package/src/keys/utils.ts +190 -0
  1190. package/src/mldsa.ts +125 -0
  1191. package/src/mlkem.ts +350 -0
  1192. package/src/pbkdf2.ts +183 -0
  1193. package/src/prime.ts +134 -0
  1194. package/src/random.ts +334 -0
  1195. package/src/rsa.ts +311 -0
  1196. package/src/scrypt.ts +134 -0
  1197. package/src/specs/v1/.gitkeep +1 -0
  1198. package/src/specs/v1/NativeQuickCrypto.ts +19 -0
  1199. package/src/specs/v1/argon2.nitro.ts +29 -0
  1200. package/src/specs/v1/blake3.nitro.ts +12 -0
  1201. package/src/specs/v1/certificate.nitro.ts +8 -0
  1202. package/src/specs/v1/cipher.nitro.ts +39 -0
  1203. package/src/specs/v1/dhKeyPair.nitro.ts +14 -0
  1204. package/src/specs/v1/diffie-hellman.nitro.ts +16 -0
  1205. package/src/specs/v1/dsaKeyPair.nitro.ts +13 -0
  1206. package/src/specs/v1/ecKeyPair.nitro.ts +40 -0
  1207. package/src/specs/v1/ecdh.nitro.ts +12 -0
  1208. package/src/specs/v1/edKeyPair.nitro.ts +43 -0
  1209. package/src/specs/v1/hash.nitro.ts +10 -0
  1210. package/src/specs/v1/hkdf.nitro.ts +19 -0
  1211. package/src/specs/v1/hmac.nitro.ts +7 -0
  1212. package/src/specs/v1/keyObjectHandle.nitro.ts +39 -0
  1213. package/src/specs/v1/kmac.nitro.ts +12 -0
  1214. package/src/specs/v1/mlDsaKeyPair.nitro.ts +29 -0
  1215. package/src/specs/v1/mlKemKeyPair.nitro.ts +32 -0
  1216. package/src/specs/v1/pbkdf2.nitro.ts +18 -0
  1217. package/src/specs/v1/prime.nitro.ts +18 -0
  1218. package/src/specs/v1/random.nitro.ts +14 -0
  1219. package/src/specs/v1/rsaCipher.nitro.ts +82 -0
  1220. package/src/specs/v1/rsaKeyPair.nitro.ts +33 -0
  1221. package/src/specs/v1/scrypt.nitro.ts +23 -0
  1222. package/src/specs/v1/sign.nitro.ts +31 -0
  1223. package/src/specs/v1/utils.nitro.ts +7 -0
  1224. package/src/specs/v1/x509certificate.nitro.ts +38 -0
  1225. package/src/specs/v2/.gitkeep +1 -0
  1226. package/src/subtle.ts +2922 -0
  1227. package/src/utils/cipher.ts +60 -0
  1228. package/src/utils/conversion.ts +194 -0
  1229. package/src/utils/errors.ts +15 -0
  1230. package/src/utils/hashnames.ts +129 -0
  1231. package/src/utils/index.ts +7 -0
  1232. package/src/utils/noble.ts +85 -0
  1233. package/src/utils/timingSafeEqual.ts +23 -0
  1234. package/src/utils/types.ts +547 -0
  1235. package/src/utils/validation.ts +130 -0
  1236. package/src/x509certificate.ts +277 -0
@@ -0,0 +1,1803 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import { Buffer as SBuffer } from 'safe-buffer';
3
+ import { KFormatType, KeyEncoding, KeyType } from './utils';
4
+ import { CryptoKey, KeyObject, PublicKeyObject, PrivateKeyObject, SecretKeyObject } from './keys';
5
+ import { bufferLikeToArrayBuffer } from './utils/conversion';
6
+ import { argon2Sync } from './argon2';
7
+ import { lazyDOMException } from './utils/errors';
8
+ import { normalizeHashName, HashContext } from './utils/hashnames';
9
+ import { validateMaxBufferLength } from './utils/validation';
10
+ import { asyncDigest } from './hash';
11
+ import { createSecretKey, createPublicKey } from './keys';
12
+ import { NitroModules } from 'react-native-nitro-modules';
13
+ import { pbkdf2DeriveBits } from './pbkdf2';
14
+ import { ecImportKey, ecdsaSignVerify, ec_generateKeyPair, ecDeriveBits } from './ec';
15
+ import { rsa_generateKeyPair } from './rsa';
16
+ import { getRandomValues } from './random';
17
+ import { createHmac } from './hmac';
18
+ import { timingSafeEqual } from './utils/timingSafeEqual';
19
+ import { createSign, createVerify } from './keys/signVerify';
20
+ import { ed_generateKeyPairWebCrypto, x_generateKeyPairWebCrypto, xDeriveBits, Ed } from './ed';
21
+ import { mldsa_generateKeyPairWebCrypto } from './mldsa';
22
+ import { mlkem_generateKeyPairWebCrypto, MlKem } from './mlkem';
23
+ import { hkdfDeriveBits } from './hkdf';
24
+ // Temporary enums that need to be defined
25
+ var KWebCryptoKeyFormat = /*#__PURE__*/function (KWebCryptoKeyFormat) {
26
+ KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatRaw"] = 0] = "kWebCryptoKeyFormatRaw";
27
+ KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatSPKI"] = 1] = "kWebCryptoKeyFormatSPKI";
28
+ KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatPKCS8"] = 2] = "kWebCryptoKeyFormatPKCS8";
29
+ return KWebCryptoKeyFormat;
30
+ }(KWebCryptoKeyFormat || {});
31
+ var CipherOrWrapMode = /*#__PURE__*/function (CipherOrWrapMode) {
32
+ CipherOrWrapMode[CipherOrWrapMode["kWebCryptoCipherEncrypt"] = 0] = "kWebCryptoCipherEncrypt";
33
+ CipherOrWrapMode[CipherOrWrapMode["kWebCryptoCipherDecrypt"] = 1] = "kWebCryptoCipherDecrypt";
34
+ return CipherOrWrapMode;
35
+ }(CipherOrWrapMode || {}); // Placeholder functions that need to be implemented
36
+ function hasAnyNotIn(usages, allowed) {
37
+ return usages.some(usage => !allowed.includes(usage));
38
+ }
39
+ function normalizeAlgorithm(algorithm, _operation) {
40
+ if (typeof algorithm === 'string') {
41
+ return {
42
+ name: algorithm
43
+ };
44
+ }
45
+ return algorithm;
46
+ }
47
+ function getAlgorithmName(name, length) {
48
+ switch (name) {
49
+ case 'AES-CBC':
50
+ return `A${length}CBC`;
51
+ case 'AES-CTR':
52
+ return `A${length}CTR`;
53
+ case 'AES-GCM':
54
+ return `A${length}GCM`;
55
+ case 'AES-KW':
56
+ return `A${length}KW`;
57
+ case 'AES-OCB':
58
+ return `A${length}OCB`;
59
+ case 'ChaCha20-Poly1305':
60
+ return 'C20P';
61
+ default:
62
+ return `${name}${length}`;
63
+ }
64
+ }
65
+
66
+ // Placeholder implementations for missing functions
67
+ function ecExportKey(key, format) {
68
+ const keyObject = key.keyObject;
69
+ if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw) {
70
+ return bufferLikeToArrayBuffer(keyObject.handle.exportKey());
71
+ } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {
72
+ const exported = keyObject.export({
73
+ format: 'der',
74
+ type: 'spki'
75
+ });
76
+ return bufferLikeToArrayBuffer(exported);
77
+ } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {
78
+ const exported = keyObject.export({
79
+ format: 'der',
80
+ type: 'pkcs8'
81
+ });
82
+ return bufferLikeToArrayBuffer(exported);
83
+ } else {
84
+ throw new Error(`Unsupported EC export format: ${format}`);
85
+ }
86
+ }
87
+ function rsaExportKey(key, format) {
88
+ const keyObject = key.keyObject;
89
+ if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {
90
+ // Export public key in SPKI format
91
+ const exported = keyObject.export({
92
+ format: 'der',
93
+ type: 'spki'
94
+ });
95
+ return bufferLikeToArrayBuffer(exported);
96
+ } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {
97
+ // Export private key in PKCS8 format
98
+ const exported = keyObject.export({
99
+ format: 'der',
100
+ type: 'pkcs8'
101
+ });
102
+ return bufferLikeToArrayBuffer(exported);
103
+ } else {
104
+ throw new Error(`Unsupported RSA export format: ${format}`);
105
+ }
106
+ }
107
+ async function rsaCipher(mode, key, data, algorithm) {
108
+ const rsaParams = algorithm;
109
+
110
+ // Validate key type matches operation
111
+ const expectedType = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt ? 'public' : 'private';
112
+ if (key.type !== expectedType) {
113
+ throw lazyDOMException('The requested operation is not valid for the provided key', 'InvalidAccessError');
114
+ }
115
+
116
+ // Get hash algorithm from key
117
+ const hashAlgorithm = normalizeHashName(key.algorithm.hash);
118
+
119
+ // Prepare label (optional)
120
+ const label = rsaParams.label ? bufferLikeToArrayBuffer(rsaParams.label) : undefined;
121
+
122
+ // Create RSA cipher instance
123
+ const rsaCipherModule = NitroModules.createHybridObject('RsaCipher');
124
+
125
+ // RSA-OAEP padding constant = 4
126
+ const RSA_PKCS1_OAEP_PADDING = 4;
127
+ if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {
128
+ // Encrypt with public key
129
+ return rsaCipherModule.encrypt(key.keyObject.handle, data, RSA_PKCS1_OAEP_PADDING, hashAlgorithm, label);
130
+ } else {
131
+ // Decrypt with private key
132
+ return rsaCipherModule.decrypt(key.keyObject.handle, data, RSA_PKCS1_OAEP_PADDING, hashAlgorithm, label);
133
+ }
134
+ }
135
+ async function aesCipher(mode, key, data, algorithm) {
136
+ const {
137
+ name
138
+ } = algorithm;
139
+ switch (name) {
140
+ case 'AES-CTR':
141
+ return aesCtrCipher(mode, key, data, algorithm);
142
+ case 'AES-CBC':
143
+ return aesCbcCipher(mode, key, data, algorithm);
144
+ case 'AES-GCM':
145
+ return aesGcmCipher(mode, key, data, algorithm);
146
+ case 'AES-OCB':
147
+ return aesOcbCipher(mode, key, data, algorithm);
148
+ default:
149
+ throw lazyDOMException(`Unsupported AES algorithm: ${name}`, 'NotSupportedError');
150
+ }
151
+ }
152
+ async function aesCtrCipher(mode, key, data, algorithm) {
153
+ // Validate counter and length
154
+ if (!algorithm.counter || algorithm.counter.byteLength !== 16) {
155
+ throw lazyDOMException('AES-CTR algorithm.counter must be 16 bytes', 'OperationError');
156
+ }
157
+ if (algorithm.length < 1 || algorithm.length > 128) {
158
+ throw lazyDOMException('AES-CTR algorithm.length must be between 1 and 128', 'OperationError');
159
+ }
160
+
161
+ // Get cipher type based on key length
162
+ const keyLength = key.algorithm.length;
163
+ const cipherType = `aes-${keyLength}-ctr`;
164
+
165
+ // Create cipher
166
+ const factory = NitroModules.createHybridObject('CipherFactory');
167
+ const cipher = factory.createCipher({
168
+ isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
169
+ cipherType,
170
+ cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
171
+ iv: bufferLikeToArrayBuffer(algorithm.counter)
172
+ });
173
+
174
+ // Process data
175
+ const updated = cipher.update(data);
176
+ const final = cipher.final();
177
+
178
+ // Concatenate results
179
+ const result = new Uint8Array(updated.byteLength + final.byteLength);
180
+ result.set(new Uint8Array(updated), 0);
181
+ result.set(new Uint8Array(final), updated.byteLength);
182
+ return result.buffer;
183
+ }
184
+ async function aesCbcCipher(mode, key, data, algorithm) {
185
+ // Validate IV
186
+ const iv = bufferLikeToArrayBuffer(algorithm.iv);
187
+ if (iv.byteLength !== 16) {
188
+ throw lazyDOMException('algorithm.iv must contain exactly 16 bytes', 'OperationError');
189
+ }
190
+
191
+ // Get cipher type based on key length
192
+ const keyLength = key.algorithm.length;
193
+ const cipherType = `aes-${keyLength}-cbc`;
194
+
195
+ // Create cipher
196
+ const factory = NitroModules.createHybridObject('CipherFactory');
197
+ const cipher = factory.createCipher({
198
+ isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
199
+ cipherType,
200
+ cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
201
+ iv
202
+ });
203
+
204
+ // Process data
205
+ const updated = cipher.update(data);
206
+ const final = cipher.final();
207
+
208
+ // Concatenate results
209
+ const result = new Uint8Array(updated.byteLength + final.byteLength);
210
+ result.set(new Uint8Array(updated), 0);
211
+ result.set(new Uint8Array(final), updated.byteLength);
212
+ return result.buffer;
213
+ }
214
+ async function aesAeadCipher(mode, key, data, config, additionalData, tagLength = 128) {
215
+ if (!config.validTagLengths.includes(tagLength)) {
216
+ throw lazyDOMException(`${tagLength} is not a valid ${config.algorithmName} tag length`, 'OperationError');
217
+ }
218
+ const tagByteLength = tagLength / 8;
219
+ const keyLength = key.algorithm.length;
220
+ const cipherType = `aes-${keyLength}-${config.cipherSuffix}`;
221
+ const factory = NitroModules.createHybridObject('CipherFactory');
222
+ const cipher = factory.createCipher({
223
+ isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
224
+ cipherType,
225
+ cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
226
+ iv: config.iv,
227
+ authTagLen: tagByteLength
228
+ });
229
+ let processData;
230
+ if (mode === CipherOrWrapMode.kWebCryptoCipherDecrypt) {
231
+ const dataView = new Uint8Array(data);
232
+ if (dataView.byteLength < tagByteLength) {
233
+ throw lazyDOMException('The provided data is too small.', 'OperationError');
234
+ }
235
+ const ciphertextLength = dataView.byteLength - tagByteLength;
236
+ processData = dataView.slice(0, ciphertextLength).buffer;
237
+ const authTag = dataView.slice(ciphertextLength).buffer;
238
+ cipher.setAuthTag(authTag);
239
+ } else {
240
+ processData = data;
241
+ }
242
+ if (additionalData) {
243
+ cipher.setAAD(bufferLikeToArrayBuffer(additionalData));
244
+ }
245
+ const updated = cipher.update(processData);
246
+ const final = cipher.final();
247
+ if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {
248
+ const tag = cipher.getAuthTag();
249
+ const result = new Uint8Array(updated.byteLength + final.byteLength + tag.byteLength);
250
+ result.set(new Uint8Array(updated), 0);
251
+ result.set(new Uint8Array(final), updated.byteLength);
252
+ result.set(new Uint8Array(tag), updated.byteLength + final.byteLength);
253
+ return result.buffer;
254
+ } else {
255
+ const result = new Uint8Array(updated.byteLength + final.byteLength);
256
+ result.set(new Uint8Array(updated), 0);
257
+ result.set(new Uint8Array(final), updated.byteLength);
258
+ return result.buffer;
259
+ }
260
+ }
261
+ async function aesGcmCipher(mode, key, data, algorithm) {
262
+ return aesAeadCipher(mode, key, data, {
263
+ algorithmName: 'AES-GCM',
264
+ validTagLengths: [32, 64, 96, 104, 112, 120, 128],
265
+ cipherSuffix: 'gcm',
266
+ iv: bufferLikeToArrayBuffer(algorithm.iv)
267
+ }, algorithm.additionalData, algorithm.tagLength);
268
+ }
269
+ async function aesOcbCipher(mode, key, data, algorithm) {
270
+ const ivBuffer = bufferLikeToArrayBuffer(algorithm.iv);
271
+ if (ivBuffer.byteLength < 1 || ivBuffer.byteLength > 15) {
272
+ throw lazyDOMException('AES-OCB algorithm.iv must be between 1 and 15 bytes', 'OperationError');
273
+ }
274
+ return aesAeadCipher(mode, key, data, {
275
+ algorithmName: 'AES-OCB',
276
+ validTagLengths: [64, 96, 128],
277
+ cipherSuffix: 'ocb',
278
+ iv: ivBuffer
279
+ }, algorithm.additionalData, algorithm.tagLength);
280
+ }
281
+ async function aesKwCipher(mode, key, data) {
282
+ const isWrap = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt;
283
+
284
+ // AES-KW requires input to be a multiple of 8 bytes (64 bits)
285
+ if (data.byteLength % 8 !== 0) {
286
+ throw lazyDOMException(`AES-KW input length must be a multiple of 8 bytes, got ${data.byteLength}`, 'OperationError');
287
+ }
288
+
289
+ // AES-KW requires at least 16 bytes of input (128 bits)
290
+ if (isWrap && data.byteLength < 16) {
291
+ throw lazyDOMException(`AES-KW input must be at least 16 bytes, got ${data.byteLength}`, 'OperationError');
292
+ }
293
+
294
+ // Get cipher type based on key length
295
+ const keyLength = key.algorithm.length;
296
+ // Use aes*-wrap for both operations (matching Node.js)
297
+ const cipherType = `aes${keyLength}-wrap`;
298
+
299
+ // Export key material
300
+ const exportedKey = key.keyObject.export();
301
+ const cipherKey = bufferLikeToArrayBuffer(exportedKey);
302
+
303
+ // AES-KW uses a default IV as specified in RFC 3394
304
+ const defaultWrapIV = new Uint8Array([0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6]);
305
+ const factory = NitroModules.createHybridObject('CipherFactory');
306
+ const cipher = factory.createCipher({
307
+ isCipher: isWrap,
308
+ cipherType,
309
+ cipherKey,
310
+ iv: defaultWrapIV.buffer // RFC 3394 default IV for AES-KW
311
+ });
312
+
313
+ // Process data
314
+ const updated = cipher.update(data);
315
+ const final = cipher.final();
316
+
317
+ // Concatenate results
318
+ const result = new Uint8Array(updated.byteLength + final.byteLength);
319
+ result.set(new Uint8Array(updated), 0);
320
+ result.set(new Uint8Array(final), updated.byteLength);
321
+ return result.buffer;
322
+ }
323
+ async function chaCha20Poly1305Cipher(mode, key, data, algorithm) {
324
+ const {
325
+ iv,
326
+ additionalData,
327
+ tagLength = 128
328
+ } = algorithm;
329
+
330
+ // Validate IV (must be 12 bytes for ChaCha20-Poly1305)
331
+ const ivBuffer = bufferLikeToArrayBuffer(iv);
332
+ if (!ivBuffer || ivBuffer.byteLength !== 12) {
333
+ throw lazyDOMException('ChaCha20-Poly1305 IV must be exactly 12 bytes', 'OperationError');
334
+ }
335
+
336
+ // Validate tag length (only 128-bit supported)
337
+ if (tagLength !== 128) {
338
+ throw lazyDOMException('ChaCha20-Poly1305 only supports 128-bit auth tags', 'NotSupportedError');
339
+ }
340
+ const tagByteLength = 16; // 128 bits = 16 bytes
341
+
342
+ // Create cipher using existing ChaCha20-Poly1305 implementation
343
+ const factory = NitroModules.createHybridObject('CipherFactory');
344
+ const cipher = factory.createCipher({
345
+ isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
346
+ cipherType: 'chacha20-poly1305',
347
+ cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
348
+ iv: ivBuffer,
349
+ authTagLen: tagByteLength
350
+ });
351
+ let processData;
352
+ let authTag;
353
+ if (mode === CipherOrWrapMode.kWebCryptoCipherDecrypt) {
354
+ // For decryption, extract auth tag from end of data
355
+ const dataView = new Uint8Array(data);
356
+ if (dataView.byteLength < tagByteLength) {
357
+ throw lazyDOMException('The provided data is too small.', 'OperationError');
358
+ }
359
+
360
+ // Split data and tag
361
+ const ciphertextLength = dataView.byteLength - tagByteLength;
362
+ processData = dataView.slice(0, ciphertextLength).buffer;
363
+ authTag = dataView.slice(ciphertextLength).buffer;
364
+
365
+ // Set auth tag for verification
366
+ cipher.setAuthTag(authTag);
367
+ } else {
368
+ processData = data;
369
+ }
370
+
371
+ // Set additional authenticated data if provided
372
+ if (additionalData) {
373
+ cipher.setAAD(bufferLikeToArrayBuffer(additionalData));
374
+ }
375
+
376
+ // Process data
377
+ const updated = cipher.update(processData);
378
+ const final = cipher.final();
379
+ if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {
380
+ // For encryption, append auth tag to result
381
+ const tag = cipher.getAuthTag();
382
+ const result = new Uint8Array(updated.byteLength + final.byteLength + tag.byteLength);
383
+ result.set(new Uint8Array(updated), 0);
384
+ result.set(new Uint8Array(final), updated.byteLength);
385
+ result.set(new Uint8Array(tag), updated.byteLength + final.byteLength);
386
+ return result.buffer;
387
+ } else {
388
+ // For decryption, just concatenate plaintext
389
+ const result = new Uint8Array(updated.byteLength + final.byteLength);
390
+ result.set(new Uint8Array(updated), 0);
391
+ result.set(new Uint8Array(final), updated.byteLength);
392
+ return result.buffer;
393
+ }
394
+ }
395
+ async function aesGenerateKey(algorithm, extractable, keyUsages) {
396
+ const {
397
+ length
398
+ } = algorithm;
399
+ const name = algorithm.name;
400
+ if (!name) {
401
+ throw lazyDOMException('Algorithm name is required', 'OperationError');
402
+ }
403
+
404
+ // Validate key length
405
+ if (![128, 192, 256].includes(length)) {
406
+ throw lazyDOMException(`Invalid AES key length: ${length}. Must be 128, 192, or 256.`, 'OperationError');
407
+ }
408
+
409
+ // Validate usages
410
+ const validUsages = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'];
411
+ if (hasAnyNotIn(keyUsages, validUsages)) {
412
+ throw lazyDOMException(`Unsupported key usage for ${name}`, 'SyntaxError');
413
+ }
414
+
415
+ // Generate random key bytes
416
+ const keyBytes = new Uint8Array(length / 8);
417
+ getRandomValues(keyBytes);
418
+
419
+ // Create secret key
420
+ const keyObject = createSecretKey(keyBytes);
421
+
422
+ // Construct algorithm object with guaranteed name
423
+ const keyAlgorithm = {
424
+ name,
425
+ length
426
+ };
427
+ return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
428
+ }
429
+ async function hmacGenerateKey(algorithm, extractable, keyUsages) {
430
+ // Validate usages
431
+ if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
432
+ throw lazyDOMException('Unsupported key usage for HMAC key', 'SyntaxError');
433
+ }
434
+
435
+ // Get hash algorithm
436
+ const hash = algorithm.hash;
437
+ if (!hash) {
438
+ throw lazyDOMException('HMAC algorithm requires a hash parameter', 'TypeError');
439
+ }
440
+ const hashName = normalizeHashName(hash);
441
+
442
+ // Determine key length
443
+ let length = algorithm.length;
444
+ if (length === undefined) {
445
+ // Use hash output length as default key length
446
+ switch (hashName) {
447
+ case 'SHA-1':
448
+ length = 160;
449
+ break;
450
+ case 'SHA-256':
451
+ length = 256;
452
+ break;
453
+ case 'SHA-384':
454
+ length = 384;
455
+ break;
456
+ case 'SHA-512':
457
+ length = 512;
458
+ break;
459
+ default:
460
+ length = 256;
461
+ // Default to 256 bits
462
+ }
463
+ }
464
+ if (length === 0) {
465
+ throw lazyDOMException('Zero-length key is not supported', 'OperationError');
466
+ }
467
+
468
+ // Generate random key bytes
469
+ const keyBytes = new Uint8Array(Math.ceil(length / 8));
470
+ getRandomValues(keyBytes);
471
+
472
+ // Create secret key
473
+ const keyObject = createSecretKey(keyBytes);
474
+
475
+ // Construct algorithm object with hash normalized to { name: string } format per WebCrypto spec
476
+ const webCryptoHashName = normalizeHashName(hash, HashContext.WebCrypto);
477
+ const keyAlgorithm = {
478
+ name: 'HMAC',
479
+ hash: {
480
+ name: webCryptoHashName
481
+ },
482
+ length
483
+ };
484
+ return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
485
+ }
486
+ async function kmacGenerateKey(algorithm, extractable, keyUsages) {
487
+ const {
488
+ name
489
+ } = algorithm;
490
+ if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
491
+ throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
492
+ }
493
+ const defaultLength = name === 'KMAC128' ? 128 : 256;
494
+ const length = algorithm.length ?? defaultLength;
495
+ if (length === 0) {
496
+ throw lazyDOMException('Zero-length key is not supported', 'OperationError');
497
+ }
498
+ const keyBytes = new Uint8Array(Math.ceil(length / 8));
499
+ getRandomValues(keyBytes);
500
+ const keyObject = createSecretKey(keyBytes);
501
+ const keyAlgorithm = {
502
+ name: name,
503
+ length
504
+ };
505
+ return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
506
+ }
507
+ function kmacSignVerify(key, data, algorithm, signature) {
508
+ const {
509
+ name
510
+ } = algorithm;
511
+ const defaultLength = name === 'KMAC128' ? 256 : 512;
512
+ const outputLengthBits = algorithm.length ?? defaultLength;
513
+ if (outputLengthBits % 8 !== 0) {
514
+ throw lazyDOMException('KMAC output length must be a multiple of 8', 'OperationError');
515
+ }
516
+ const outputLengthBytes = outputLengthBits / 8;
517
+ const keyData = key.keyObject.export();
518
+ const kmac = NitroModules.createHybridObject('Kmac');
519
+ let customizationBuffer;
520
+ if (algorithm.customization !== undefined) {
521
+ customizationBuffer = bufferLikeToArrayBuffer(algorithm.customization);
522
+ }
523
+ kmac.createKmac(name, bufferLikeToArrayBuffer(keyData), outputLengthBytes, customizationBuffer);
524
+ kmac.update(bufferLikeToArrayBuffer(data));
525
+ const computed = kmac.digest();
526
+ if (signature === undefined) {
527
+ return computed;
528
+ }
529
+ const sigBuffer = bufferLikeToArrayBuffer(signature);
530
+ if (computed.byteLength !== sigBuffer.byteLength) {
531
+ return false;
532
+ }
533
+ return timingSafeEqual(new Uint8Array(computed), new Uint8Array(sigBuffer));
534
+ }
535
+ async function kmacImportKey(algorithm, format, data, extractable, keyUsages) {
536
+ const {
537
+ name
538
+ } = algorithm;
539
+ if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
540
+ throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
541
+ }
542
+ let keyObject;
543
+ if (format === 'jwk') {
544
+ const jwk = data;
545
+ if (!jwk || typeof jwk !== 'object') {
546
+ throw lazyDOMException('Invalid keyData', 'DataError');
547
+ }
548
+ if (jwk.kty !== 'oct') {
549
+ throw lazyDOMException('Invalid JWK format for KMAC key', 'DataError');
550
+ }
551
+ const expectedAlg = name === 'KMAC128' ? 'K128' : 'K256';
552
+ if (jwk.alg !== undefined && jwk.alg !== expectedAlg) {
553
+ throw lazyDOMException('JWK "alg" does not match the requested algorithm', 'DataError');
554
+ }
555
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
556
+ const keyType = handle.initJwk(jwk, undefined);
557
+ if (keyType === undefined || keyType !== 0) {
558
+ throw lazyDOMException('Failed to import KMAC JWK', 'DataError');
559
+ }
560
+ keyObject = new SecretKeyObject(handle);
561
+ } else if (format === 'raw' || format === 'raw-secret') {
562
+ keyObject = createSecretKey(data);
563
+ } else {
564
+ throw lazyDOMException(`Unable to import ${name} key with format ${format}`, 'NotSupportedError');
565
+ }
566
+ const exported = keyObject.export();
567
+ const keyLength = exported.byteLength * 8;
568
+ if (keyLength === 0) {
569
+ throw lazyDOMException('Zero-length key is not supported', 'DataError');
570
+ }
571
+ if (algorithm.length !== undefined && algorithm.length !== keyLength) {
572
+ throw lazyDOMException('Invalid key length', 'DataError');
573
+ }
574
+ const keyAlgorithm = {
575
+ name: name,
576
+ length: keyLength
577
+ };
578
+ return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
579
+ }
580
+ function rsaImportKey(format, data, algorithm, extractable, keyUsages) {
581
+ const {
582
+ name
583
+ } = algorithm;
584
+
585
+ // Validate usages
586
+ let checkSet;
587
+ switch (name) {
588
+ case 'RSASSA-PKCS1-v1_5':
589
+ case 'RSA-PSS':
590
+ checkSet = ['sign', 'verify'];
591
+ break;
592
+ case 'RSA-OAEP':
593
+ checkSet = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'];
594
+ break;
595
+ default:
596
+ throw new Error(`Unsupported RSA algorithm: ${name}`);
597
+ }
598
+ if (hasAnyNotIn(keyUsages, checkSet)) {
599
+ throw new Error(`Unsupported key usage for ${name}`);
600
+ }
601
+ let keyObject;
602
+ if (format === 'jwk') {
603
+ const jwk = data;
604
+
605
+ // Validate JWK
606
+ if (jwk.kty !== 'RSA') {
607
+ throw new Error('Invalid JWK format for RSA key');
608
+ }
609
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
610
+ const keyType = handle.initJwk(jwk, undefined);
611
+ if (keyType === undefined) {
612
+ throw new Error('Failed to import RSA JWK');
613
+ }
614
+
615
+ // Create the appropriate KeyObject based on type
616
+ if (keyType === 1) {
617
+ keyObject = new PublicKeyObject(handle);
618
+ } else if (keyType === 2) {
619
+ keyObject = new PrivateKeyObject(handle);
620
+ } else {
621
+ throw new Error('Unexpected key type from RSA JWK import');
622
+ }
623
+ } else if (format === 'spki') {
624
+ const keyData = bufferLikeToArrayBuffer(data);
625
+ keyObject = KeyObject.createKeyObject('public', keyData, KFormatType.DER, KeyEncoding.SPKI);
626
+ } else if (format === 'pkcs8') {
627
+ const keyData = bufferLikeToArrayBuffer(data);
628
+ keyObject = KeyObject.createKeyObject('private', keyData, KFormatType.DER, KeyEncoding.PKCS8);
629
+ } else {
630
+ throw new Error(`Unsupported format for RSA import: ${format}`);
631
+ }
632
+
633
+ // Get the modulus length from the key and add it to the algorithm
634
+ const keyDetails = keyObject.asymmetricKeyDetails;
635
+
636
+ // Convert publicExponent number to big-endian byte array
637
+ let publicExponentBytes;
638
+ if (keyDetails !== null && keyDetails !== void 0 && keyDetails.publicExponent) {
639
+ const exp = keyDetails.publicExponent;
640
+ // Convert number to big-endian bytes
641
+ const bytes = [];
642
+ let value = exp;
643
+ while (value > 0) {
644
+ bytes.unshift(value & 0xff);
645
+ value = Math.floor(value / 256);
646
+ }
647
+ publicExponentBytes = new Uint8Array(bytes.length > 0 ? bytes : [0]);
648
+ }
649
+
650
+ // Normalize hash to { name: string } format per WebCrypto spec
651
+ const hashName = normalizeHashName(algorithm.hash, HashContext.WebCrypto);
652
+ const normalizedHash = {
653
+ name: hashName
654
+ };
655
+ const algorithmWithDetails = {
656
+ ...algorithm,
657
+ modulusLength: keyDetails === null || keyDetails === void 0 ? void 0 : keyDetails.modulusLength,
658
+ publicExponent: publicExponentBytes,
659
+ hash: normalizedHash
660
+ };
661
+ return new CryptoKey(keyObject, algorithmWithDetails, keyUsages, extractable);
662
+ }
663
+ async function hmacImportKey(algorithm, format, data, extractable, keyUsages) {
664
+ // Validate usages
665
+ if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
666
+ throw new Error('Unsupported key usage for an HMAC key');
667
+ }
668
+ let keyObject;
669
+ if (format === 'jwk') {
670
+ const jwk = data;
671
+
672
+ // Validate JWK
673
+ if (!jwk || typeof jwk !== 'object') {
674
+ throw new Error('Invalid keyData');
675
+ }
676
+ if (jwk.kty !== 'oct') {
677
+ throw new Error('Invalid JWK format for HMAC key');
678
+ }
679
+
680
+ // Validate key length if specified
681
+ if (algorithm.length !== undefined) {
682
+ if (!jwk.k) {
683
+ throw new Error('JWK missing key data');
684
+ }
685
+ // Decode to check length
686
+ const decoded = SBuffer.from(jwk.k, 'base64');
687
+ const keyBitLength = decoded.length * 8;
688
+ if (algorithm.length === 0) {
689
+ throw new Error('Zero-length key is not supported');
690
+ }
691
+ if (algorithm.length !== keyBitLength) {
692
+ throw new Error('Invalid key length');
693
+ }
694
+ }
695
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
696
+ const keyType = handle.initJwk(jwk, undefined);
697
+ if (keyType === undefined || keyType !== 0) {
698
+ throw new Error('Failed to import HMAC JWK');
699
+ }
700
+ keyObject = new SecretKeyObject(handle);
701
+ } else if (format === 'raw') {
702
+ keyObject = createSecretKey(data);
703
+ } else {
704
+ throw new Error(`Unable to import HMAC key with format ${format}`);
705
+ }
706
+
707
+ // Normalize hash to { name: string } format per WebCrypto spec
708
+ const hashName = normalizeHashName(algorithm.hash, HashContext.WebCrypto);
709
+ const normalizedAlgorithm = {
710
+ ...algorithm,
711
+ name: 'HMAC',
712
+ hash: {
713
+ name: hashName
714
+ }
715
+ };
716
+ return new CryptoKey(keyObject, normalizedAlgorithm, keyUsages, extractable);
717
+ }
718
+ async function aesImportKey(algorithm, format, data, extractable, keyUsages) {
719
+ const {
720
+ name,
721
+ length
722
+ } = algorithm;
723
+
724
+ // Validate usages
725
+ const validUsages = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'];
726
+ if (hasAnyNotIn(keyUsages, validUsages)) {
727
+ throw new Error(`Unsupported key usage for ${name}`);
728
+ }
729
+ let keyObject;
730
+ let actualLength;
731
+ if (format === 'jwk') {
732
+ const jwk = data;
733
+
734
+ // Validate JWK
735
+ if (jwk.kty !== 'oct') {
736
+ throw new Error('Invalid JWK format for AES key');
737
+ }
738
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
739
+ const keyType = handle.initJwk(jwk, undefined);
740
+ if (keyType === undefined || keyType !== 0) {
741
+ throw new Error('Failed to import AES JWK');
742
+ }
743
+ keyObject = new SecretKeyObject(handle);
744
+
745
+ // Get actual key length from imported key
746
+ const exported = keyObject.export();
747
+ actualLength = exported.byteLength * 8;
748
+ } else if (format === 'raw') {
749
+ const keyData = bufferLikeToArrayBuffer(data);
750
+ actualLength = keyData.byteLength * 8;
751
+
752
+ // Validate key length
753
+ if (![128, 192, 256].includes(actualLength)) {
754
+ throw new Error('Invalid AES key length');
755
+ }
756
+ keyObject = createSecretKey(keyData);
757
+ } else {
758
+ throw new Error(`Unsupported format for AES import: ${format}`);
759
+ }
760
+
761
+ // Validate length if specified
762
+ if (length !== undefined && length !== actualLength) {
763
+ throw new Error(`Key length mismatch: expected ${length}, got ${actualLength}`);
764
+ }
765
+ return new CryptoKey(keyObject, {
766
+ name,
767
+ length: actualLength
768
+ }, keyUsages, extractable);
769
+ }
770
+ function edImportKey(format, data, algorithm, extractable, keyUsages) {
771
+ const {
772
+ name
773
+ } = algorithm;
774
+
775
+ // Validate usages
776
+ const isX = name === 'X25519' || name === 'X448';
777
+ const allowedUsages = isX ? ['deriveKey', 'deriveBits'] : ['sign', 'verify'];
778
+ if (hasAnyNotIn(keyUsages, allowedUsages)) {
779
+ throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
780
+ }
781
+ let keyObject;
782
+ if (format === 'spki') {
783
+ // Import public key
784
+ const keyData = bufferLikeToArrayBuffer(data);
785
+ keyObject = KeyObject.createKeyObject('public', keyData, KFormatType.DER, KeyEncoding.SPKI);
786
+ } else if (format === 'pkcs8') {
787
+ // Import private key
788
+ const keyData = bufferLikeToArrayBuffer(data);
789
+ keyObject = KeyObject.createKeyObject('private', keyData, KFormatType.DER, KeyEncoding.PKCS8);
790
+ } else if (format === 'raw') {
791
+ // Raw format - public key only for Ed keys
792
+ const keyData = bufferLikeToArrayBuffer(data);
793
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
794
+ // For raw Ed keys, we need to create them differently
795
+ // Raw public keys are just the key bytes
796
+ handle.init(1, keyData); // 1 = public key type
797
+ keyObject = new PublicKeyObject(handle);
798
+ } else if (format === 'jwk') {
799
+ const jwkData = data;
800
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
801
+ const keyType = handle.initJwk(jwkData);
802
+ if (keyType === undefined) {
803
+ throw lazyDOMException('Invalid JWK data', 'DataError');
804
+ }
805
+ if (keyType === KeyType.PRIVATE) {
806
+ keyObject = new PrivateKeyObject(handle);
807
+ } else {
808
+ keyObject = new PublicKeyObject(handle);
809
+ }
810
+ } else {
811
+ throw lazyDOMException(`Unsupported format for ${name} import: ${format}`, 'NotSupportedError');
812
+ }
813
+ return new CryptoKey(keyObject, {
814
+ name
815
+ }, keyUsages, extractable);
816
+ }
817
+ function pqcImportKeyObject(format, data, name) {
818
+ if (format === 'spki') {
819
+ return KeyObject.createKeyObject('public', bufferLikeToArrayBuffer(data), KFormatType.DER, KeyEncoding.SPKI);
820
+ } else if (format === 'pkcs8') {
821
+ return KeyObject.createKeyObject('private', bufferLikeToArrayBuffer(data), KFormatType.DER, KeyEncoding.PKCS8);
822
+ } else if (format === 'raw') {
823
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
824
+ if (!handle.initPqcRaw(name, bufferLikeToArrayBuffer(data), true)) {
825
+ throw lazyDOMException(`Failed to import ${name} raw public key`, 'DataError');
826
+ }
827
+ return new PublicKeyObject(handle);
828
+ } else if (format === 'raw-seed') {
829
+ const handle = NitroModules.createHybridObject('KeyObjectHandle');
830
+ if (!handle.initPqcRaw(name, bufferLikeToArrayBuffer(data), false)) {
831
+ throw lazyDOMException(`Failed to import ${name} raw seed`, 'DataError');
832
+ }
833
+ return new PrivateKeyObject(handle);
834
+ }
835
+ throw lazyDOMException(`Unsupported format for ${name} import: ${format}`, 'NotSupportedError');
836
+ }
837
+ function mldsaImportKey(format, data, algorithm, extractable, keyUsages) {
838
+ const {
839
+ name
840
+ } = algorithm;
841
+ const isPublicFormat = format === 'spki' || format === 'raw';
842
+ if (hasAnyNotIn(keyUsages, isPublicFormat ? ['verify'] : ['sign'])) {
843
+ throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
844
+ }
845
+ return new CryptoKey(pqcImportKeyObject(format, data, name), {
846
+ name
847
+ }, keyUsages, extractable);
848
+ }
849
+ function mlkemImportKey(format, data, algorithm, extractable, keyUsages) {
850
+ const {
851
+ name
852
+ } = algorithm;
853
+ const isPublicFormat = format === 'spki' || format === 'raw';
854
+ const allowedUsages = isPublicFormat ? ['encapsulateBits', 'encapsulateKey'] : ['decapsulateBits', 'decapsulateKey'];
855
+ if (hasAnyNotIn(keyUsages, allowedUsages)) {
856
+ throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
857
+ }
858
+ return new CryptoKey(pqcImportKeyObject(format, data, name), {
859
+ name
860
+ }, keyUsages, extractable);
861
+ }
862
+ const exportKeySpki = async key => {
863
+ switch (key.algorithm.name) {
864
+ case 'RSASSA-PKCS1-v1_5':
865
+ // Fall through
866
+ case 'RSA-PSS':
867
+ // Fall through
868
+ case 'RSA-OAEP':
869
+ if (key.type === 'public') {
870
+ return rsaExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI);
871
+ }
872
+ break;
873
+ case 'ECDSA':
874
+ // Fall through
875
+ case 'ECDH':
876
+ if (key.type === 'public') {
877
+ return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI);
878
+ }
879
+ break;
880
+ case 'Ed25519':
881
+ // Fall through
882
+ case 'Ed448':
883
+ // Fall through
884
+ case 'X25519':
885
+ // Fall through
886
+ case 'X448':
887
+ if (key.type === 'public') {
888
+ // Export Ed/X key in SPKI DER format
889
+ return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI));
890
+ }
891
+ break;
892
+ case 'ML-DSA-44':
893
+ // Fall through
894
+ case 'ML-DSA-65':
895
+ // Fall through
896
+ case 'ML-DSA-87':
897
+ if (key.type === 'public') {
898
+ // Export ML-DSA key in SPKI DER format
899
+ return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI));
900
+ }
901
+ break;
902
+ case 'ML-KEM-512':
903
+ // Fall through
904
+ case 'ML-KEM-768':
905
+ // Fall through
906
+ case 'ML-KEM-1024':
907
+ if (key.type === 'public') {
908
+ return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI));
909
+ }
910
+ break;
911
+ }
912
+ throw new Error(`Unable to export a spki ${key.algorithm.name} ${key.type} key`);
913
+ };
914
+ const exportKeyPkcs8 = async key => {
915
+ switch (key.algorithm.name) {
916
+ case 'RSASSA-PKCS1-v1_5':
917
+ // Fall through
918
+ case 'RSA-PSS':
919
+ // Fall through
920
+ case 'RSA-OAEP':
921
+ if (key.type === 'private') {
922
+ return rsaExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8);
923
+ }
924
+ break;
925
+ case 'ECDSA':
926
+ // Fall through
927
+ case 'ECDH':
928
+ if (key.type === 'private') {
929
+ return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8);
930
+ }
931
+ break;
932
+ case 'Ed25519':
933
+ // Fall through
934
+ case 'Ed448':
935
+ // Fall through
936
+ case 'X25519':
937
+ // Fall through
938
+ case 'X448':
939
+ if (key.type === 'private') {
940
+ // Export Ed/X key in PKCS8 DER format
941
+ return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8));
942
+ }
943
+ break;
944
+ case 'ML-DSA-44':
945
+ // Fall through
946
+ case 'ML-DSA-65':
947
+ // Fall through
948
+ case 'ML-DSA-87':
949
+ if (key.type === 'private') {
950
+ // Export ML-DSA key in PKCS8 DER format
951
+ return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8));
952
+ }
953
+ break;
954
+ case 'ML-KEM-512':
955
+ // Fall through
956
+ case 'ML-KEM-768':
957
+ // Fall through
958
+ case 'ML-KEM-1024':
959
+ if (key.type === 'private') {
960
+ return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8));
961
+ }
962
+ break;
963
+ }
964
+ throw new Error(`Unable to export a pkcs8 ${key.algorithm.name} ${key.type} key`);
965
+ };
966
+ const exportKeyRaw = key => {
967
+ switch (key.algorithm.name) {
968
+ case 'ECDSA':
969
+ // Fall through
970
+ case 'ECDH':
971
+ if (key.type === 'public') {
972
+ return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw);
973
+ }
974
+ break;
975
+ case 'Ed25519':
976
+ // Fall through
977
+ case 'Ed448':
978
+ // Fall through
979
+ case 'X25519':
980
+ // Fall through
981
+ case 'X448':
982
+ if (key.type === 'public') {
983
+ const exported = key.keyObject.handle.exportKey();
984
+ return bufferLikeToArrayBuffer(exported);
985
+ }
986
+ break;
987
+ case 'ML-KEM-512':
988
+ // Fall through
989
+ case 'ML-KEM-768':
990
+ // Fall through
991
+ case 'ML-KEM-1024':
992
+ // Fall through
993
+ case 'ML-DSA-44':
994
+ // Fall through
995
+ case 'ML-DSA-65':
996
+ // Fall through
997
+ case 'ML-DSA-87':
998
+ if (key.type === 'public') {
999
+ const exported = key.keyObject.handle.exportKey();
1000
+ return bufferLikeToArrayBuffer(exported);
1001
+ }
1002
+ break;
1003
+ case 'AES-CTR':
1004
+ // Fall through
1005
+ case 'AES-CBC':
1006
+ // Fall through
1007
+ case 'AES-GCM':
1008
+ // Fall through
1009
+ case 'AES-KW':
1010
+ // Fall through
1011
+ case 'AES-OCB':
1012
+ // Fall through
1013
+ case 'ChaCha20-Poly1305':
1014
+ // Fall through
1015
+ case 'HMAC':
1016
+ // Fall through
1017
+ case 'KMAC128':
1018
+ // Fall through
1019
+ case 'KMAC256':
1020
+ {
1021
+ const exported = key.keyObject.export();
1022
+ // Convert Buffer to ArrayBuffer
1023
+ return exported.buffer.slice(exported.byteOffset, exported.byteOffset + exported.byteLength);
1024
+ }
1025
+ }
1026
+ throw lazyDOMException(`Unable to export a raw ${key.algorithm.name} ${key.type} key`, 'InvalidAccessError');
1027
+ };
1028
+ const exportKeyJWK = key => {
1029
+ const jwk = key.keyObject.handle.exportJwk({
1030
+ key_ops: key.usages,
1031
+ ext: key.extractable
1032
+ }, true);
1033
+ switch (key.algorithm.name) {
1034
+ case 'RSASSA-PKCS1-v1_5':
1035
+ jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsa);
1036
+ return jwk;
1037
+ case 'RSA-PSS':
1038
+ jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaPss);
1039
+ return jwk;
1040
+ case 'RSA-OAEP':
1041
+ jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaOaep);
1042
+ return jwk;
1043
+ case 'HMAC':
1044
+ jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkHmac);
1045
+ return jwk;
1046
+ case 'KMAC128':
1047
+ jwk.alg = 'K128';
1048
+ return jwk;
1049
+ case 'KMAC256':
1050
+ jwk.alg = 'K256';
1051
+ return jwk;
1052
+ case 'ECDSA':
1053
+ // Fall through
1054
+ case 'ECDH':
1055
+ jwk.crv ||= key.algorithm.namedCurve;
1056
+ return jwk;
1057
+ case 'Ed25519':
1058
+ // Fall through
1059
+ case 'Ed448':
1060
+ // Fall through
1061
+ case 'X25519':
1062
+ // Fall through
1063
+ case 'X448':
1064
+ return jwk;
1065
+ case 'AES-CTR':
1066
+ // Fall through
1067
+ case 'AES-CBC':
1068
+ // Fall through
1069
+ case 'AES-GCM':
1070
+ // Fall through
1071
+ case 'AES-KW':
1072
+ // Fall through
1073
+ case 'AES-OCB':
1074
+ // Fall through
1075
+ case 'ChaCha20-Poly1305':
1076
+ if (key.algorithm.length === undefined) {
1077
+ throw lazyDOMException(`Algorithm ${key.algorithm.name} missing required length property`, 'InvalidAccessError');
1078
+ }
1079
+ jwk.alg = getAlgorithmName(key.algorithm.name, key.algorithm.length);
1080
+ return jwk;
1081
+ default:
1082
+ // Fall through
1083
+ }
1084
+ throw lazyDOMException(`JWK export not yet supported: ${key.algorithm.name}`, 'NotSupportedError');
1085
+ };
1086
+ const importGenericSecretKey = async ({
1087
+ name,
1088
+ length
1089
+ }, format, keyData, extractable, keyUsages) => {
1090
+ if (extractable) {
1091
+ throw new Error(`${name} keys are not extractable`);
1092
+ }
1093
+ if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
1094
+ throw new Error(`Unsupported key usage for a ${name} key`);
1095
+ }
1096
+ switch (format) {
1097
+ case 'raw':
1098
+ {
1099
+ if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
1100
+ throw new Error(`Unsupported key usage for a ${name} key`);
1101
+ }
1102
+ const checkLength = typeof keyData === 'string' || SBuffer.isBuffer(keyData) ? keyData.length * 8 : keyData.byteLength * 8;
1103
+ if (length !== undefined && length !== checkLength) {
1104
+ throw new Error('Invalid key length');
1105
+ }
1106
+ const keyObject = createSecretKey(keyData);
1107
+ return new CryptoKey(keyObject, {
1108
+ name
1109
+ }, keyUsages, false);
1110
+ }
1111
+ }
1112
+ throw new Error(`Unable to import ${name} key with format ${format}`);
1113
+ };
1114
+ const hkdfImportKey = async (format, keyData, algorithm, extractable, keyUsages) => {
1115
+ const {
1116
+ name
1117
+ } = algorithm;
1118
+ if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
1119
+ throw new Error(`Unsupported key usage for a ${name} key`);
1120
+ }
1121
+ switch (format) {
1122
+ case 'raw':
1123
+ {
1124
+ const keyObject = createSecretKey(keyData);
1125
+ return new CryptoKey(keyObject, {
1126
+ name
1127
+ }, keyUsages, extractable);
1128
+ }
1129
+ default:
1130
+ throw new Error(`Unable to import ${name} key with format ${format}`);
1131
+ }
1132
+ };
1133
+ const checkCryptoKeyPairUsages = pair => {
1134
+ if (pair.privateKey && pair.privateKey instanceof CryptoKey && pair.privateKey.keyUsages && pair.privateKey.keyUsages.length > 0) {
1135
+ return;
1136
+ }
1137
+ throw lazyDOMException('Usages cannot be empty when creating a key.', 'SyntaxError');
1138
+ };
1139
+ function argon2DeriveBits(algorithm, baseKey, length) {
1140
+ if (length === 0 || length % 8 !== 0) {
1141
+ throw lazyDOMException('Invalid Argon2 derived key length', 'OperationError');
1142
+ }
1143
+ if (length < 32) {
1144
+ throw lazyDOMException('Argon2 derived key length must be at least 32 bits', 'OperationError');
1145
+ }
1146
+ const {
1147
+ nonce,
1148
+ parallelism,
1149
+ memory,
1150
+ passes,
1151
+ secretValue,
1152
+ associatedData
1153
+ } = algorithm;
1154
+ const tagLength = length / 8;
1155
+ const message = baseKey.keyObject.export();
1156
+ const algName = algorithm.name.toLowerCase();
1157
+ const result = argon2Sync(algName, {
1158
+ message,
1159
+ nonce: nonce ?? new Uint8Array(0),
1160
+ parallelism: parallelism ?? 1,
1161
+ tagLength,
1162
+ memory: memory ?? 65536,
1163
+ passes: passes ?? 3,
1164
+ secret: secretValue,
1165
+ associatedData,
1166
+ version: algorithm.version
1167
+ });
1168
+ return bufferLikeToArrayBuffer(result);
1169
+ }
1170
+
1171
+ // Type guard to check if result is CryptoKeyPair
1172
+ export function isCryptoKeyPair(result) {
1173
+ return 'publicKey' in result && 'privateKey' in result;
1174
+ }
1175
+ function hmacSignVerify(key, data, signature) {
1176
+ // Get hash algorithm from key
1177
+ const hashName = normalizeHashName(key.algorithm.hash);
1178
+
1179
+ // Export the secret key material
1180
+ const keyData = key.keyObject.export();
1181
+
1182
+ // Create HMAC and compute digest
1183
+ const hmac = createHmac(hashName, keyData);
1184
+ hmac.update(bufferLikeToArrayBuffer(data));
1185
+ const computed = hmac.digest();
1186
+ if (signature === undefined) {
1187
+ // Sign operation - return the HMAC as ArrayBuffer
1188
+ return computed.buffer.slice(computed.byteOffset, computed.byteOffset + computed.byteLength);
1189
+ }
1190
+ const sigBuffer = bufferLikeToArrayBuffer(signature);
1191
+ const computedBuffer = computed.buffer.slice(computed.byteOffset, computed.byteOffset + computed.byteLength);
1192
+ if (computedBuffer.byteLength !== sigBuffer.byteLength) {
1193
+ return false;
1194
+ }
1195
+ return timingSafeEqual(new Uint8Array(computedBuffer), new Uint8Array(sigBuffer));
1196
+ }
1197
+ function rsaSignVerify(key, data, padding, signature, saltLength) {
1198
+ // Get hash algorithm from key
1199
+ const hashName = normalizeHashName(key.algorithm.hash);
1200
+
1201
+ // Determine RSA padding constant
1202
+ const RSA_PKCS1_PADDING = 1;
1203
+ const RSA_PKCS1_PSS_PADDING = 6;
1204
+ const paddingValue = padding === 'pss' ? RSA_PKCS1_PSS_PADDING : RSA_PKCS1_PADDING;
1205
+ if (signature === undefined) {
1206
+ // Sign operation
1207
+ const signer = createSign(hashName);
1208
+ signer.update(data);
1209
+ const sig = signer.sign({
1210
+ key: key,
1211
+ padding: paddingValue,
1212
+ saltLength
1213
+ });
1214
+ return sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength);
1215
+ }
1216
+
1217
+ // Verify operation
1218
+ const verifier = createVerify(hashName);
1219
+ verifier.update(data);
1220
+ return verifier.verify({
1221
+ key: key,
1222
+ padding: paddingValue,
1223
+ saltLength
1224
+ }, signature);
1225
+ }
1226
+ function edSignVerify(key, data, signature) {
1227
+ const isSign = signature === undefined;
1228
+ const expectedKeyType = isSign ? 'private' : 'public';
1229
+ if (key.type !== expectedKeyType) {
1230
+ throw lazyDOMException(`Key must be a ${expectedKeyType} key`, 'InvalidAccessError');
1231
+ }
1232
+
1233
+ // Get curve type from algorithm name (Ed25519 or Ed448)
1234
+ const algorithmName = key.algorithm.name;
1235
+ const curveType = algorithmName.toLowerCase();
1236
+
1237
+ // Create Ed instance with the curve
1238
+ const ed = new Ed(curveType, {});
1239
+
1240
+ // Export raw key bytes (exportKey with no format returns raw for Ed keys)
1241
+ const rawKey = key.keyObject.handle.exportKey();
1242
+ const dataBuffer = bufferLikeToArrayBuffer(data);
1243
+ if (isSign) {
1244
+ // Sign operation - use raw private key
1245
+ const sig = ed.signSync(dataBuffer, rawKey);
1246
+ return sig;
1247
+ } else {
1248
+ // Verify operation - use raw public key
1249
+ const signatureBuffer = bufferLikeToArrayBuffer(signature);
1250
+ return ed.verifySync(signatureBuffer, dataBuffer, rawKey);
1251
+ }
1252
+ }
1253
+ function mldsaSignVerify(key, data, signature) {
1254
+ const isSign = signature === undefined;
1255
+ const expectedKeyType = isSign ? 'private' : 'public';
1256
+ if (key.type !== expectedKeyType) {
1257
+ throw lazyDOMException(`Key must be a ${expectedKeyType} key`, 'InvalidAccessError');
1258
+ }
1259
+ const dataBuffer = bufferLikeToArrayBuffer(data);
1260
+ if (isSign) {
1261
+ const signer = createSign('');
1262
+ signer.update(dataBuffer);
1263
+ const sig = signer.sign({
1264
+ key: key
1265
+ });
1266
+ return sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength);
1267
+ } else {
1268
+ const signatureBuffer = bufferLikeToArrayBuffer(signature);
1269
+ const verifier = createVerify('');
1270
+ verifier.update(dataBuffer);
1271
+ return verifier.verify({
1272
+ key: key
1273
+ }, signatureBuffer);
1274
+ }
1275
+ }
1276
+ const signVerify = (algorithm, key, data, signature) => {
1277
+ const usage = signature === undefined ? 'sign' : 'verify';
1278
+ algorithm = normalizeAlgorithm(algorithm, usage);
1279
+ if (!key.usages.includes(usage) || algorithm.name !== key.algorithm.name) {
1280
+ throw lazyDOMException(`Unable to use this key to ${usage}`, 'InvalidAccessError');
1281
+ }
1282
+ switch (algorithm.name) {
1283
+ case 'ECDSA':
1284
+ return ecdsaSignVerify(key, data, algorithm, signature);
1285
+ case 'HMAC':
1286
+ return hmacSignVerify(key, data, signature);
1287
+ case 'RSASSA-PKCS1-v1_5':
1288
+ return rsaSignVerify(key, data, 'pkcs1', signature);
1289
+ case 'RSA-PSS':
1290
+ return rsaSignVerify(key, data, 'pss', signature, algorithm.saltLength);
1291
+ case 'Ed25519':
1292
+ case 'Ed448':
1293
+ return edSignVerify(key, data, signature);
1294
+ case 'ML-DSA-44':
1295
+ case 'ML-DSA-65':
1296
+ case 'ML-DSA-87':
1297
+ return mldsaSignVerify(key, data, signature);
1298
+ case 'KMAC128':
1299
+ case 'KMAC256':
1300
+ return kmacSignVerify(key, data, algorithm, signature);
1301
+ }
1302
+ throw lazyDOMException(`Unrecognized algorithm name '${algorithm.name}' for '${usage}'`, 'NotSupportedError');
1303
+ };
1304
+ const cipherOrWrap = async (mode, algorithm, key, data, op) => {
1305
+ if (key.algorithm.name !== algorithm.name || !key.usages.includes(op)) {
1306
+ throw lazyDOMException('The requested operation is not valid for the provided key', 'InvalidAccessError');
1307
+ }
1308
+ validateMaxBufferLength(data, 'data');
1309
+ switch (algorithm.name) {
1310
+ case 'RSA-OAEP':
1311
+ return rsaCipher(mode, key, data, algorithm);
1312
+ case 'AES-CTR':
1313
+ // Fall through
1314
+ case 'AES-CBC':
1315
+ // Fall through
1316
+ case 'AES-GCM':
1317
+ // Fall through
1318
+ case 'AES-OCB':
1319
+ return aesCipher(mode, key, data, algorithm);
1320
+ case 'AES-KW':
1321
+ return aesKwCipher(mode, key, data);
1322
+ case 'ChaCha20-Poly1305':
1323
+ return chaCha20Poly1305Cipher(mode, key, data, algorithm);
1324
+ }
1325
+ };
1326
+ const SUPPORTED_ALGORITHMS = {
1327
+ encrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
1328
+ decrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
1329
+ sign: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'KMAC128', 'KMAC256', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
1330
+ verify: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'KMAC128', 'KMAC256', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
1331
+ digest: new Set(['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512', 'SHA3-256', 'SHA3-384', 'SHA3-512', 'cSHAKE128', 'cSHAKE256']),
1332
+ generateKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'KMAC128', 'KMAC256', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
1333
+ importKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'KMAC128', 'KMAC256', 'HKDF', 'PBKDF2', 'Argon2d', 'Argon2i', 'Argon2id', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
1334
+ exportKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'KMAC128', 'KMAC256', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
1335
+ deriveBits: new Set(['PBKDF2', 'HKDF', 'ECDH', 'X25519', 'X448', 'Argon2d', 'Argon2i', 'Argon2id']),
1336
+ wrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP']),
1337
+ unwrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP']),
1338
+ encapsulateBits: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
1339
+ decapsulateBits: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
1340
+ encapsulateKey: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
1341
+ decapsulateKey: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024'])
1342
+ };
1343
+ const ASYMMETRIC_ALGORITHMS = new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']);
1344
+ export class Subtle {
1345
+ static supports(operation, algorithm, _lengthOrAdditionalAlgorithm) {
1346
+ let normalizedAlgorithm;
1347
+ try {
1348
+ normalizedAlgorithm = normalizeAlgorithm(algorithm, operation === 'getPublicKey' ? 'exportKey' : operation);
1349
+ } catch {
1350
+ return false;
1351
+ }
1352
+ const name = normalizedAlgorithm.name;
1353
+ if (operation === 'getPublicKey') {
1354
+ return ASYMMETRIC_ALGORITHMS.has(name);
1355
+ }
1356
+ if (operation === 'deriveKey') {
1357
+ var _SUPPORTED_ALGORITHMS;
1358
+ // deriveKey decomposes to deriveBits + importKey of additional algorithm
1359
+ if (!((_SUPPORTED_ALGORITHMS = SUPPORTED_ALGORITHMS.deriveBits) !== null && _SUPPORTED_ALGORITHMS !== void 0 && _SUPPORTED_ALGORITHMS.has(name))) return false;
1360
+ if (_lengthOrAdditionalAlgorithm != null) {
1361
+ try {
1362
+ var _SUPPORTED_ALGORITHMS2;
1363
+ const additionalAlg = normalizeAlgorithm(_lengthOrAdditionalAlgorithm, 'importKey');
1364
+ return ((_SUPPORTED_ALGORITHMS2 = SUPPORTED_ALGORITHMS.importKey) === null || _SUPPORTED_ALGORITHMS2 === void 0 ? void 0 : _SUPPORTED_ALGORITHMS2.has(additionalAlg.name)) ?? false;
1365
+ } catch {
1366
+ return false;
1367
+ }
1368
+ }
1369
+ return true;
1370
+ }
1371
+ const supported = SUPPORTED_ALGORITHMS[operation];
1372
+ if (!supported) return false;
1373
+ return supported.has(name);
1374
+ }
1375
+ async decrypt(algorithm, key, data) {
1376
+ const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'decrypt');
1377
+ return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherDecrypt, normalizedAlgorithm, key, bufferLikeToArrayBuffer(data), 'decrypt');
1378
+ }
1379
+ async digest(algorithm, data) {
1380
+ const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'digest');
1381
+ return asyncDigest(normalizedAlgorithm, data);
1382
+ }
1383
+ async deriveBits(algorithm, baseKey, length) {
1384
+ // Allow either deriveBits OR deriveKey usage (WebCrypto spec allows both)
1385
+ if (!baseKey.keyUsages.includes('deriveBits') && !baseKey.keyUsages.includes('deriveKey')) {
1386
+ throw new Error('baseKey does not have deriveBits or deriveKey usage');
1387
+ }
1388
+ if (baseKey.algorithm.name !== algorithm.name) throw new Error('Key algorithm mismatch');
1389
+ switch (algorithm.name) {
1390
+ case 'PBKDF2':
1391
+ return pbkdf2DeriveBits(algorithm, baseKey, length);
1392
+ case 'X25519':
1393
+ // Fall through
1394
+ case 'X448':
1395
+ return xDeriveBits(algorithm, baseKey, length);
1396
+ case 'ECDH':
1397
+ return ecDeriveBits(algorithm, baseKey, length);
1398
+ case 'HKDF':
1399
+ return hkdfDeriveBits(algorithm, baseKey, length);
1400
+ case 'Argon2d':
1401
+ case 'Argon2i':
1402
+ case 'Argon2id':
1403
+ return argon2DeriveBits(algorithm, baseKey, length);
1404
+ }
1405
+ throw new Error(`'subtle.deriveBits()' for ${algorithm.name} is not implemented.`);
1406
+ }
1407
+ async deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages) {
1408
+ // Validate baseKey usage
1409
+ if (!baseKey.usages.includes('deriveKey') && !baseKey.usages.includes('deriveBits')) {
1410
+ throw lazyDOMException('baseKey does not have deriveKey or deriveBits usage', 'InvalidAccessError');
1411
+ }
1412
+
1413
+ // Calculate required key length
1414
+ const length = getKeyLength(derivedKeyAlgorithm);
1415
+
1416
+ // Step 1: Derive bits
1417
+ let derivedBits;
1418
+ if (baseKey.algorithm.name !== algorithm.name) throw new Error('Key algorithm mismatch');
1419
+ switch (algorithm.name) {
1420
+ case 'PBKDF2':
1421
+ derivedBits = await pbkdf2DeriveBits(algorithm, baseKey, length);
1422
+ break;
1423
+ case 'X25519':
1424
+ // Fall through
1425
+ case 'X448':
1426
+ derivedBits = await xDeriveBits(algorithm, baseKey, length);
1427
+ break;
1428
+ case 'ECDH':
1429
+ derivedBits = await ecDeriveBits(algorithm, baseKey, length);
1430
+ break;
1431
+ case 'HKDF':
1432
+ derivedBits = hkdfDeriveBits(algorithm, baseKey, length);
1433
+ break;
1434
+ case 'Argon2d':
1435
+ case 'Argon2i':
1436
+ case 'Argon2id':
1437
+ derivedBits = argon2DeriveBits(algorithm, baseKey, length);
1438
+ break;
1439
+ default:
1440
+ throw new Error(`'subtle.deriveKey()' for ${algorithm.name} is not implemented.`);
1441
+ }
1442
+
1443
+ // Step 2: Import as key
1444
+ return this.importKey('raw', derivedBits, derivedKeyAlgorithm, extractable, keyUsages);
1445
+ }
1446
+ async encrypt(algorithm, key, data) {
1447
+ const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'encrypt');
1448
+ return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherEncrypt, normalizedAlgorithm, key, bufferLikeToArrayBuffer(data), 'encrypt');
1449
+ }
1450
+ async exportKey(format, key) {
1451
+ if (!key.extractable) throw new Error('key is not extractable');
1452
+ if (format === 'raw-seed') {
1453
+ const pqcAlgos = ['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87'];
1454
+ if (!pqcAlgos.includes(key.algorithm.name)) {
1455
+ throw lazyDOMException('raw-seed export only supported for PQC keys', 'NotSupportedError');
1456
+ }
1457
+ if (key.type !== 'private') {
1458
+ throw lazyDOMException('raw-seed export requires a private key', 'InvalidAccessError');
1459
+ }
1460
+ return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey());
1461
+ }
1462
+
1463
+ // Note: 'raw-seed' is handled above; do NOT normalize it here
1464
+ if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
1465
+ switch (format) {
1466
+ case 'spki':
1467
+ return await exportKeySpki(key);
1468
+ case 'pkcs8':
1469
+ return await exportKeyPkcs8(key);
1470
+ case 'jwk':
1471
+ return exportKeyJWK(key);
1472
+ case 'raw':
1473
+ return exportKeyRaw(key);
1474
+ }
1475
+ }
1476
+ async wrapKey(format, key, wrappingKey, wrapAlgorithm) {
1477
+ // Validate wrappingKey usage
1478
+ if (!wrappingKey.usages.includes('wrapKey')) {
1479
+ throw lazyDOMException('wrappingKey does not have wrapKey usage', 'InvalidAccessError');
1480
+ }
1481
+
1482
+ // Step 1: Export the key
1483
+ const exported = await this.exportKey(format, key);
1484
+
1485
+ // Step 2: Convert to ArrayBuffer if JWK
1486
+ let keyData;
1487
+ if (format === 'jwk') {
1488
+ const jwkString = JSON.stringify(exported);
1489
+ const buffer = SBuffer.from(jwkString, 'utf8');
1490
+
1491
+ // For AES-KW, pad to multiple of 8 bytes (accounting for null terminator)
1492
+ if (wrapAlgorithm.name === 'AES-KW') {
1493
+ const length = buffer.length;
1494
+ // Add 1 for null terminator, then pad to multiple of 8
1495
+ const paddedLength = Math.ceil((length + 1) / 8) * 8;
1496
+ const paddedBuffer = SBuffer.alloc(paddedLength);
1497
+ buffer.copy(paddedBuffer);
1498
+ // Null terminator for JSON string (remaining bytes are already zeros from alloc)
1499
+ paddedBuffer.writeUInt8(0, length);
1500
+ keyData = bufferLikeToArrayBuffer(paddedBuffer);
1501
+ } else {
1502
+ keyData = bufferLikeToArrayBuffer(buffer);
1503
+ }
1504
+ } else {
1505
+ keyData = exported;
1506
+ }
1507
+
1508
+ // Step 3: Encrypt the exported key
1509
+ return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherEncrypt, wrapAlgorithm, wrappingKey, keyData, 'wrapKey');
1510
+ }
1511
+ async unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages) {
1512
+ // Validate unwrappingKey usage
1513
+ if (!unwrappingKey.usages.includes('unwrapKey')) {
1514
+ throw lazyDOMException('unwrappingKey does not have unwrapKey usage', 'InvalidAccessError');
1515
+ }
1516
+
1517
+ // Step 1: Decrypt the wrapped key
1518
+ const decrypted = await cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherDecrypt, unwrapAlgorithm, unwrappingKey, bufferLikeToArrayBuffer(wrappedKey), 'unwrapKey');
1519
+
1520
+ // Step 2: Convert to appropriate format
1521
+ let keyData;
1522
+ if (format === 'jwk') {
1523
+ const buffer = SBuffer.from(decrypted);
1524
+ // For AES-KW, the data may be padded - find the null terminator
1525
+ let jwkString;
1526
+ if (unwrapAlgorithm.name === 'AES-KW') {
1527
+ // Find the null terminator (if present) to get the original string
1528
+ const nullIndex = buffer.indexOf(0);
1529
+ if (nullIndex !== -1) {
1530
+ jwkString = buffer.toString('utf8', 0, nullIndex);
1531
+ } else {
1532
+ // No null terminator, try to parse the whole buffer
1533
+ jwkString = buffer.toString('utf8').trim();
1534
+ }
1535
+ } else {
1536
+ jwkString = buffer.toString('utf8');
1537
+ }
1538
+ keyData = JSON.parse(jwkString);
1539
+ } else {
1540
+ keyData = decrypted;
1541
+ }
1542
+
1543
+ // Step 3: Import the key
1544
+ return this.importKey(format, keyData, unwrappedKeyAlgorithm, extractable, keyUsages);
1545
+ }
1546
+ async generateKey(algorithm, extractable, keyUsages) {
1547
+ algorithm = normalizeAlgorithm(algorithm, 'generateKey');
1548
+ let result;
1549
+ switch (algorithm.name) {
1550
+ case 'RSASSA-PKCS1-v1_5':
1551
+ // Fall through
1552
+ case 'RSA-PSS':
1553
+ // Fall through
1554
+ case 'RSA-OAEP':
1555
+ result = await rsa_generateKeyPair(algorithm, extractable, keyUsages);
1556
+ break;
1557
+ case 'ECDSA':
1558
+ // Fall through
1559
+ case 'ECDH':
1560
+ result = await ec_generateKeyPair(algorithm.name, algorithm.namedCurve, extractable, keyUsages);
1561
+ checkCryptoKeyPairUsages(result);
1562
+ break;
1563
+ case 'AES-CTR':
1564
+ // Fall through
1565
+ case 'AES-CBC':
1566
+ // Fall through
1567
+ case 'AES-GCM':
1568
+ // Fall through
1569
+ case 'AES-KW':
1570
+ // Fall through
1571
+ case 'AES-OCB':
1572
+ result = await aesGenerateKey(algorithm, extractable, keyUsages);
1573
+ break;
1574
+ case 'ChaCha20-Poly1305':
1575
+ {
1576
+ const length = algorithm.length ?? 256;
1577
+ if (length !== 256) {
1578
+ throw lazyDOMException('ChaCha20-Poly1305 only supports 256-bit keys', 'NotSupportedError');
1579
+ }
1580
+ result = await aesGenerateKey({
1581
+ name: 'ChaCha20-Poly1305',
1582
+ length: 256
1583
+ }, extractable, keyUsages);
1584
+ break;
1585
+ }
1586
+ case 'HMAC':
1587
+ result = await hmacGenerateKey(algorithm, extractable, keyUsages);
1588
+ break;
1589
+ case 'KMAC128':
1590
+ // Fall through
1591
+ case 'KMAC256':
1592
+ result = await kmacGenerateKey(algorithm, extractable, keyUsages);
1593
+ break;
1594
+ case 'Ed25519':
1595
+ // Fall through
1596
+ case 'Ed448':
1597
+ result = await ed_generateKeyPairWebCrypto(algorithm.name.toLowerCase(), extractable, keyUsages);
1598
+ checkCryptoKeyPairUsages(result);
1599
+ break;
1600
+ case 'ML-DSA-44':
1601
+ // Fall through
1602
+ case 'ML-DSA-65':
1603
+ // Fall through
1604
+ case 'ML-DSA-87':
1605
+ result = await mldsa_generateKeyPairWebCrypto(algorithm.name, extractable, keyUsages);
1606
+ checkCryptoKeyPairUsages(result);
1607
+ break;
1608
+ case 'X25519':
1609
+ // Fall through
1610
+ case 'X448':
1611
+ result = await x_generateKeyPairWebCrypto(algorithm.name.toLowerCase(), extractable, keyUsages);
1612
+ checkCryptoKeyPairUsages(result);
1613
+ break;
1614
+ case 'ML-KEM-512':
1615
+ // Fall through
1616
+ case 'ML-KEM-768':
1617
+ // Fall through
1618
+ case 'ML-KEM-1024':
1619
+ result = await mlkem_generateKeyPairWebCrypto(algorithm.name, extractable, keyUsages);
1620
+ checkCryptoKeyPairUsages(result);
1621
+ break;
1622
+ default:
1623
+ throw new Error(`'subtle.generateKey()' is not implemented for ${algorithm.name}.
1624
+ Unrecognized algorithm name`);
1625
+ }
1626
+ return result;
1627
+ }
1628
+ async getPublicKey(key, keyUsages) {
1629
+ if (key.type === 'secret') {
1630
+ throw lazyDOMException('key must be a private key', 'NotSupportedError');
1631
+ }
1632
+ if (key.type !== 'private') {
1633
+ throw lazyDOMException('key must be a private key', 'InvalidAccessError');
1634
+ }
1635
+ const publicKeyObject = createPublicKey(key.keyObject);
1636
+ return publicKeyObject.toCryptoKey(key.algorithm, true, keyUsages);
1637
+ }
1638
+ async importKey(format, data, algorithm, extractable, keyUsages) {
1639
+ // Note: 'raw-seed' is NOT normalized — PQC import functions handle it directly
1640
+ if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
1641
+ const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'importKey');
1642
+ let result;
1643
+ switch (normalizedAlgorithm.name) {
1644
+ case 'RSASSA-PKCS1-v1_5':
1645
+ // Fall through
1646
+ case 'RSA-PSS':
1647
+ // Fall through
1648
+ case 'RSA-OAEP':
1649
+ result = rsaImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
1650
+ break;
1651
+ case 'ECDSA':
1652
+ // Fall through
1653
+ case 'ECDH':
1654
+ result = ecImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
1655
+ break;
1656
+ case 'HMAC':
1657
+ result = await hmacImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
1658
+ break;
1659
+ case 'KMAC128':
1660
+ // Fall through
1661
+ case 'KMAC256':
1662
+ result = await kmacImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
1663
+ break;
1664
+ case 'AES-CTR':
1665
+ // Fall through
1666
+ case 'AES-CBC':
1667
+ // Fall through
1668
+ case 'AES-GCM':
1669
+ // Fall through
1670
+ case 'AES-KW':
1671
+ // Fall through
1672
+ case 'AES-OCB':
1673
+ // Fall through
1674
+ case 'ChaCha20-Poly1305':
1675
+ result = await aesImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
1676
+ break;
1677
+ case 'PBKDF2':
1678
+ case 'Argon2d':
1679
+ case 'Argon2i':
1680
+ case 'Argon2id':
1681
+ result = await importGenericSecretKey(normalizedAlgorithm, format, data, extractable, keyUsages);
1682
+ break;
1683
+ case 'HKDF':
1684
+ result = await hkdfImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
1685
+ break;
1686
+ case 'X25519':
1687
+ // Fall through
1688
+ case 'X448':
1689
+ // Fall through
1690
+ case 'Ed25519':
1691
+ // Fall through
1692
+ case 'Ed448':
1693
+ result = edImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
1694
+ break;
1695
+ case 'ML-DSA-44':
1696
+ // Fall through
1697
+ case 'ML-DSA-65':
1698
+ // Fall through
1699
+ case 'ML-DSA-87':
1700
+ result = mldsaImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
1701
+ break;
1702
+ case 'ML-KEM-512':
1703
+ // Fall through
1704
+ case 'ML-KEM-768':
1705
+ // Fall through
1706
+ case 'ML-KEM-1024':
1707
+ result = mlkemImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
1708
+ break;
1709
+ default:
1710
+ throw new Error(`"subtle.importKey()" is not implemented for ${normalizedAlgorithm.name}`);
1711
+ }
1712
+ if ((result.type === 'secret' || result.type === 'private') && result.usages.length === 0) {
1713
+ throw new Error(`Usages cannot be empty when importing a ${result.type} key.`);
1714
+ }
1715
+ return result;
1716
+ }
1717
+ async sign(algorithm, key, data) {
1718
+ return signVerify(normalizeAlgorithm(algorithm, 'sign'), key, data);
1719
+ }
1720
+ async verify(algorithm, key, signature, data) {
1721
+ return signVerify(normalizeAlgorithm(algorithm, 'verify'), key, data, signature);
1722
+ }
1723
+ _encapsulateCore(algorithm, key) {
1724
+ const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'encapsulateBits');
1725
+ if (key.algorithm.name !== normalizedAlgorithm.name) {
1726
+ throw lazyDOMException('Key algorithm mismatch', 'InvalidAccessError');
1727
+ }
1728
+ const variant = normalizedAlgorithm.name;
1729
+ const mlkem = new MlKem(variant);
1730
+ const keyData = key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI);
1731
+ mlkem.setPublicKey(bufferLikeToArrayBuffer(keyData), KFormatType.DER, KeyEncoding.SPKI);
1732
+ return mlkem.encapsulateSync();
1733
+ }
1734
+ _decapsulateCore(algorithm, key, ciphertext) {
1735
+ const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'decapsulateBits');
1736
+ if (key.algorithm.name !== normalizedAlgorithm.name) {
1737
+ throw lazyDOMException('Key algorithm mismatch', 'InvalidAccessError');
1738
+ }
1739
+ const variant = normalizedAlgorithm.name;
1740
+ const mlkem = new MlKem(variant);
1741
+ const keyData = key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8);
1742
+ mlkem.setPrivateKey(bufferLikeToArrayBuffer(keyData), KFormatType.DER, KeyEncoding.PKCS8);
1743
+ return mlkem.decapsulateSync(bufferLikeToArrayBuffer(ciphertext));
1744
+ }
1745
+ async encapsulateBits(algorithm, key) {
1746
+ if (!key.usages.includes('encapsulateBits')) {
1747
+ throw lazyDOMException('Key does not have encapsulateBits usage', 'InvalidAccessError');
1748
+ }
1749
+ return this._encapsulateCore(algorithm, key);
1750
+ }
1751
+ async encapsulateKey(algorithm, key, sharedKeyAlgorithm, extractable, usages) {
1752
+ if (!key.usages.includes('encapsulateKey')) {
1753
+ throw lazyDOMException('Key does not have encapsulateKey usage', 'InvalidAccessError');
1754
+ }
1755
+ const {
1756
+ sharedKey,
1757
+ ciphertext
1758
+ } = this._encapsulateCore(algorithm, key);
1759
+ const importedKey = await this.importKey('raw', sharedKey, sharedKeyAlgorithm, extractable, usages);
1760
+ return {
1761
+ key: importedKey,
1762
+ ciphertext
1763
+ };
1764
+ }
1765
+ async decapsulateBits(algorithm, key, ciphertext) {
1766
+ if (!key.usages.includes('decapsulateBits')) {
1767
+ throw lazyDOMException('Key does not have decapsulateBits usage', 'InvalidAccessError');
1768
+ }
1769
+ return this._decapsulateCore(algorithm, key, ciphertext);
1770
+ }
1771
+ async decapsulateKey(algorithm, key, ciphertext, sharedKeyAlgorithm, extractable, usages) {
1772
+ if (!key.usages.includes('decapsulateKey')) {
1773
+ throw lazyDOMException('Key does not have decapsulateKey usage', 'InvalidAccessError');
1774
+ }
1775
+ const sharedKey = this._decapsulateCore(algorithm, key, ciphertext);
1776
+ return this.importKey('raw', sharedKey, sharedKeyAlgorithm, extractable, usages);
1777
+ }
1778
+ }
1779
+ export const subtle = new Subtle();
1780
+ function getKeyLength(algorithm) {
1781
+ const name = algorithm.name;
1782
+ switch (name) {
1783
+ case 'AES-CTR':
1784
+ case 'AES-CBC':
1785
+ case 'AES-GCM':
1786
+ case 'AES-KW':
1787
+ case 'AES-OCB':
1788
+ case 'ChaCha20-Poly1305':
1789
+ return algorithm.length || 256;
1790
+ case 'HMAC':
1791
+ {
1792
+ const hmacAlg = algorithm;
1793
+ return hmacAlg.length || 256;
1794
+ }
1795
+ case 'KMAC128':
1796
+ return algorithm.length || 128;
1797
+ case 'KMAC256':
1798
+ return algorithm.length || 256;
1799
+ default:
1800
+ throw lazyDOMException(`Cannot determine key length for ${name}`, 'NotSupportedError');
1801
+ }
1802
+ }
1803
+ //# sourceMappingURL=subtle.js.map