react-native-quick-crypto 0.7.8 → 0.7.10

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.
@@ -171,8 +171,9 @@ repositories {
171
171
  dependencies {
172
172
  //noinspection GradleDynamicVersion
173
173
  implementation "com.facebook.react:react-android:+"
174
- // https://mvnrepository.com/artifact/com.android.ndk.thirdparty/openssl
175
- implementation 'com.android.ndk.thirdparty:openssl:1.1.1q-beta-1'
174
+
175
+ // Add a dependency on OpenSSL
176
+ implementation 'io.github.ronickg:openssl:3.3.2'
176
177
  }
177
178
 
178
179
  // Resolves "LOCAL_SRC_FILES points to a missing file, Check that libfb.so exists or that its path is correct".
@@ -2,8 +2,10 @@
2
2
  #include <fbjni/fbjni.h>
3
3
  #include <jni.h>
4
4
  #include <jsi/jsi.h>
5
+ #include <memory>
5
6
 
6
7
  #include "MGLQuickCryptoHostObject.h"
8
+ #include "JSIUtils/MGLTypedArray.h"
7
9
 
8
10
  using namespace facebook;
9
11
 
@@ -28,6 +30,13 @@ class CryptoCppAdapter : public jni::HybridClass<CryptoCppAdapter> {
28
30
  auto object = jsi::Object::createFromHostObject(runtime, hostObject);
29
31
  runtime.global().setProperty(runtime, "__QuickCryptoProxy",
30
32
  std::move(object));
33
+ // Adds the PropNameIDCache object to the Runtime. If the Runtime gets destroyed, the Object gets destroyed and the cache gets invalidated.
34
+ auto propNameIdCache = std::make_shared<InvalidateCacheOnDestroy>(runtime);
35
+ runtime.global().setProperty(
36
+ runtime,
37
+ "rnqcArrayBufferPropNameIdCache",
38
+ jsi::Object::createFromHostObject(runtime, propNameIdCache)
39
+ );
31
40
  }
32
41
 
33
42
  void nativeInstall(
@@ -10,6 +10,8 @@
10
10
 
11
11
  #include <algorithm>
12
12
  #include <memory>
13
+ #include <utility>
14
+ #include <vector>
13
15
  #include <string>
14
16
  #include <unordered_map>
15
17
 
@@ -40,33 +42,37 @@ enum class Prop {
40
42
  class PropNameIDCache {
41
43
  public:
42
44
  const jsi::PropNameID &get(jsi::Runtime &runtime, Prop prop) {
43
- if (!this->props[prop]) {
44
- this->props[prop] =
45
- std::make_unique<jsi::PropNameID>(createProp(runtime, prop));
45
+ auto key = reinterpret_cast<uintptr_t>(&runtime);
46
+ if (this->props.find(key) == this->props.end()) {
47
+ this->props[key] = std::unordered_map<Prop, std::unique_ptr<jsi::PropNameID>>();
46
48
  }
47
- return *(this->props[prop]);
49
+ if (!this->props[key][prop]) {
50
+ this->props[key][prop] = std::make_unique<jsi::PropNameID>(createProp(runtime, prop));
51
+ }
52
+ return *(this->props[key][prop]);
48
53
  }
49
54
 
50
- const jsi::PropNameID &getConstructorNameProp(jsi::Runtime &runtime,
51
- MGLTypedArrayKind kind);
55
+ const jsi::PropNameID &getConstructorNameProp(jsi::Runtime &runtime, MGLTypedArrayKind kind);
52
56
 
53
- void invalidate() {
54
- /** This call (and attempts to use props.clear()) crash 💥 when the
55
- * JSI runtime has already been destroyed. So we are commenting it out
56
- * and waiting for Nitro and 1.0 to fix this the proper way.
57
- */
58
- //props.erase(props.begin(), props.end());
57
+ void invalidate(uintptr_t key) {
58
+ if (props.find(key) != props.end()) {
59
+ props[key].clear();
60
+ }
59
61
  }
60
-
61
62
  private:
62
- std::unordered_map<Prop, std::unique_ptr<jsi::PropNameID>> props;
63
+ std::unordered_map<uintptr_t, std::unordered_map<Prop, std::unique_ptr<jsi::PropNameID>>> props;
63
64
 
64
65
  jsi::PropNameID createProp(jsi::Runtime &runtime, Prop prop);
65
66
  };
66
67
 
67
68
  PropNameIDCache propNameIDCache;
68
69
 
69
- void invalidateJsiPropNameIDCache() { propNameIDCache.invalidate(); }
70
+ InvalidateCacheOnDestroy::InvalidateCacheOnDestroy(jsi::Runtime &runtime) {
71
+ key = reinterpret_cast<uintptr_t>(&runtime);
72
+ }
73
+ InvalidateCacheOnDestroy::~InvalidateCacheOnDestroy() {
74
+ propNameIDCache.invalidate(key);
75
+ }
70
76
 
71
77
  MGLTypedArrayKind getTypedArrayKindForName(const std::string &name);
72
78
 
@@ -75,8 +81,9 @@ MGLTypedArrayBase::MGLTypedArrayBase(jsi::Runtime &runtime, size_t size,
75
81
  : MGLTypedArrayBase(
76
82
  runtime,
77
83
  runtime.global()
78
- .getProperty(runtime, propNameIDCache.getConstructorNameProp(
79
- runtime, kind))
84
+ .getProperty(
85
+ runtime,
86
+ propNameIDCache.getConstructorNameProp(runtime, kind))
80
87
  .asObject(runtime)
81
88
  .asFunction(runtime)
82
89
  .callAsConstructor(runtime, {static_cast<double>(size)})
@@ -236,6 +243,20 @@ void MGLTypedArray<T>::update(jsi::Runtime &runtime,
236
243
  reinterpret_cast<ContentType<T> *>(rawData));
237
244
  }
238
245
 
246
+ template <MGLTypedArrayKind T>
247
+ void MGLTypedArray<T>::updateUnsafe(jsi::Runtime &runtime, ContentType<T> *data, size_t length) {
248
+ if (length != size(runtime)) {
249
+ throw jsi::JSError(runtime, "TypedArray can only be updated with an array of the same size");
250
+ }
251
+ uint8_t *rawData = getBuffer(runtime).data(runtime) + byteOffset(runtime);
252
+ memcpy(rawData, data, length);
253
+ }
254
+
255
+ template <MGLTypedArrayKind T>
256
+ uint8_t* MGLTypedArray<T>::data(jsi::Runtime &runtime) {
257
+ return getBuffer(runtime).data(runtime) + byteOffset(runtime);
258
+ }
259
+
239
260
  const jsi::PropNameID &PropNameIDCache::getConstructorNameProp(
240
261
  jsi::Runtime &runtime, MGLTypedArrayKind kind) {
241
262
  switch (kind) {
@@ -69,7 +69,24 @@ struct typedArrayTypeMap<MGLTypedArrayKind::Float64Array> {
69
69
  typedef double type;
70
70
  };
71
71
 
72
- void invalidateJsiPropNameIDCache();
72
+ // Instance of this class will invalidate PropNameIDCache when destructor is called.
73
+ // Attach this object to global in specific jsi::Runtime to make sure lifecycle of
74
+ // the cache object is connected to the lifecycle of the js runtime
75
+ class InvalidateCacheOnDestroy : public jsi::HostObject {
76
+ public:
77
+ explicit InvalidateCacheOnDestroy(jsi::Runtime &runtime);
78
+ virtual ~InvalidateCacheOnDestroy();
79
+ virtual jsi::Value get(jsi::Runtime &, const jsi::PropNameID &name) {
80
+ return jsi::Value::null();
81
+ }
82
+ virtual void set(jsi::Runtime &, const jsi::PropNameID &name, const jsi::Value &value) {}
83
+ virtual std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) {
84
+ return {};
85
+ }
86
+
87
+ private:
88
+ uintptr_t key;
89
+ };
73
90
 
74
91
  class MGLTypedArrayBase : public jsi::Object {
75
92
  public:
@@ -126,6 +143,8 @@ class MGLTypedArray : public MGLTypedArrayBase {
126
143
 
127
144
  std::vector<ContentType<T>> toVector(jsi::Runtime &runtime);
128
145
  void update(jsi::Runtime &runtime, const std::vector<ContentType<T>> &data);
146
+ void updateUnsafe(jsi::Runtime &runtime, ContentType<T> *data, size_t length);
147
+ uint8_t* data(jsi::Runtime &runtime);
129
148
  };
130
149
 
131
150
  template <MGLTypedArrayKind T>
@@ -22,7 +22,7 @@ class JSI_EXPORT MGLQuickCryptoHostObject : public MGLSmartHostObject {
22
22
  std::shared_ptr<react::CallInvoker> jsCallInvoker,
23
23
  std::shared_ptr<DispatchQueue::dispatch_queue> workerQueue);
24
24
 
25
- virtual ~MGLQuickCryptoHostObject() { invalidateJsiPropNameIDCache(); }
25
+ virtual ~MGLQuickCryptoHostObject() {}
26
26
  };
27
27
 
28
28
  } // namespace margelo
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:">
6
+ </FileRef>
7
+ </Workspace>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>SchemeUserState</key>
6
+ <dict>
7
+ <key>QuickCrypto.xcscheme_^#shared#^_</key>
8
+ <dict>
9
+ <key>orderHint</key>
10
+ <integer>0</integer>
11
+ </dict>
12
+ </dict>
13
+ </dict>
14
+ </plist>
@@ -6,6 +6,7 @@
6
6
  #import <jsi/jsi.h>
7
7
 
8
8
  #import "../cpp/MGLQuickCryptoHostObject.h"
9
+ #import "../cpp/JSIUtils/MGLTypedArray.h"
9
10
 
10
11
  @implementation QuickCryptoModule
11
12
 
@@ -40,6 +41,15 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) {
40
41
  auto object = jsi::Object::createFromHostObject(runtime, hostObject);
41
42
  runtime.global().setProperty(runtime, "__QuickCryptoProxy", std::move(object));
42
43
 
44
+ // Adds the PropNameIDCache object to the Runtime. If the Runtime gets
45
+ // destroyed, the Object gets destroyed and the cache gets invalidated.
46
+ auto propNameIdCache = std::make_shared<InvalidateCacheOnDestroy>(runtime);
47
+ runtime.global().setProperty(
48
+ runtime,
49
+ "rnqcArrayBufferPropNameIdCache",
50
+ jsi::Object::createFromHostObject(runtime, propNameIdCache)
51
+ );
52
+
43
53
  NSLog(@"Successfully installed JSI bindings for react-native-quick-crypto!");
44
54
  return @true;
45
55
  }
@@ -20,6 +20,7 @@ function sanitizeInput(input, errorMsg) {
20
20
  throw new Error(errorMsg);
21
21
  }
22
22
  }
23
+ const nativePbkdf2 = _NativeQuickCrypto.NativeQuickCrypto.pbkdf2;
23
24
  function pbkdf2(password, salt, iterations, keylen, digest, callback) {
24
25
  if (callback === undefined || typeof callback !== 'function') {
25
26
  throw new Error('No callback provided to pbkdf2');
@@ -27,7 +28,6 @@ function pbkdf2(password, salt, iterations, keylen, digest, callback) {
27
28
  const sanitizedPassword = sanitizeInput(password, WRONG_PASS);
28
29
  const sanitizedSalt = sanitizeInput(salt, WRONG_SALT);
29
30
  const normalizedDigest = (0, _Utils.normalizeHashName)(digest, _Utils.HashContext.Node);
30
- const nativePbkdf2 = _NativeQuickCrypto.NativeQuickCrypto.pbkdf2;
31
31
  nativePbkdf2.pbkdf2(sanitizedPassword, sanitizedSalt, iterations, keylen, normalizedDigest).then(res => {
32
32
  callback(null, _reactNativeBuffer.Buffer.from(res));
33
33
  }, e => {
@@ -38,7 +38,6 @@ function pbkdf2Sync(password, salt, iterations, keylen, digest) {
38
38
  const sanitizedPassword = sanitizeInput(password, WRONG_PASS);
39
39
  const sanitizedSalt = sanitizeInput(salt, WRONG_SALT);
40
40
  const algo = digest ? (0, _Utils.normalizeHashName)(digest, _Utils.HashContext.Node) : 'sha1';
41
- const nativePbkdf2 = _NativeQuickCrypto.NativeQuickCrypto.pbkdf2;
42
41
  const result = nativePbkdf2.pbkdf2Sync(sanitizedPassword, sanitizedSalt, iterations, keylen, algo);
43
42
  return _reactNativeBuffer.Buffer.from(result);
44
43
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeQuickCrypto","require","_reactNativeBuffer","_Utils","_util","WRONG_PASS","WRONG_SALT","sanitizeInput","input","errorMsg","binaryLikeToArrayBuffer","_e","Error","pbkdf2","password","salt","iterations","keylen","digest","callback","undefined","sanitizedPassword","sanitizedSalt","normalizedDigest","normalizeHashName","HashContext","Node","nativePbkdf2","NativeQuickCrypto","then","res","Buffer","from","e","pbkdf2Sync","algo","result","pbkdf2WithDigest","pbkdf2Promise","promisify","pbkdf2DeriveBits","algorithm","baseKey","length","hash","normalizedHash","lazyDOMException","raw","keyObject","export","bufferLikeToArrayBuffer"],"sourceRoot":"../../src","sources":["pbkdf2.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_NativeQuickCrypto","require","_reactNativeBuffer","_Utils","_util","WRONG_PASS","WRONG_SALT","sanitizeInput","input","errorMsg","binaryLikeToArrayBuffer","_e","Error","nativePbkdf2","NativeQuickCrypto","pbkdf2","password","salt","iterations","keylen","digest","callback","undefined","sanitizedPassword","sanitizedSalt","normalizedDigest","normalizeHashName","HashContext","Node","then","res","Buffer","from","e","pbkdf2Sync","algo","result","pbkdf2WithDigest","pbkdf2Promise","promisify","pbkdf2DeriveBits","algorithm","baseKey","length","hash","normalizedHash","lazyDOMException","raw","keyObject","export","bufferLikeToArrayBuffer"],"sourceRoot":"../../src","sources":["pbkdf2.ts"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,7 @@ function sanitizeInput(input, errorMsg) {
14
14
  throw new Error(errorMsg);
15
15
  }
16
16
  }
17
+ const nativePbkdf2 = NativeQuickCrypto.pbkdf2;
17
18
  export function pbkdf2(password, salt, iterations, keylen, digest, callback) {
18
19
  if (callback === undefined || typeof callback !== 'function') {
19
20
  throw new Error('No callback provided to pbkdf2');
@@ -21,7 +22,6 @@ export function pbkdf2(password, salt, iterations, keylen, digest, callback) {
21
22
  const sanitizedPassword = sanitizeInput(password, WRONG_PASS);
22
23
  const sanitizedSalt = sanitizeInput(salt, WRONG_SALT);
23
24
  const normalizedDigest = normalizeHashName(digest, HashContext.Node);
24
- const nativePbkdf2 = NativeQuickCrypto.pbkdf2;
25
25
  nativePbkdf2.pbkdf2(sanitizedPassword, sanitizedSalt, iterations, keylen, normalizedDigest).then(res => {
26
26
  callback(null, Buffer.from(res));
27
27
  }, e => {
@@ -32,7 +32,6 @@ export function pbkdf2Sync(password, salt, iterations, keylen, digest) {
32
32
  const sanitizedPassword = sanitizeInput(password, WRONG_PASS);
33
33
  const sanitizedSalt = sanitizeInput(salt, WRONG_SALT);
34
34
  const algo = digest ? normalizeHashName(digest, HashContext.Node) : 'sha1';
35
- const nativePbkdf2 = NativeQuickCrypto.pbkdf2;
36
35
  const result = nativePbkdf2.pbkdf2Sync(sanitizedPassword, sanitizedSalt, iterations, keylen, algo);
37
36
  return Buffer.from(result);
38
37
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeQuickCrypto","Buffer","binaryLikeToArrayBuffer","lazyDOMException","bufferLikeToArrayBuffer","normalizeHashName","HashContext","promisify","WRONG_PASS","WRONG_SALT","sanitizeInput","input","errorMsg","_e","Error","pbkdf2","password","salt","iterations","keylen","digest","callback","undefined","sanitizedPassword","sanitizedSalt","normalizedDigest","Node","nativePbkdf2","then","res","from","e","pbkdf2Sync","algo","result","pbkdf2WithDigest","pbkdf2Promise","pbkdf2DeriveBits","algorithm","baseKey","length","hash","normalizedHash","raw","keyObject","export"],"sourceRoot":"../../src","sources":["pbkdf2.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,uCAAuC;AACzE,SAASC,MAAM,QAAQ,gCAAgC;AACvD,SAEEC,uBAAuB,EACvBC,gBAAgB,EAChBC,uBAAuB,EACvBC,iBAAiB,EACjBC,WAAW,QACN,SAAS;AAEhB,SAASC,SAAS,QAAQ,MAAM;AAEhC,MAAMC,UAAU,GACd,kEAAkE;AACpE,MAAMC,UAAU,GACd,8DAA8D;AAMhE,SAASC,aAAaA,CAACC,KAAiB,EAAEC,QAAgB,EAAe;EACvE,IAAI;IACF,OAAOV,uBAAuB,CAACS,KAAK,CAAC;IACrC;EACF,CAAC,CAAC,OAAOE,EAAW,EAAE;IACpB,MAAM,IAAIC,KAAK,CAACF,QAAQ,CAAC;EAC3B;AACF;AAEA,OAAO,SAASG,MAAMA,CACpBC,QAAkB,EAClBC,IAAU,EACVC,UAAkB,EAClBC,MAAc,EACdC,MAAc,EACdC,QAAwB,EAClB;EACN,IAAIA,QAAQ,KAAKC,SAAS,IAAI,OAAOD,QAAQ,KAAK,UAAU,EAAE;IAC5D,MAAM,IAAIP,KAAK,CAAC,gCAAgC,CAAC;EACnD;EACA,MAAMS,iBAAiB,GAAGb,aAAa,CAACM,QAAQ,EAAER,UAAU,CAAC;EAC7D,MAAMgB,aAAa,GAAGd,aAAa,CAACO,IAAI,EAAER,UAAU,CAAC;EACrD,MAAMgB,gBAAgB,GAAGpB,iBAAiB,CAACe,MAAM,EAAEd,WAAW,CAACoB,IAAI,CAAC;EAEpE,MAAMC,YAAY,GAAG3B,iBAAiB,CAACe,MAAM;EAC7CY,YAAY,CACTZ,MAAM,CACLQ,iBAAiB,EACjBC,aAAa,EACbN,UAAU,EACVC,MAAM,EACNM,gBACF,CAAC,CACAG,IAAI,CACFC,GAAgB,IAAK;IACpBR,QAAQ,CAAE,IAAI,EAAEpB,MAAM,CAAC6B,IAAI,CAACD,GAAG,CAAC,CAAC;EACnC,CAAC,EACAE,CAAQ,IAAK;IACZV,QAAQ,CAAEU,CAAC,CAAC;EACd,CACF,CAAC;AACL;AAEA,OAAO,SAASC,UAAUA,CACxBhB,QAAkB,EAClBC,IAAU,EACVC,UAAkB,EAClBC,MAAc,EACdC,MAAe,EACF;EACb,MAAMG,iBAAiB,GAAGb,aAAa,CAACM,QAAQ,EAAER,UAAU,CAAC;EAC7D,MAAMgB,aAAa,GAAGd,aAAa,CAACO,IAAI,EAAER,UAAU,CAAC;EACrD,MAAMwB,IAAI,GAAGb,MAAM,GAAGf,iBAAiB,CAACe,MAAM,EAAEd,WAAW,CAACoB,IAAI,CAAC,GAAG,MAAM;EAE1E,MAAMC,YAAY,GAAG3B,iBAAiB,CAACe,MAAM;EAC7C,MAAMmB,MAAmB,GAAGP,YAAY,CAACK,UAAU,CACjDT,iBAAiB,EACjBC,aAAa,EACbN,UAAU,EACVC,MAAM,EACNc,IACF,CAAC;EAED,OAAOhC,MAAM,CAAC6B,IAAI,CAACI,MAAM,CAAC;AAC5B;;AAEA;AACA;AACA,MAAMC,gBAAgB,GAAGA,CACvBnB,QAAkB,EAClBC,IAAU,EACVC,UAAkB,EAClBC,MAAc,EACdC,MAAqB,EACrBC,QAAwB,KACrBN,MAAM,CAACC,QAAQ,EAAEC,IAAI,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,CAAC;AAEjE,MAAMe,aAAa,GAAG7B,SAAS,CAAC4B,gBAAgB,CAAC;AACjD,OAAO,eAAeE,gBAAgBA,CACpCC,SAA0B,EAC1BC,OAAkB,EAClBC,MAAc,EACQ;EACtB,MAAM;IAAEtB,UAAU;IAAEuB,IAAI;IAAExB;EAAK,CAAC,GAAGqB,SAAS;EAC5C,MAAMI,cAAc,GAAGrC,iBAAiB,CAACoC,IAAI,CAAC;EAC9C,IAAI,CAACC,cAAc,EAAE;IACnB,MAAMvC,gBAAgB,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;EAClE;EACA,IAAI,CAACe,UAAU,IAAIA,UAAU,KAAK,CAAC,EAAE;IACnC,MAAMf,gBAAgB,CAAC,2BAA2B,EAAE,gBAAgB,CAAC;EACvE;EACA,IAAI,CAACc,IAAI,EAAE;IACT,MAAMd,gBAAgB,CAACM,UAAU,EAAE,gBAAgB,CAAC;EACtD;EACA,MAAMkC,GAAG,GAAGJ,OAAO,CAACK,SAAS,CAACC,MAAM,CAAC,CAAC;EAEtC,IAAIL,MAAM,KAAK,CAAC,EACd,MAAMrC,gBAAgB,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;EACnE,IAAIqC,MAAM,KAAK,IAAI,EACjB,MAAMrC,gBAAgB,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;EACnE,IAAIqC,MAAM,GAAG,CAAC,EAAE;IACd,MAAMrC,gBAAgB,CAAC,gCAAgC,EAAE,gBAAgB,CAAC;EAC5E;EAEA,MAAMoB,iBAAiB,GAAGb,aAAa,CAACiC,GAAG,EAAEnC,UAAU,CAAC;EACxD,MAAMgB,aAAa,GAAGd,aAAa,CAACO,IAAI,EAAER,UAAU,CAAC;EACrD,MAAMyB,MAA0B,GAAG,MAAME,aAAa,CACpDb,iBAAiB,EACjBC,aAAa,EACbN,UAAU,EACVsB,MAAM,GAAG,CAAC,EACVE,cACF,CAAC;EACD,IAAI,CAACR,MAAM,EAAE;IACX,MAAM/B,gBAAgB,CACpB,mCAAmC,EACnC,gBACF,CAAC;EACH;EACA,OAAOC,uBAAuB,CAAC8B,MAAM,CAAC;AACxC","ignoreList":[]}
1
+ {"version":3,"names":["NativeQuickCrypto","Buffer","binaryLikeToArrayBuffer","lazyDOMException","bufferLikeToArrayBuffer","normalizeHashName","HashContext","promisify","WRONG_PASS","WRONG_SALT","sanitizeInput","input","errorMsg","_e","Error","nativePbkdf2","pbkdf2","password","salt","iterations","keylen","digest","callback","undefined","sanitizedPassword","sanitizedSalt","normalizedDigest","Node","then","res","from","e","pbkdf2Sync","algo","result","pbkdf2WithDigest","pbkdf2Promise","pbkdf2DeriveBits","algorithm","baseKey","length","hash","normalizedHash","raw","keyObject","export"],"sourceRoot":"../../src","sources":["pbkdf2.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../src/pbkdf2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAiB,eAAe,EAAE,MAAM,QAAQ,CAAC;AAQxE,KAAK,QAAQ,GAAG,UAAU,CAAC;AAC3B,KAAK,IAAI,GAAG,UAAU,CAAC;AACvB,KAAK,cAAc,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAWvE,wBAAgB,MAAM,CACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,GACvB,IAAI,CAyBN;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,WAAW,CAeb;AAcD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAsCtB"}
1
+ {"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../src/pbkdf2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAiB,eAAe,EAAE,MAAM,QAAQ,CAAC;AAQxE,KAAK,QAAQ,GAAG,UAAU,CAAC;AAC3B,KAAK,IAAI,GAAG,UAAU,CAAC;AACvB,KAAK,cAAc,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAavE,wBAAgB,MAAM,CACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,GACvB,IAAI,CAwBN;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,WAAW,CAcb;AAcD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAsCtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-quick-crypto",
3
- "version": "0.7.8",
3
+ "version": "0.7.10",
4
4
  "description": "A fast implementation of Node's `crypto` module written in C/C++ JSI",
5
5
  "packageManager": "bun@1.1.26",
6
6
  "main": "lib/commonjs/index",
package/src/pbkdf2.ts CHANGED
@@ -29,6 +29,8 @@ function sanitizeInput(input: BinaryLike, errorMsg: string): ArrayBuffer {
29
29
  }
30
30
  }
31
31
 
32
+ const nativePbkdf2 = NativeQuickCrypto.pbkdf2;
33
+
32
34
  export function pbkdf2(
33
35
  password: Password,
34
36
  salt: Salt,
@@ -44,7 +46,6 @@ export function pbkdf2(
44
46
  const sanitizedSalt = sanitizeInput(salt, WRONG_SALT);
45
47
  const normalizedDigest = normalizeHashName(digest, HashContext.Node);
46
48
 
47
- const nativePbkdf2 = NativeQuickCrypto.pbkdf2;
48
49
  nativePbkdf2
49
50
  .pbkdf2(
50
51
  sanitizedPassword,
@@ -74,7 +75,6 @@ export function pbkdf2Sync(
74
75
  const sanitizedSalt = sanitizeInput(salt, WRONG_SALT);
75
76
  const algo = digest ? normalizeHashName(digest, HashContext.Node) : 'sha1';
76
77
 
77
- const nativePbkdf2 = NativeQuickCrypto.pbkdf2;
78
78
  const result: ArrayBuffer = nativePbkdf2.pbkdf2Sync(
79
79
  sanitizedPassword,
80
80
  sanitizedSalt,