react-native-quick-crypto 1.1.1 → 1.1.2

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 (181) hide show
  1. package/QuickCrypto.podspec +1 -0
  2. package/android/CMakeLists.txt +4 -0
  3. package/cpp/cipher/CCMCipher.cpp +7 -11
  4. package/cpp/cipher/ChaCha20Cipher.cpp +6 -10
  5. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +10 -16
  6. package/cpp/cipher/GCMCipher.cpp +3 -5
  7. package/cpp/cipher/HybridCipher.cpp +7 -13
  8. package/cpp/cipher/HybridRsaCipher.cpp +19 -27
  9. package/cpp/cipher/OCBCipher.cpp +2 -3
  10. package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +13 -19
  11. package/cpp/cipher/XSalsa20Cipher.cpp +8 -12
  12. package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +11 -16
  13. package/cpp/keys/HybridKeyObjectHandle.cpp +630 -2
  14. package/cpp/keys/HybridKeyObjectHandle.hpp +21 -1
  15. package/cpp/sign/HybridSignHandle.cpp +26 -8
  16. package/cpp/sign/HybridVerifyHandle.cpp +28 -11
  17. package/cpp/slhdsa/HybridSlhDsaKeyPair.cpp +245 -0
  18. package/cpp/slhdsa/HybridSlhDsaKeyPair.hpp +48 -0
  19. package/cpp/turboshake/HybridTurboShake.cpp +379 -0
  20. package/cpp/turboshake/HybridTurboShake.hpp +28 -0
  21. package/cpp/utils/HybridUtils.cpp +26 -14
  22. package/deps/blake3/README.md +6 -7
  23. package/deps/blake3/c/blake3.c +3 -2
  24. package/deps/blake3/c/blake3.h +2 -2
  25. package/deps/blake3/c/blake3_dispatch.c +2 -2
  26. package/deps/blake3/c/blake3_impl.h +1 -1
  27. package/deps/blake3/c/blake3_neon.c +5 -4
  28. package/deps/ncrypto/include/ncrypto/version.h +2 -2
  29. package/deps/ncrypto/include/ncrypto.h +9 -2
  30. package/deps/ncrypto/src/ncrypto.cpp +130 -35
  31. package/lib/commonjs/dhKeyPair.js +3 -0
  32. package/lib/commonjs/dhKeyPair.js.map +1 -1
  33. package/lib/commonjs/dsa.js +3 -0
  34. package/lib/commonjs/dsa.js.map +1 -1
  35. package/lib/commonjs/ec.js +37 -30
  36. package/lib/commonjs/ec.js.map +1 -1
  37. package/lib/commonjs/ed.js +60 -6
  38. package/lib/commonjs/ed.js.map +1 -1
  39. package/lib/commonjs/hash.js +52 -5
  40. package/lib/commonjs/hash.js.map +1 -1
  41. package/lib/commonjs/keys/classes.js +33 -7
  42. package/lib/commonjs/keys/classes.js.map +1 -1
  43. package/lib/commonjs/keys/generateKeyPair.js +85 -4
  44. package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
  45. package/lib/commonjs/keys/index.js +50 -2
  46. package/lib/commonjs/keys/index.js.map +1 -1
  47. package/lib/commonjs/keys/signVerify.js +9 -2
  48. package/lib/commonjs/keys/signVerify.js.map +1 -1
  49. package/lib/commonjs/keys/utils.js +59 -1
  50. package/lib/commonjs/keys/utils.js.map +1 -1
  51. package/lib/commonjs/random.js +63 -9
  52. package/lib/commonjs/random.js.map +1 -1
  53. package/lib/commonjs/rsa.js +3 -0
  54. package/lib/commonjs/rsa.js.map +1 -1
  55. package/lib/commonjs/slhdsa.js +70 -0
  56. package/lib/commonjs/slhdsa.js.map +1 -0
  57. package/lib/commonjs/specs/slhDsaKeyPair.nitro.js +6 -0
  58. package/lib/commonjs/specs/slhDsaKeyPair.nitro.js.map +1 -0
  59. package/lib/commonjs/specs/turboshake.nitro.js +6 -0
  60. package/lib/commonjs/specs/turboshake.nitro.js.map +1 -0
  61. package/lib/commonjs/subtle.js +926 -275
  62. package/lib/commonjs/subtle.js.map +1 -1
  63. package/lib/commonjs/utils/conversion.js +53 -19
  64. package/lib/commonjs/utils/conversion.js.map +1 -1
  65. package/lib/commonjs/utils/errors.js +63 -4
  66. package/lib/commonjs/utils/errors.js.map +1 -1
  67. package/lib/commonjs/utils/types.js.map +1 -1
  68. package/lib/commonjs/utils/validation.js +46 -0
  69. package/lib/commonjs/utils/validation.js.map +1 -1
  70. package/lib/module/dhKeyPair.js +3 -0
  71. package/lib/module/dhKeyPair.js.map +1 -1
  72. package/lib/module/dsa.js +3 -0
  73. package/lib/module/dsa.js.map +1 -1
  74. package/lib/module/ec.js +38 -31
  75. package/lib/module/ec.js.map +1 -1
  76. package/lib/module/ed.js +61 -7
  77. package/lib/module/ed.js.map +1 -1
  78. package/lib/module/hash.js +52 -5
  79. package/lib/module/hash.js.map +1 -1
  80. package/lib/module/keys/classes.js +31 -5
  81. package/lib/module/keys/classes.js.map +1 -1
  82. package/lib/module/keys/generateKeyPair.js +86 -5
  83. package/lib/module/keys/generateKeyPair.js.map +1 -1
  84. package/lib/module/keys/index.js +50 -2
  85. package/lib/module/keys/index.js.map +1 -1
  86. package/lib/module/keys/signVerify.js +9 -2
  87. package/lib/module/keys/signVerify.js.map +1 -1
  88. package/lib/module/keys/utils.js +57 -1
  89. package/lib/module/keys/utils.js.map +1 -1
  90. package/lib/module/random.js +63 -10
  91. package/lib/module/random.js.map +1 -1
  92. package/lib/module/rsa.js +3 -0
  93. package/lib/module/rsa.js.map +1 -1
  94. package/lib/module/slhdsa.js +64 -0
  95. package/lib/module/slhdsa.js.map +1 -0
  96. package/lib/module/specs/slhDsaKeyPair.nitro.js +4 -0
  97. package/lib/module/specs/slhDsaKeyPair.nitro.js.map +1 -0
  98. package/lib/module/specs/turboshake.nitro.js +4 -0
  99. package/lib/module/specs/turboshake.nitro.js.map +1 -0
  100. package/lib/module/subtle.js +927 -276
  101. package/lib/module/subtle.js.map +1 -1
  102. package/lib/module/utils/conversion.js +51 -19
  103. package/lib/module/utils/conversion.js.map +1 -1
  104. package/lib/module/utils/errors.js +61 -4
  105. package/lib/module/utils/errors.js.map +1 -1
  106. package/lib/module/utils/types.js.map +1 -1
  107. package/lib/module/utils/validation.js +44 -0
  108. package/lib/module/utils/validation.js.map +1 -1
  109. package/lib/typescript/dhKeyPair.d.ts.map +1 -1
  110. package/lib/typescript/dsa.d.ts.map +1 -1
  111. package/lib/typescript/ec.d.ts.map +1 -1
  112. package/lib/typescript/ed.d.ts.map +1 -1
  113. package/lib/typescript/hash.d.ts.map +1 -1
  114. package/lib/typescript/index.d.ts +12 -7
  115. package/lib/typescript/index.d.ts.map +1 -1
  116. package/lib/typescript/keys/classes.d.ts +10 -1
  117. package/lib/typescript/keys/classes.d.ts.map +1 -1
  118. package/lib/typescript/keys/generateKeyPair.d.ts +12 -1
  119. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
  120. package/lib/typescript/keys/index.d.ts +3 -1
  121. package/lib/typescript/keys/index.d.ts.map +1 -1
  122. package/lib/typescript/keys/signVerify.d.ts.map +1 -1
  123. package/lib/typescript/keys/utils.d.ts +21 -4
  124. package/lib/typescript/keys/utils.d.ts.map +1 -1
  125. package/lib/typescript/random.d.ts +5 -1
  126. package/lib/typescript/random.d.ts.map +1 -1
  127. package/lib/typescript/rsa.d.ts.map +1 -1
  128. package/lib/typescript/slhdsa.d.ts +19 -0
  129. package/lib/typescript/slhdsa.d.ts.map +1 -0
  130. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +9 -0
  131. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
  132. package/lib/typescript/specs/slhDsaKeyPair.nitro.d.ts +16 -0
  133. package/lib/typescript/specs/slhDsaKeyPair.nitro.d.ts.map +1 -0
  134. package/lib/typescript/specs/turboshake.nitro.d.ts +11 -0
  135. package/lib/typescript/specs/turboshake.nitro.d.ts.map +1 -0
  136. package/lib/typescript/subtle.d.ts +3 -2
  137. package/lib/typescript/subtle.d.ts.map +1 -1
  138. package/lib/typescript/utils/conversion.d.ts +4 -3
  139. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  140. package/lib/typescript/utils/errors.d.ts +12 -0
  141. package/lib/typescript/utils/errors.d.ts.map +1 -1
  142. package/lib/typescript/utils/types.d.ts +32 -15
  143. package/lib/typescript/utils/types.d.ts.map +1 -1
  144. package/lib/typescript/utils/validation.d.ts +3 -1
  145. package/lib/typescript/utils/validation.d.ts.map +1 -1
  146. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +2 -0
  147. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +20 -0
  148. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +20 -0
  149. package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +48 -0
  150. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +9 -0
  151. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +9 -0
  152. package/nitrogen/generated/shared/c++/HybridSlhDsaKeyPairSpec.cpp +29 -0
  153. package/nitrogen/generated/shared/c++/HybridSlhDsaKeyPairSpec.hpp +72 -0
  154. package/nitrogen/generated/shared/c++/HybridTurboShakeSpec.cpp +22 -0
  155. package/nitrogen/generated/shared/c++/HybridTurboShakeSpec.hpp +70 -0
  156. package/nitrogen/generated/shared/c++/JWK.hpp +9 -1
  157. package/nitrogen/generated/shared/c++/JWKkty.hpp +4 -0
  158. package/nitrogen/generated/shared/c++/KangarooTwelveVariant.hpp +76 -0
  159. package/nitrogen/generated/shared/c++/TurboShakeVariant.hpp +76 -0
  160. package/package.json +2 -3
  161. package/src/dhKeyPair.ts +8 -0
  162. package/src/dsa.ts +8 -0
  163. package/src/ec.ts +52 -29
  164. package/src/ed.ts +95 -16
  165. package/src/hash.ts +108 -5
  166. package/src/keys/classes.ts +46 -5
  167. package/src/keys/generateKeyPair.ts +151 -5
  168. package/src/keys/index.ts +73 -3
  169. package/src/keys/signVerify.ts +13 -2
  170. package/src/keys/utils.ts +78 -5
  171. package/src/random.ts +93 -9
  172. package/src/rsa.ts +8 -0
  173. package/src/slhdsa.ts +146 -0
  174. package/src/specs/keyObjectHandle.nitro.ts +17 -0
  175. package/src/specs/slhDsaKeyPair.nitro.ts +29 -0
  176. package/src/specs/turboshake.nitro.ts +21 -0
  177. package/src/subtle.ts +1191 -360
  178. package/src/utils/conversion.ts +72 -21
  179. package/src/utils/errors.ts +72 -4
  180. package/src/utils/types.ts +80 -15
  181. package/src/utils/validation.ts +70 -1
