react-native-quick-crypto 1.0.9 → 1.0.11

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 (292) hide show
  1. package/QuickCrypto.podspec +9 -2
  2. package/README.md +13 -9
  3. package/android/CMakeLists.txt +13 -0
  4. package/cpp/argon2/HybridArgon2.cpp +103 -0
  5. package/cpp/argon2/HybridArgon2.hpp +32 -0
  6. package/cpp/certificate/HybridCertificate.cpp +42 -0
  7. package/cpp/certificate/HybridCertificate.hpp +16 -0
  8. package/cpp/cipher/HybridCipher.cpp +58 -0
  9. package/cpp/cipher/HybridCipher.hpp +4 -0
  10. package/cpp/cipher/HybridCipherFactory.hpp +15 -1
  11. package/cpp/cipher/OCBCipher.cpp +4 -4
  12. package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +161 -0
  13. package/cpp/cipher/XChaCha20Poly1305Cipher.hpp +43 -0
  14. package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +145 -0
  15. package/cpp/cipher/XSalsa20Poly1305Cipher.hpp +42 -0
  16. package/cpp/dh/HybridDhKeyPair.cpp +179 -0
  17. package/cpp/dh/HybridDhKeyPair.hpp +37 -0
  18. package/cpp/dh/HybridDiffieHellman.cpp +10 -0
  19. package/cpp/dh/HybridDiffieHellman.hpp +1 -0
  20. package/cpp/dsa/HybridDsaKeyPair.cpp +128 -0
  21. package/cpp/dsa/HybridDsaKeyPair.hpp +32 -0
  22. package/cpp/ec/HybridEcKeyPair.cpp +21 -0
  23. package/cpp/ec/HybridEcKeyPair.hpp +1 -0
  24. package/cpp/ecdh/HybridECDH.cpp +35 -0
  25. package/cpp/ecdh/HybridECDH.hpp +1 -0
  26. package/cpp/hash/HybridHash.cpp +1 -1
  27. package/cpp/hash/HybridHash.hpp +1 -1
  28. package/cpp/hmac/HybridHmac.cpp +1 -1
  29. package/cpp/hmac/HybridHmac.hpp +1 -1
  30. package/cpp/keys/HybridKeyObjectHandle.cpp +131 -1
  31. package/cpp/keys/HybridKeyObjectHandle.hpp +5 -1
  32. package/cpp/prime/HybridPrime.cpp +81 -0
  33. package/cpp/prime/HybridPrime.hpp +20 -0
  34. package/deps/ncrypto/.bazelrc +0 -1
  35. package/deps/ncrypto/.bazelversion +1 -1
  36. package/deps/ncrypto/.github/workflows/commitlint.yml +16 -0
  37. package/deps/ncrypto/.github/workflows/linter.yml +2 -2
  38. package/deps/ncrypto/.github/workflows/release-please.yml +16 -0
  39. package/deps/ncrypto/.github/workflows/ubuntu.yml +82 -0
  40. package/deps/ncrypto/.release-please-manifest.json +3 -0
  41. package/deps/ncrypto/BUILD.bazel +9 -1
  42. package/deps/ncrypto/CHANGELOG.md +37 -0
  43. package/deps/ncrypto/CMakeLists.txt +35 -11
  44. package/deps/ncrypto/MODULE.bazel +16 -1
  45. package/deps/ncrypto/MODULE.bazel.lock +299 -118
  46. package/deps/ncrypto/cmake/ncrypto-flags.cmake +1 -0
  47. package/deps/ncrypto/include/ncrypto/aead.h +137 -0
  48. package/deps/ncrypto/include/ncrypto/version.h +14 -0
  49. package/deps/ncrypto/include/ncrypto.h +85 -230
  50. package/deps/ncrypto/ncrypto.pc.in +10 -0
  51. package/deps/ncrypto/release-please-config.json +11 -0
  52. package/deps/ncrypto/src/CMakeLists.txt +31 -6
  53. package/deps/ncrypto/src/aead.cpp +302 -0
  54. package/deps/ncrypto/src/ncrypto.cpp +274 -556
  55. package/deps/ncrypto/tests/BUILD.bazel +2 -0
  56. package/deps/ncrypto/tests/basic.cpp +772 -2
  57. package/deps/ncrypto/tools/run-clang-format.sh +5 -5
  58. package/lib/commonjs/argon2.js +39 -0
  59. package/lib/commonjs/argon2.js.map +1 -0
  60. package/lib/commonjs/certificate.js +35 -0
  61. package/lib/commonjs/certificate.js.map +1 -0
  62. package/lib/commonjs/cipher.js +8 -0
  63. package/lib/commonjs/cipher.js.map +1 -1
  64. package/lib/commonjs/dhKeyPair.js +109 -0
  65. package/lib/commonjs/dhKeyPair.js.map +1 -0
  66. package/lib/commonjs/diffie-hellman.js +4 -1
  67. package/lib/commonjs/diffie-hellman.js.map +1 -1
  68. package/lib/commonjs/dsa.js +92 -0
  69. package/lib/commonjs/dsa.js.map +1 -0
  70. package/lib/commonjs/ec.js +20 -25
  71. package/lib/commonjs/ec.js.map +1 -1
  72. package/lib/commonjs/ecdh.js +37 -0
  73. package/lib/commonjs/ecdh.js.map +1 -1
  74. package/lib/commonjs/ed.js +1 -2
  75. package/lib/commonjs/ed.js.map +1 -1
  76. package/lib/commonjs/hash.js +7 -0
  77. package/lib/commonjs/hash.js.map +1 -1
  78. package/lib/commonjs/index.js +46 -1
  79. package/lib/commonjs/index.js.map +1 -1
  80. package/lib/commonjs/keys/classes.js +18 -12
  81. package/lib/commonjs/keys/classes.js.map +1 -1
  82. package/lib/commonjs/keys/generateKeyPair.js +11 -0
  83. package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
  84. package/lib/commonjs/prime.js +84 -0
  85. package/lib/commonjs/prime.js.map +1 -0
  86. package/lib/commonjs/specs/argon2.nitro.js +6 -0
  87. package/lib/commonjs/specs/argon2.nitro.js.map +1 -0
  88. package/lib/commonjs/specs/certificate.nitro.js +6 -0
  89. package/lib/commonjs/specs/certificate.nitro.js.map +1 -0
  90. package/lib/commonjs/specs/dhKeyPair.nitro.js +6 -0
  91. package/lib/commonjs/specs/dhKeyPair.nitro.js.map +1 -0
  92. package/lib/commonjs/specs/dsaKeyPair.nitro.js +6 -0
  93. package/lib/commonjs/specs/dsaKeyPair.nitro.js.map +1 -0
  94. package/lib/commonjs/specs/prime.nitro.js +6 -0
  95. package/lib/commonjs/specs/prime.nitro.js.map +1 -0
  96. package/lib/commonjs/subtle.js +181 -39
  97. package/lib/commonjs/subtle.js.map +1 -1
  98. package/lib/commonjs/utils/types.js.map +1 -1
  99. package/lib/module/argon2.js +34 -0
  100. package/lib/module/argon2.js.map +1 -0
  101. package/lib/module/certificate.js +30 -0
  102. package/lib/module/certificate.js.map +1 -0
  103. package/lib/module/cipher.js +7 -0
  104. package/lib/module/cipher.js.map +1 -1
  105. package/lib/module/dhKeyPair.js +102 -0
  106. package/lib/module/dhKeyPair.js.map +1 -0
  107. package/lib/module/diffie-hellman.js +4 -0
  108. package/lib/module/diffie-hellman.js.map +1 -1
  109. package/lib/module/dsa.js +85 -0
  110. package/lib/module/dsa.js.map +1 -0
  111. package/lib/module/ec.js +19 -25
  112. package/lib/module/ec.js.map +1 -1
  113. package/lib/module/ecdh.js +37 -0
  114. package/lib/module/ecdh.js.map +1 -1
  115. package/lib/module/ed.js +1 -2
  116. package/lib/module/ed.js.map +1 -1
  117. package/lib/module/hash.js +6 -0
  118. package/lib/module/hash.js.map +1 -1
  119. package/lib/module/index.js +12 -0
  120. package/lib/module/index.js.map +1 -1
  121. package/lib/module/keys/classes.js +18 -12
  122. package/lib/module/keys/classes.js.map +1 -1
  123. package/lib/module/keys/generateKeyPair.js +11 -0
  124. package/lib/module/keys/generateKeyPair.js.map +1 -1
  125. package/lib/module/prime.js +77 -0
  126. package/lib/module/prime.js.map +1 -0
  127. package/lib/module/specs/argon2.nitro.js +4 -0
  128. package/lib/module/specs/argon2.nitro.js.map +1 -0
  129. package/lib/module/specs/certificate.nitro.js +4 -0
  130. package/lib/module/specs/certificate.nitro.js.map +1 -0
  131. package/lib/module/specs/dhKeyPair.nitro.js +4 -0
  132. package/lib/module/specs/dhKeyPair.nitro.js.map +1 -0
  133. package/lib/module/specs/dsaKeyPair.nitro.js +4 -0
  134. package/lib/module/specs/dsaKeyPair.nitro.js.map +1 -0
  135. package/lib/module/specs/prime.nitro.js +4 -0
  136. package/lib/module/specs/prime.nitro.js.map +1 -0
  137. package/lib/module/subtle.js +183 -42
  138. package/lib/module/subtle.js.map +1 -1
  139. package/lib/module/utils/types.js.map +1 -1
  140. package/lib/tsconfig.tsbuildinfo +1 -1
  141. package/lib/typescript/argon2.d.ts +16 -0
  142. package/lib/typescript/argon2.d.ts.map +1 -0
  143. package/lib/typescript/certificate.d.ts +8 -0
  144. package/lib/typescript/certificate.d.ts.map +1 -0
  145. package/lib/typescript/cipher.d.ts +12 -0
  146. package/lib/typescript/cipher.d.ts.map +1 -1
  147. package/lib/typescript/dhKeyPair.d.ts +19 -0
  148. package/lib/typescript/dhKeyPair.d.ts.map +1 -0
  149. package/lib/typescript/diffie-hellman.d.ts +2 -0
  150. package/lib/typescript/diffie-hellman.d.ts.map +1 -1
  151. package/lib/typescript/dsa.d.ts +19 -0
  152. package/lib/typescript/dsa.d.ts.map +1 -0
  153. package/lib/typescript/ec.d.ts +1 -0
  154. package/lib/typescript/ec.d.ts.map +1 -1
  155. package/lib/typescript/ecdh.d.ts +3 -0
  156. package/lib/typescript/ecdh.d.ts.map +1 -1
  157. package/lib/typescript/ed.d.ts.map +1 -1
  158. package/lib/typescript/hash.d.ts +2 -0
  159. package/lib/typescript/hash.d.ts.map +1 -1
  160. package/lib/typescript/index.d.ts +22 -0
  161. package/lib/typescript/index.d.ts.map +1 -1
  162. package/lib/typescript/keys/classes.d.ts +4 -0
  163. package/lib/typescript/keys/classes.d.ts.map +1 -1
  164. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
  165. package/lib/typescript/prime.d.ts +19 -0
  166. package/lib/typescript/prime.d.ts.map +1 -0
  167. package/lib/typescript/specs/argon2.nitro.d.ts +9 -0
  168. package/lib/typescript/specs/argon2.nitro.d.ts.map +1 -0
  169. package/lib/typescript/specs/certificate.nitro.d.ts +10 -0
  170. package/lib/typescript/specs/certificate.nitro.d.ts.map +1 -0
  171. package/lib/typescript/specs/cipher.nitro.d.ts +9 -0
  172. package/lib/typescript/specs/cipher.nitro.d.ts.map +1 -1
  173. package/lib/typescript/specs/dhKeyPair.nitro.d.ts +14 -0
  174. package/lib/typescript/specs/dhKeyPair.nitro.d.ts.map +1 -0
  175. package/lib/typescript/specs/diffie-hellman.nitro.d.ts +1 -0
  176. package/lib/typescript/specs/diffie-hellman.nitro.d.ts.map +1 -1
  177. package/lib/typescript/specs/dsaKeyPair.nitro.d.ts +13 -0
  178. package/lib/typescript/specs/dsaKeyPair.nitro.d.ts.map +1 -0
  179. package/lib/typescript/specs/ecKeyPair.nitro.d.ts +1 -0
  180. package/lib/typescript/specs/ecKeyPair.nitro.d.ts.map +1 -1
  181. package/lib/typescript/specs/ecdh.nitro.d.ts +1 -0
  182. package/lib/typescript/specs/ecdh.nitro.d.ts.map +1 -1
  183. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +2 -0
  184. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
  185. package/lib/typescript/specs/prime.nitro.d.ts +11 -0
  186. package/lib/typescript/specs/prime.nitro.d.ts.map +1 -0
  187. package/lib/typescript/subtle.d.ts +2 -0
  188. package/lib/typescript/subtle.d.ts.map +1 -1
  189. package/lib/typescript/utils/types.d.ts +24 -7
  190. package/lib/typescript/utils/types.d.ts.map +1 -1
  191. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +13 -5
  192. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +1 -1
  193. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +104 -54
  194. package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +1 -1
  195. package/nitrogen/generated/android/kotlin/com/margelo/nitro/crypto/QuickCryptoOnLoad.kt +1 -1
  196. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +2 -2
  197. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +1 -1
  198. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +1 -1
  199. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +1 -1
  200. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +104 -54
  201. package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +5 -1
  202. package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +1 -1
  203. package/nitrogen/generated/shared/c++/CipherArgs.hpp +34 -19
  204. package/nitrogen/generated/shared/c++/CipherInfo.hpp +104 -0
  205. package/nitrogen/generated/shared/c++/HybridArgon2Spec.cpp +22 -0
  206. package/nitrogen/generated/shared/c++/HybridArgon2Spec.hpp +66 -0
  207. package/nitrogen/generated/shared/c++/HybridBlake3Spec.cpp +1 -1
  208. package/nitrogen/generated/shared/c++/HybridBlake3Spec.hpp +1 -3
  209. package/nitrogen/generated/shared/c++/HybridCertificateSpec.cpp +23 -0
  210. package/nitrogen/generated/shared/c++/HybridCertificateSpec.hpp +64 -0
  211. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.cpp +1 -1
  212. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.hpp +1 -1
  213. package/nitrogen/generated/shared/c++/HybridCipherSpec.cpp +2 -1
  214. package/nitrogen/generated/shared/c++/HybridCipherSpec.hpp +5 -3
  215. package/nitrogen/generated/shared/c++/HybridDhKeyPairSpec.cpp +27 -0
  216. package/nitrogen/generated/shared/c++/HybridDhKeyPairSpec.hpp +69 -0
  217. package/nitrogen/generated/shared/c++/HybridDiffieHellmanSpec.cpp +2 -1
  218. package/nitrogen/generated/shared/c++/HybridDiffieHellmanSpec.hpp +3 -3
  219. package/nitrogen/generated/shared/c++/HybridDsaKeyPairSpec.cpp +26 -0
  220. package/nitrogen/generated/shared/c++/HybridDsaKeyPairSpec.hpp +68 -0
  221. package/nitrogen/generated/shared/c++/HybridECDHSpec.cpp +2 -1
  222. package/nitrogen/generated/shared/c++/HybridECDHSpec.hpp +3 -3
  223. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.cpp +2 -1
  224. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.hpp +2 -3
  225. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp +1 -1
  226. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +2 -3
  227. package/nitrogen/generated/shared/c++/HybridHashSpec.cpp +1 -1
  228. package/nitrogen/generated/shared/c++/HybridHashSpec.hpp +2 -4
  229. package/nitrogen/generated/shared/c++/HybridHkdfSpec.cpp +1 -1
  230. package/nitrogen/generated/shared/c++/HybridHkdfSpec.hpp +2 -3
  231. package/nitrogen/generated/shared/c++/HybridHmacSpec.cpp +1 -1
  232. package/nitrogen/generated/shared/c++/HybridHmacSpec.hpp +3 -4
  233. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +3 -1
  234. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +8 -4
  235. package/nitrogen/generated/shared/c++/HybridMlDsaKeyPairSpec.cpp +1 -1
  236. package/nitrogen/generated/shared/c++/HybridMlDsaKeyPairSpec.hpp +2 -3
  237. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +1 -1
  238. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +2 -3
  239. package/nitrogen/generated/shared/c++/HybridPrimeSpec.cpp +24 -0
  240. package/nitrogen/generated/shared/c++/HybridPrimeSpec.hpp +67 -0
  241. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +1 -1
  242. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +2 -3
  243. package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.cpp +1 -1
  244. package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.hpp +1 -3
  245. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp +1 -1
  246. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.hpp +1 -3
  247. package/nitrogen/generated/shared/c++/HybridScryptSpec.cpp +1 -1
  248. package/nitrogen/generated/shared/c++/HybridScryptSpec.hpp +2 -3
  249. package/nitrogen/generated/shared/c++/HybridSignHandleSpec.cpp +1 -1
  250. package/nitrogen/generated/shared/c++/HybridSignHandleSpec.hpp +1 -3
  251. package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +1 -1
  252. package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +2 -3
  253. package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.cpp +1 -1
  254. package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.hpp +1 -3
  255. package/nitrogen/generated/shared/c++/JWK.hpp +84 -68
  256. package/nitrogen/generated/shared/c++/JWKkty.hpp +5 -1
  257. package/nitrogen/generated/shared/c++/JWKuse.hpp +1 -1
  258. package/nitrogen/generated/shared/c++/KFormatType.hpp +1 -1
  259. package/nitrogen/generated/shared/c++/KeyDetail.hpp +39 -23
  260. package/nitrogen/generated/shared/c++/KeyEncoding.hpp +1 -1
  261. package/nitrogen/generated/shared/c++/KeyObject.hpp +21 -5
  262. package/nitrogen/generated/shared/c++/KeyType.hpp +1 -1
  263. package/nitrogen/generated/shared/c++/KeyUsage.hpp +1 -1
  264. package/nitrogen/generated/shared/c++/NamedCurve.hpp +1 -1
  265. package/package.json +1 -1
  266. package/src/argon2.ts +83 -0
  267. package/src/certificate.ts +41 -0
  268. package/src/cipher.ts +24 -0
  269. package/src/dhKeyPair.ts +156 -0
  270. package/src/diffie-hellman.ts +6 -0
  271. package/src/dsa.ts +129 -0
  272. package/src/ec.ts +23 -19
  273. package/src/ecdh.ts +59 -0
  274. package/src/ed.ts +1 -2
  275. package/src/hash.ts +11 -0
  276. package/src/index.ts +12 -0
  277. package/src/keys/classes.ts +26 -8
  278. package/src/keys/generateKeyPair.ts +14 -0
  279. package/src/prime.ts +134 -0
  280. package/src/specs/argon2.nitro.ts +29 -0
  281. package/src/specs/certificate.nitro.ts +8 -0
  282. package/src/specs/cipher.nitro.ts +14 -0
  283. package/src/specs/dhKeyPair.nitro.ts +14 -0
  284. package/src/specs/diffie-hellman.nitro.ts +1 -0
  285. package/src/specs/dsaKeyPair.nitro.ts +13 -0
  286. package/src/specs/ecKeyPair.nitro.ts +2 -0
  287. package/src/specs/ecdh.nitro.ts +1 -0
  288. package/src/specs/keyObjectHandle.nitro.ts +2 -0
  289. package/src/specs/prime.nitro.ts +18 -0
  290. package/src/subtle.ts +400 -42
  291. package/src/utils/types.ts +39 -5
  292. package/deps/ncrypto/WORKSPACE +0 -15
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=certificate.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/certificate.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=dhKeyPair.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/dhKeyPair.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=dsaKeyPair.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/dsaKeyPair.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=prime.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/prime.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -10,6 +10,7 @@ var _safeBuffer = require("safe-buffer");
10
10
  var _utils = require("./utils");
