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/lib/module/rsa.js DELETED
@@ -1,242 +0,0 @@
1
- "use strict";
2
-
3
- import { KeyVariantLookup } from './NativeQuickCrypto/Cipher';
4
- import { generateKeyPairPromise } from './Cipher';
5
- import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';
6
- import { lazyDOMException, validateKeyOps, normalizeHashName, HashContext, hasAnyNotIn, getUsagesUnion, bigIntArrayToUnsignedInt, validateMaxBufferLength, bufferLikeToArrayBuffer } from './Utils';
7
- import { CryptoKey, PrivateKeyObject, PublicKeyObject, KeyType, createPublicKey, CipherOrWrapMode } from './keys';
8
-
9
- // TODO: keep in in sync with C++ side (cpp/Cipher/MGLRsa.h)
10
- export let RSAKeyVariant = /*#__PURE__*/function (RSAKeyVariant) {
11
- RSAKeyVariant[RSAKeyVariant["RSA_SSA_PKCS1_v1_5"] = 0] = "RSA_SSA_PKCS1_v1_5";
12
- RSAKeyVariant[RSAKeyVariant["RSA_PSS"] = 1] = "RSA_PSS";
13
- RSAKeyVariant[RSAKeyVariant["RSA_OAEP"] = 2] = "RSA_OAEP";
14
- return RSAKeyVariant;
15
- }({});
16
- function verifyAcceptableRsaKeyUse(name, isPublic, usages) {
17
- let checkSet;
18
- switch (name) {
19
- case 'RSA-OAEP':
20
- checkSet = isPublic ? ['encrypt', 'wrapKey'] : ['decrypt', 'unwrapKey'];
21
- break;
22
- case 'RSA-PSS':
23
- // Fall through
24
- case 'RSASSA-PKCS1-v1_5':
25
- checkSet = isPublic ? ['verify'] : ['sign'];
26
- break;
27
- default:
28
- throw lazyDOMException('The algorithm is not supported', 'NotSupportedError');
29
- }
30
- if (hasAnyNotIn(usages, checkSet)) {
31
- throw lazyDOMException(`Unsupported key usage for an ${name} key`, 'SyntaxError');
32
- }
33
- }
34
- const rsaOaepCipher = (mode, key, data, {
35
- label
36
- }) => {
37
- const type = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt ? 'public' : 'private';
38
- if (key.type !== type) {
39
- throw lazyDOMException('The requested operation is not valid for the provided key', 'InvalidAccessError');
40
- }
41
- if (label !== undefined) {
42
- validateMaxBufferLength(label, 'algorithm.label');
43
- }
44
- return NativeQuickCrypto.webcrypto.rsaCipher(mode, key.keyObject.handle, data, RSAKeyVariant.RSA_OAEP, normalizeHashName(key.algorithm.hash), label !== undefined ? bufferLikeToArrayBuffer(label) : undefined);
45
- };
46
- export const rsaCipher = rsaOaepCipher;
47
- export const rsaKeyGenerate = async (algorithm, extractable, keyUsages) => {
48
- const {
49
- name,
50
- modulusLength,
51
- publicExponent,
52
- hash: rawHash
53
- } = algorithm;
54
- const hash = normalizeHashName(rawHash);
55
-
56
- // const usageSet = new SafeSet(keyUsages);
57
- const publicExponentConverted = bigIntArrayToUnsignedInt(publicExponent);
58
- if (publicExponentConverted === undefined) {
59
- throw lazyDOMException('The publicExponent must be equivalent to an unsigned 32-bit value', 'OperationError');
60
- }
61
- switch (name) {
62
- case 'RSA-OAEP':
63
- if (hasAnyNotIn(keyUsages, ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'])) {
64
- throw lazyDOMException('Unsupported key usage for a RSA key', 'SyntaxError');
65
- }
66
- break;
67
- default:
68
- if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
69
- throw lazyDOMException('Unsupported key usage for a RSA key', 'SyntaxError');
70
- }
71
- }
72
- const [err, keypair] = await generateKeyPairPromise('rsa', {
73
- modulusLength,
74
- publicExponent: publicExponentConverted
75
- });
76
- if (err) {
77
- throw lazyDOMException('The operation failed for an operation-specific reason', {
78
- name: 'OperationError',
79
- cause: err
80
- });
81
- }
82
- const keyAlgorithm = {
83
- name,
84
- modulusLength,
85
- publicExponent: publicExponentConverted,
86
- hash
87
- };
88
- let publicUsages = [];
89
- let privateUsages = [];
90
- switch (name) {
91
- case 'RSA-OAEP':
92
- {
93
- publicUsages = getUsagesUnion(keyUsages, 'encrypt', 'wrapKey');
94
- privateUsages = getUsagesUnion(keyUsages, 'decrypt', 'unwrapKey');
95
- break;
96
- }
97
- default:
98
- {
99
- publicUsages = getUsagesUnion(keyUsages, 'verify');
100
- privateUsages = getUsagesUnion(keyUsages, 'sign');
101
- break;
102
- }
103
- }
104
- const pub = new PublicKeyObject(keypair?.publicKey);
105
- const publicKey = new CryptoKey(pub, keyAlgorithm, publicUsages, true);
106
- const priv = new PrivateKeyObject(keypair?.privateKey);
107
- const privateKey = new CryptoKey(priv, keyAlgorithm, privateUsages, extractable);
108
- return {
109
- publicKey,
110
- privateKey
111
- };
112
- };
113
- export const rsaExportKey = (key, format) => {
114
- const variant = KeyVariantLookup[key.algorithm.name];
115
- if (variant === undefined) {
116
- throw lazyDOMException(`Unrecognized algorithm name '${key.algorithm.name}'`, 'NotSupportedError');
117
- }
118
- return NativeQuickCrypto.webcrypto.rsaExportKey(format, key.keyObject.handle, variant);
119
- };
120
- export const rsaImportKey = (format, keyData, algorithm, extractable, keyUsages) => {
121
- // const usagesSet = new SafeSet(keyUsages);
122
- let keyObject;
123
- switch (format) {
124
- case 'spki':
125
- {
126
- verifyAcceptableRsaKeyUse(algorithm.name, true, keyUsages);
127
- try {
128
- keyObject = createPublicKey({
129
- key: keyData,
130
- format: 'der',
131
- type: 'spki'
132
- });
133
- } catch (err) {
134
- throw lazyDOMException('Invalid keyData', {
135
- name: 'DataError',
136
- cause: err
137
- });
138
- }
139
- break;
140
- }
141
- // case 'pkcs8': {
142
- // verifyAcceptableRsaKeyUse(algorithm.name, false, keyUsages);
143
- // try {
144
- // keyObject = createPrivateKey({
145
- // key: keyData,
146
- // format: 'der',
147
- // type: 'pkcs8',
148
- // });
149
- // } catch (err) {
150
- // throw lazyDOMException('Invalid keyData', {
151
- // name: 'DataError',
152
- // cause: err,
153
- // });
154
- // }
155
- // break;
156
- // }
157
- case 'jwk':
158
- {
159
- const data = keyData;
160
- if (!data.kty) {
161
- throw lazyDOMException('Invalid keyData', 'DataError');
162
- }
163
- if (data.kty !== 'RSA') throw lazyDOMException('Invalid JWK "kty" Parameter', 'DataError');
164
- verifyAcceptableRsaKeyUse(algorithm.name, data.d === undefined, keyUsages);
165
- if (keyUsages.length > 0 && data.use !== undefined) {
166
- const checkUse = algorithm.name === 'RSA-OAEP' ? 'enc' : 'sig';
167
- if (data.use !== checkUse) throw lazyDOMException('Invalid JWK "use" Parameter', 'DataError');
168
- }
169
- validateKeyOps(data.key_ops, keyUsages);
170
- if (data.ext !== undefined && data.ext === false && extractable === true) {
171
- throw lazyDOMException('JWK "ext" Parameter and extractable mismatch', 'DataError');
172
- }
173
- if (data.alg !== undefined) {
174
- const hash = normalizeHashName(data.alg, HashContext.WebCrypto);
175
- if (hash !== algorithm.hash) throw lazyDOMException('JWK "alg" does not match the requested algorithm', 'DataError');
176
- }
177
- const handle = NativeQuickCrypto.webcrypto.createKeyObjectHandle();
178
- const type = handle.initJwk(data);
179
- if (type === undefined) throw lazyDOMException('Invalid JWK', 'DataError');
180
- keyObject = type === KeyType.Private ? new PrivateKeyObject(handle) : new PublicKeyObject(handle);
181
- break;
182
- }
183
- default:
184
- throw lazyDOMException(`Unable to import RSA key with format ${format}`, 'NotSupportedError');
185
- }
186
- if (keyObject.asymmetricKeyType !== 'rsa') {
187
- throw lazyDOMException('Invalid key type', 'DataError');
188
- }
189
- const {
190
- modulusLength,
191
- publicExponent
192
- } = keyObject.handle.keyDetail();
193
- if (publicExponent === undefined) {
194
- throw lazyDOMException('publicExponent is undefined', 'DataError');
195
- }
196
- return new CryptoKey(keyObject, {
197
- name: algorithm.name,
198
- modulusLength,
199
- publicExponent: new Uint8Array(publicExponent),
200
- hash: algorithm.hash
201
- }, keyUsages, extractable);
202
- };
203
-
204
- // function rsaSignVerify(key, data, { saltLength }, signature) {
205
- // let padding;
206
- // if (key.algorithm.name === 'RSA-PSS') {
207
- // padding = RSA_PKCS1_PSS_PADDING;
208
- // // TODO(@jasnell): Validate maximum size of saltLength
209
- // // based on the key size:
210
- // // Math.ceil((keySizeInBits - 1)/8) - digestSizeInBytes - 2
211
- // validateInt32(saltLength, 'algorithm.saltLength', -2);
212
- // }
213
-
214
- // const mode = signature === undefined ? kSignJobModeSign : kSignJobModeVerify;
215
- // const type = mode === kSignJobModeSign ? 'private' : 'public';
216
-
217
- // if (key.type !== type)
218
- // throw lazyDOMException(`Key must be a ${type} key`, 'InvalidAccessError');
219
-
220
- // return jobPromise(() => new SignJob(
221
- // kCryptoJobAsync,
222
- // signature === undefined ? kSignJobModeSign : kSignJobModeVerify,
223
- // key[kKeyObject][kHandle],
224
- // undefined,
225
- // undefined,
226
- // undefined,
227
- // data,
228
- // normalizeHashName(key.algorithm.hash.name),
229
- // saltLength,
230
- // padding,
231
- // undefined,
232
- // signature));
233
- // }
234
-
235
- // module.exports = {
236
- // rsaCipher: rsaOaepCipher,
237
- // rsaExportKey,
238
- // rsaImportKey,
239
- // rsaKeyGenerate,
240
- // rsaSignVerify,
241
- // };
242
- //# sourceMappingURL=rsa.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["KeyVariantLookup","generateKeyPairPromise","NativeQuickCrypto","lazyDOMException","validateKeyOps","normalizeHashName","HashContext","hasAnyNotIn","getUsagesUnion","bigIntArrayToUnsignedInt","validateMaxBufferLength","bufferLikeToArrayBuffer","CryptoKey","PrivateKeyObject","PublicKeyObject","KeyType","createPublicKey","CipherOrWrapMode","RSAKeyVariant","verifyAcceptableRsaKeyUse","name","isPublic","usages","checkSet","rsaOaepCipher","mode","key","data","label","type","kWebCryptoCipherEncrypt","undefined","webcrypto","rsaCipher","keyObject","handle","RSA_OAEP","algorithm","hash","rsaKeyGenerate","extractable","keyUsages","modulusLength","publicExponent","rawHash","publicExponentConverted","err","keypair","cause","keyAlgorithm","publicUsages","privateUsages","pub","publicKey","priv","privateKey","rsaExportKey","format","variant","rsaImportKey","keyData","kty","d","length","use","checkUse","key_ops","ext","alg","WebCrypto","createKeyObjectHandle","initJwk","Private","asymmetricKeyType","keyDetail","Uint8Array"],"sourceRoot":"../../src","sources":["rsa.ts"],"mappings":"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","ignoreList":[]}
package/lib/module/sig.js DELETED
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';
4
- import Stream from 'readable-stream';
5
-
6
- // TODO(osp) same as publicCipher on node this are defined on C++ and exposed to node
7
- // Do the same here
8
- var DSASigEnc = /*#__PURE__*/function (DSASigEnc) {
9
- DSASigEnc[DSASigEnc["kSigEncDER"] = 0] = "kSigEncDER";
10
- DSASigEnc[DSASigEnc["kSigEncP1363"] = 1] = "kSigEncP1363";
11
- return DSASigEnc;
12
- }(DSASigEnc || {});
13
- import { binaryLikeToArrayBuffer, getDefaultEncoding } from './Utils';
14
- import { preparePrivateKey, preparePublicOrPrivateKey } from './keys';
15
- const createInternalSign = NativeQuickCrypto.createSign;
16
- const createInternalVerify = NativeQuickCrypto.createVerify;
17
- function getPadding(options) {
18
- return getIntOption('padding', options);
19
- }
20
- function getSaltLength(options) {
21
- return getIntOption('saltLength', options);
22
- }
23
- function getDSASignatureEncoding(options) {
24
- if (typeof options === 'object') {
25
- const {
26
- dsaEncoding = 'der'
27
- } = options;
28
- if (dsaEncoding === 'der') return DSASigEnc.kSigEncDER;else if (dsaEncoding === 'ieee-p1363') return DSASigEnc.kSigEncP1363;
29
- throw new Error(`options.dsaEncoding: ${dsaEncoding} not a valid encoding`);
30
- }
31
- return DSASigEnc.kSigEncDER;
32
- }
33
- function getIntOption(name, options) {
34
- const value = options[name];
35
- if (value !== undefined) {
36
- // eslint-disable-next-line no-bitwise
37
- if (value === value >> 0) {
38
- return value;
39
- }
40
- throw new Error(`options.${name}: ${value} not a valid int value`);
41
- }
42
- return undefined;
43
- }
44
- class Verify extends Stream.Writable {
45
- constructor(algorithm, options) {
46
- super(options);
47
- this.internal = createInternalVerify();
48
- this.internal.init(algorithm);
49
- }
50
- _write(chunk, encoding, callback) {
51
- this.update(chunk, encoding);
52
- callback();
53
- }
54
- update(data, encoding) {
55
- encoding = encoding ?? getDefaultEncoding();
56
- data = binaryLikeToArrayBuffer(data, encoding);
57
- this.internal.update(data);
58
- return this;
59
- }
60
- verify(options, signature) {
61
- if (!options) {
62
- throw new Error('Crypto sign key required');
63
- }
64
- const {
65
- data,
66
- format,
67
- type,
68
- passphrase
69
- } = preparePublicOrPrivateKey(options);
70
- const rsaPadding = getPadding(options);
71
- const pssSaltLength = getSaltLength(options);
72
-
73
- // Options specific to (EC)DSA
74
- const dsaSigEnc = getDSASignatureEncoding(options);
75
- const ret = this.internal.verify(data, format, type, passphrase, binaryLikeToArrayBuffer(signature), rsaPadding, pssSaltLength, dsaSigEnc);
76
- return ret;
77
- }
78
- }
79
- class Sign extends Stream.Writable {
80
- constructor(algorithm, options) {
81
- super(options);
82
- this.internal = createInternalSign();
83
- this.internal.init(algorithm);
84
- }
85
- _write(chunk, encoding, callback) {
86
- this.update(chunk, encoding);
87
- callback();
88
- }
89
- update(data, encoding) {
90
- encoding = encoding ?? getDefaultEncoding();
91
- data = binaryLikeToArrayBuffer(data, encoding);
92
- this.internal.update(data);
93
- return this;
94
- }
95
- sign(options, encoding) {
96
- if (!options) {
97
- throw new Error('Crypto sign key required');
98
- }
99
- const {
100
- data,
101
- format,
102
- type,
103
- passphrase
104
- } = preparePrivateKey(options);
105
- const rsaPadding = getPadding(options);
106
- const pssSaltLength = getSaltLength(options);
107
-
108
- // Options specific to (EC)DSA
109
- const dsaSigEnc = getDSASignatureEncoding(options);
110
- const ret = this.internal.sign(data, format, type, passphrase, rsaPadding, pssSaltLength, dsaSigEnc);
111
- encoding = encoding || getDefaultEncoding();
112
- if (encoding && encoding !== 'buffer') {
113
- return Buffer.from(ret).toString(encoding);
114
- }
115
- return Buffer.from(ret);
116
- }
117
- }
118
- export function createSign(algorithm, options) {
119
- return new Sign(algorithm, options);
120
- }
121
- export function createVerify(algorithm, options) {
122
- return new Verify(algorithm, options);
123
- }
124
- //# sourceMappingURL=sig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["NativeQuickCrypto","Stream","DSASigEnc","binaryLikeToArrayBuffer","getDefaultEncoding","preparePrivateKey","preparePublicOrPrivateKey","createInternalSign","createSign","createInternalVerify","createVerify","getPadding","options","getIntOption","getSaltLength","getDSASignatureEncoding","dsaEncoding","kSigEncDER","kSigEncP1363","Error","name","value","undefined","Verify","Writable","constructor","algorithm","internal","init","_write","chunk","encoding","callback","update","data","verify","signature","format","type","passphrase","rsaPadding","pssSaltLength","dsaSigEnc","ret","Sign","sign","Buffer","from","toString"],"sourceRoot":"../../src","sources":["sig.ts"],"mappings":"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","ignoreList":[]}