react-native-quick-crypto 0.7.3 → 1.0.0-beta.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 (309) hide show
  1. package/QuickCrypto.podspec +34 -0
  2. package/README.md +13 -46
  3. package/android/CMakeLists.txt +32 -64
  4. package/android/build.gradle +52 -125
  5. package/android/gradle.properties +4 -4
  6. package/android/src/main/cpp/cpp-adapter.cpp +9 -54
  7. package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +38 -0
  8. package/cpp/random/HybridRandom.cpp +34 -0
  9. package/cpp/random/HybridRandom.hpp +44 -0
  10. package/cpp/utils/Utils.hpp +9 -0
  11. package/ios/QuickCryptoOnLoad.mm +19 -0
  12. package/lib/commonjs/index.js +39 -39
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/random.js +26 -12
  15. package/lib/commonjs/random.js.map +1 -1
  16. package/lib/commonjs/{NativeQuickCrypto/rsa.js → specs/random.nitro.js} +1 -1
  17. package/lib/commonjs/{NativeQuickCrypto/aes.js.map → specs/random.nitro.js.map} +1 -1
  18. package/lib/commonjs/utils/conversion.js +22 -0
  19. package/lib/commonjs/utils/conversion.js.map +1 -0
  20. package/lib/commonjs/utils/index.js +12 -0
  21. package/lib/commonjs/utils/index.js.map +1 -0
  22. package/lib/commonjs/utils/types.js +2 -0
  23. package/lib/{module/NativeQuickCrypto/aes.js.map → commonjs/utils/types.js.map} +1 -1
  24. package/lib/module/index.js +38 -38
  25. package/lib/module/index.js.map +1 -1
  26. package/lib/module/random.js +26 -12
  27. package/lib/module/random.js.map +1 -1
  28. package/lib/module/specs/random.nitro.js +4 -0
  29. package/lib/module/{NativeQuickCrypto/rsa.js.map → specs/random.nitro.js.map} +1 -1
  30. package/lib/module/utils/conversion.js +16 -0
  31. package/lib/module/utils/conversion.js.map +1 -0
  32. package/lib/module/utils/index.js +8 -0
  33. package/lib/module/utils/index.js.map +1 -0
  34. package/lib/module/utils/types.js +2 -0
  35. package/lib/{commonjs/NativeQuickCrypto/rsa.js.map → module/utils/types.js.map} +1 -1
  36. package/lib/tsconfig.tsbuildinfo +1 -0
  37. package/lib/typescript/index.d.ts +10 -141
  38. package/lib/typescript/index.d.ts.map +1 -1
  39. package/lib/typescript/random.d.ts +4 -5
  40. package/lib/typescript/random.d.ts.map +1 -1
  41. package/lib/typescript/specs/random.nitro.d.ts +9 -0
  42. package/lib/typescript/specs/random.nitro.d.ts.map +1 -0
  43. package/lib/typescript/utils/conversion.d.ts +4 -0
  44. package/lib/typescript/utils/conversion.d.ts.map +1 -0
  45. package/lib/typescript/utils/index.d.ts +6 -0
  46. package/lib/typescript/utils/index.d.ts.map +1 -0
  47. package/lib/typescript/utils/types.d.ts +5 -0
  48. package/lib/typescript/utils/types.d.ts.map +1 -0
  49. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +45 -0
  50. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +26 -0
  51. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +57 -0
  52. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +9 -0
  53. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +25 -0
  54. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +29 -0
  55. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +23 -0
  56. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +62 -0
  57. package/package.json +50 -106
  58. package/src/index.ts +38 -48
  59. package/src/random.ts +51 -48
  60. package/src/specs/random.nitro.ts +14 -0
  61. package/src/utils/conversion.ts +16 -0
  62. package/src/utils/index.ts +6 -0
  63. package/src/utils/types.ts +15 -0
  64. package/LICENSE +0 -27
  65. package/android/src/main/java/com/margelo/quickcrypto/QuickCryptoModule.java +0 -70
  66. package/android/src/main/java/com/margelo/quickcrypto/QuickCryptoPackage.java +0 -25
  67. package/cpp/Cipher/MGLCipherHostObject.cpp +0 -663
  68. package/cpp/Cipher/MGLCipherHostObject.h +0 -90
  69. package/cpp/Cipher/MGLCreateCipherInstaller.cpp +0 -75
  70. package/cpp/Cipher/MGLCreateCipherInstaller.h +0 -22
  71. package/cpp/Cipher/MGLCreateDecipherInstaller.cpp +0 -77
  72. package/cpp/Cipher/MGLCreateDecipherInstaller.h +0 -17
  73. package/cpp/Cipher/MGLGenerateKeyPairInstaller.cpp +0 -134
  74. package/cpp/Cipher/MGLGenerateKeyPairInstaller.h +0 -35
  75. package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.cpp +0 -63
  76. package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.h +0 -37
  77. package/cpp/Cipher/MGLPublicCipher.h +0 -124
  78. package/cpp/Cipher/MGLPublicCipherInstaller.h +0 -107
  79. package/cpp/Cipher/MGLRsa.cpp +0 -573
  80. package/cpp/Cipher/MGLRsa.h +0 -109
  81. package/cpp/HMAC/MGLHmacHostObject.cpp +0 -95
  82. package/cpp/HMAC/MGLHmacHostObject.h +0 -39
  83. package/cpp/HMAC/MGLHmacInstaller.cpp +0 -43
  84. package/cpp/HMAC/MGLHmacInstaller.h +0 -20
  85. package/cpp/Hash/MGLHashHostObject.cpp +0 -147
  86. package/cpp/Hash/MGLHashHostObject.h +0 -53
  87. package/cpp/Hash/MGLHashInstaller.cpp +0 -44
  88. package/cpp/Hash/MGLHashInstaller.h +0 -20
  89. package/cpp/JSIUtils/MGLJSIMacros.h +0 -110
  90. package/cpp/JSIUtils/MGLJSIUtils.h +0 -41
  91. package/cpp/JSIUtils/MGLSmartHostObject.cpp +0 -43
  92. package/cpp/JSIUtils/MGLSmartHostObject.h +0 -46
  93. package/cpp/JSIUtils/MGLThreadAwareHostObject.cpp +0 -24
  94. package/cpp/JSIUtils/MGLThreadAwareHostObject.h +0 -43
  95. package/cpp/JSIUtils/MGLTypedArray.cpp +0 -325
  96. package/cpp/JSIUtils/MGLTypedArray.h +0 -160
  97. package/cpp/MGLKeys.cpp +0 -1426
  98. package/cpp/MGLKeys.h +0 -203
  99. package/cpp/MGLQuickCryptoHostObject.cpp +0 -127
  100. package/cpp/MGLQuickCryptoHostObject.h +0 -30
  101. package/cpp/Random/MGLRandomHostObject.cpp +0 -96
  102. package/cpp/Random/MGLRandomHostObject.h +0 -27
  103. package/cpp/Sig/MGLSignHostObjects.cpp +0 -757
  104. package/cpp/Sig/MGLSignHostObjects.h +0 -128
  105. package/cpp/Sig/MGLSignInstaller.cpp +0 -24
  106. package/cpp/Sig/MGLSignInstaller.h +0 -29
  107. package/cpp/Sig/MGLVerifyInstaller.cpp +0 -24
  108. package/cpp/Sig/MGLVerifyInstaller.h +0 -22
  109. package/cpp/Utils/MGLDispatchQueue.cpp +0 -75
  110. package/cpp/Utils/MGLDispatchQueue.h +0 -55
  111. package/cpp/Utils/MGLUtils.cpp +0 -295
  112. package/cpp/Utils/MGLUtils.h +0 -358
  113. package/cpp/Utils/base64.h +0 -320
  114. package/cpp/Utils/logs.h +0 -38
  115. package/cpp/Utils/node.h +0 -13
  116. package/cpp/fastpbkdf2/MGLPbkdf2HostObject.cpp +0 -164
  117. package/cpp/fastpbkdf2/MGLPbkdf2HostObject.h +0 -29
  118. package/cpp/fastpbkdf2/fastpbkdf2.c +0 -352
  119. package/cpp/fastpbkdf2/fastpbkdf2.h +0 -68
  120. package/cpp/webcrypto/MGLWebCrypto.cpp +0 -125
  121. package/cpp/webcrypto/MGLWebCrypto.h +0 -32
  122. package/cpp/webcrypto/crypto_aes.cpp +0 -516
  123. package/cpp/webcrypto/crypto_aes.h +0 -79
  124. package/cpp/webcrypto/crypto_ec.cpp +0 -424
  125. package/cpp/webcrypto/crypto_ec.h +0 -78
  126. package/cpp/webcrypto/crypto_keygen.cpp +0 -86
  127. package/cpp/webcrypto/crypto_keygen.h +0 -38
  128. package/ios/QuickCrypto.xcodeproj/project.pbxproj +0 -274
  129. package/ios/QuickCryptoModule.h +0 -5
  130. package/ios/QuickCryptoModule.mm +0 -42
  131. package/lib/commonjs/Cipher.js +0 -502
  132. package/lib/commonjs/Cipher.js.map +0 -1
  133. package/lib/commonjs/Hash.js +0 -99
  134. package/lib/commonjs/Hash.js.map +0 -1
  135. package/lib/commonjs/Hashnames.js +0 -87
  136. package/lib/commonjs/Hashnames.js.map +0 -1
  137. package/lib/commonjs/Hmac.js +0 -79
  138. package/lib/commonjs/Hmac.js.map +0 -1
  139. package/lib/commonjs/NativeQuickCrypto/Cipher.js +0 -30
  140. package/lib/commonjs/NativeQuickCrypto/Cipher.js.map +0 -1
  141. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js +0 -52
  142. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js.map +0 -1
  143. package/lib/commonjs/NativeQuickCrypto/aes.js +0 -6
  144. package/lib/commonjs/NativeQuickCrypto/hash.js +0 -2
  145. package/lib/commonjs/NativeQuickCrypto/hash.js.map +0 -1
  146. package/lib/commonjs/NativeQuickCrypto/hmac.js +0 -2
  147. package/lib/commonjs/NativeQuickCrypto/hmac.js.map +0 -1
  148. package/lib/commonjs/NativeQuickCrypto/keygen.js +0 -6
  149. package/lib/commonjs/NativeQuickCrypto/keygen.js.map +0 -1
  150. package/lib/commonjs/NativeQuickCrypto/pbkdf2.js +0 -2
  151. package/lib/commonjs/NativeQuickCrypto/pbkdf2.js.map +0 -1
  152. package/lib/commonjs/NativeQuickCrypto/random.js +0 -2
  153. package/lib/commonjs/NativeQuickCrypto/random.js.map +0 -1
  154. package/lib/commonjs/NativeQuickCrypto/sig.js +0 -19
  155. package/lib/commonjs/NativeQuickCrypto/sig.js.map +0 -1
  156. package/lib/commonjs/NativeQuickCrypto/webcrypto.js +0 -6
  157. package/lib/commonjs/NativeQuickCrypto/webcrypto.js.map +0 -1
  158. package/lib/commonjs/Utils.js +0 -608
  159. package/lib/commonjs/Utils.js.map +0 -1
  160. package/lib/commonjs/aes.js +0 -281
  161. package/lib/commonjs/aes.js.map +0 -1
  162. package/lib/commonjs/constants.js +0 -85
  163. package/lib/commonjs/constants.js.map +0 -1
  164. package/lib/commonjs/ec.js +0 -276
  165. package/lib/commonjs/ec.js.map +0 -1
  166. package/lib/commonjs/keygen.js +0 -56
  167. package/lib/commonjs/keygen.js.map +0 -1
  168. package/lib/commonjs/keys.js +0 -492
  169. package/lib/commonjs/keys.js.map +0 -1
  170. package/lib/commonjs/pbkdf2.js +0 -90
  171. package/lib/commonjs/pbkdf2.js.map +0 -1
  172. package/lib/commonjs/rsa.js +0 -248
  173. package/lib/commonjs/rsa.js.map +0 -1
  174. package/lib/commonjs/sig.js +0 -129
  175. package/lib/commonjs/sig.js.map +0 -1
  176. package/lib/commonjs/subtle.js +0 -448
  177. package/lib/commonjs/subtle.js.map +0 -1
  178. package/lib/commonjs/webcrypto.js +0 -14
  179. package/lib/commonjs/webcrypto.js.map +0 -1
  180. package/lib/module/Cipher.js +0 -491
  181. package/lib/module/Cipher.js.map +0 -1
  182. package/lib/module/Hash.js +0 -93
  183. package/lib/module/Hash.js.map +0 -1
  184. package/lib/module/Hashnames.js +0 -85
  185. package/lib/module/Hashnames.js.map +0 -1
  186. package/lib/module/Hmac.js +0 -74
  187. package/lib/module/Hmac.js.map +0 -1
  188. package/lib/module/NativeQuickCrypto/Cipher.js +0 -26
  189. package/lib/module/NativeQuickCrypto/Cipher.js.map +0 -1
  190. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js +0 -49
  191. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js.map +0 -1
  192. package/lib/module/NativeQuickCrypto/aes.js +0 -4
  193. package/lib/module/NativeQuickCrypto/hash.js +0 -2
  194. package/lib/module/NativeQuickCrypto/hash.js.map +0 -1
  195. package/lib/module/NativeQuickCrypto/hmac.js +0 -2
  196. package/lib/module/NativeQuickCrypto/hmac.js.map +0 -1
  197. package/lib/module/NativeQuickCrypto/keygen.js +0 -4
  198. package/lib/module/NativeQuickCrypto/keygen.js.map +0 -1
  199. package/lib/module/NativeQuickCrypto/pbkdf2.js +0 -2
  200. package/lib/module/NativeQuickCrypto/pbkdf2.js.map +0 -1
  201. package/lib/module/NativeQuickCrypto/random.js +0 -2
  202. package/lib/module/NativeQuickCrypto/random.js.map +0 -1
  203. package/lib/module/NativeQuickCrypto/rsa.js +0 -4
  204. package/lib/module/NativeQuickCrypto/sig.js +0 -17
  205. package/lib/module/NativeQuickCrypto/sig.js.map +0 -1
  206. package/lib/module/NativeQuickCrypto/webcrypto.js +0 -4
  207. package/lib/module/NativeQuickCrypto/webcrypto.js.map +0 -1
  208. package/lib/module/Utils.js +0 -539
  209. package/lib/module/Utils.js.map +0 -1
  210. package/lib/module/aes.js +0 -274
  211. package/lib/module/aes.js.map +0 -1
  212. package/lib/module/constants.js +0 -81
  213. package/lib/module/constants.js.map +0 -1
  214. package/lib/module/ec.js +0 -267
  215. package/lib/module/ec.js.map +0 -1
  216. package/lib/module/keygen.js +0 -49
  217. package/lib/module/keygen.js.map +0 -1
  218. package/lib/module/keys.js +0 -477
  219. package/lib/module/keys.js.map +0 -1
  220. package/lib/module/pbkdf2.js +0 -84
  221. package/lib/module/pbkdf2.js.map +0 -1
  222. package/lib/module/rsa.js +0 -242
  223. package/lib/module/rsa.js.map +0 -1
  224. package/lib/module/sig.js +0 -124
  225. package/lib/module/sig.js.map +0 -1
  226. package/lib/module/subtle.js +0 -443
  227. package/lib/module/subtle.js.map +0 -1
  228. package/lib/module/webcrypto.js +0 -10
  229. package/lib/module/webcrypto.js.map +0 -1
  230. package/lib/typescript/Cipher.d.ts +0 -81
  231. package/lib/typescript/Cipher.d.ts.map +0 -1
  232. package/lib/typescript/Hash.d.ts +0 -44
  233. package/lib/typescript/Hash.d.ts.map +0 -1
  234. package/lib/typescript/Hashnames.d.ts +0 -11
  235. package/lib/typescript/Hashnames.d.ts.map +0 -1
  236. package/lib/typescript/Hmac.d.ts +0 -37
  237. package/lib/typescript/Hmac.d.ts.map +0 -1
  238. package/lib/typescript/NativeQuickCrypto/Cipher.d.ts +0 -44
  239. package/lib/typescript/NativeQuickCrypto/Cipher.d.ts.map +0 -1
  240. package/lib/typescript/NativeQuickCrypto/NativeQuickCrypto.d.ts +0 -33
  241. package/lib/typescript/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +0 -1
  242. package/lib/typescript/NativeQuickCrypto/aes.d.ts +0 -5
  243. package/lib/typescript/NativeQuickCrypto/aes.d.ts.map +0 -1
  244. package/lib/typescript/NativeQuickCrypto/hash.d.ts +0 -7
  245. package/lib/typescript/NativeQuickCrypto/hash.d.ts.map +0 -1
  246. package/lib/typescript/NativeQuickCrypto/hmac.d.ts +0 -6
  247. package/lib/typescript/NativeQuickCrypto/hmac.d.ts.map +0 -1
  248. package/lib/typescript/NativeQuickCrypto/keygen.d.ts +0 -4
  249. package/lib/typescript/NativeQuickCrypto/keygen.d.ts.map +0 -1
  250. package/lib/typescript/NativeQuickCrypto/pbkdf2.d.ts +0 -5
  251. package/lib/typescript/NativeQuickCrypto/pbkdf2.d.ts.map +0 -1
  252. package/lib/typescript/NativeQuickCrypto/random.d.ts +0 -5
  253. package/lib/typescript/NativeQuickCrypto/random.d.ts.map +0 -1
  254. package/lib/typescript/NativeQuickCrypto/rsa.d.ts +0 -5
  255. package/lib/typescript/NativeQuickCrypto/rsa.d.ts.map +0 -1
  256. package/lib/typescript/NativeQuickCrypto/sig.d.ts +0 -23
  257. package/lib/typescript/NativeQuickCrypto/sig.d.ts.map +0 -1
  258. package/lib/typescript/NativeQuickCrypto/webcrypto.d.ts +0 -39
  259. package/lib/typescript/NativeQuickCrypto/webcrypto.d.ts.map +0 -1
  260. package/lib/typescript/Utils.d.ts +0 -48
  261. package/lib/typescript/Utils.d.ts.map +0 -1
  262. package/lib/typescript/aes.d.ts +0 -22
  263. package/lib/typescript/aes.d.ts.map +0 -1
  264. package/lib/typescript/constants.d.ts +0 -76
  265. package/lib/typescript/constants.d.ts.map +0 -1
  266. package/lib/typescript/ec.d.ts +0 -7
  267. package/lib/typescript/ec.d.ts.map +0 -1
  268. package/lib/typescript/keygen.d.ts +0 -6
  269. package/lib/typescript/keygen.d.ts.map +0 -1
  270. package/lib/typescript/keys.d.ts +0 -206
  271. package/lib/typescript/keys.d.ts.map +0 -1
  272. package/lib/typescript/pbkdf2.d.ts +0 -12
  273. package/lib/typescript/pbkdf2.d.ts.map +0 -1
  274. package/lib/typescript/rsa.d.ts +0 -12
  275. package/lib/typescript/rsa.d.ts.map +0 -1
  276. package/lib/typescript/sig.d.ts +0 -21
  277. package/lib/typescript/sig.d.ts.map +0 -1
  278. package/lib/typescript/subtle.d.ts +0 -15
  279. package/lib/typescript/subtle.d.ts.map +0 -1
  280. package/lib/typescript/webcrypto.d.ts +0 -9
  281. package/lib/typescript/webcrypto.d.ts.map +0 -1
  282. package/react-native-quick-crypto.podspec +0 -40
  283. package/src/Cipher.ts +0 -832
  284. package/src/Hash.ts +0 -132
  285. package/src/Hashnames.ts +0 -93
  286. package/src/Hmac.ts +0 -106
  287. package/src/NativeQuickCrypto/Cipher.ts +0 -102
  288. package/src/NativeQuickCrypto/NativeQuickCrypto.ts +0 -102
  289. package/src/NativeQuickCrypto/aes.ts +0 -14
  290. package/src/NativeQuickCrypto/hash.ts +0 -10
  291. package/src/NativeQuickCrypto/hmac.ts +0 -9
  292. package/src/NativeQuickCrypto/keygen.ts +0 -7
  293. package/src/NativeQuickCrypto/pbkdf2.ts +0 -16
  294. package/src/NativeQuickCrypto/random.ts +0 -12
  295. package/src/NativeQuickCrypto/rsa.ts +0 -12
  296. package/src/NativeQuickCrypto/sig.ts +0 -44
  297. package/src/NativeQuickCrypto/webcrypto.ts +0 -72
  298. package/src/Utils.ts +0 -777
  299. package/src/aes.ts +0 -402
  300. package/src/constants.ts +0 -79
  301. package/src/ec.ts +0 -375
  302. package/src/keygen.ts +0 -80
  303. package/src/keys.ts +0 -787
  304. package/src/pbkdf2.ts +0 -169
  305. package/src/rsa.ts +0 -370
  306. package/src/sig.ts +0 -164
  307. package/src/subtle.ts +0 -639
  308. package/src/webcrypto.ts +0 -8
  309. /package/android/src/main/{AndroidManifestNew.xml → AndroidManifest.xml} +0 -0