11
11
  var _keys = require("./keys");
12
12
  var _conversion = require("./utils/conversion");
13
+ var _argon = require("./argon2");
13
14
  var _errors = require("./utils/errors");
14
15
  var _hashnames = require("./utils/hashnames");
15
16
  var _validation = require("./utils/validation");
@@ -25,11 +26,6 @@ var _ed = require("./ed");
25
26
  var _mldsa = require("./mldsa");
26
27
  var _hkdf = require("./hkdf");
27
28
  /* eslint-disable @typescript-eslint/no-unused-vars */
28
- // import { pbkdf2DeriveBits } from './pbkdf2';
29
- // import { aesCipher, aesGenerateKey, aesImportKey, getAlgorithmName } from './aes';
30
- // import { rsaCipher, rsaExportKey, rsaImportKey, rsaKeyGenerate } from './rsa';
31
- // import { normalizeAlgorithm, type Operation } from './algorithms';
32
- // import { hmacImportKey } from './mac';
33
29
  // Temporary enums that need to be defined
34
30
  var KWebCryptoKeyFormat = /*#__PURE__*/function (KWebCryptoKeyFormat) {
35
31
  KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatRaw"] = 0] = "kWebCryptoKeyFormatRaw";
@@ -54,21 +50,36 @@ function normalizeAlgorithm(algorithm, _operation) {
54
50
  return algorithm;
55
51
  }
56
52
  function getAlgorithmName(name, length) {
57
- return `${name}${length}`;
53
+ switch (name) {
54
+ case 'AES-CBC':
55
+ return `A${length}CBC`;
56
+ case 'AES-CTR':
57
+ return `A${length}CTR`;
58
+ case 'AES-GCM':
59
+ return `A${length}GCM`;
60
+ case 'AES-KW':
61
+ return `A${length}KW`;
62
+ case 'AES-OCB':
63
+ return `A${length}OCB`;
64
+ case 'ChaCha20-Poly1305':
65
+ return 'C20P';
66
+ default:
67
+ return `${name}${length}`;
68
+ }
58
69
  }
59
70
 
60
71
  // Placeholder implementations for missing functions
61
72
  function ecExportKey(key, format) {
62
73
  const keyObject = key.keyObject;
63
- if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {
64
- // Export public key in SPKI format
74
+ if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw) {
75
+ return (0, _conversion.bufferLikeToArrayBuffer)(keyObject.handle.exportKey());
76
+ } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {
65
77
  const exported = keyObject.export({
66
78
  format: 'der',
67
79
  type: 'spki'
68
80
  });
69
81
  return (0, _conversion.bufferLikeToArrayBuffer)(exported);
70
82
  } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {
71
- // Export private key in PKCS8 format
72
83
  const exported = keyObject.export({
73
84
  format: 'der',
74
85
  type: 'pkcs8'
@@ -137,6 +148,8 @@ async function aesCipher(mode, key, data, algorithm) {
137
148
  return aesCbcCipher(mode, key, data, algorithm);
138
149
  case 'AES-GCM':
139
150
  return aesGcmCipher(mode, key, data, algorithm);
151
+ case 'AES-OCB':
152
+ return aesOcbCipher(mode, key, data, algorithm);
140
153
  default:
141
154
  throw (0, _errors.lazyDOMException)(`Unsupported AES algorithm: ${name}`, 'NotSupportedError');
142
155
  }
@@ -203,61 +216,40 @@ async function aesCbcCipher(mode, key, data, algorithm) {
203
216
  result.set(new Uint8Array(final), updated.byteLength);
204
217
  return result.buffer;
205
218
  }
206
- async function aesGcmCipher(mode, key, data, algorithm) {
207
- const {
208
- tagLength = 128
209
- } = algorithm;
210
-
211
- // Validate tag length
212
- const validTagLengths = [32, 64, 96, 104, 112, 120, 128];
213
- if (!validTagLengths.includes(tagLength)) {
214
- throw (0, _errors.lazyDOMException)(`${tagLength} is not a valid AES-GCM tag length`, 'OperationError');
219
+ async function aesAeadCipher(mode, key, data, config, additionalData, tagLength = 128) {
220
+ if (!config.validTagLengths.includes(tagLength)) {
221
+ throw (0, _errors.lazyDOMException)(`${tagLength} is not a valid ${config.algorithmName} tag length`, 'OperationError');
215
222
  }
216
223
  const tagByteLength = tagLength / 8;
217
-
218
- // Get cipher type based on key length
219
224
  const keyLength = key.algorithm.length;
220
- const cipherType = `aes-${keyLength}-gcm`;
221
-
222
- // Create cipher
225
+ const cipherType = `aes-${keyLength}-${config.cipherSuffix}`;
223
226
  const factory = _reactNativeNitroModules.NitroModules.createHybridObject('CipherFactory');
224
227
  const cipher = factory.createCipher({
225
228
  isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
226
229
  cipherType,
227
230
  cipherKey: (0, _conversion.bufferLikeToArrayBuffer)(key.keyObject.export()),
228
- iv: (0, _conversion.bufferLikeToArrayBuffer)(algorithm.iv),
231
+ iv: config.iv,
229
232
  authTagLen: tagByteLength
230
233
  });
231
234
  let processData;
232
- let authTag;
233
235
  if (mode === CipherOrWrapMode.kWebCryptoCipherDecrypt) {
234
- // For decryption, extract auth tag from end of data
235
236
  const dataView = new Uint8Array(data);
236
237
  if (dataView.byteLength < tagByteLength) {
237
238
  throw (0, _errors.lazyDOMException)('The provided data is too small.', 'OperationError');
238
239
  }
239
-
240
- // Split data and tag
241
240
  const ciphertextLength = dataView.byteLength - tagByteLength;
242
241
  processData = dataView.slice(0, ciphertextLength).buffer;
243
- authTag = dataView.slice(ciphertextLength).buffer;
244
-
245
- // Set auth tag for verification
242
+ const authTag = dataView.slice(ciphertextLength).buffer;
246
243
  cipher.setAuthTag(authTag);
247
244
  } else {
248
245
  processData = data;
249
246
  }
250
-
251
- // Set additional authenticated data if provided
252
- if (algorithm.additionalData) {
253
- cipher.setAAD((0, _conversion.bufferLikeToArrayBuffer)(algorithm.additionalData));
247
+ if (additionalData) {
248
+ cipher.setAAD((0, _conversion.bufferLikeToArrayBuffer)(additionalData));
254
249
  }
255
-
256
- // Process data
257
250
  const updated = cipher.update(processData);
258
251
  const final = cipher.final();
259
252
  if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {
260
- // For encryption, append auth tag to result
261
253
  const tag = cipher.getAuthTag();
262
254
  const result = new Uint8Array(updated.byteLength + final.byteLength + tag.byteLength);
263
255
  result.set(new Uint8Array(updated), 0);
@@ -265,13 +257,32 @@ async function aesGcmCipher(mode, key, data, algorithm) {
265
257
  result.set(new Uint8Array(tag), updated.byteLength + final.byteLength);
266
258
  return result.buffer;
267
259
  } else {
268
- // For decryption, just concatenate plaintext
269
260
  const result = new Uint8Array(updated.byteLength + final.byteLength);
270
261
  result.set(new Uint8Array(updated), 0);
271
262
  result.set(new Uint8Array(final), updated.byteLength);
272
263
  return result.buffer;
273
264
  }
274
265
  }
266
+ async function aesGcmCipher(mode, key, data, algorithm) {
267
+ return aesAeadCipher(mode, key, data, {
268
+ algorithmName: 'AES-GCM',
269
+ validTagLengths: [32, 64, 96, 104, 112, 120, 128],
270
+ cipherSuffix: 'gcm',
271
+ iv: (0, _conversion.bufferLikeToArrayBuffer)(algorithm.iv)
272
+ }, algorithm.additionalData, algorithm.tagLength);
273
+ }
274
+ async function aesOcbCipher(mode, key, data, algorithm) {
275
+ const ivBuffer = (0, _conversion.bufferLikeToArrayBuffer)(algorithm.iv);
276
+ if (ivBuffer.byteLength < 1 || ivBuffer.byteLength > 15) {
277
+ throw (0, _errors.lazyDOMException)('AES-OCB algorithm.iv must be between 1 and 15 bytes', 'OperationError');
278
+ }
279
+ return aesAeadCipher(mode, key, data, {
280
+ algorithmName: 'AES-OCB',
281
+ validTagLengths: [64, 96, 128],
282
+ cipherSuffix: 'ocb',
283
+ iv: ivBuffer
284
+ }, algorithm.additionalData, algorithm.tagLength);
285
+ }
275
286
  async function aesKwCipher(mode, key, data) {
276
287
  const isWrap = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt;
277
288
 
@@ -695,6 +706,18 @@ function edImportKey(format, data, algorithm, extractable, keyUsages) {
695
706
  // Raw public keys are just the key bytes
696
707
  handle.init(1, keyData); // 1 = public key type
697
708
  keyObject = new _keys.PublicKeyObject(handle);
709
+ } else if (format === 'jwk') {
710
+ const jwkData = data;
711
+ const handle = _reactNativeNitroModules.NitroModules.createHybridObject('KeyObjectHandle');
712
+ const keyType = handle.initJwk(jwkData);
713
+ if (keyType === undefined) {
714
+ throw (0, _errors.lazyDOMException)('Invalid JWK data', 'DataError');
715
+ }
716
+ if (keyType === _utils.KeyType.PRIVATE) {
717
+ keyObject = new _keys.PrivateKeyObject(handle);
718
+ } else {
719
+ keyObject = new _keys.PublicKeyObject(handle);
720
+ }
698
721
  } else {
699
722
  throw (0, _errors.lazyDOMException)(`Unsupported format for ${name} import: ${format}`, 'NotSupportedError');
700
723
  }
@@ -843,6 +866,8 @@ const exportKeyRaw = key => {
843
866
  // Fall through
844
867
  case 'AES-KW':
845
868
  // Fall through
869
+ case 'AES-OCB':
870
+ // Fall through
846
871
  case 'ChaCha20-Poly1305':
847
872
  // Fall through
848
873
  case 'HMAC':
@@ -877,6 +902,14 @@ const exportKeyJWK = key => {
877
902
  case 'ECDH':
878
903
  jwk.crv ||= key.algorithm.namedCurve;
879
904
  return jwk;
905
+ case 'Ed25519':
906
+ // Fall through
907
+ case 'Ed448':
908
+ // Fall through
909
+ case 'X25519':
910
+ // Fall through
911
+ case 'X448':
912
+ return jwk;
880
913
  case 'AES-CTR':
881
914
  // Fall through
882
915
  case 'AES-CBC':
@@ -885,6 +918,8 @@ const exportKeyJWK = key => {
885
918
  // Fall through
886
919
  case 'AES-KW':
887
920
  // Fall through
921
+ case 'AES-OCB':
922
+ // Fall through
888
923
  case 'ChaCha20-Poly1305':
889
924
  if (key.algorithm.length === undefined) {
890
925
  throw (0, _errors.lazyDOMException)(`Algorithm ${key.algorithm.name} missing required length property`, 'InvalidAccessError');
@@ -949,6 +984,37 @@ const checkCryptoKeyPairUsages = pair => {
949
984
  }
950
985
  throw (0, _errors.lazyDOMException)('Usages cannot be empty when creating a key.', 'SyntaxError');
951
986
  };
987
+ function argon2DeriveBits(algorithm, baseKey, length) {
988
+ if (length === 0 || length % 8 !== 0) {
989
+ throw (0, _errors.lazyDOMException)('Invalid Argon2 derived key length', 'OperationError');
990
+ }
991
+ if (length < 32) {
992
+ throw (0, _errors.lazyDOMException)('Argon2 derived key length must be at least 32 bits', 'OperationError');
993
+ }
994
+ const {
995
+ nonce,
996
+ parallelism,
997
+ memory,
998
+ passes,
999
+ secretValue,
1000
+ associatedData
1001
+ } = algorithm;
1002
+ const tagLength = length / 8;
1003
+ const message = baseKey.keyObject.export();
1004
+ const algName = algorithm.name.toLowerCase();
1005
+ const result = (0, _argon.argon2Sync)(algName, {
1006
+ message,
1007
+ nonce: nonce ?? new Uint8Array(0),
1008
+ parallelism: parallelism ?? 1,
1009
+ tagLength,
1010
+ memory: memory ?? 65536,
1011
+ passes: passes ?? 3,
1012
+ secret: secretValue,
1013
+ associatedData,
1014
+ version: algorithm.version
1015
+ });
1016
+ return (0, _conversion.bufferLikeToArrayBuffer)(result);
1017
+ }
952
1018
 
953
1019
  // Type guard to check if result is CryptoKeyPair
954
1020
  function isCryptoKeyPair(result) {
@@ -1101,6 +1167,8 @@ const cipherOrWrap = async (mode, algorithm, key, data, op) => {
1101
1167
  case 'AES-CBC':
1102
1168
  // Fall through
1103
1169
  case 'AES-GCM':
1170
+ // Fall through
1171
+ case 'AES-OCB':
1104
1172
  return aesCipher(mode, key, data, algorithm);
1105
1173
  case 'AES-KW':
1106
1174
  return aesKwCipher(mode, key, data);
@@ -1108,7 +1176,49 @@ const cipherOrWrap = async (mode, algorithm, key, data, op) => {
1108
1176
  return chaCha20Poly1305Cipher(mode, key, data, algorithm);
1109
1177
  }
1110
1178
  };
1179
+ const SUPPORTED_ALGORITHMS = {
1180
+ encrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
1181
+ decrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
1182
+ sign: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
1183
+ verify: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
1184
+ digest: new Set(['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512']),
1185
+ 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', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
1186
+ 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', 'HKDF', 'PBKDF2', 'Argon2d', 'Argon2i', 'Argon2id', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
1187
+ 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', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
1188
+ deriveBits: new Set(['PBKDF2', 'HKDF', 'ECDH', 'X25519', 'X448', 'Argon2d', 'Argon2i', 'Argon2id']),
1189
+ wrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP']),
1190
+ unwrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP'])
1191
+ };
1192
+ 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']);
1111
1193
  class Subtle {
1194
+ static supports(operation, algorithm, _lengthOrAdditionalAlgorithm) {
1195
+ let normalizedAlgorithm;
1196
+ try {
1197
+ normalizedAlgorithm = normalizeAlgorithm(algorithm, operation === 'getPublicKey' ? 'exportKey' : operation);
1198
+ } catch {
1199
+ return false;
1200
+ }
1201
+ const name = normalizedAlgorithm.name;
1202
+ if (operation === 'getPublicKey') {
1203
+ return ASYMMETRIC_ALGORITHMS.has(name);
1204
+ }
1205
+ if (operation === 'deriveKey') {
1206
+ // deriveKey decomposes to deriveBits + importKey of additional algorithm
1207
+ if (!SUPPORTED_ALGORITHMS.deriveBits?.has(name)) return false;
1208
+ if (_lengthOrAdditionalAlgorithm != null) {
1209
+ try {
1210
+ const additionalAlg = normalizeAlgorithm(_lengthOrAdditionalAlgorithm, 'importKey');
1211
+ return SUPPORTED_ALGORITHMS.importKey?.has(additionalAlg.name) ?? false;
1212
+ } catch {
1213
+ return false;
1214
+ }
1215
+ }
1216
+ return true;
1217
+ }
1218
+ const supported = SUPPORTED_ALGORITHMS[operation];
1219
+ if (!supported) return false;
1220
+ return supported.has(name);
1221
+ }
1112
1222
  async decrypt(algorithm, key, data) {
1113
1223
  const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'decrypt');
1114
1224
  return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherDecrypt, normalizedAlgorithm, key, (0, _conversion.bufferLikeToArrayBuffer)(data), 'decrypt');
@@ -1134,6 +1244,10 @@ class Subtle {
1134
1244
  return (0, _ec.ecDeriveBits)(algorithm, baseKey, length);
1135
1245
  case 'HKDF':
1136
1246
  return (0, _hkdf.hkdfDeriveBits)(algorithm, baseKey, length);
1247
+ case 'Argon2d':
1248
+ case 'Argon2i':
1249
+ case 'Argon2id':
1250
+ return argon2DeriveBits(algorithm, baseKey, length);
1137
1251
  }
1138
1252
  throw new Error(`'subtle.deriveBits()' for ${algorithm.name} is not implemented.`);
1139
1253
  }
@@ -1158,9 +1272,17 @@ class Subtle {
1158
1272
  case 'X448':
1159
1273
  derivedBits = await (0, _ed.xDeriveBits)(algorithm, baseKey, length);
1160
1274
  break;
1275
+ case 'ECDH':
1276
+ derivedBits = await (0, _ec.ecDeriveBits)(algorithm, baseKey, length);
1277
+ break;
1161
1278
  case 'HKDF':
1162
1279
  derivedBits = (0, _hkdf.hkdfDeriveBits)(algorithm, baseKey, length);
1163
1280
  break;
1281
+ case 'Argon2d':
1282
+ case 'Argon2i':
1283
+ case 'Argon2id':
1284
+ derivedBits = argon2DeriveBits(algorithm, baseKey, length);
1285
+ break;
1164
1286
  default:
1165
1287
  throw new Error(`'subtle.deriveKey()' for ${algorithm.name} is not implemented.`);
1166
1288
  }
@@ -1174,6 +1296,7 @@ class Subtle {
1174
1296
  }
1175
1297
  async exportKey(format, key) {
1176
1298
  if (!key.extractable) throw new Error('key is not extractable');
1299
+ if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
1177
1300
  switch (format) {
1178
1301
  case 'spki':
1179
1302
  return await exportKeySpki(key);
@@ -1279,6 +1402,8 @@ class Subtle {
1279
1402
  case 'AES-GCM':
1280
1403
  // Fall through
1281
1404
  case 'AES-KW':
1405
+ // Fall through
1406
+ case 'AES-OCB':
1282
1407
  result = await aesGenerateKey(algorithm, extractable, keyUsages);
1283
1408
  break;
1284
1409
  case 'ChaCha20-Poly1305':
@@ -1322,7 +1447,18 @@ class Subtle {
1322
1447
  }
1323
1448
  return result;
1324
1449
  }
1450
+ async getPublicKey(key, keyUsages) {
1451
+ if (key.type === 'secret') {
1452
+ throw (0, _errors.lazyDOMException)('key must be a private key', 'NotSupportedError');
1453
+ }
1454
+ if (key.type !== 'private') {
1455
+ throw (0, _errors.lazyDOMException)('key must be a private key', 'InvalidAccessError');
1456
+ }
1457
+ const publicKeyObject = (0, _keys.createPublicKey)(key.keyObject);
1458
+ return publicKeyObject.toCryptoKey(key.algorithm, true, keyUsages);
1459
+ }
1325
1460
  async importKey(format, data, algorithm, extractable, keyUsages) {
1461
+ if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
1326
1462
  const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'importKey');
1327
1463
  let result;
1328
1464
  switch (normalizedAlgorithm.name) {
@@ -1349,10 +1485,15 @@ class Subtle {
1349
1485
  // Fall through
1350
1486
  case 'AES-KW':
1351
1487
  // Fall through
1488
+ case 'AES-OCB':
1489
+ // Fall through
1352
1490
  case 'ChaCha20-Poly1305':
1353
1491
  result = await aesImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
1354
1492
  break;
1355
1493
  case 'PBKDF2':
1494
+ case 'Argon2d':
1495
+ case 'Argon2i':
1496
+ case 'Argon2id':
1356
1497
  result = await importGenericSecretKey(normalizedAlgorithm, format, data, extractable, keyUsages);
1357
1498
  break;
1358
1499
  case 'HKDF':
@@ -1473,6 +1614,7 @@ function getKeyLength(algorithm) {
1473
1614
  case 'AES-CBC':
1474
1615
  case 'AES-GCM':
1475
1616
  case 'AES-KW':
1617
+ case 'AES-OCB':
1476
1618
  case 'ChaCha20-Poly1305':
1477
1619
  return algorithm.length || 256;
1478
1620
  case 'HMAC':