react-native-quick-crypto 0.6.0 → 0.7.0-rc.0

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 (196) hide show
  1. package/README.md +70 -18
  2. package/android/CMakeLists.txt +58 -61
  3. package/android/build.gradle +105 -53
  4. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  5. package/android/gradle.properties +5 -5
  6. package/android/src/main/{AndroidManifest.xml → AndroidManifestNew.xml} +1 -2
  7. package/cpp/Cipher/MGLCipherHostObject.cpp +31 -5
  8. package/cpp/Cipher/MGLGenerateKeyPairInstaller.cpp +21 -31
  9. package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.cpp +4 -17
  10. package/cpp/Cipher/MGLPublicCipher.h +1 -1
  11. package/cpp/Cipher/MGLPublicCipherInstaller.h +6 -6
  12. package/cpp/Cipher/MGLRsa.cpp +224 -11
  13. package/cpp/Cipher/MGLRsa.h +13 -3
  14. package/cpp/Hash/MGLHashHostObject.cpp +1 -1
  15. package/cpp/Hash/MGLHashInstaller.cpp +2 -4
  16. package/cpp/JSIUtils/MGLJSIMacros.h +10 -0
  17. package/cpp/JSIUtils/MGLThreadAwareHostObject.h +1 -1
  18. package/cpp/MGLKeys.cpp +415 -471
  19. package/cpp/MGLKeys.h +70 -2
  20. package/cpp/MGLQuickCryptoHostObject.cpp +9 -0
  21. package/cpp/Random/MGLRandomHostObject.cpp +9 -2
  22. package/cpp/Sig/MGLSignHostObjects.cpp +1 -1
  23. package/cpp/Utils/MGLUtils.cpp +104 -32
  24. package/cpp/Utils/MGLUtils.h +172 -143
  25. package/cpp/Utils/node.h +13 -0
  26. package/cpp/webcrypto/MGLWebCrypto.cpp +63 -0
  27. package/cpp/webcrypto/MGLWebCrypto.h +34 -0
  28. package/cpp/webcrypto/crypto_ec.cpp +334 -0
  29. package/cpp/webcrypto/crypto_ec.h +65 -0
  30. package/ios/QuickCrypto.xcodeproj/project.pbxproj +4 -4
  31. package/lib/commonjs/@types/crypto-browserify.d.js.map +1 -1
  32. package/lib/commonjs/Cipher.js +53 -194
  33. package/lib/commonjs/Cipher.js.map +1 -1
  34. package/lib/commonjs/Hash.js +29 -29
  35. package/lib/commonjs/Hash.js.map +1 -1
  36. package/lib/commonjs/Hashnames.js +75 -0
  37. package/lib/commonjs/Hashnames.js.map +1 -0
  38. package/lib/commonjs/Hmac.js +6 -29
  39. package/lib/commonjs/Hmac.js.map +1 -1
  40. package/lib/commonjs/NativeQuickCrypto/Cipher.js +3 -5
  41. package/lib/commonjs/NativeQuickCrypto/Cipher.js.map +1 -1
  42. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js +11 -20
  43. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
  44. package/lib/commonjs/NativeQuickCrypto/hash.js.map +1 -1
  45. package/lib/commonjs/NativeQuickCrypto/hmac.js.map +1 -1
  46. package/lib/commonjs/NativeQuickCrypto/pbkdf2.js.map +1 -1
  47. package/lib/commonjs/NativeQuickCrypto/random.js.map +1 -1
  48. package/lib/commonjs/NativeQuickCrypto/sig.js.map +1 -1
  49. package/lib/commonjs/NativeQuickCrypto/webcrypto.js +6 -0
  50. package/lib/commonjs/NativeQuickCrypto/webcrypto.js.map +1 -0
  51. package/lib/commonjs/QuickCrypto.js +5 -14
  52. package/lib/commonjs/QuickCrypto.js.map +1 -1
  53. package/lib/commonjs/Utils.js +360 -48
  54. package/lib/commonjs/Utils.js.map +1 -1
  55. package/lib/commonjs/aes.js +324 -0
  56. package/lib/commonjs/aes.js.map +1 -0
  57. package/lib/commonjs/constants.js +1 -2
  58. package/lib/commonjs/constants.js.map +1 -1
  59. package/lib/commonjs/ec.js +288 -0
  60. package/lib/commonjs/ec.js.map +1 -0
  61. package/lib/commonjs/index.js +6 -10
  62. package/lib/commonjs/index.js.map +1 -1
  63. package/lib/commonjs/keys.js +280 -48
  64. package/lib/commonjs/keys.js.map +1 -1
  65. package/lib/commonjs/pbkdf2.js +44 -18
  66. package/lib/commonjs/pbkdf2.js.map +1 -1
  67. package/lib/commonjs/random.js +49 -68
  68. package/lib/commonjs/random.js.map +1 -1
  69. package/lib/commonjs/rsa.js +329 -0
  70. package/lib/commonjs/rsa.js.map +1 -0
  71. package/lib/commonjs/sig.js +13 -54
  72. package/lib/commonjs/sig.js.map +1 -1
  73. package/lib/commonjs/subtle.js +271 -0
  74. package/lib/commonjs/subtle.js.map +1 -0
  75. package/lib/module/@types/crypto-browserify.d.js.map +1 -1
  76. package/lib/module/Cipher.js +53 -188
  77. package/lib/module/Cipher.js.map +1 -1
  78. package/lib/module/Hash.js +27 -21
  79. package/lib/module/Hash.js.map +1 -1
  80. package/lib/module/Hashnames.js +71 -0
  81. package/lib/module/Hashnames.js.map +1 -0
  82. package/lib/module/Hmac.js +4 -21
  83. package/lib/module/Hmac.js.map +1 -1
  84. package/lib/module/NativeQuickCrypto/Cipher.js +3 -4
  85. package/lib/module/NativeQuickCrypto/Cipher.js.map +1 -1
  86. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js +11 -17
  87. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
  88. package/lib/module/NativeQuickCrypto/hash.js.map +1 -1
  89. package/lib/module/NativeQuickCrypto/hmac.js.map +1 -1
  90. package/lib/module/NativeQuickCrypto/pbkdf2.js.map +1 -1
  91. package/lib/module/NativeQuickCrypto/random.js.map +1 -1
  92. package/lib/module/NativeQuickCrypto/sig.js.map +1 -1
  93. package/lib/module/NativeQuickCrypto/webcrypto.js +2 -0
  94. package/lib/module/NativeQuickCrypto/webcrypto.js.map +1 -0
  95. package/lib/module/QuickCrypto.js +2 -0
  96. package/lib/module/QuickCrypto.js.map +1 -1
  97. package/lib/module/Utils.js +319 -33
  98. package/lib/module/Utils.js.map +1 -1
  99. package/lib/module/aes.js +317 -0
  100. package/lib/module/aes.js.map +1 -0
  101. package/lib/module/constants.js.map +1 -1
  102. package/lib/module/ec.js +282 -0
  103. package/lib/module/ec.js.map +1 -0
  104. package/lib/module/index.js +7 -4
  105. package/lib/module/index.js.map +1 -1
  106. package/lib/module/keys.js +279 -43
  107. package/lib/module/keys.js.map +1 -1
  108. package/lib/module/pbkdf2.js +44 -13
  109. package/lib/module/pbkdf2.js.map +1 -1
  110. package/lib/module/random.js +46 -54
  111. package/lib/module/random.js.map +1 -1
  112. package/lib/module/rsa.js +323 -0
  113. package/lib/module/rsa.js.map +1 -0
  114. package/lib/module/sig.js +13 -46
  115. package/lib/module/sig.js.map +1 -1
  116. package/lib/module/subtle.js +265 -0
  117. package/lib/module/subtle.js.map +1 -0
  118. package/lib/typescript/src/Cipher.d.ts +72 -0
  119. package/lib/typescript/src/Cipher.d.ts.map +1 -0
  120. package/lib/typescript/{Hash.d.ts → src/Hash.d.ts} +8 -7
  121. package/lib/typescript/src/Hash.d.ts.map +1 -0
  122. package/lib/typescript/src/Hashnames.d.ts +11 -0
  123. package/lib/typescript/src/Hashnames.d.ts.map +1 -0
  124. package/lib/typescript/{Hmac.d.ts → src/Hmac.d.ts} +3 -3
  125. package/lib/typescript/src/Hmac.d.ts.map +1 -0
  126. package/lib/typescript/src/NativeQuickCrypto/Cipher.d.ts +34 -0
  127. package/lib/typescript/src/NativeQuickCrypto/Cipher.d.ts.map +1 -0
  128. package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/NativeQuickCrypto.d.ts +3 -0
  129. package/lib/typescript/src/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +1 -0
  130. package/lib/typescript/src/NativeQuickCrypto/hash.d.ts +7 -0
  131. package/lib/typescript/src/NativeQuickCrypto/hash.d.ts.map +1 -0
  132. package/lib/typescript/src/NativeQuickCrypto/hmac.d.ts +6 -0
  133. package/lib/typescript/src/NativeQuickCrypto/hmac.d.ts.map +1 -0
  134. package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/pbkdf2.d.ts +2 -1
  135. package/lib/typescript/src/NativeQuickCrypto/pbkdf2.d.ts.map +1 -0
  136. package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/random.d.ts +2 -1
  137. package/lib/typescript/src/NativeQuickCrypto/random.d.ts.map +1 -0
  138. package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/sig.d.ts +5 -4
  139. package/lib/typescript/src/NativeQuickCrypto/sig.d.ts.map +1 -0
  140. package/lib/typescript/src/NativeQuickCrypto/webcrypto.d.ts +27 -0
  141. package/lib/typescript/src/NativeQuickCrypto/webcrypto.d.ts.map +1 -0
  142. package/lib/typescript/{QuickCrypto.d.ts → src/QuickCrypto.d.ts} +16 -8
  143. package/lib/typescript/src/QuickCrypto.d.ts.map +1 -0
  144. package/lib/typescript/src/Utils.d.ts +44 -0
  145. package/lib/typescript/src/Utils.d.ts.map +1 -0
  146. package/lib/typescript/src/aes.d.ts +5 -0
  147. package/lib/typescript/src/aes.d.ts.map +1 -0
  148. package/lib/typescript/{constants.d.ts → src/constants.d.ts} +1 -0
  149. package/lib/typescript/src/constants.d.ts.map +1 -0
  150. package/lib/typescript/src/ec.d.ts +5 -0
  151. package/lib/typescript/src/ec.d.ts.map +1 -0
  152. package/lib/typescript/{index.d.ts → src/index.d.ts} +33 -27
  153. package/lib/typescript/src/index.d.ts.map +1 -0
  154. package/lib/typescript/src/keys.d.ts +154 -0
  155. package/lib/typescript/src/keys.d.ts.map +1 -0
  156. package/lib/typescript/src/pbkdf2.d.ts +12 -0
  157. package/lib/typescript/src/pbkdf2.d.ts.map +1 -0
  158. package/lib/typescript/{random.d.ts → src/random.d.ts} +7 -6
  159. package/lib/typescript/src/random.d.ts.map +1 -0
  160. package/lib/typescript/src/rsa.d.ts +4 -0
  161. package/lib/typescript/src/rsa.d.ts.map +1 -0
  162. package/lib/typescript/{sig.d.ts → src/sig.d.ts} +3 -3
  163. package/lib/typescript/src/sig.d.ts.map +1 -0
  164. package/lib/typescript/src/subtle.d.ts +11 -0
  165. package/lib/typescript/src/subtle.d.ts.map +1 -0
  166. package/package.json +35 -30
  167. package/react-native-quick-crypto.podspec +5 -4
  168. package/src/Cipher.ts +103 -100
  169. package/src/Hash.ts +42 -6
  170. package/src/Hashnames.ts +91 -0
  171. package/src/Hmac.ts +3 -3
  172. package/src/NativeQuickCrypto/Cipher.ts +1 -0
  173. package/src/NativeQuickCrypto/NativeQuickCrypto.ts +2 -0
  174. package/src/NativeQuickCrypto/webcrypto.ts +46 -0
  175. package/src/QuickCrypto.ts +2 -0
  176. package/src/Utils.ts +409 -5
  177. package/src/aes.ts +365 -0
  178. package/src/ec.ts +351 -0
  179. package/src/keys.ts +428 -54
  180. package/src/pbkdf2.ts +84 -11
  181. package/src/random.ts +37 -24
  182. package/src/rsa.ts +396 -0
  183. package/src/sig.ts +3 -2
  184. package/src/subtle.ts +358 -0
  185. package/lib/commonjs/@types/stream-browserify.d.js +0 -2
  186. package/lib/commonjs/@types/stream-browserify.d.js.map +0 -1
  187. package/lib/module/@types/stream-browserify.d.js +0 -2
  188. package/lib/module/@types/stream-browserify.d.js.map +0 -1
  189. package/lib/typescript/Cipher.d.ts +0 -87
  190. package/lib/typescript/NativeQuickCrypto/Cipher.d.ts +0 -32
  191. package/lib/typescript/NativeQuickCrypto/hash.d.ts +0 -6
  192. package/lib/typescript/NativeQuickCrypto/hmac.d.ts +0 -5
  193. package/lib/typescript/Utils.d.ts +0 -23
  194. package/lib/typescript/keys.d.ts +0 -60
  195. package/lib/typescript/pbkdf2.d.ts +0 -9
  196. package/src/@types/stream-browserify.d.ts +0 -4