package/src/ec.ts DELETED
@@ -1,375 +0,0 @@
1
- import { generateKeyPairPromise, type GenerateKeyPairOptions } from './Cipher';
2
- import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';
3
- import { DSASigEnc, SignMode } from './NativeQuickCrypto/sig';
4
- import {
5
- bufferLikeToArrayBuffer,
6
- type BufferLike,
7
- type BinaryLike,
8
- binaryLikeToArrayBuffer,
9
- lazyDOMException,
10
- validateKeyOps,
11
- hasAnyNotIn,
12
- ab2str,
13
- getUsagesUnion,
14
- normalizeHashName,
15
- } from './Utils';
16
- import {
17
- type ImportFormat,
18
- type SubtleAlgorithm,
19
- type KeyUsage,
20
- kNamedCurveAliases,
21
- type NamedCurve,
22
- PublicKeyObject,
23
- KWebCryptoKeyFormat,
24
- CryptoKey,
25
- type JWK,
26
- type AnyAlgorithm,
27
- PrivateKeyObject,
28
- KeyType,
29
- type CryptoKeyPair,
30
- } from './keys';
31
- import type { KeyObjectHandle } from './NativeQuickCrypto/webcrypto';
32
-
33
- // const {
34
- // ArrayPrototypeIncludes,
35
- // ObjectKeys,
36
- // SafeSet,
37
- // } = primordials;
38
-
39
- // const {
40
- // ECKeyExportJob,
41
- // KeyObjectHandle,
42
- // SignJob,
43
- // kCryptoJobAsync,
44
- // kKeyTypePrivate,
45
- // kSignJobModeSign,
46
- // kSignJobModeVerify,
47
- // kSigEncP1363,
48
- // } = internalBinding('crypto');
49
-
50
- // const {
51
- // getUsagesUnion,
52
- // hasAnyNotIn,
53
- // jobPromise,
54
- // normalizeHashName,
55
- // validateKeyOps,
56
- // kHandle,
57
- // kKeyObject,
58
- // kNamedCurveAliases,
59
- // } = require('internal/crypto/util');
60
-
61
- // const {
62
- // lazyDOMException,
63
- // promisify,
64
- // } = require('internal/util');
65
-
66
- // const {
67
- // generateKeyPair: _generateKeyPair,
68
- // } = require('internal/crypto/keygen');
69
-
70
- // const {
71
- // InternalCryptoKey,
72
- // PrivateKeyObject,
73
- // PublicKeyObject,
74
- // createPrivateKey,
75
- // createPublicKey,
76
- // } = require('internal/crypto/keys');
77
-
78
- // const generateKeyPair = promisify(_generateKeyPair);
79
-
80
- function verifyAcceptableEcKeyUse(
81
- name: AnyAlgorithm,
82
- isPublic: boolean,
83
- usages: KeyUsage[]
84
- ): void {
85
- let checkSet;
86
- switch (name) {
87
- case 'ECDH':
88
- checkSet = isPublic ? [] : ['deriveKey', 'deriveBits'];
89
- break;
90
- case 'ECDSA':
91
- checkSet = isPublic ? ['verify'] : ['sign'];
92
- break;
93
- default:
94
- throw lazyDOMException(
95
- 'The algorithm is not supported',
96
- 'NotSupportedError'
97
- );
98
- }
99
- if (hasAnyNotIn(usages, checkSet)) {
100
- throw lazyDOMException(
101
- `Unsupported key usage for a ${name} key`,
102
- 'SyntaxError'
103
- );
104
- }
105
- }
106
-
107
- function createECPublicKeyRaw(
108
- namedCurve: NamedCurve | undefined,
109
- keyData: ArrayBuffer
110
- ): PublicKeyObject {
111
- if (!namedCurve) {
112
- throw new Error('Invalid namedCurve');
113
- }
114
- const handle = NativeQuickCrypto.webcrypto.createKeyObjectHandle();
115
- if (!handle.initECRaw(kNamedCurveAliases[namedCurve], keyData)) {
116
- console.log('keyData', ab2str(keyData));
117
- throw new Error('Invalid keyData 1');
118
- }
119
-
120
- return new PublicKeyObject(handle);
121
- }
122
-
123
- export function ecExportKey(
124
- key: CryptoKey,
125
- format: KWebCryptoKeyFormat
126
- ): ArrayBuffer {
127
- return NativeQuickCrypto.webcrypto.ecExportKey(format, key.keyObject.handle);
128
- }
129
-
130
- export function ecImportKey(
131
- format: ImportFormat,
132
- keyData: BufferLike | BinaryLike | JWK,
133
- algorithm: SubtleAlgorithm,
134
- extractable: boolean,
135
- keyUsages: KeyUsage[]
136
- ): CryptoKey {
137
- const { name, namedCurve } = algorithm;
138
-
139
- // if (!ArrayPrototypeIncludes(ObjectKeys(kNamedCurveAliases), namedCurve)) {
140
- // throw lazyDOMException('Unrecognized namedCurve', 'NotSupportedError');
141
- // }
142
-
143
- let keyObject;
144
- // const usagesSet = new SafeSet(keyUsages);
145
- switch (format) {
146
- // case 'spki': {
147
- // // verifyAcceptableEcKeyUse(name, true, usagesSet);
148
- // try {
149
- // keyObject = createPublicKey({
150
- // key: keyData,
151
- // format: 'der',
152
- // type: 'spki',
153
- // });
154
- // } catch (err) {
155
- // throw new Error(`Invalid keyData 2: ${err}`);
156
- // }
157
- // break;
158
- // }
159
- // case 'pkcs8': {
160
- // // verifyAcceptableEcKeyUse(name, false, usagesSet);
161
- // try {
162
- // keyObject = createPrivateKey({
163
- // key: keyData,
164
- // format: 'der',
165
- // type: 'pkcs8',
166
- // });
167
- // } catch (err) {
168
- // throw new Error(`Invalid keyData 3 ${err}`);
169
- // }
170
- // break;
171
- // }
172
- case 'jwk': {
173
- const data = keyData as JWK;
174
-
175
- if (!data.kty) throw lazyDOMException('Invalid keyData 4', 'DataError');
176
- if (data.kty !== 'EC')
177
- throw lazyDOMException('Invalid JWK "kty" Parameter', 'DataError');
178
- if (data.crv !== namedCurve)
179
- throw lazyDOMException(
180
- 'JWK "crv" does not match the requested algorithm',
181
- 'DataError'
182
- );
183
-
184
- verifyAcceptableEcKeyUse(name, data.d === undefined, keyUsages);
185
-
186
- if (keyUsages.length > 0 && data.use !== undefined) {
187
- const checkUse = name === 'ECDH' ? 'enc' : 'sig';
188
- if (data.use !== checkUse)
189
- throw lazyDOMException('Invalid JWK "use" Parameter', 'DataError');
190
- }
191
-
192
- validateKeyOps(data.key_ops, keyUsages);
193
-
194
- if (
195
- data.ext !== undefined &&
196
- data.ext === false &&
197
- extractable === true
198
- ) {
199
- throw lazyDOMException(
200
- 'JWK "ext" Parameter and extractable mismatch',
201
- 'DataError'
202
- );
203
- }
204
-
205
- if (algorithm.name === 'ECDSA' && data.alg !== undefined) {
206
- let algNamedCurve;
207
- switch (data.alg) {
208
- case 'ES256':
209
- algNamedCurve = 'P-256';
210
- break;
211
- case 'ES384':
212
- algNamedCurve = 'P-384';
213
- break;
214
- case 'ES512':
215
- algNamedCurve = 'P-521';
216
- break;
217
- }
218
- if (algNamedCurve !== namedCurve)
219
- throw lazyDOMException(
220
- 'JWK "alg" does not match the requested algorithm',
221
- 'DataError'
222
- );
223
- }
224
-
225
- const handle = NativeQuickCrypto.webcrypto.createKeyObjectHandle();
226
- const type = handle.initJwk(data, namedCurve);
227
- if (type === undefined)
228
- throw lazyDOMException('Invalid JWK', 'DataError');
229
- keyObject =
230
- type === KeyType.Private
231
- ? new PrivateKeyObject(handle)
232
- : new PublicKeyObject(handle);
233
- break;
234
- }
235
- case 'raw': {
236
- const data = keyData as BufferLike | BinaryLike;
237
- verifyAcceptableEcKeyUse(name, true, keyUsages);
238
- let buffer =
239
- typeof data === 'string'
240
- ? binaryLikeToArrayBuffer(data)
241
- : bufferLikeToArrayBuffer(data);
242
- keyObject = createECPublicKeyRaw(namedCurve, buffer);
243
- break;
244
- }
245
- default: {
246
- throw new Error(`Unknown EC import format: ${format}`);
247
- }
248
- }
249
-
250
- switch (algorithm.name) {
251
- case 'ECDSA':
252
- // Fall through
253
- case 'ECDH':
254
- if (keyObject.asymmetricKeyType !== 'ec')
255
- throw new Error('Invalid key type');
256
- break;
257
- }
258
-
259
- // if (!keyObject[kHandle].checkEcKeyData()) {
260
- // throw new Error('Invalid keyData 5');
261
- // }
262
-
263
- // const { namedCurve: checkNamedCurve } = keyObject[kHandle].keyDetail({});
264
- // if (kNamedCurveAliases[namedCurve] !== checkNamedCurve)
265
- // throw new Error('Named curve mismatch');
266
-
267
- return new CryptoKey(keyObject, { name, namedCurve }, keyUsages, extractable);
268
- }
269
-
270
- export const ecdsaSignVerify = (
271
- key: CryptoKey,
272
- data: BufferLike,
273
- { hash }: SubtleAlgorithm,
274
- signature?: BufferLike
275
- ) => {
276
- const mode: SignMode =
277
- signature === undefined
278
- ? SignMode.kSignJobModeSign
279
- : SignMode.kSignJobModeVerify;
280
- const type = mode === SignMode.kSignJobModeSign ? 'private' : 'public';
281
-
282
- if (key.type !== type)
283
- throw lazyDOMException(`Key must be a ${type} key`, 'InvalidAccessError');
284
-
285
- const hashname = normalizeHashName(hash);
286
-
287
- return NativeQuickCrypto.webcrypto.signVerify(
288
- mode,
289
- key.keyObject.handle,
290
- // three undefined args because C++ uses `GetPublicOrPrivateKeyFromJs` & friends
291
- undefined,
292
- undefined,
293
- undefined,
294
- bufferLikeToArrayBuffer(data),
295
- hashname,
296
- undefined, // salt length, not used with ECDSA
297
- undefined, // pss padding, not used with ECDSA
298
- DSASigEnc.kSigEncP1363,
299
- bufferLikeToArrayBuffer(signature || new ArrayBuffer(0))
300
- );
301
- };
302
-
303
- export const ecGenerateKey = async (
304
- algorithm: SubtleAlgorithm,
305
- extractable: boolean,
306
- keyUsages: KeyUsage[]
307
- ): Promise<CryptoKeyPair> => {
308
- const { name, namedCurve } = algorithm;
309
-
310
- if (!Object.keys(kNamedCurveAliases).includes(namedCurve || '')) {
311
- throw lazyDOMException(
312
- `Unrecognized namedCurve '${namedCurve}'`,
313
- 'NotSupportedError'
314
- );
315
- }
316
-
317
- // const usageSet = new SafeSet(keyUsages);
318
- switch (name) {
319
- case 'ECDSA':
320
- const checkUsages = ['sign', 'verify'];
321
- if (hasAnyNotIn(keyUsages, checkUsages)) {
322
- throw lazyDOMException(
323
- 'Unsupported key usage for an ECDSA key',
324
- 'SyntaxError'
325
- );
326
- }
327
- break;
328
- case 'ECDH':
329
- if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
330
- throw lazyDOMException(
331
- 'Unsupported key usage for an ECDH key',
332
- 'SyntaxError'
333
- );
334
- }
335
- // Fall through
336
- }
337
-
338
- const options: GenerateKeyPairOptions = { namedCurve };
339
- const [err, keypair] = await generateKeyPairPromise('ec', options);
340
-
341
- if (err) {
342
- throw lazyDOMException('ecGenerateKey (generateKeyPairPromise) failed', {
343
- name: 'OperationError',
344
- cause: err,
345
- });
346
- }
347
-
348
- let publicUsages: KeyUsage[] = [];
349
- let privateUsages: KeyUsage[] = [];
350
- switch (name) {
351
- case 'ECDSA':
352
- publicUsages = getUsagesUnion(keyUsages, 'verify');
353
- privateUsages = getUsagesUnion(keyUsages, 'sign');
354
- break;
355
- case 'ECDH':
356
- publicUsages = [];
357
- privateUsages = getUsagesUnion(keyUsages, 'deriveKey', 'deriveBits');
358
- break;
359
- }
360
-
361
- const keyAlgorithm = { name, namedCurve };
362
-
363
- const pub = new PublicKeyObject(keypair?.publicKey as KeyObjectHandle);
364
- const publicKey = new CryptoKey(pub, keyAlgorithm, publicUsages, true);
365
-
366
- const priv = new PrivateKeyObject(keypair?.privateKey as KeyObjectHandle);
367
- const privateKey = new CryptoKey(
368
- priv,
369
- keyAlgorithm,
370
- privateUsages,
371
- extractable
372
- );
373
-
374
- return { publicKey, privateKey };
375
- };
package/src/keygen.ts DELETED
@@ -1,80 +0,0 @@
1
- import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';
2
- import { lazyDOMException, validateFunction } from './Utils';
3
- import { kAesKeyLengths } from './aes';
4
- import {
5
- SecretKeyObject,
6
- type SecretKeyType,
7
- type AesKeyGenParams,
8
- } from './keys';
9
-
10
- export type KeyGenCallback = (
11
- err: Error | undefined,
12
- key?: SecretKeyObject
13
- ) => void;
14
-
15
- export const generateKeyPromise = (
16
- type: SecretKeyType,
17
- options: AesKeyGenParams // | HmacKeyGenParams
18
- ): Promise<[Error | undefined, SecretKeyObject | undefined]> => {
19
- return new Promise((resolve, reject) => {
20
- generateKey(type, options, (err, key) => {
21
- if (err) {
22
- reject([err, undefined]);
23
- }
24
- resolve([undefined, key]);
25
- });
26
- });
27
- };
28
-
29
- export const generateKey = (
30
- type: SecretKeyType,
31
- options: AesKeyGenParams, // | HmacKeyGenParams,
32
- callback: KeyGenCallback
33
- ): void => {
34
- validateLength(type, options.length);
35
- if (!validateFunction(callback)) {
36
- throw lazyDOMException('Callback is not a function', 'SyntaxError');
37
- }
38
- NativeQuickCrypto.webcrypto
39
- .generateSecretKey(options.length)
40
- .then((handle) => {
41
- callback(undefined, new SecretKeyObject(handle));
42
- })
43
- .catch((err) => {
44
- callback(err, undefined);
45
- });
46
- };
47
-
48
- export const generateKeySync = (
49
- type: SecretKeyType,
50
- options: AesKeyGenParams // | HmacKeyGenParams,
51
- ): SecretKeyObject => {
52
- validateLength(type, options.length);
53
- const handle = NativeQuickCrypto.webcrypto.generateSecretKeySync(
54
- options.length
55
- );
56
- return new SecretKeyObject(handle);
57
- };
58
-
59
- const validateLength = (type: SecretKeyType, length: number) => {
60
- switch (type) {
61
- case 'aes':
62
- if (!kAesKeyLengths.includes(length)) {
63
- throw lazyDOMException(
64
- 'AES key length must be 128, 192, or 256 bits',
65
- 'OperationError'
66
- );
67
- }
68
- break;
69
- case 'hmac':
70
- if (length < 8 || length > 2 ** 31 - 1) {
71
- throw lazyDOMException(
72
- 'HMAC key length must be between 8 and 2^31 - 1',
73
- 'OperationError'
74
- );
75
- }
76
- break;
77
- default:
78
- throw new Error(`Unsupported key type '${type}' for generateKey()`);
79
- }
80
- };