@@ -15,10 +15,6 @@
15
15
  #include <openssl/hkdf.h>
16
16
  #endif
17
17
 
18
- #if OPENSSL_VERSION_NUMBER >= 0x30200000L
19
- #include <openssl/thread.h>
20
- #endif
21
-
22
18
  #include <algorithm>
23
19
  #include <array>
24
20
  #include <cstring>
@@ -28,6 +24,9 @@
28
24
  #include <openssl/core_names.h>
29
25
  #include <openssl/params.h>
30
26
  #include <openssl/provider.h>
27
+ #if OPENSSL_VERSION_NUMBER >= 0x30200000L
28
+ #include <openssl/thread.h>
29
+ #endif
31
30
  #endif
32
31
  #if OPENSSL_WITH_PQC
33
32
  struct PQCMapping {
@@ -228,7 +227,7 @@ void DataPointer::zero() {
228
227
  OPENSSL_cleanse(data_, len_);
229
228
  }
230
229
 
231
- void DataPointer::reset(void* data, size_t length) {
230
+ void DataPointer::free() {
232
231
  if (data_ != nullptr) {
233
232
  if (secure_) {
234
233
  OPENSSL_secure_clear_free(data_, len_);
@@ -236,6 +235,10 @@ void DataPointer::reset(void* data, size_t length) {
236
235
  OPENSSL_clear_free(data_, len_);
237
236
  }
238
237
  }
238
+ }
239
+
240
+ void DataPointer::reset(void* data, size_t length) {
241
+ free();
239
242
  data_ = data;
240
243
  len_ = length;
241
244
  }
@@ -258,7 +261,12 @@ DataPointer DataPointer::resize(size_t len) {
258
261
  size_t actual_len = std::min(len_, len);
259
262
  auto buf = release();
260
263
  if (actual_len == len_) return DataPointer(buf.data, actual_len);
261
- buf.data = OPENSSL_realloc(buf.data, actual_len);
264
+ auto new_data = OPENSSL_realloc(buf.data, actual_len);
265
+ if (new_data == nullptr) {
266
+ free();
267
+ return {};
268
+ }
269
+ buf.data = new_data;
262
270
  buf.len = actual_len;
263
271
  return DataPointer(buf);
264
272
  }
@@ -810,11 +818,15 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
810
818
  // Note that the preferred name syntax (see RFCs 5280 and 1034) with
811
819
  // wildcards is a subset of what we consider "safe", so spec-compliant DNS
812
820
  // names will never need to be escaped.
813
- PrintAltName(out, reinterpret_cast<const char*>(name->data), name->length);
821
+ PrintAltName(out,
822
+ reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
823
+ ASN1_STRING_length(name));
814
824
  } else if (gen->type == GEN_EMAIL) {
815
825
  ASN1_IA5STRING* name = gen->d.rfc822Name;
816
826
  BIO_write(out.get(), "email:", 6);
817
- PrintAltName(out, reinterpret_cast<const char*>(name->data), name->length);
827
+ PrintAltName(out,
828
+ reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
829
+ ASN1_STRING_length(name));
818
830
  } else if (gen->type == GEN_URI) {
819
831
  ASN1_IA5STRING* name = gen->d.uniformResourceIdentifier;
820
832
  BIO_write(out.get(), "URI:", 4);
@@ -822,7 +834,9 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
822
834
  // with a few exceptions, most notably URIs that contains commas (see
823
835
  // RFC 2396). In other words, most legitimate URIs will not require
824
836
  // escaping.
825
- PrintAltName(out, reinterpret_cast<const char*>(name->data), name->length);
837
+ PrintAltName(out,
838
+ reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
839
+ ASN1_STRING_length(name));
826
840
  } else if (gen->type == GEN_DIRNAME) {
827
841
  // Earlier versions of Node.js used X509_NAME_oneline to print the X509_NAME
828
842
  // object. The format was non standard and should be avoided. The use of
@@ -855,17 +869,18 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
855
869
  } else if (gen->type == GEN_IPADD) {
856
870
  BIO_printf(out.get(), "IP Address:");
857
871
  const ASN1_OCTET_STRING* ip = gen->d.ip;
858
- const unsigned char* b = ip->data;
859
- if (ip->length == 4) {
872
+ const unsigned char* b = ASN1_STRING_get0_data(ip);
873
+ int ip_len = ASN1_STRING_length(ip);
874
+ if (ip_len == 4) {
860
875
  BIO_printf(out.get(), "%d.%d.%d.%d", b[0], b[1], b[2], b[3]);
861
- } else if (ip->length == 16) {
876
+ } else if (ip_len == 16) {
862
877
  for (unsigned int j = 0; j < 8; j++) {
863
878
  uint16_t pair = (b[2 * j] << 8) | b[2 * j + 1];
864
879
  BIO_printf(out.get(), (j == 0) ? "%X" : ":%X", pair);
865
880
  }
866
881
  } else {
867
882
  #if OPENSSL_VERSION_MAJOR >= 3
868
- BIO_printf(out.get(), "<invalid length=%d>", ip->length);
883
+ BIO_printf(out.get(), "<invalid length=%d>", ip_len);
869
884
  #else
870
885
  BIO_printf(out.get(), "<invalid>");
871
886
  #endif
@@ -915,15 +930,15 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
915
930
  if (unicode) {
916
931
  auto name = gen->d.otherName->value->value.utf8string;
917
932
  PrintAltName(out,
918
- reinterpret_cast<const char*>(name->data),
919
- name->length,
933
+ reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
934
+ ASN1_STRING_length(name),
920
935
  AltNameOption::UTF8,
921
936
  prefix);
922
937
  } else {
923
938
  auto name = gen->d.otherName->value->value.ia5string;
924
939
  PrintAltName(out,
925
- reinterpret_cast<const char*>(name->data),
926
- name->length,
940
+ reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
941
+ ASN1_STRING_length(name),
927
942
  AltNameOption::NONE,
928
943
  prefix);
929
944
  }
@@ -944,11 +959,14 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
944
959
  }
945
960
  } // namespace
946
961
 
947
- bool SafeX509SubjectAltNamePrint(const BIOPointer& out, X509_EXTENSION* ext) {
948
- auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(ext));
962
+ bool SafeX509SubjectAltNamePrint(const BIOPointer& out,
963
+ const X509_EXTENSION* ext) {
964
+ // const_cast needed for OpenSSL < 4.0 which lacks const-correctness
965
+ auto* mext = const_cast<X509_EXTENSION*>(ext);
966
+ auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(mext));
949
967
  if (ret != NID_subject_alt_name) return false;
950
968
 
951
- GENERAL_NAMES* names = static_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(ext));
969
+ GENERAL_NAMES* names = static_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(mext));
952
970
  if (names == nullptr) return false;
953
971
 
954
972
  bool ok = true;
@@ -967,12 +985,14 @@ bool SafeX509SubjectAltNamePrint(const BIOPointer& out, X509_EXTENSION* ext) {
967
985
  return ok;
968
986
  }
969
987
 
970
- bool SafeX509InfoAccessPrint(const BIOPointer& out, X509_EXTENSION* ext) {
971
- auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(ext));
988
+ bool SafeX509InfoAccessPrint(const BIOPointer& out, const X509_EXTENSION* ext) {
989
+ // const_cast needed for OpenSSL < 4.0 which lacks const-correctness
990
+ auto* mext = const_cast<X509_EXTENSION*>(ext);
991
+ auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(mext));
972
992
  if (ret != NID_info_access) return false;
973
993
 
974
994
  AUTHORITY_INFO_ACCESS* descs =
975
- static_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(ext));
995
+ static_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(mext));
976
996
  if (descs == nullptr) return false;
977
997
 
978
998
  bool ok = true;
@@ -1116,7 +1136,7 @@ BIOPointer X509View::getValidFrom() const {
1116
1136
  if (cert_ == nullptr) return {};
1117
1137
  BIOPointer bio(BIO_new(BIO_s_mem()));
1118
1138
  if (!bio) return {};
1119
- ASN1_TIME_print(bio.get(), X509_get_notBefore(cert_));
1139
+ ASN1_TIME_print(bio.get(), X509_get0_notBefore(cert_));
1120
1140
  return bio;
1121
1141
  }
1122
1142
 