package/lib/module/sig.js CHANGED
@@ -1,29 +1,23 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
1
  import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';
4
- import Stream from 'stream-browserify'; // TODO(osp) same as publicCipher on node this are defined on C++ and exposed to node
5
- // Do the same here
6
-
7
- var DSASigEnc;
2
+ import Stream from 'readable-stream';
8
3
 
9
- (function (DSASigEnc) {
4
+ // TODO(osp) same as publicCipher on node this are defined on C++ and exposed to node
5
+ // Do the same here
6
+ var DSASigEnc = /*#__PURE__*/function (DSASigEnc) {
10
7
  DSASigEnc[DSASigEnc["kSigEncDER"] = 0] = "kSigEncDER";
11
8
  DSASigEnc[DSASigEnc["kSigEncP1363"] = 1] = "kSigEncP1363";
12
- })(DSASigEnc || (DSASigEnc = {}));
13
-
9
+ return DSASigEnc;
10
+ }(DSASigEnc || {});
14
11
  import { binaryLikeToArrayBuffer, getDefaultEncoding } from './Utils';
15
12
  import { preparePrivateKey, preparePublicOrPrivateKey } from './keys';
16
13
  const createInternalSign = NativeQuickCrypto.createSign;
17
14
  const createInternalVerify = NativeQuickCrypto.createVerify;