@@ -1125,7 +1145,7 @@ BIOPointer X509View::getValidTo() const {
1125
1145
  if (cert_ == nullptr) return {};
1126
1146
  BIOPointer bio(BIO_new(BIO_s_mem()));
1127
1147
  if (!bio) return {};
1128
- ASN1_TIME_print(bio.get(), X509_get_notAfter(cert_));
1148
+ ASN1_TIME_print(bio.get(), X509_get0_notAfter(cert_));
1129
1149
  return bio;
1130
1150
  }
1131
1151
 
@@ -1515,6 +1535,7 @@ BIOPointer BIOPointer::NewSecMem() {
1515
1535
  }
1516
1536
 
1517
1537
  BIOPointer BIOPointer::New(const BIO_METHOD* method) {
1538
+ if (method == nullptr) return {};
1518
1539
  return BIOPointer(BIO_new(method));
1519
1540
  }
1520
1541
 
@@ -3402,19 +3423,21 @@ bool CipherCtxPointer::setKeyLength(size_t length) {
3402
3423
  bool CipherCtxPointer::setIvLength(size_t length) {
3403
3424
  if (!ctx_) return false;
3404
3425
  return EVP_CIPHER_CTX_ctrl(
3405
- ctx_.get(), EVP_CTRL_AEAD_SET_IVLEN, length, nullptr);
3426
+ ctx_.get(), EVP_CTRL_AEAD_SET_IVLEN, length, nullptr) > 0;
3406
3427
  }
3407
3428
 
3408
3429
  bool CipherCtxPointer::setAeadTag(const Buffer<const char>& tag) {
3409
3430
  if (!ctx_) return false;
3410
- return EVP_CIPHER_CTX_ctrl(
3411
- ctx_.get(), EVP_CTRL_AEAD_SET_TAG, tag.len, const_cast<char*>(tag.data));
3431
+ return EVP_CIPHER_CTX_ctrl(ctx_.get(),
3432
+ EVP_CTRL_AEAD_SET_TAG,
3433
+ tag.len,
3434
+ const_cast<char*>(tag.data)) > 0;
3412
3435
  }
3413
3436
 
3414
3437
  bool CipherCtxPointer::setAeadTagLength(size_t length) {
3415
3438
  if (!ctx_) return false;
3416
3439
  return EVP_CIPHER_CTX_ctrl(
3417
- ctx_.get(), EVP_CTRL_AEAD_SET_TAG, length, nullptr);
3440
+ ctx_.get(), EVP_CTRL_AEAD_SET_TAG, length, nullptr) > 0;
3418
3441
  }
3419
3442
 