18
-
19
15
  function getPadding(options) {
20
16
  return getIntOption('padding', options);
21
17
  }
22
-
23
18
  function getSaltLength(options) {
24
19
  return getIntOption('saltLength', options);
25
20
  }
26
-
27
21
  function getDSASignatureEncoding(options) {
28
22
  if (typeof options === 'object') {
29
23
  const {
@@ -32,53 +26,39 @@ function getDSASignatureEncoding(options) {
32
26
  if (dsaEncoding === 'der') return DSASigEnc.kSigEncDER;else if (dsaEncoding === 'ieee-p1363') return DSASigEnc.kSigEncP1363;
33
27
  throw new Error(`options.dsaEncoding: ${dsaEncoding} not a valid encoding`);
34
28
  }
35
-
36
29
  return DSASigEnc.kSigEncDER;
37
30
  }
38
-
39
31
  function getIntOption(name, options) {
40
32
  const value = options[name];
41
-
42
33
  if (value !== undefined) {
34
+ // eslint-disable-next-line no-bitwise
43
35
  if (value === value >> 0) {
44
36
  return value;
45
37
  }
46
-
47
38
  throw new Error(`options.${name}: ${value} not a valid int value`);
48
39
  }
49
-
50
40
  return undefined;
51
41
  }
52
-
53
42
  class Verify extends Stream.Writable {
54
43
  constructor(algorithm, options) {
55
44
  super(options);
56
-
57
- _defineProperty(this, "internal", void 0);
58
-
59
45
  this.internal = createInternalVerify();
60
46
  this.internal.init(algorithm);
61
47
  }
62
-
63
48
  _write(chunk, encoding, callback) {
64
49
  this.update(chunk, encoding);
65
50
  callback();
66
51
  }
67
-
68
52
  update(data, encoding) {
69
- var _encoding;
70
-
71
- encoding = (_encoding = encoding) !== null && _encoding !== void 0 ? _encoding : getDefaultEncoding();
53
+ encoding = encoding ?? getDefaultEncoding();
72
54
  data = binaryLikeToArrayBuffer(data, encoding);
73
55
  this.internal.update(data);
74
56
  return this;
75
57
  }
76
-
77
58
  verify(options, signature) {
78
59
  if (!options) {
79
60
  throw new Error('Crypto sign key required');
80
61
  }
81
-
82
62
  const {
83
63
  data,
84
64
  format,
@@ -86,44 +66,34 @@ class Verify extends Stream.Writable {
86
66
  passphrase
87
67
  } = preparePublicOrPrivateKey(options);
88
68
  const rsaPadding = getPadding(options);
89
- const pssSaltLength = getSaltLength(options); // Options specific to (EC)DSA
69
+ const pssSaltLength = getSaltLength(options);
90
70
 
71
+ // Options specific to (EC)DSA
91
72
  const dsaSigEnc = getDSASignatureEncoding(options);
92
73
  const ret = this.internal.verify(data, format, type, passphrase, binaryLikeToArrayBuffer(signature), rsaPadding, pssSaltLength, dsaSigEnc);
93
74
  return ret;
94
75
  }
95
-
96
76
  }
97
-
98
77
  class Sign extends Stream.Writable {
99
78
  constructor(algorithm, options) {
100
79
  super(options);
101
-
102
- _defineProperty(this, "internal", void 0);
103
-
104
80
  this.internal = createInternalSign();
105
81
  this.internal.init(algorithm);
106
82
  }
107
-
108
83
  _write(chunk, encoding, callback) {
109
84
  this.update(chunk, encoding);
110
85
  callback();
111
86
  }
112
-
113
87
  update(data, encoding) {
114
- var _encoding2;
115
-
116
- encoding = (_encoding2 = encoding) !== null && _encoding2 !== void 0 ? _encoding2 : getDefaultEncoding();
88
+ encoding = encoding ?? getDefaultEncoding();
117
89
  data = binaryLikeToArrayBuffer(data, encoding);
118
90
  this.internal.update(data);
119
91
  return this;
120
92
  }
121
-
122
93
  sign(options, encoding) {
123
94
  if (!options) {
124
95
  throw new Error('Crypto sign key required');
125
96
  }
126
-
127
97
  const {
128
98
  data,
129
99
  format,
@@ -131,21 +101,18 @@ class Sign extends Stream.Writable {
131
101
  passphrase
132
102
  } = preparePrivateKey(options);
133
103
  const rsaPadding = getPadding(options);
134
- const pssSaltLength = getSaltLength(options); // Options specific to (EC)DSA
104
+ const pssSaltLength = getSaltLength(options);
135
105
 
106
+ // Options specific to (EC)DSA
136
107
  const dsaSigEnc = getDSASignatureEncoding(options);
137
108
  const ret = this.internal.sign(data, format, type, passphrase, rsaPadding, pssSaltLength, dsaSigEnc);
138
109
  encoding = encoding || getDefaultEncoding();
139
-
140
110
  if (encoding && encoding !== 'buffer') {
141
111
  return Buffer.from(ret).toString(encoding);
142
112
  }
143
-
144
113
  return Buffer.from(ret);
145
114
  }
146
-
147
115
  }
148
-
149
116
  export function createSign(algorithm, options) {
150
117
  return new Sign(algorithm, options);
151
118
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["sig.ts"],"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"],"mappings":";;AAAA,SAASA,iBAAT,QAAkC,uCAAlC;AAEA,OAAOC,MAAP,MAAmB,mBAAnB,C,CAEA;AACA;;IACKC,S;;WAAAA,S;AAAAA,EAAAA,S,CAAAA,S;AAAAA,EAAAA,S,CAAAA,S;GAAAA,S,KAAAA,S;;AAKL,SAEEC,uBAFF,EAGEC,kBAHF,QAIO,SAJP;AAKA,SAASC,iBAAT,EAA4BC,yBAA5B,QAA6D,QAA7D;AAEA,MAAMC,kBAAkB,GAAGP,iBAAiB,CAACQ,UAA7C;AACA,MAAMC,oBAAoB,GAAGT,iBAAiB,CAACU,YAA/C;;AAEA,SAASC,UAAT,CAAoBC,OAApB,EAAkC;AAChC,SAAOC,YAAY,CAAC,SAAD,EAAYD,OAAZ,CAAnB;AACD;;AAED,SAASE,aAAT,CAAuBF,OAAvB,EAAqC;AACnC,SAAOC,YAAY,CAAC,YAAD,EAAeD,OAAf,CAAnB;AACD;;AAED,SAASG,uBAAT,CAAiCH,OAAjC,EAA+C;AAC7C,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,UAAM;AAAEI,MAAAA,WAAW,GAAG;AAAhB,QAA0BJ,OAAhC;AACA,QAAII,WAAW,KAAK,KAApB,EAA2B,OAAOd,SAAS,CAACe,UAAjB,CAA3B,KACK,IAAID,WAAW,KAAK,YAApB,EAAkC,OAAOd,SAAS,CAACgB,YAAjB;AACvC,UAAM,IAAIC,KAAJ,CAAW,wBAAuBH,WAAY,uBAA9C,CAAN;AACD;;AAED,SAAOd,SAAS,CAACe,UAAjB;AACD;;AAED,SAASJ,YAAT,CAAsBO,IAAtB,EAAoCR,OAApC,EAAkD;AAChD,QAAMS,KAAK,GAAGT,OAAO,CAACQ,IAAD,CAArB;;AACA,MAAIC,KAAK,KAAKC,SAAd,EAAyB;AACvB,QAAID,KAAK,KAAKA,KAAK,IAAI,CAAvB,EAA0B;AACxB,aAAOA,KAAP;AACD;;AACD,UAAM,IAAIF,KAAJ,CAAW,WAAUC,IAAK,KAAIC,KAAM,wBAApC,CAAN;AACD;;AACD,SAAOC,SAAP;AACD;;AAED,MAAMC,MAAN,SAAqBtB,MAAM,CAACuB,QAA5B,CAAqC;AAEnCC,EAAAA,WAAW,CAACC,SAAD,EAAoBd,OAApB,EAAqD;AAC9D,UAAMA,OAAN;;AAD8D;;AAE9D,SAAKe,QAAL,GAAgBlB,oBAAoB,EAApC;AACA,SAAKkB,QAAL,CAAcC,IAAd,CAAmBF,SAAnB;AACD;;AAEDG,EAAAA,MAAM,CAACC,KAAD,EAAoBC,QAApB,EAAsCC,QAAtC,EAA4D;AAChE,SAAKC,MAAL,CAAYH,KAAZ,EAAmBC,QAAnB;AACAC,IAAAA,QAAQ;AACT;;AAEDC,EAAAA,MAAM,CAACC,IAAD,EAAmBH,QAAnB,EAAsC;AAAA;;AAC1CA,IAAAA,QAAQ,gBAAGA,QAAH,iDAAe3B,kBAAkB,EAAzC;AACA8B,IAAAA,IAAI,GAAG/B,uBAAuB,CAAC+B,IAAD,EAAOH,QAAP,CAA9B;AACA,SAAKJ,QAAL,CAAcM,MAAd,CAAqBC,IAArB;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,MAAM,CACJvB,OADI,EASJwB,SATI,EAUK;AACT,QAAI,CAACxB,OAAL,EAAc;AACZ,YAAM,IAAIO,KAAJ,CAAU,0BAAV,CAAN;AACD;;AAED,UAAM;AAAEe,MAAAA,IAAF;AAAQG,MAAAA,MAAR;AAAgBC,MAAAA,IAAhB;AAAsBC,MAAAA;AAAtB,QACJjC,yBAAyB,CAACM,OAAD,CAD3B;AAGA,UAAM4B,UAAU,GAAG7B,UAAU,CAACC,OAAD,CAA7B;AACA,UAAM6B,aAAa,GAAG3B,aAAa,CAACF,OAAD,CAAnC,CATS,CAWT;;AACA,UAAM8B,SAAS,GAAG3B,uBAAuB,CAACH,OAAD,CAAzC;AAEA,UAAM+B,GAAG,GAAG,KAAKhB,QAAL,CAAcQ,MAAd,CACVD,IADU,EAEVG,MAFU,EAGVC,IAHU,EAIVC,UAJU,EAKVpC,uBAAuB,CAACiC,SAAD,CALb,EAMVI,UANU,EAOVC,aAPU,EAQVC,SARU,CAAZ;AAWA,WAAOC,GAAP;AACD;;AAxDkC;;AA2DrC,MAAMC,IAAN,SAAmB3C,MAAM,CAACuB,QAA1B,CAAmC;AAEjCC,EAAAA,WAAW,CAACC,SAAD,EAAoBd,OAApB,EAAqD;AAC9D,UAAMA,OAAN;;AAD8D;;AAE9D,SAAKe,QAAL,GAAgBpB,kBAAkB,EAAlC;AACA,SAAKoB,QAAL,CAAcC,IAAd,CAAmBF,SAAnB;AACD;;AAEDG,EAAAA,MAAM,CAACC,KAAD,EAAoBC,QAApB,EAAsCC,QAAtC,EAA4D;AAChE,SAAKC,MAAL,CAAYH,KAAZ,EAAmBC,QAAnB;AACAC,IAAAA,QAAQ;AACT;;AAEDC,EAAAA,MAAM,CAACC,IAAD,EAAmBH,QAAnB,EAAsC;AAAA;;AAC1CA,IAAAA,QAAQ,iBAAGA,QAAH,mDAAe3B,kBAAkB,EAAzC;AACA8B,IAAAA,IAAI,GAAG/B,uBAAuB,CAAC+B,IAAD,EAAOH,QAAP,CAA9B;AACA,SAAKJ,QAAL,CAAcM,MAAd,CAAqBC,IAArB;AACA,WAAO,IAAP;AACD;;AAEDW,EAAAA,IAAI,CACFjC,OADE,EASFmB,QATE,EAUF;AACA,QAAI,CAACnB,OAAL,EAAc;AACZ,YAAM,IAAIO,KAAJ,CAAU,0BAAV,CAAN;AACD;;AAED,UAAM;AAAEe,MAAAA,IAAF;AAAQG,MAAAA,MAAR;AAAgBC,MAAAA,IAAhB;AAAsBC,MAAAA;AAAtB,QAAqClC,iBAAiB,CAACO,OAAD,CAA5D;AAEA,UAAM4B,UAAU,GAAG7B,UAAU,CAACC,OAAD,CAA7B;AACA,UAAM6B,aAAa,GAAG3B,aAAa,CAACF,OAAD,CAAnC,CARA,CAUA;;AACA,UAAM8B,SAAS,GAAG3B,uBAAuB,CAACH,OAAD,CAAzC;AAEA,UAAM+B,GAAG,GAAG,KAAKhB,QAAL,CAAckB,IAAd,CACVX,IADU,EAEVG,MAFU,EAGVC,IAHU,EAIVC,UAJU,EAKVC,UALU,EAMVC,aANU,EAOVC,SAPU,CAAZ;AAUAX,IAAAA,QAAQ,GAAGA,QAAQ,IAAI3B,kBAAkB,EAAzC;;AACA,QAAI2B,QAAQ,IAAIA,QAAQ,KAAK,QAA7B,EAAuC;AACrC,aAAOe,MAAM,CAACC,IAAP,CAAYJ,GAAZ,EAAiBK,QAAjB,CAA0BjB,QAA1B,CAAP;AACD;;AAED,WAAOe,MAAM,CAACC,IAAP,CAAYJ,GAAZ,CAAP;AACD;;AA3DgC;;AA8DnC,OAAO,SAASnC,UAAT,CAAoBkB,SAApB,EAAuCd,OAAvC,EAAsD;AAC3D,SAAO,IAAIgC,IAAJ,CAASlB,SAAT,EAAoBd,OAApB,CAAP;AACD;AAED,OAAO,SAASF,YAAT,CAAsBgB,SAAtB,EAAyCd,OAAzC,EAAwD;AAC7D,SAAO,IAAIW,MAAJ,CAAWG,SAAX,EAAsBd,OAAtB,CAAP;AACD","sourcesContent":["import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';\nimport type { InternalSign, InternalVerify } from './NativeQuickCrypto/sig';\nimport Stream from 'stream-browserify';\n\n// TODO(osp) same as publicCipher on node this are defined on C++ and exposed to node\n// Do the same here\nenum DSASigEnc {\n kSigEncDER,\n kSigEncP1363,\n}\n\nimport {\n BinaryLike,\n binaryLikeToArrayBuffer,\n getDefaultEncoding,\n} from './Utils';\nimport { preparePrivateKey, preparePublicOrPrivateKey } from './keys';\n\nconst createInternalSign = NativeQuickCrypto.createSign;\nconst createInternalVerify = NativeQuickCrypto.createVerify;\n\nfunction getPadding(options: any) {\n return getIntOption('padding', options);\n}\n\nfunction getSaltLength(options: any) {\n return getIntOption('saltLength', options);\n}\n\nfunction getDSASignatureEncoding(options: any) {\n if (typeof options === 'object') {\n const { dsaEncoding = 'der' } = options;\n if (dsaEncoding === 'der') return DSASigEnc.kSigEncDER;\n else if (dsaEncoding === 'ieee-p1363') return DSASigEnc.kSigEncP1363;\n throw new Error(`options.dsaEncoding: ${dsaEncoding} not a valid encoding`);\n }\n\n return DSASigEnc.kSigEncDER;\n}\n\nfunction getIntOption(name: string, options: any) {\n const value = options[name];\n if (value !== undefined) {\n if (value === value >> 0) {\n return value;\n }\n throw new Error(`options.${name}: ${value} not a valid int value`);\n }\n return undefined;\n}\n\nclass Verify extends Stream.Writable {\n private internal: InternalVerify;\n constructor(algorithm: string, options: Stream.WritableOptions) {\n super(options);\n this.internal = createInternalVerify();\n this.internal.init(algorithm);\n }\n\n _write(chunk: BinaryLike, encoding: string, callback: () => void) {\n this.update(chunk, encoding);\n callback();\n }\n\n update(data: BinaryLike, encoding?: string) {\n encoding = encoding ?? getDefaultEncoding();\n data = binaryLikeToArrayBuffer(data, encoding);\n this.internal.update(data);\n return this;\n }\n\n verify(\n options: {\n key: string | Buffer;\n format?: string;\n type?: string;\n passphrase?: string;\n padding?: number;\n saltLength?: number;\n },\n signature: BinaryLike\n ): boolean {\n if (!options) {\n throw new Error('Crypto sign key required');\n }\n\n const { data, format, type, passphrase } =\n preparePublicOrPrivateKey(options);\n\n const rsaPadding = getPadding(options);\n const pssSaltLength = getSaltLength(options);\n\n // Options specific to (EC)DSA\n const dsaSigEnc = getDSASignatureEncoding(options);\n\n const ret = this.internal.verify(\n data,\n format,\n type,\n passphrase,\n binaryLikeToArrayBuffer(signature),\n rsaPadding,\n pssSaltLength,\n dsaSigEnc\n );\n\n return ret;\n }\n}\n\nclass Sign extends Stream.Writable {\n private internal: InternalSign;\n constructor(algorithm: string, options: Stream.WritableOptions) {\n super(options);\n this.internal = createInternalSign();\n this.internal.init(algorithm);\n }\n\n _write(chunk: BinaryLike, encoding: string, callback: () => void) {\n this.update(chunk, encoding);\n callback();\n }\n\n update(data: BinaryLike, encoding?: string) {\n encoding = encoding ?? getDefaultEncoding();\n data = binaryLikeToArrayBuffer(data, encoding);\n this.internal.update(data);\n return this;\n }\n\n sign(\n options: {\n key: string | Buffer;\n format?: string;\n type?: string;\n passphrase?: string;\n padding?: number;\n saltLength?: number;\n },\n encoding?: string\n ) {\n if (!options) {\n throw new Error('Crypto sign key required');\n }\n\n const { data, format, type, passphrase } = preparePrivateKey(options);\n\n const rsaPadding = getPadding(options);\n const pssSaltLength = getSaltLength(options);\n\n // Options specific to (EC)DSA\n const dsaSigEnc = getDSASignatureEncoding(options);\n\n const ret = this.internal.sign(\n data,\n format,\n type,\n passphrase,\n rsaPadding,\n pssSaltLength,\n dsaSigEnc\n );\n\n encoding = encoding || getDefaultEncoding();\n if (encoding && encoding !== 'buffer') {\n return Buffer.from(ret).toString(encoding as any);\n }\n\n return Buffer.from(ret);\n }\n}\n\nexport function createSign(algorithm: string, options?: any) {\n return new Sign(algorithm, options);\n}\n\nexport function createVerify(algorithm: string, options?: any) {\n return new Verify(algorithm, options);\n}\n"]}
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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"}
@@ -0,0 +1,265 @@
1
+ import { CryptoKey, KWebCryptoKeyFormat, createSecretKey } from './keys';
2
+ import { hasAnyNotIn, normalizeAlgorithm, lazyDOMException, normalizeHashName, HashContext } from './Utils';
3
+ import { ecImportKey, ecExportKey } from './ec';
4
+ import { pbkdf2DeriveBits } from './pbkdf2';
5
+ import { asyncDigest } from './Hash';
6
+ import { aesImportKey, getAlgorithmName } from './aes';
7
+ import { rsaImportKey } from './rsa';
8
+ const exportKeySpki = async key => {
9
+ switch (key.algorithm.name) {
10
+ // case 'RSASSA-PKCS1-v1_5':
11
+ // // Fall through
12
+ // case 'RSA-PSS':
13
+ // // Fall through
14
+ // case 'RSA-OAEP':
15
+ // if (key.type === 'public') {
16
+ // return require('internal/crypto/rsa').rsaExportKey(
17
+ // key,
18
+ // kWebCryptoKeyFormatSPKI
19
+ // );
20
+ // }
21
+ // break;
22
+ case 'ECDSA':
23
+ // Fall through
24
+ case 'ECDH':
25
+ if (key.type === 'public') {
26
+ return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI);
27
+ }
28
+ break;
29
+ // case 'Ed25519':
30
+ // // Fall through
31
+ // case 'Ed448':
32
+ // // Fall through
33
+ // case 'X25519':
34
+ // // Fall through
35
+ // case 'X448':
36
+ // if (key.type === 'public') {
37
+ // return require('internal/crypto/cfrg').cfrgExportKey(
38
+ // key,
39
+ // kWebCryptoKeyFormatSPKI
40
+ // );
41
+ // }
42
+ // break;
43
+ }
44
+ throw new Error(`Unable to export a raw ${key.algorithm.name} ${key.type} key`);
45
+ };
46
+ const exportKeyRaw = key => {
47
+ switch (key.algorithm.name) {
48
+ case 'ECDSA':
49
+ // Fall through
50
+ case 'ECDH':
51
+ if (key.type === 'public') {
52
+ return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw);
53
+ }
54
+ break;
55
+ // case 'Ed25519':
56
+ // // Fall through
57
+ // case 'Ed448':
58
+ // // Fall through
59
+ // case 'X25519':
60
+ // // Fall through
61
+ // case 'X448':
62
+ // if (key.type === 'public') {
63
+ // return require('internal/crypto/cfrg')
64
+ // .cfrgExportKey(key, kWebCryptoKeyFormatRaw);
65
+ // }
66
+ // break;
67
+ case 'AES-CTR':
68
+ // Fall through
69
+ case 'AES-CBC':
70
+ // Fall through
71
+ case 'AES-GCM':
72
+ // Fall through
73
+ case 'AES-KW':
74
+ // Fall through
75
+ case 'HMAC':
76
+ return key.keyObject.export();
77
+ }
78
+ throw lazyDOMException(`Unable to export a raw ${key.algorithm.name} ${key.type} key`, 'InvalidAccessError');
79
+ };
80
+ const exportKeyJWK = key => {
81
+ const jwk = key.keyObject.handle.exportJwk({
82
+ key_ops: key.usages,
83
+ ext: key.extractable
84
+ }, true);
85
+ switch (key.algorithm.name) {
86
+ case 'RSASSA-PKCS1-v1_5':
87
+ jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsa);
88
+ return jwk;
89
+ case 'RSA-PSS':
90
+ jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaPss);
91
+ return jwk;
92
+ case 'RSA-OAEP':
93
+ jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaOaep);
94
+ return jwk;
95
+ case 'ECDSA':
96
+ // Fall through
97
+ case 'ECDH':
98
+ jwk.crv ||= key.algorithm.namedCurve;
99
+ return jwk;
100
+ // case 'X25519':
101
+ // // Fall through
102
+ // case 'X448':
103
+ // jwk.crv ||= key.algorithm.name;
104
+ // return jwk;
105
+ // case 'Ed25519':
106
+ // // Fall through
107
+ // case 'Ed448':
108
+ // jwk.crv ||= key.algorithm.name;
109
+ // return jwk;
110
+ case 'AES-CTR':
111
+ // Fall through
112
+ case 'AES-CBC':
113
+ // Fall through
114
+ case 'AES-GCM':
115
+ // Fall through
116
+ case 'AES-KW':
117
+ jwk.alg = getAlgorithmName(key.algorithm.name, key.algorithm.length);
118
+ return jwk;
119
+ // case 'HMAC':
120
+ // jwk.alg = normalizeHashName(
121
+ // key.algorithm.hash.name,
122
+ // normalizeHashName.kContextJwkHmac);
123
+ // return jwk;
124
+ default:
125
+ // Fall through
126
+ }
127
+ throw lazyDOMException(`JWK export not yet supported: ${key.algorithm.name}`, 'NotSupportedError');
128
+ };
129
+ const importGenericSecretKey = async ({
130
+ name,
131
+ length
132
+ }, format, keyData, extractable, keyUsages) => {
133
+ if (extractable) {
134
+ throw new Error(`${name} keys are not extractable`);
135
+ }
136
+ if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
137
+ throw new Error(`Unsupported key usage for a ${name} key`);
138
+ }
139
+ switch (format) {
140
+ case 'raw':
141
+ {
142
+ if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
143
+ throw new Error(`Unsupported key usage for a ${name} key`);
144
+ }
145
+ const checkLength = typeof keyData === 'string' ? keyData.length * 8 : keyData.byteLength * 8;
146
+
147
+ // The Web Crypto spec allows for key lengths that are not multiples of
148
+ // 8. We don't. Our check here is stricter than that defined by the spec
149
+ // in that we require that algorithm.length match keyData.length * 8 if
150
+ // algorithm.length is specified.
151
+ if (length !== undefined && length !== checkLength) {
152
+ throw new Error('Invalid key length');
153
+ }
154
+ const keyObject = createSecretKey(keyData);
155
+ return new CryptoKey(keyObject, {
156
+ name
157
+ }, keyUsages, false);
158
+ }
159
+ }
160
+ throw new Error(`Unable to import ${name} key with format ${format}`);
161
+ };
162
+ class Subtle {
163
+ async digest(algorithm, data) {
164
+ const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'digest');
165
+ return asyncDigest(normalizedAlgorithm, data);
166
+ }
167
+ async deriveBits(algorithm, baseKey, length) {
168
+ if (!baseKey.keyUsages.includes('deriveBits')) {
169
+ throw new Error('baseKey does not have deriveBits usage');
170
+ }
171
+ if (baseKey.algorithm.name !== algorithm.name) throw new Error('Key algorithm mismatch');
172
+ switch (algorithm.name) {
173
+ // case 'X25519':
174
+ // // Fall through
175
+ // case 'X448':
176
+ // // Fall through
177
+ // case 'ECDH':
178
+ // return require('internal/crypto/diffiehellman')
179
+ // .ecdhDeriveBits(algorithm, baseKey, length);
180
+ // case 'HKDF':
181
+ // return require('internal/crypto/hkdf')
182
+ // .hkdfDeriveBits(algorithm, baseKey, length);
183
+ case 'PBKDF2':
184
+ return pbkdf2DeriveBits(algorithm, baseKey, length);
185
+ }
186
+ throw new Error(`'subtle.deriveBits()' for ${algorithm.name} is not implemented.`);
187
+ }
188
+ async importKey(format, data, algorithm, extractable, keyUsages) {
189
+ let result;
190
+ switch (algorithm.name) {
191
+ case 'RSASSA-PKCS1-v1_5':
192
+ // Fall through
193
+ case 'RSA-PSS':
194
+ // Fall through
195
+ case 'RSA-OAEP':
196
+ result = rsaImportKey(format, data, algorithm, extractable, keyUsages);
197
+ break;
198
+ case 'ECDSA':
199
+ // Fall through
200
+ case 'ECDH':
201
+ result = ecImportKey(format, data, algorithm, extractable, keyUsages);
202
+ break;
203
+ // case 'Ed25519':
204
+ // // Fall through
205
+ // case 'Ed448':
206
+ // // Fall through
207
+ // case 'X25519':
208
+ // // Fall through
209
+ // case 'X448':
210
+ // result = await require('internal/crypto/cfrg').cfrgImportKey(
211
+ // format,
212
+ // keyData,
213
+ // algorithm,
214
+ // extractable,
215
+ // keyUsages
216
+ // );
217
+ // break;
218
+ // case 'HMAC':
219
+ // result = await require('internal/crypto/mac').hmacImportKey(
220
+ // format,
221
+ // keyData,
222
+ // algorithm,
223
+ // extractable,
224
+ // keyUsages
225
+ // );
226
+ // break;
227
+ case 'AES-CTR':
228
+ // Fall through
229
+ case 'AES-CBC':
230
+ // Fall through
231
+ case 'AES-GCM':
232
+ // Fall through
233
+ case 'AES-KW':
234
+ result = await aesImportKey(algorithm, format, data, extractable, keyUsages);
235
+ break;
236
+ // case 'HKDF':
237
+ // // Fall through
238
+ case 'PBKDF2':
239
+ result = await importGenericSecretKey(algorithm, format, data, extractable, keyUsages);
240
+ break;
241
+ default:
242
+ throw new Error(`"subtle.importKey()" is not implemented for ${algorithm.name}`);
243
+ }
244
+ if ((result.type === 'secret' || result.type === 'private') && result.usages.length === 0) {
245
+ throw new Error(`Usages cannot be empty when importing a ${result.type} key.`);
246
+ }
247
+ return result;
248
+ }
249
+ async exportKey(format, key) {
250
+ if (!key.extractable) throw new Error('key is not extractable');
251
+ switch (format) {
252
+ case 'spki':
253
+ return await exportKeySpki(key);
254
+ // case 'pkcs8':
255
+ // return await exportKeyPkcs8(key);
256
+ case 'jwk':
257
+ return exportKeyJWK(key);
258
+ case 'raw':
259
+ return exportKeyRaw(key);
260
+ }
261
+ throw new Error(`'subtle.exportKey()' is not implemented for ${format}`);
262
+ }
263
+ }
264
+ export const subtle = new Subtle();
265
+ //# sourceMappingURL=subtle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CryptoKey","KWebCryptoKeyFormat","createSecretKey","hasAnyNotIn","normalizeAlgorithm","lazyDOMException","normalizeHashName","HashContext","ecImportKey","ecExportKey","pbkdf2DeriveBits","asyncDigest","aesImportKey","getAlgorithmName","rsaImportKey","exportKeySpki","key","algorithm","name","type","kWebCryptoKeyFormatSPKI","Error","exportKeyRaw","kWebCryptoKeyFormatRaw","keyObject","export","exportKeyJWK","jwk","handle","exportJwk","key_ops","usages","ext","extractable","alg","hash","JwkRsa","JwkRsaPss","JwkRsaOaep","crv","namedCurve","length","importGenericSecretKey","format","keyData","keyUsages","checkLength","byteLength","undefined","Subtle","digest","data","normalizedAlgorithm","deriveBits","baseKey","includes","importKey","result","exportKey","subtle"],"sourceRoot":"../../src","sources":["subtle.ts"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /// <reference types="node" />
2
+ import { type BinaryLike, type BinaryLikeNode } from './Utils';
3
+ import type { CipherCCMOptions, CipherCCMTypes, CipherGCMTypes, CipherGCMOptions, CipherOCBOptions, CipherOCBTypes, DecipherGCM, DecipherOCB, DecipherCCM, CipherCCM, CipherOCB, CipherGCM } from 'crypto';
4
+ import { Buffer } from '@craftzdog/react-native-buffer';
5
+ export declare function createDecipher(algorithm: CipherCCMTypes, password: BinaryLikeNode, options: CipherCCMOptions): DecipherCCM;
6
+ export declare function createDecipher(algorithm: CipherGCMTypes, password: BinaryLikeNode, options?: CipherGCMOptions): DecipherGCM;
7
+ export declare function createDecipheriv(algorithm: CipherCCMTypes, key: BinaryLikeNode, iv: BinaryLike, options: CipherCCMOptions): DecipherCCM;
8
+ export declare function createDecipheriv(algorithm: CipherOCBTypes, key: BinaryLikeNode, iv: BinaryLike, options: CipherOCBOptions): DecipherOCB;
9
+ export declare function createDecipheriv(algorithm: CipherGCMTypes, key: BinaryLikeNode, iv: BinaryLike, options?: CipherGCMOptions): DecipherGCM;
10
+ export declare function createCipher(algorithm: CipherCCMTypes, password: BinaryLikeNode, options: CipherCCMOptions): CipherCCM;
11
+ export declare function createCipher(algorithm: CipherGCMTypes, password: BinaryLikeNode, options?: CipherGCMOptions): CipherGCM;
12
+ export declare function createCipheriv(algorithm: CipherCCMTypes, key: BinaryLikeNode, iv: BinaryLike, options: CipherCCMOptions): CipherCCM;
13
+ export declare function createCipheriv(algorithm: CipherOCBTypes, key: BinaryLikeNode, iv: BinaryLike, options: CipherOCBOptions): CipherOCB;
14
+ export declare function createCipheriv(algorithm: CipherGCMTypes, key: BinaryLikeNode, iv: BinaryLike, options?: CipherGCMOptions): CipherGCM;
15
+ export declare const publicEncrypt: (options: {
16
+ key: any;
17
+ encoding?: string;
18
+ format?: any;
19
+ padding?: any;
20
+ oaepHash?: any;
21
+ oaepLabel?: any;
22
+ passphrase?: string;
23
+ }, buffer: BinaryLike) => Buffer;
24
+ export declare const publicDecrypt: (options: {
25
+ key: any;
26
+ encoding?: string;
27
+ format?: any;
28
+ padding?: any;
29
+ oaepHash?: any;
30
+ oaepLabel?: any;
31
+ passphrase?: string;
32
+ }, buffer: BinaryLike) => Buffer;
33
+ export declare const privateDecrypt: (options: {
34
+ key: any;
35
+ encoding?: string;
36
+ format?: any;
37
+ padding?: any;
38
+ oaepHash?: any;
39
+ oaepLabel?: any;
40
+ passphrase?: string;
41
+ }, buffer: BinaryLike) => Buffer;
42
+ type GenerateKeyPairOptions = {
43
+ modulusLength: number;
44
+ publicExponent?: number;
45
+ hashAlgorithm?: string;
46
+ mgf1HashAlgorithm?: string;
47
+ saltLength?: number;
48
+ divisorLength?: number;
49
+ namedCurve?: string;
50
+ prime?: Buffer;
51
+ primeLength?: number;
52
+ generator?: number;
53
+ groupName?: string;
54
+ publicKeyEncoding?: any;
55
+ privateKeyEncoding?: any;
56
+ paramEncoding?: string;
57
+ hash?: any;
58
+ mgf1Hash?: any;
59
+ };
60
+ type GenerateKeyPairCallback = (error: unknown | null, publicKey?: Buffer, privateKey?: Buffer) => void;
61
+ export declare function generateKeyPair(type: string, callback: GenerateKeyPairCallback): void;
62
+ export declare function generateKeyPair(type: string, options: GenerateKeyPairOptions, callback: GenerateKeyPairCallback): void;
63
+ export declare function generateKeyPairSync(type: string): {
64
+ publicKey: any;
65
+ privateKey: any;
66
+ };
67
+ export declare function generateKeyPairSync(type: string, options: GenerateKeyPairOptions): {
68
+ publicKey: any;
69
+ privateKey: any;
70
+ };
71
+ export {};
72
+ //# sourceMappingURL=Cipher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cipher.d.ts","sourceRoot":"","sources":["../../../src/Cipher.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- /// <reference types="node" />
2
1
  import 'react-native';