3420
3443
  bool CipherCtxPointer::setPadding(bool padding) {
@@ -3484,7 +3507,7 @@ bool CipherCtxPointer::update(const Buffer<const unsigned char>& in,
3484
3507
 
3485
3508
  bool CipherCtxPointer::getAeadTag(size_t len, unsigned char* out) {
3486
3509
  if (!ctx_) return false;
3487
- return EVP_CIPHER_CTX_ctrl(ctx_.get(), EVP_CTRL_AEAD_GET_TAG, len, out);
3510
+ return EVP_CIPHER_CTX_ctrl(ctx_.get(), EVP_CTRL_AEAD_GET_TAG, len, out) > 0;
3488
3511
  }
3489
3512
 
3490
3513
  // ============================================================================
@@ -3667,8 +3690,38 @@ bool ECKeyPointer::setPublicKey(const ECPointPointer& pub) {
3667
3690
  bool ECKeyPointer::setPublicKeyRaw(const BignumPointer& x,
3668
3691
  const BignumPointer& y) {
3669
3692
  if (!key_) return false;
3670
- return EC_KEY_set_public_key_affine_coordinates(
3671
- key_.get(), x.get(), y.get()) == 1;
3693
+ const EC_GROUP* group = EC_KEY_get0_group(key_.get());
3694
+ if (group == nullptr) return false;
3695
+
3696
+ // For curves with cofactor h=1, use EC_POINT_oct2point +
3697
+ // EC_KEY_set_public_key instead of EC_KEY_set_public_key_affine_coordinates.
3698
+ // The latter internally calls EC_KEY_check_key() which performs a scalar
3699
+ // multiplication (n*Q) for order validation — redundant when h=1 since every
3700
+ // on-curve point already has order n. EC_POINT_oct2point validates the point
3701
+ // is on the curve, which is sufficient. For curves with h!=1, fall back to
3702
+ // the full check.
3703
+ auto cofactor = BignumPointer::New();
3704
+ if (!cofactor || !EC_GROUP_get_cofactor(group, cofactor.get(), nullptr) ||
3705
+ !cofactor.isOne()) {
3706
+ return EC_KEY_set_public_key_affine_coordinates(
3707
+ key_.get(), x.get(), y.get()) == 1;
3708
+ }
3709
+
3710
+ // Field element byte length: ceil(degree_bits / 8).
3711
+ size_t field_len = (EC_GROUP_get_degree(group) + 7) / 8;
3712
+ // Build an uncompressed point: 0x04 || x || y, each padded to field_len.
3713
+ size_t uncompressed_len = 1 + 2 * field_len;
3714
+ auto buf = DataPointer::Alloc(uncompressed_len);
3715
+ if (!buf) return false;
3716
+ unsigned char* ptr = static_cast<unsigned char*>(buf.get());
3717
+ ptr[0] = POINT_CONVERSION_UNCOMPRESSED;
3718
+ x.encodePaddedInto(ptr + 1, field_len);
3719
+ y.encodePaddedInto(ptr + 1 + field_len, field_len);
3720
+
3721
+ auto point = ECPointPointer::New(group);
3722
+ if (!point) return false;
3723
+ if (!point.setFromBuffer({ptr, uncompressed_len}, group)) return false;
3724
+ return EC_KEY_set_public_key(key_.get(), point.get()) == 1;
3672
3725
  }
3673
3726
 
3674
3727
  bool ECKeyPointer::setPrivateKey(const BignumPointer& priv) {
@@ -4490,6 +4543,27 @@ std::optional<EVP_PKEY_CTX*> EVPMDCtxPointer::signInitWithContext(
4490
4543
  #ifdef OSSL_SIGNATURE_PARAM_CONTEXT_STRING
4491
4544
  EVP_PKEY_CTX* ctx = nullptr;
4492
4545
 
4546
+ #ifdef OSSL_SIGNATURE_PARAM_INSTANCE
4547
+ // Ed25519 requires the INSTANCE param to switch into Ed25519ctx mode.
4548
+ // Without it, OpenSSL silently ignores the context string.
4549
+ if (key.id() == EVP_PKEY_ED25519) {
4550
+ const OSSL_PARAM params[] = {
4551
+ OSSL_PARAM_construct_utf8_string(
4552
+ OSSL_SIGNATURE_PARAM_INSTANCE, const_cast<char*>("Ed25519ctx"), 0),
4553
+ OSSL_PARAM_construct_octet_string(
4554
+ OSSL_SIGNATURE_PARAM_CONTEXT_STRING,
4555
+ const_cast<unsigned char*>(context_string.data),
4556
+ context_string.len),
4557
+ OSSL_PARAM_END};
4558
+
4559
+ if (!EVP_DigestSignInit_ex(
4560
+ ctx_.get(), &ctx, nullptr, nullptr, nullptr, key.get(), params)) {
4561
+ return std::nullopt;
4562
+ }
4563
+ return ctx;
4564
+ }
4565
+ #endif // OSSL_SIGNATURE_PARAM_INSTANCE
4566
+
4493
4567
  const OSSL_PARAM params[] = {
4494
4568
  OSSL_PARAM_construct_octet_string(
4495
4569
  OSSL_SIGNATURE_PARAM_CONTEXT_STRING,
@@ -4514,6 +4588,27 @@ std::optional<EVP_PKEY_CTX*> EVPMDCtxPointer::verifyInitWithContext(
4514
4588
  #ifdef OSSL_SIGNATURE_PARAM_CONTEXT_STRING
4515
4589
  EVP_PKEY_CTX* ctx = nullptr;
4516
4590
 
4591
+ #ifdef OSSL_SIGNATURE_PARAM_INSTANCE
4592
+ // Ed25519 requires the INSTANCE param to switch into Ed25519ctx mode.
4593
+ // Without it, OpenSSL silently ignores the context string.
4594
+ if (key.id() == EVP_PKEY_ED25519) {
4595
+ const OSSL_PARAM params[] = {
4596
+ OSSL_PARAM_construct_utf8_string(
4597
+ OSSL_SIGNATURE_PARAM_INSTANCE, const_cast<char*>("Ed25519ctx"), 0),
4598
+ OSSL_PARAM_construct_octet_string(
4599
+ OSSL_SIGNATURE_PARAM_CONTEXT_STRING,
4600
+ const_cast<unsigned char*>(context_string.data),
4601
+ context_string.len),
4602
+ OSSL_PARAM_END};
4603
+
4604
+ if (!EVP_DigestVerifyInit_ex(
4605
+ ctx_.get(), &ctx, nullptr, nullptr, nullptr, key.get(), params)) {
4606
+ return std::nullopt;
4607
+ }
4608
+ return ctx;
4609
+ }
4610
+ #endif // OSSL_SIGNATURE_PARAM_INSTANCE
4611
+
4517
4612
  const OSSL_PARAM params[] = {
4518
4613
  OSSL_PARAM_construct_octet_string(
4519
4614
  OSSL_SIGNATURE_PARAM_CONTEXT_STRING,
@@ -4812,12 +4907,12 @@ bool X509Name::Iterator::operator!=(const Iterator& other) const {
4812
4907
  std::pair<std::string, std::string> X509Name::Iterator::operator*() const {
4813
4908
  if (loc_ == name_.total_) return {{}, {}};
4814
4909
 
4815
- X509_NAME_ENTRY* entry = X509_NAME_get_entry(name_, loc_);
4910
+ const X509_NAME_ENTRY* entry = X509_NAME_get_entry(name_, loc_);
4816
4911
  if (entry == nullptr) [[unlikely]]
4817
4912
  return {{}, {}};
4818
4913
 
4819
- ASN1_OBJECT* name = X509_NAME_ENTRY_get_object(entry);
4820
- ASN1_STRING* value = X509_NAME_ENTRY_get_data(entry);
4914
+ const ASN1_OBJECT* name = X509_NAME_ENTRY_get_object(entry);
4915
+ const ASN1_STRING* value = X509_NAME_ENTRY_get_data(entry);
4821
4916
 
4822
4917
  if (name == nullptr || value == nullptr) [[unlikely]] {
4823
4918
  return {{}, {}};
@@ -69,6 +69,9 @@ function dh_formatKeyPairOutput(dh, encoding) {
69
69
  const priv = _classes.KeyObject.createKeyObject('private', privateKeyData, _utils.KFormatType.DER, _utils.KeyEncoding.PKCS8);
70
70
  let publicKey;
71
71
  let privateKey;
72
+ if (publicFormat === 'raw-public' || privateFormat === 'raw-private' || privateFormat === 'raw-seed') {
73
+ throw new Error('Raw key formats are not supported for DH keys');
74
+ }
72
75
  if (publicFormat === -1) {
73
76
  publicKey = pub;
74
77
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_dhGroups","DhKeyPairGen","constructor","options","native","NitroModules","createHybridObject","groupName","prime","primeLength","generator","group","DH_GROUPS","Error","primeBuf","Buffer","from","setPrime","buffer","slice","byteOffset","byteLength","gen","parseInt","setGenerator","setPrimeLength","generateKeyPair","generateKeyPairSync","exports","dh_prepareKeyGenParams","dh_formatKeyPairOutput","dh","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Uint8Array","toString","dh_generateKeyPairNode","dh_generateKeyPairNodeSync"],"sourceRoot":"../../src","sources":["dhKeyPair.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_dhGroups","DhKeyPairGen","constructor","options","native","NitroModules","createHybridObject","groupName","prime","primeLength","generator","group","DH_GROUPS","Error","primeBuf","Buffer","from","setPrime","buffer","slice","byteOffset","byteLength","gen","parseInt","setGenerator","setPrimeLength","generateKeyPair","generateKeyPairSync","exports","dh_prepareKeyGenParams","dh_formatKeyPairOutput","dh","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Uint8Array","toString","dh_generateKeyPairNode","dh_generateKeyPairNodeSync"],"sourceRoot":"../../src","sources":["dhKeyPair.ts"],"mappings":";;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAGA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAEO,MAAMK,YAAY,CAAC;EAGxBC,WAAWA,CAACC,OAA+B,EAAE;IAC3C,IAAI,CAACC,MAAM,GAAGC,qCAAY,CAACC,kBAAkB,CAAY,WAAW,CAAC;IAErE,MAAM;MAAEC,SAAS;MAAEC,KAAK;MAAEC,WAAW;MAAEC;IAAU,CAAC,GAAGP,OAAO;IAE5D,IAAII,SAAS,EAAE;MACb;MACA,MAAMI,KAAK,GAAGC,mBAAS,CAACL,SAAS,CAAC;MAClC,IAAI,CAACI,KAAK,EAAE;QACV,MAAM,IAAIE,KAAK,CAAC,qBAAqBN,SAAS,EAAE,CAAC;MACnD;MACA,MAAMO,QAAQ,GAAGC,yBAAM,CAACC,IAAI,CAACL,KAAK,CAACH,KAAK,EAAE,KAAK,CAAC;MAChD,IAAI,CAACJ,MAAM,CAACa,QAAQ,CAClBH,QAAQ,CAACI,MAAM,CAACC,KAAK,CACnBL,QAAQ,CAACM,UAAU,EACnBN,QAAQ,CAACM,UAAU,GAAGN,QAAQ,CAACO,UACjC,CACF,CAAC;MACD,MAAMC,GAAG,GAAGC,QAAQ,CAACZ,KAAK,CAACD,SAAS,EAAE,EAAE,CAAC;MACzC,IAAI,CAACN,MAAM,CAACoB,YAAY,CAACF,GAAG,CAAC;IAC/B,CAAC,MAAM,IAAId,KAAK,EAAE;MAChB;MACA,MAAMM,QAAQ,GAAGC,yBAAM,CAACC,IAAI,CAACR,KAAK,CAAC;MACnC,IAAI,CAACJ,MAAM,CAACa,QAAQ,CAClBH,QAAQ,CAACI,MAAM,CAACC,KAAK,CACnBL,QAAQ,CAACM,UAAU,EACnBN,QAAQ,CAACM,UAAU,GAAGN,QAAQ,CAACO,UACjC,CACF,CAAC;MACD,IAAI,CAACjB,MAAM,CAACoB,YAAY,CAACd,SAAS,IAAI,CAAC,CAAC;IAC1C,CAAC,MAAM,IAAID,WAAW,EAAE;MACtB,IAAI,CAACL,MAAM,CAACqB,cAAc,CAAChB,WAAW,CAAC;MACvC,IAAI,CAACL,MAAM,CAACoB,YAAY,CAACd,SAAS,IAAI,CAAC,CAAC;IAC1C,CAAC,MAAM;MACL,MAAM,IAAIG,KAAK,CACb,qEACF,CAAC;IACH;EACF;EAEA,MAAMa,eAAeA,CAAA,EAAkB;IACrC,MAAM,IAAI,CAACtB,MAAM,CAACsB,eAAe,CAAC,CAAC;EACrC;EAEAC,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAACvB,MAAM,CAACuB,mBAAmB,CAAC,CAAC;EACnC;AACF;AAACC,OAAA,CAAA3B,YAAA,GAAAA,YAAA;AAED,SAAS4B,sBAAsBA,CAC7B1B,OAA2C,EAC7B;EACd,IAAI,CAACA,OAAO,EAAE;IACZ,MAAM,IAAIU,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,OAAO,IAAIZ,YAAY,CAACE,OAAO,CAAC;AAClC;AAEA,SAAS2B,sBAAsBA,CAC7BC,EAAgB,EAChBC,QAA0B,EAI1B;EACA,MAAM;IAAEC,YAAY;IAAEC,aAAa;IAAEC,MAAM;IAAEC;EAAW,CAAC,GAAGJ,QAAQ;EAEpE,MAAMK,aAAa,GAAGN,EAAE,CAAC3B,MAAM,CAACkC,YAAY,CAAC,CAAC;EAC9C,MAAMC,cAAc,GAAGR,EAAE,CAAC3B,MAAM,CAACoC,aAAa,CAAC,CAAC;EAEhD,MAAMC,GAAG,GAAGC,kBAAS,CAACC,eAAe,CACnC,QAAQ,EACRN,aAAa,EACbO,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACC,IACd,CAAoB;EAEpB,MAAMC,IAAI,GAAGN,kBAAS,CAACC,eAAe,CACpC,SAAS,EACTJ,cAAc,EACdK,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACG,KACd,CAAqB;EAErB,IAAIC,SAA0D;EAC9D,IAAIC,UAA4D;EAEhE,IACElB,YAAY,KAAK,YAAY,IAC7BC,aAAa,KAAK,aAAa,IAC/BA,aAAa,KAAK,UAAU,EAC5B;IACA,MAAM,IAAIrB,KAAK,CAAC,+CAA+C,CAAC;EAClE;EAEA,IAAIoB,YAAY,KAAK,CAAC,CAAC,EAAE;IACvBiB,SAAS,GAAGT,GAAG;EACjB,CAAC,MAAM;IACL,MAAMW,MAAM,GACVnB,YAAY,KAAKW,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACC,GAAG;IACtE,MAAMS,QAAQ,GAAGb,GAAG,CAACc,MAAM,CAACC,SAAS,CAACJ,MAAM,EAAEN,kBAAW,CAACC,IAAI,CAAC;IAC/D,IAAIK,MAAM,KAAKR,kBAAW,CAACS,GAAG,EAAE;MAC9BH,SAAS,GAAGnC,yBAAM,CAACC,IAAI,CAAC,IAAIyC,UAAU,CAACH,QAAQ,CAAC,CAAC,CAACI,QAAQ,CAAC,OAAO,CAAC;IACrE,CAAC,MAAM;MACLR,SAAS,GAAGI,QAAQ;IACtB;EACF;EAEA,IAAIpB,aAAa,KAAK,CAAC,CAAC,EAAE;IACxBiB,UAAU,GAAGH,IAAI;EACnB,CAAC,MAAM;IACL,MAAMI,MAAM,GACVlB,aAAa,KAAKU,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACC,GAAG;IACvE,MAAMS,QAAQ,GAAGN,IAAI,CAACO,MAAM,CAACC,SAAS,CACpCJ,MAAM,EACNN,kBAAW,CAACG,KAAK,EACjBd,MAAM,EACNC,UACF,CAAC;IACD,IAAIgB,MAAM,KAAKR,kBAAW,CAACS,GAAG,EAAE;MAC9BF,UAAU,GAAGpC,yBAAM,CAACC,IAAI,CAAC,IAAIyC,UAAU,CAACH,QAAQ,CAAC,CAAC,CAACI,QAAQ,CAAC,OAAO,CAAC;IACtE,CAAC,MAAM;MACLP,UAAU,GAAGG,QAAQ;IACvB;EACF;EAEA,OAAO;IAAEJ,SAAS;IAAEC;EAAW,CAAC;AAClC;AAEO,eAAeQ,sBAAsBA,CAC1CxD,OAA2C,EAC3C6B,QAA0B,EAIzB;EACD,MAAMD,EAAE,GAAGF,sBAAsB,CAAC1B,OAAO,CAAC;EAC1C,MAAM4B,EAAE,CAACL,eAAe,CAAC,CAAC;EAC1B,OAAOI,sBAAsB,CAACC,EAAE,EAAEC,QAAQ,CAAC;AAC7C;AAEO,SAAS4B,0BAA0BA,CACxCzD,OAA2C,EAC3C6B,QAA0B,EAI1B;EACA,MAAMD,EAAE,GAAGF,sBAAsB,CAAC1B,OAAO,CAAC;EAC1C4B,EAAE,CAACJ,mBAAmB,CAAC,CAAC;EACxB,OAAOG,sBAAsB,CAACC,EAAE,EAAEC,QAAQ,CAAC;AAC7C","ignoreList":[]}
@@ -58,6 +58,9 @@ function dsa_formatKeyPairOutput(dsa, encoding) {
58
58
  const priv = _classes.KeyObject.createKeyObject('private', privateKeyData, _utils.KFormatType.DER, _utils.KeyEncoding.PKCS8);
59
59
  let publicKey;
60
60
  let privateKey;
61
+ if (publicFormat === 'raw-public' || privateFormat === 'raw-private' || privateFormat === 'raw-seed') {
62
+ throw new Error('Raw key formats are not supported for DSA keys');
63
+ }
61
64
  if (publicFormat === -1) {
62
65
  publicKey = pub;
63
66
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","Dsa","constructor","modulusLength","divisorLength","native","NitroModules","createHybridObject","setModulusLength","undefined","setDivisorLength","generateKeyPair","generateKeyPairSync","exports","DSA_MIN_MODULUS_LENGTH","dsa_prepareKeyGenParams","options","Error","RangeError","dsa_formatKeyPairOutput","dsa","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Buffer","from","Uint8Array","toString","dsa_generateKeyPairNode","dsa_generateKeyPairNodeSync"],"sourceRoot":"../../src","sources":["dsa.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","Dsa","constructor","modulusLength","divisorLength","native","NitroModules","createHybridObject","setModulusLength","undefined","setDivisorLength","generateKeyPair","generateKeyPairSync","exports","DSA_MIN_MODULUS_LENGTH","dsa_prepareKeyGenParams","options","Error","RangeError","dsa_formatKeyPairOutput","dsa","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Buffer","from","Uint8Array","toString","dsa_generateKeyPairNode","dsa_generateKeyPairNodeSync"],"sourceRoot":"../../src","sources":["dsa.ts"],"mappings":"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","ignoreList":[]}
@@ -61,70 +61,62 @@ function ecImportKey(format, keyData, algorithm, extractable, keyUsages) {
61
61
  if (!namedCurve || !_utils.kNamedCurveAliases[namedCurve]) {
62
62
  throw (0, _utils.lazyDOMException)('Unrecognized namedCurve', 'NotSupportedError');
63
63
  }
64
-
65
- // Handle JWK format
66
64
  if (format === 'jwk') {
67
65
  const jwk = keyData;
68
-
69
- // Validate JWK
66
+ if (!jwk || typeof jwk !== 'object') {
67
+ throw (0, _utils.lazyDOMException)('Invalid keyData', 'DataError');
68
+ }
70
69
  if (jwk.kty !== 'EC') {
71
70
  throw (0, _utils.lazyDOMException)('Invalid JWK "kty" Parameter', 'DataError');
72
71
  }
73
72
  if (jwk.crv !== namedCurve) {
74
73
  throw (0, _utils.lazyDOMException)('JWK "crv" does not match the requested algorithm', 'DataError');
75
74
  }
76
-
77
- // Check use parameter if present
78
- if (jwk.use !== undefined) {
79
- const expectedUse = name === 'ECDH' ? 'enc' : 'sig';
80
- if (jwk.use !== expectedUse) {
81
- throw (0, _utils.lazyDOMException)('Invalid JWK "use" Parameter', 'DataError');
82
- }
83
- }
84
-
85
- // Check alg parameter if present
75
+ const expectedUse = name === 'ECDH' ? 'enc' : 'sig';
76
+ (0, _utils.validateJwkStructure)(jwk, extractable, keyUsages, expectedUse);
86
77
  if (jwk.alg !== undefined) {
87
78
  let expectedAlg;
88
79
  if (name === 'ECDSA') {
89
- // Map namedCurve to expected ECDSA algorithm
90
80
  expectedAlg = namedCurve === 'P-256' ? 'ES256' : namedCurve === 'P-384' ? 'ES384' : namedCurve === 'P-521' ? 'ES512' : undefined;
91
81
  } else if (name === 'ECDH') {
92
- // ECDH uses ECDH-ES algorithm
93
82
  expectedAlg = 'ECDH-ES';
94
83
  }
95
- if (expectedAlg && jwk.alg !== undefined && jwk.alg !== expectedAlg) {
84
+ if (expectedAlg && jwk.alg !== expectedAlg) {
96
85
  throw (0, _utils.lazyDOMException)('JWK "alg" does not match the requested algorithm', 'DataError');
97
86
  }
98
87
  }
99
-
100
- // Import using C++ layer
88
+ const isPublicJwk = jwk.d === undefined;
89
+ const validUsagesJwk = name === 'ECDSA' ? isPublicJwk ? ['verify'] : ['sign'] : isPublicJwk ? [] : ['deriveKey', 'deriveBits'];
90
+ if ((0, _utils.hasAnyNotIn)(keyUsages, validUsagesJwk)) {
91
+ throw (0, _utils.lazyDOMException)(`Unsupported key usage for a ${name} key`, 'SyntaxError');
92
+ }
101
93
  const handle = _reactNativeNitroModules.NitroModules.createHybridObject('KeyObjectHandle');
102
- const keyType = handle.initJwk(jwk, namedCurve);
94
+ let keyType;
95
+ try {
96
+ keyType = handle.initJwk(jwk, namedCurve);
97
+ } catch (err) {
98
+ throw (0, _utils.lazyDOMException)('Invalid keyData', {
99
+ name: 'DataError',
100
+ cause: err
101
+ });
102
+ }
103
103
  if (keyType === undefined) {
104
- throw (0, _utils.lazyDOMException)('Invalid JWK', 'DataError');
104
+ throw (0, _utils.lazyDOMException)('Invalid keyData', 'DataError');
105
105
  }
106
-
107
- // Create the appropriate KeyObject based on type
108
106
  let keyObject;
109
107
  if (keyType === 1) {
110
108
  keyObject = new _classes.PublicKeyObject(handle);
111
109
  } else if (keyType === 2) {
112
110
  keyObject = new _classes.PrivateKeyObject(handle);
113
111
  } else {
114
- throw (0, _utils.lazyDOMException)('Unexpected key type from JWK import', 'DataError');
112
+ throw (0, _utils.lazyDOMException)('Invalid keyData', 'DataError');
115
113
  }
116
114
  return new _classes.CryptoKey(keyObject, algorithm, keyUsages, extractable);
117
115
  }
118
-
119
- // Handle binary formats (spki, pkcs8, raw)
120
116
  if (format !== 'spki' && format !== 'pkcs8' && format !== 'raw') {
121
117
  throw (0, _utils.lazyDOMException)(`Unsupported format: ${format}`, 'NotSupportedError');
122
118
  }
123
-
124
- // Determine expected key type based on format
125
119
  const expectedKeyType = format === 'spki' || format === 'raw' ? 'public' : 'private';
126
-
127
- // Validate usages for the key type
128
120
  const isPublicKey = expectedKeyType === 'public';
129
121
  let validUsages;
130
122
  if (name === 'ECDSA') {
@@ -155,6 +147,17 @@ function ecImportKey(format, keyData, algorithm, extractable, keyUsages) {
155
147
  } else {
156
148
  // Use standard DER import for spki/pkcs8
157
149
  keyObject = _classes.KeyObject.createKeyObject(expectedKeyType, keyBuffer, _utils.KFormatType.DER, format === 'spki' ? _utils.KeyEncoding.SPKI : _utils.KeyEncoding.PKCS8);
150
+
151
+ // Validate the imported curve matches the requested algorithm.namedCurve.
152
+ const expectedAlias = _utils.kNamedCurveAliases[namedCurve];
153
+ if (keyObject.handle.keyDetail().namedCurve !== expectedAlias) {
154
+ throw (0, _utils.lazyDOMException)('Named curve mismatch', 'DataError');
155
+ }
156
+ }
157
+
158
+ // Verify the public/private point lies on the named curve.
159
+ if (!keyObject.handle.checkEcKeyData()) {
160
+ throw (0, _utils.lazyDOMException)('Invalid keyData', 'DataError');
158
161
  }
159
162
  return new _classes.CryptoKey(keyObject, algorithm, keyUsages, extractable);
160
163
  }
@@ -282,6 +285,8 @@ function ec_formatKeyPairOutput(ec, encoding) {
282
285
  let privateKey;
283
286
  if (publicFormat === -1) {
284
287
  publicKey = pub;
288
+ } else if (publicFormat === 'raw-public') {
289
+ publicKey = _reactNativeBuffer.Buffer.from(pub.handle.exportECPublicRaw(publicType === 'compressed'));
285
290
  } else {
286
291
  const format = publicFormat === _utils.KFormatType.PEM ? _utils.KFormatType.PEM : _utils.KFormatType.DER;
287
292
  const keyEncoding = publicType === _utils.KeyEncoding.SPKI ? _utils.KeyEncoding.SPKI : _utils.KeyEncoding.SPKI;
@@ -294,6 +299,8 @@ function ec_formatKeyPairOutput(ec, encoding) {
294
299
  }
295
300
  if (privateFormat === -1) {
296
301
  privateKey = priv;
302
+ } else if (privateFormat === 'raw-private') {
303
+ privateKey = _reactNativeBuffer.Buffer.from(priv.handle.exportECPrivateRaw());
297
304
  } else {
298
305
  const format = privateFormat === _utils.KFormatType.PEM ? _utils.KFormatType.PEM : _utils.KFormatType.DER;
299
306
  const keyEncoding = privateType === _utils.KeyEncoding.PKCS8 ? _utils.KeyEncoding.PKCS8 : privateType === _utils.KeyEncoding.SEC1 ? _utils.KeyEncoding.SEC1 : _utils.KeyEncoding.PKCS8;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_classes","_utils","_reactNativeBuffer","_ecdh","EcUtils","native","_native","NitroModules","createHybridObject","getSupportedCurves","getCurves","Ec","constructor","curve","setCurve","generateKeyPair","publicKey","getPublicKey","privateKey","getPrivateKey","generateKeyPairSync","exports","ecImportKey","format","keyData","algorithm","extractable","keyUsages","name","namedCurve","kNamedCurveAliases","lazyDOMException","jwk","kty","crv","use","undefined","expectedUse","alg","expectedAlg","handle","keyType","initJwk","keyObject","PublicKeyObject","PrivateKeyObject","CryptoKey","expectedKeyType","isPublicKey","validUsages","hasAnyNotIn","keyBuffer","bufferLikeToArrayBuffer","curveAlias","initECRaw","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","PKCS8","ecdsaSignVerify","key","data","hash","signature","isSign","type","hashName","normalizedHashName","normalizeHashName","HashContext","WebCrypto","ec","encoding","exportKey","importKey","usages","dataBuffer","sign","signatureBuffer","verify","ec_generateKeyPair","_options","Object","keys","includes","publicUsages","privateUsages","getUsagesUnion","keyAlgorithm","publicKeyData","privateKeyData","pub","priv","ec_prepareKeyGenParams","options","Error","ec_formatKeyPairOutput","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","PEM","keyEncoding","exported","Buffer","from","Uint8Array","toString","SEC1","ec_generateKeyPairNode","ec_generateKeyPairNodeSync","ecDeriveBits","baseKey","length","public","opensslCurve","ecdh","ECDH","jwkPrivate","exportJwk","d","privateBytes","setPrivateKey","jwkPublic","x","y","publicBytes","concat","secret","computeSecret","secretBuf","buffer","byteLength","Math","ceil","slice","byteOffset"],"sourceRoot":"../../src","sources":["ec.ts"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AAGA,IAAAC,QAAA,GAAAD,OAAA;AAmBA,IAAAE,MAAA,GAAAF,OAAA;AAWA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAEA,MAAMK,OAAO,CAAC;EAEZ,WAAmBC,MAAMA,CAAA,EAAc;IACrC,IAAI,CAAC,IAAI,CAACC,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAGC,qCAAY,CAACC,kBAAkB,CAAY,WAAW,CAAC;IACxE;IACA,OAAO,IAAI,CAACF,OAAO;EACrB;EACA,OAAcG,kBAAkBA,CAAA,EAAa;IAC3C,OAAO,IAAI,CAACJ,MAAM,CAACI,kBAAkB,CAAC,CAAC;EACzC;AACF;AAEO,SAASC,SAASA,CAAA,EAAa;EACpC,OAAON,OAAO,CAACK,kBAAkB,CAAC,CAAC;AACrC;AAEO,MAAME,EAAE,CAAC;EAGdC,WAAWA,CAACC,KAAa,EAAE;IACzB,IAAI,CAACR,MAAM,GAAGE,qCAAY,CAACC,kBAAkB,CAAY,WAAW,CAAC;IACrE,IAAI,CAACH,MAAM,CAACS,QAAQ,CAACD,KAAK,CAAC;EAC7B;EAEA,MAAME,eAAeA,CAAA,EAA2B;IAC9C,MAAM,IAAI,CAACV,MAAM,CAACU,eAAe,CAAC,CAAC;IACnC,OAAO;MACLC,SAAS,EAAE,IAAI,CAACX,MAAM,CAACY,YAAY,CAAC,CAAC;MACrCC,UAAU,EAAE,IAAI,CAACb,MAAM,CAACc,aAAa,CAAC;IACxC,CAAC;EACH;EAEAC,mBAAmBA,CAAA,EAAkB;IACnC,IAAI,CAACf,MAAM,CAACe,mBAAmB,CAAC,CAAC;IACjC,OAAO;MACLJ,SAAS,EAAE,IAAI,CAACX,MAAM,CAACY,YAAY,CAAC,CAAC;MACrCC,UAAU,EAAE,IAAI,CAACb,MAAM,CAACc,aAAa,CAAC;IACxC,CAAC;EACH;AACF;;AAEA;AAAAE,OAAA,CAAAV,EAAA,GAAAA,EAAA;AACO,SAASW,WAAWA,CACzBC,MAAoB,EACpBC,OAAsC,EACtCC,SAA0B,EAC1BC,WAAoB,EACpBC,SAAqB,EACV;EACX,MAAM;IAAEC,IAAI;IAAEC;EAAW,CAAC,GAAGJ,SAAS;EAEtC,IACE,CAACI,UAAU,IACX,CAACC,yBAAkB,CAACD,UAAU,CAAoC,EAClE;IACA,MAAM,IAAAE,uBAAgB,EAAC,yBAAyB,EAAE,mBAAmB,CAAC;EACxE;;EAEA;EACA,IAAIR,MAAM,KAAK,KAAK,EAAE;IACpB,MAAMS,GAAG,GAAGR,OAAc;;IAE1B;IACA,IAAIQ,GAAG,CAACC,GAAG,KAAK,IAAI,EAAE;MACpB,MAAM,IAAAF,uBAAgB,EAAC,6BAA6B,EAAE,WAAW,CAAC;IACpE;IAEA,IAAIC,GAAG,CAACE,GAAG,KAAKL,UAAU,EAAE;MAC1B,MAAM,IAAAE,uBAAgB,EACpB,kDAAkD,EAClD,WACF,CAAC;IACH;;IAEA;IACA,IAAIC,GAAG,CAACG,GAAG,KAAKC,SAAS,EAAE;MACzB,MAAMC,WAAW,GAAGT,IAAI,KAAK,MAAM,GAAG,KAAK,GAAG,KAAK;MACnD,IAAII,GAAG,CAACG,GAAG,KAAKE,WAAW,EAAE;QAC3B,MAAM,IAAAN,uBAAgB,EAAC,6BAA6B,EAAE,WAAW,CAAC;MACpE;IACF;;IAEA;IACA,IAAIC,GAAG,CAACM,GAAG,KAAKF,SAAS,EAAE;MACzB,IAAIG,WAA+B;MAEnC,IAAIX,IAAI,KAAK,OAAO,EAAE;QACpB;QACAW,WAAW,GACTV,UAAU,KAAK,OAAO,GAClB,OAAO,GACPA,UAAU,KAAK,OAAO,GACpB,OAAO,GACPA,UAAU,KAAK,OAAO,GACpB,OAAO,GACPO,SAAS;MACrB,CAAC,MAAM,IAAIR,IAAI,KAAK,MAAM,EAAE;QAC1B;QACAW,WAAW,GAAG,SAAS;MACzB;MAEA,IAAIA,WAAW,IAAIP,GAAG,CAACM,GAAG,KAAKF,SAAS,IAAIJ,GAAG,CAACM,GAAG,KAAKC,WAAW,EAAE;QACnE,MAAM,IAAAR,uBAAgB,EACpB,kDAAkD,EAClD,WACF,CAAC;MACH;IACF;;IAEA;IACA,MAAMS,MAAM,GACVjC,qCAAY,CAACC,kBAAkB,CAAkB,iBAAiB,CAAC;IACrE,MAAMiC,OAAO,GAAGD,MAAM,CAACE,OAAO,CAACV,GAAG,EAAEH,UAAwB,CAAC;IAE7D,IAAIY,OAAO,KAAKL,SAAS,EAAE;MACzB,MAAM,IAAAL,uBAAgB,EAAC,aAAa,EAAE,WAAW,CAAC;IACpD;;IAEA;IACA,IAAIY,SAAoB;IACxB,IAAIF,OAAO,KAAK,CAAC,EAAE;MACjBE,SAAS,GAAG,IAAIC,wBAAe,CAACJ,MAAM,CAAC;IACzC,CAAC,MAAM,IAAIC,OAAO,KAAK,CAAC,EAAE;MACxBE,SAAS,GAAG,IAAIE,yBAAgB,CAACL,MAAM,CAAC;IAC1C,CAAC,MAAM;MACL,MAAM,IAAAT,uBAAgB,EACpB,qCAAqC,EACrC,WACF,CAAC;IACH;IAEA,OAAO,IAAIe,kBAAS,CAACH,SAAS,EAAElB,SAAS,EAAEE,SAAS,EAAED,WAAW,CAAC;EACpE;;EAEA;EACA,IAAIH,MAAM,KAAK,MAAM,IAAIA,MAAM,KAAK,OAAO,IAAIA,MAAM,KAAK,KAAK,EAAE;IAC/D,MAAM,IAAAQ,uBAAgB,EACpB,uBAAuBR,MAAM,EAAE,EAC/B,mBACF,CAAC;EACH;;EAEA;EACA,MAAMwB,eAAe,GACnBxB,MAAM,KAAK,MAAM,IAAIA,MAAM,KAAK,KAAK,GAAG,QAAQ,GAAG,SAAS;;EAE9D;EACA,MAAMyB,WAAW,GAAGD,eAAe,KAAK,QAAQ;EAChD,IAAIE,WAAuB;EAE3B,IAAIrB,IAAI,KAAK,OAAO,EAAE;IACpBqB,WAAW,GAAGD,WAAW,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;EACnD,CAAC,MAAM,IAAIpB,IAAI,KAAK,MAAM,EAAE;IAC1BqB,WAAW,GAAGD,WAAW,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;EAC9D,CAAC,MAAM;IACL,MAAM,IAAAjB,uBAAgB,EAAC,uBAAuB,EAAE,mBAAmB,CAAC;EACtE;EAEA,IAAI,IAAAmB,kBAAW,EAACvB,SAAS,EAAEsB,WAAW,CAAC,EAAE;IACvC,MAAM,IAAAlB,uBAAgB,EACpB,+BAA+BH,IAAI,MAAM,EACzC,aACF,CAAC;EACH;;EAEA;EACA,MAAMuB,SAAS,GAAG,IAAAC,8BAAuB,EAAC5B,OAAqB,CAAC;;EAEhE;EACA,IAAImB,SAAoB;EAExB,IAAIpB,MAAM,KAAK,KAAK,EAAE;IACpB;IACA,MAAMiB,MAAM,GACVjC,qCAAY,CAACC,kBAAkB,CAAkB,iBAAiB,CAAC;IACrE,MAAM6C,UAAU,GACdvB,yBAAkB,CAACD,UAAU,CAAoC;IACnE;IACA,IAAI,CAACW,MAAM,CAACc,SAAS,CAACD,UAAU,EAAEF,SAAS,CAAC,EAAE;MAC5C,MAAM,IAAApB,uBAAgB,EAAC,6BAA6B,EAAE,WAAW,CAAC;IACpE;IACAY,SAAS,GAAG,IAAIC,wBAAe,CAACJ,MAAM,CAAC;EACzC,CAAC,MAAM;IACL;IACAG,SAAS,GAAGY,kBAAS,CAACC,eAAe,CACnCT,eAAe,EACfI,SAAS,EACTM,kBAAW,CAACC,GAAG,EACfnC,MAAM,KAAK,MAAM,GAAGoC,kBAAW,CAACC,IAAI,GAAGD,kBAAW,CAACE,KACrD,CAAC;EACH;EAEA,OAAO,IAAIf,kBAAS,CAACH,SAAS,EAAElB,SAAS,EAAEE,SAAS,EAAED,WAAW,CAAC;AACpE;;AAEA;AACO,MAAMoC,eAAe,GAAGA,CAC7BC,GAAc,EACdC,IAAgB,EAChB;EAAEC;AAAsB,CAAC,EACzBC,SAAsB,KACI;EAC1B,MAAMC,MAAM,GAAGD,SAAS,KAAK9B,SAAS;EACtC,MAAMW,eAAe,GAAGoB,MAAM,GAAG,SAAS,GAAG,QAAQ;EAErD,IAAIJ,GAAG,CAACK,IAAI,KAAKrB,eAAe,EAAE;IAChC,MAAM,IAAAhB,uBAAgB,EACpB,iBAAiBgB,eAAe,MAAM,EACtC,oBACF,CAAC;EACH;EAEA,MAAMsB,QAAQ,GAAG,OAAOJ,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGA,IAAI,EAAErC,IAAI;EAE7D,IAAI,CAACyC,QAAQ,EAAE;IACb,MAAM,IAAAtC,uBAAgB,EACpB,sCAAsC,EACtC,oBACF,CAAC;EACH;;EAEA;EACA,MAAMuC,kBAAkB,GAAG,IAAAC,wBAAiB,EAACF,QAAQ,EAAEG,kBAAW,CAACC,SAAS,CAAC;;EAE7E;EACA,MAAM5C,UAAU,GAAGkC,GAAG,CAACtC,SAAS,CAACI,UAAW;EAC5C,MAAM6C,EAAE,GAAG,IAAI/D,EAAE,CAACkB,UAAU,CAAC;;EAE7B;EACA;EACA,MAAM8C,QAAQ,GACZZ,GAAG,CAACK,IAAI,KAAK,SAAS,GAAGT,kBAAW,CAACE,KAAK,GAAGF,kBAAW,CAACC,IAAI;EAC/D,MAAMpC,OAAO,GAAGuC,GAAG,CAACpB,SAAS,CAACH,MAAM,CAACoC,SAAS,CAACnB,kBAAW,CAACC,GAAG,EAAEiB,QAAQ,CAAC;EACzE,MAAMxB,SAAS,GAAG,IAAAC,8BAAuB,EAAC5B,OAAO,CAAC;EAClDkD,EAAE,CAACrE,MAAM,CAACwE,SAAS,CACjB,KAAK,EACL1B,SAAS,EACTY,GAAG,CAACtC,SAAS,CAACG,IAAI,EAClBmC,GAAG,CAACrC,WAAW,EACfqC,GAAG,CAACe,MACN,CAAC;EAED,MAAMC,UAAU,GAAG,IAAA3B,8BAAuB,EAACY,IAAI,CAAC;EAEhD,IAAIG,MAAM,EAAE;IACV;IACA,OAAOO,EAAE,CAACrE,MAAM,CAAC2E,IAAI,CAACD,UAAU,EAAET,kBAAkB,CAAC;EACvD,CAAC,MAAM;IACL;IACA,MAAMW,eAAe,GAAG,IAAA7B,8BAAuB,EAACc,SAAU,CAAC;IAC3D,OAAOQ,EAAE,CAACrE,MAAM,CAAC6E,MAAM,CAACH,UAAU,EAAEE,eAAe,EAAEX,kBAAkB,CAAC;EAC1E;AACF,CAAC;;AAED;AAAAjD,OAAA,CAAAyC,eAAA,GAAAA,eAAA;AAEO,eAAeqB,kBAAkBA,CACtCvD,IAAY,EACZC,UAAkB,EAClBH,WAAoB,EACpBC,SAAqB;AACrB;AACAyD,QAAyB,CAAE;AAAA,EACH;EACxB;EACA,IAAI,CAACC,MAAM,CAACC,IAAI,CAACxD,yBAAkB,CAAC,CAACyD,QAAQ,CAAC1D,UAAU,IAAI,EAAE,CAAC,EAAE;IAC/D,MAAM,IAAAE,uBAAgB,EACpB,4BAA4BF,UAAU,GAAG,EACzC,mBACF,CAAC;EACH;EAEA,QAAQD,IAAI;IACV,KAAK,OAAO;MACV,IAAI,IAAAsB,kBAAW,EAACvB,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE;QAC9C,MAAM,IAAAI,uBAAgB,EACpB,wCAAwC,EACxC,aACF,CAAC;MACH;MACA;IACF,KAAK,MAAM;MACT,IAAI,IAAAmB,kBAAW,EAACvB,SAAS,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE;QACvD,MAAM,IAAAI,uBAAgB,EACpB,uCAAuC,EACvC,aACF,CAAC;MACH;IACF;EACF;EAEA,MAAM2C,EAAE,GAAG,IAAI/D,EAAE,CAACkB,UAAW,CAAC;EAC9B,MAAM6C,EAAE,CAAC3D,eAAe,CAAC,CAAC;EAE1B,IAAIyE,YAAwB,GAAG,EAAE;EACjC,IAAIC,aAAyB,GAAG,EAAE;EAClC,QAAQ7D,IAAI;IACV,KAAK,OAAO;MACV4D,YAAY,GAAG,IAAAE,qBAAc,EAAC/D,SAAS,EAAE,QAAQ,CAAC;MAClD8D,aAAa,GAAG,IAAAC,qBAAc,EAAC/D,SAAS,EAAE,MAAM,CAAC;MACjD;IACF,KAAK,MAAM;MACT6D,YAAY,GAAG,EAAE;MACjBC,aAAa,GAAG,IAAAC,qBAAc,EAAC/D,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC;MACpE;EACJ;EAEA,MAAMgE,YAAY,GAAG;IAAE/D,IAAI;IAAEC,UAAU,EAAEA;EAAY,CAAC;;EAEtD;EACA;EACA,MAAM+D,aAAa,GAAGlB,EAAE,CAACrE,MAAM,CAACY,YAAY,CAAC,CAAC;EAC9C,MAAM4E,cAAc,GAAGnB,EAAE,CAACrE,MAAM,CAACc,aAAa,CAAC,CAAC;EAEhD,MAAM2E,GAAG,GAAGvC,kBAAS,CAACC,eAAe,CACnC,QAAQ,EACRoC,aAAa,EACbnC,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACC,IACd,CAAoB;EACpB,MAAM5C,SAAS,GAAG,IAAI8B,kBAAS,CAC7BgD,GAAG,EACHH,YAAY,EACZH,YAAY,EACZ,IACF,CAAC;;EAED;EACA,MAAMO,IAAI,GAAGxC,kBAAS,CAACC,eAAe,CACpC,SAAS,EACTqC,cAAc,EACdpC,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACE,KACd,CAAqB;EACrB,MAAM3C,UAAU,GAAG,IAAI4B,kBAAS,CAC9BiD,IAAI,EACJJ,YAAY,EACZF,aAAa,EACb/D,WACF,CAAC;EAED,OAAO;IAAEV,SAAS;IAAEE;EAAW,CAAC;AAClC;AAEA,SAAS8E,sBAAsBA,CAC7BC,OAA2C,EACvC;EACJ,IAAI,CAACA,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,MAAM;IAAErE;EAAW,CAAC,GAAGoE,OAAkC;EAEzD,IAAI,CAACpE,UAAU,EAAE;IACf,MAAM,IAAIqE,KAAK,CAAC,8CAA8C,CAAC;EACjE;EAEA,OAAO,IAAIvF,EAAE,CAACkB,UAAU,CAAC;AAC3B;AAEA,SAASsE,sBAAsBA,CAC7BzB,EAAM,EACNC,QAA0B,EAI1B;EACA,MAAM;IACJyB,YAAY;IACZC,UAAU;IACVC,aAAa;IACbC,WAAW;IACXC,MAAM;IACNC;EACF,CAAC,GAAG9B,QAAQ;EAEZ,MAAMiB,aAAa,GAAGlB,EAAE,CAACrE,MAAM,CAACY,YAAY,CAAC,CAAC;EAC9C,MAAM4E,cAAc,GAAGnB,EAAE,CAACrE,MAAM,CAACc,aAAa,CAAC,CAAC;EAEhD,MAAM2E,GAAG,GAAGvC,kBAAS,CAACC,eAAe,CACnC,QAAQ,EACRoC,aAAa,EACbnC,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACC,IACd,CAAoB;EAEpB,MAAMmC,IAAI,GAAGxC,kBAAS,CAACC,eAAe,CACpC,SAAS,EACTqC,cAAc,EACdpC,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACE,KACd,CAAqB;EAErB,IAAI7C,SAA0D;EAC9D,IAAIE,UAA4D;EAEhE,IAAIkF,YAAY,KAAK,CAAC,CAAC,EAAE;IACvBpF,SAAS,GAAG8E,GAAG;EACjB,CAAC,MAAM;IACL,MAAMvE,MAAM,GACV6E,YAAY,KAAK3C,kBAAW,CAACiD,GAAG,GAAGjD,kBAAW,CAACiD,GAAG,GAAGjD,kBAAW,CAACC,GAAG;IACtE,MAAMiD,WAAW,GACfN,UAAU,KAAK1C,kBAAW,CAACC,IAAI,GAAGD,kBAAW,CAACC,IAAI,GAAGD,kBAAW,CAACC,IAAI;IACvE,MAAMgD,QAAQ,GAAGd,GAAG,CAACtD,MAAM,CAACoC,SAAS,CAACrD,MAAM,EAAEoF,WAAW,CAAC;IAC1D,IAAIpF,MAAM,KAAKkC,kBAAW,CAACiD,GAAG,EAAE;MAC9B1F,SAAS,GAAG6F,yBAAM,CAACC,IAAI,CAAC,IAAIC,UAAU,CAACH,QAAQ,CAAC,CAAC,CAACI,QAAQ,CAAC,OAAO,CAAC;IACrE,CAAC,MAAM;MACLhG,SAAS,GAAG4F,QAAQ;IACtB;EACF;EAEA,IAAIN,aAAa,KAAK,CAAC,CAAC,EAAE;IACxBpF,UAAU,GAAG6E,IAAI;EACnB,CAAC,MAAM;IACL,MAAMxE,MAAM,GACV+E,aAAa,KAAK7C,kBAAW,CAACiD,GAAG,GAAGjD,kBAAW,CAACiD,GAAG,GAAGjD,kBAAW,CAACC,GAAG;IACvE,MAAMiD,WAAW,GACfJ,WAAW,KAAK5C,kBAAW,CAACE,KAAK,GAC7BF,kBAAW,CAACE,KAAK,GACjB0C,WAAW,KAAK5C,kBAAW,CAACsD,IAAI,GAC9BtD,kBAAW,CAACsD,IAAI,GAChBtD,kBAAW,CAACE,KAAK;IACzB,MAAM+C,QAAQ,GAAGb,IAAI,CAACvD,MAAM,CAACoC,SAAS,CACpCrD,MAAM,EACNoF,WAAW,EACXH,MAAM,EACNC,UACF,CAAC;IACD,IAAIlF,MAAM,KAAKkC,kBAAW,CAACiD,GAAG,EAAE;MAC9BxF,UAAU,GAAG2F,yBAAM,CAACC,IAAI,CAAC,IAAIC,UAAU,CAACH,QAAQ,CAAC,CAAC,CAACI,QAAQ,CAAC,OAAO,CAAC;IACtE,CAAC,MAAM;MACL9F,UAAU,GAAG0F,QAAQ;IACvB;EACF;EAEA,OAAO;IAAE5F,SAAS;IAAEE;EAAW,CAAC;AAClC;AAEO,eAAegG,sBAAsBA,CAC1CjB,OAA2C,EAC3CtB,QAA0B,EAIzB;EACD,MAAMD,EAAE,GAAGsB,sBAAsB,CAACC,OAAO,CAAC;EAC1C,MAAMvB,EAAE,CAAC3D,eAAe,CAAC,CAAC;EAC1B,OAAOoF,sBAAsB,CAACzB,EAAE,EAAEC,QAAQ,CAAC;AAC7C;AAEO,SAASwC,0BAA0BA,CACxClB,OAA2C,EAC3CtB,QAA0B,EAI1B;EACA,MAAMD,EAAE,GAAGsB,sBAAsB,CAACC,OAAO,CAAC;EAC1CvB,EAAE,CAACtD,mBAAmB,CAAC,CAAC;EACxB,OAAO+E,sBAAsB,CAACzB,EAAE,EAAEC,QAAQ,CAAC;AAC7C;AAEO,SAASyC,YAAYA,CAC1B3F,SAA0B,EAC1B4F,OAAkB,EAClBC,MAAqB,EACR;EACb,MAAMtG,SAAS,GAAGS,SAAS,CAAC8F,MAAM;EAElC,IAAI,CAACvG,SAAS,EAAE;IACd,MAAM,IAAIkF,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,IAAImB,OAAO,CAAC5F,SAAS,CAACG,IAAI,KAAKZ,SAAS,CAACS,SAAS,CAACG,IAAI,EAAE;IACvD,MAAM,IAAIsE,KAAK,CAAC,oCAAoC,CAAC;EACvD;EAEA,IAAImB,OAAO,CAAC5F,SAAS,CAACI,UAAU,KAAKb,SAAS,CAACS,SAAS,CAACI,UAAU,EAAE;IACnE,MAAM,IAAIqE,KAAK,CAAC,8BAA8B,CAAC;EACjD;EAEA,MAAMrE,UAAU,GAAGwF,OAAO,CAAC5F,SAAS,CAACI,UAAU;EAC/C,IAAI,CAACA,UAAU,EAAE;IACf,MAAM,IAAIqE,KAAK,CAAC,uBAAuB,CAAC;EAC1C;EAEA,MAAMsB,YAAY,GAChB1F,yBAAkB,CAACD,UAAU,CAAoC;EACnE,MAAM4F,IAAI,GAAG,IAAIC,UAAI,CAACF,YAAY,CAAC;EAEnC,MAAMG,UAAU,GAAGN,OAAO,CAAC1E,SAAS,CAACH,MAAM,CAACoF,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;EAChE,IAAI,CAACD,UAAU,CAACE,CAAC,EAAE,MAAM,IAAI3B,KAAK,CAAC,qBAAqB,CAAC;EACzD,MAAM4B,YAAY,GAAGjB,yBAAM,CAACC,IAAI,CAACa,UAAU,CAACE,CAAC,EAAE,WAAW,CAAC;EAC3DJ,IAAI,CAACM,aAAa,CAACD,YAAY,CAAC;EAEhC,MAAME,SAAS,GAAGhH,SAAS,CAAC2B,SAAS,CAACH,MAAM,CAACoF,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;EACjE,IAAI,CAACI,SAAS,CAACC,CAAC,IAAI,CAACD,SAAS,CAACE,CAAC,EAAE,MAAM,IAAIhC,KAAK,CAAC,oBAAoB,CAAC;EACvE,MAAM+B,CAAC,GAAGpB,yBAAM,CAACC,IAAI,CAACkB,SAAS,CAACC,CAAC,EAAE,WAAW,CAAC;EAC/C,MAAMC,CAAC,GAAGrB,yBAAM,CAACC,IAAI,CAACkB,SAAS,CAACE,CAAC,EAAE,WAAW,CAAC;EAC/C,MAAMC,WAAW,GAAGtB,yBAAM,CAACuB,MAAM,CAAC,CAACvB,yBAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAEmB,CAAC,EAAEC,CAAC,CAAC,CAAC;EAE9D,MAAMG,MAAM,GAAGZ,IAAI,CAACa,aAAa,CAACH,WAAW,CAAC;EAC9C,MAAMI,SAAS,GAAG1B,yBAAM,CAACC,IAAI,CAACuB,MAAM,CAAC;;EAErC;EACA,IAAIf,MAAM,KAAK,IAAI,EAAE;IACnB,OAAOiB,SAAS,CAACC,MAAM;EACzB;;EAEA;EACA,MAAMC,UAAU,GAAGC,IAAI,CAACC,IAAI,CAACrB,MAAM,GAAG,CAAC,CAAC;EACxC,IAAIiB,SAAS,CAACE,UAAU,IAAIA,UAAU,EAAE;IACtC,OAAOF,SAAS,CAACC,MAAM,CAACI,KAAK,CAC3BL,SAAS,CAACM,UAAU,EACpBN,SAAS,CAACM,UAAU,GAAGJ,UACzB,CAAC;EACH;EAEA,MAAM,IAAIvC,KAAK,CAAC,8CAA8C,CAAC;AACjE","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_classes","_utils","_reactNativeBuffer","_ecdh","EcUtils","native","_native","NitroModules","createHybridObject","getSupportedCurves","getCurves","Ec","constructor","curve","setCurve","generateKeyPair","publicKey","getPublicKey","privateKey","getPrivateKey","generateKeyPairSync","exports","ecImportKey","format","keyData","algorithm","extractable","keyUsages","name","namedCurve","kNamedCurveAliases","lazyDOMException","jwk","kty","crv","expectedUse","validateJwkStructure","alg","undefined","expectedAlg","isPublicJwk","d","validUsagesJwk","hasAnyNotIn","handle","keyType","initJwk","err","cause","keyObject","PublicKeyObject","PrivateKeyObject","CryptoKey","expectedKeyType","isPublicKey","validUsages","keyBuffer","bufferLikeToArrayBuffer","curveAlias","initECRaw","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","PKCS8","expectedAlias","keyDetail","checkEcKeyData","ecdsaSignVerify","key","data","hash","signature","isSign","type","hashName","normalizedHashName","normalizeHashName","HashContext","WebCrypto","ec","encoding","exportKey","importKey","usages","dataBuffer","sign","signatureBuffer","verify","ec_generateKeyPair","_options","Object","keys","includes","publicUsages","privateUsages","getUsagesUnion","keyAlgorithm","publicKeyData","privateKeyData","pub","priv","ec_prepareKeyGenParams","options","Error","ec_formatKeyPairOutput","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","Buffer","from","exportECPublicRaw","PEM","keyEncoding","exported","Uint8Array","toString","exportECPrivateRaw","SEC1","ec_generateKeyPairNode","ec_generateKeyPairNodeSync","ecDeriveBits","baseKey","length","public","opensslCurve","ecdh","ECDH","jwkPrivate","exportJwk","privateBytes","setPrivateKey","jwkPublic","x","y","publicBytes","concat","secret","computeSecret","secretBuf","buffer","byteLength","Math","ceil","slice","byteOffset"],"sourceRoot":"../../src","sources":["ec.ts"],"mappings":"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","ignoreList":[]}