3
- import { Encoding } from './Utils';
4
- import Stream from 'stream-browserify';
2
+ import { type Encoding, type BufferLike } from './Utils';
3
+ import Stream from 'readable-stream';
5
4
  import { Buffer } from '@craftzdog/react-native-buffer';
5
+ import type { SubtleAlgorithm } from './keys';
6
6
  interface HashOptionsBase extends Stream.TransformOptions {
7
7
  outputLength?: number | undefined;
8
8
  }
9
- declare type HashOptions = null | undefined | HashOptionsBase;
10
- declare type BinaryLike = ArrayBuffer;
9
+ type HashOptions = null | undefined | HashOptionsBase;
11
10
  export declare function createHash(algorithm: string, options?: HashOptions): Hash;
12
11
  declare class Hash extends Stream.Transform {
13
12
  private internalHash;
@@ -24,8 +23,8 @@ declare class Hash extends Stream.Transform {
24
23
  * @since v0.1.92
25
24
  * @param inputEncoding The `encoding` of the `data` string.
26
25
  */
27
- update(data: string | BinaryLike, inputEncoding?: Encoding): Hash;
28
- _transform(chunk: string | BinaryLike, encoding: Encoding, callback: () => void): void;
26
+ update(data: string | ArrayBuffer, inputEncoding?: Encoding): Hash;
27
+ _transform(chunk: string | ArrayBuffer, encoding: Encoding, callback: () => void): void;
29
28
  _flush(callback: () => void): void;
30
29
  /**
31
30
  * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method).
@@ -41,4 +40,6 @@ declare class Hash extends Stream.Transform {
41
40
  digest(encoding: 'buffer'): Buffer;
42
41
  digest(encoding: Encoding): string;
43
42
  }
43
+ export declare const asyncDigest: (algorithm: SubtleAlgorithm, data: BufferLike) => Promise<ArrayBuffer>;
44
44
  export {};
45
+ //# sourceMappingURL=Hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hash.d.ts","sourceRoot":"","sources":["../../../src/Hash.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,CAAC;AAGtB,OAAO,EACL,KAAK,QAAQ,EAIb,KAAK,UAAU,EAEhB,MAAM,SAAS,CAAC;AACjB,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE9C,UAAU,eAAgB,SAAQ,MAAM,CAAC,gBAAgB;IACvD,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,KAAK,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,CAAC;AAMtD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,QAElE;AAED,cAAM,IAAK,SAAQ,MAAM,CAAC,SAAS;IACjC,OAAO,CAAC,YAAY,CAAe;gBAEvB,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW;gBAClC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW;IAUpD,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAIrC;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI;IAUlE,UAAU,CACR,KAAK,EAAE,MAAM,GAAG,WAAW,EAC3B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,IAAI;IAMtB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI;IAK3B;;;;;;;;;OASG;IACH,MAAM,IAAI,MAAM;IAChB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAClC,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;CAUnC;AAID,eAAO,MAAM,WAAW,cACX,eAAe,QACpB,UAAU,KACf,QAAQ,WAAW,CAqBrB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { HashAlgorithm, KeyPairAlgorithm, SecretKeyAlgorithm, SubtleAlgorithm } from './keys';
2
+ export declare enum HashContext {
3
+ Node = 0,
4
+ WebCrypto = 1,
5
+ JwkRsa = 2,
6
+ JwkRsaPss = 3,
7
+ JwkRsaOaep = 4,
8
+ JwkHmac = 5
9
+ }
10
+ export declare function normalizeHashName(algo: SubtleAlgorithm | HashAlgorithm | KeyPairAlgorithm | SecretKeyAlgorithm | undefined, context?: HashContext): string;
11
+ //# sourceMappingURL=Hashnames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hashnames.d.ts","sourceRoot":"","sources":["../../../src/Hashnames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,QAAQ,CAAC;AAEhB,oBAAY,WAAW;IACrB,IAAI,IAAA;IACJ,SAAS,IAAA;IACT,MAAM,IAAA;IACN,SAAS,IAAA;IACT,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AA2DD,wBAAgB,iBAAiB,CAC/B,IAAI,EACA,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,EACb,OAAO,GAAE,WAA8B,GACtC,MAAM,CASR"}
@@ -1,6 +1,5 @@
1
- /// <reference types="node" />
2
- import { Encoding, BinaryLike } from './Utils';
3
- import Stream from 'stream-browserify';
1
+ import { type Encoding, type BinaryLike } from './Utils';
2
+ import Stream from 'readable-stream';
4
3
  import { Buffer } from '@craftzdog/react-native-buffer';
5
4
  export declare function createHmac(algorithm: string, key: BinaryLike, options?: Stream.TransformOptions): Hmac;
6
5
  declare class Hmac extends Stream.Transform {
@@ -35,3 +34,4 @@ declare class Hmac extends Stream.Transform {
35
34
  digest(encoding: Encoding): string;
36
35
  }
37
36
  export {};
37
+ //# sourceMappingURL=Hmac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hmac.d.ts","sourceRoot":"","sources":["../../../src/Hmac.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,UAAU,EAEhB,MAAM,SAAS,CAAC;AACjB,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAIxD,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,gBAAgB,QAGlC;AAED,cAAM,IAAK,SAAQ,MAAM,CAAC,SAAS;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAkB;gBAGnC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,UAAU,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,gBAAgB;IAepC;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI;IAejE,UAAU,CACR,KAAK,EAAE,MAAM,GAAG,UAAU,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,IAAI;IAMtB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI;IAK3B;;;;;;;;;OASG;IACH,MAAM,IAAI,MAAM;IAChB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAClC,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;CAWnC"}