react-native-quick-crypto 1.0.16 → 1.0.17

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.
@@ -42,7 +42,7 @@ declare class Hash extends Stream.Transform {
42
42
  * @param encoding The `encoding` of the return value.
43
43
  */
44
44
  digest(): Buffer;
45
- digest(encoding: Encoding): Buffer;
45
+ digest(encoding: Encoding): string;
46
46
  /**
47
47
  * Creates a new `Hash` object that contains a deep copy of the internal state
48
48
  * of the current `Hash` object.
@@ -114,7 +114,8 @@ export declare function createHash(algorithm: string, options?: HashOptions): Ha
114
114
  * @returns Promise resolving to the hash digest as ArrayBuffer
115
115
  */
116
116
  export declare const asyncDigest: (algorithm: SubtleAlgorithm, data: BufferLike) => Promise<ArrayBuffer>;
117
- export declare function hash(algorithm: string, data: BinaryLike, outputEncoding?: Encoding): string | Buffer;
117
+ export declare function hash(algorithm: string, data: BinaryLike, outputEncoding: Encoding): string;
118
+ export declare function hash(algorithm: string, data: BinaryLike): Buffer;
118
119
  export declare const hashExports: {
119
120
  createHash: typeof createHash;
120
121
  getHashes: typeof getHashes;
@@ -1 +1 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EAChB,MAAM,SAAS,CAAC;AAiBjB,wBAAgB,SAAS,aAExB;AAED,UAAU,WAAY,SAAQ,gBAAgB;IAC5C;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAQD,cAAM,IAAK,SAAQ,MAAM,CAAC,SAAS;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,QAAQ;IAehB;;OAEG;IACH,OAAO;IAiBP;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAC9B,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,GAAG,MAAM;IAezD;;;;;;;;;OASG;IACH,MAAM,IAAI,MAAM;IAChB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAWlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAYhC;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAK3B,UAAU,CACR,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,IAAI;IAKtB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI;CAI5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAMzE;AAID;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,eAAe,EAC1B,MAAM,UAAU,KACf,OAAO,CAAC,WAAW,CAqCrB,CAAC;AAoBF,wBAAgB,IAAI,CAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,cAAc,CAAC,EAAE,QAAQ,GACxB,MAAM,GAAG,MAAM,CAIjB;AAED,eAAO,MAAM,WAAW;;;;6BArEX,eAAe,QACpB,UAAU,KACf,OAAO,CAAC,WAAW,CAAC;CAwEtB,CAAC"}
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EAChB,MAAM,SAAS,CAAC;AAiBjB,wBAAgB,SAAS,aAExB;AAED,UAAU,WAAY,SAAQ,gBAAgB;IAC5C;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAQD,cAAM,IAAK,SAAQ,MAAM,CAAC,SAAS;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,QAAQ;IAehB;;OAEG;IACH,OAAO;IAiBP;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAC9B,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,GAAG,MAAM;IAezD;;;;;;;;;OASG;IACH,MAAM,IAAI,MAAM;IAChB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAWlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAYhC;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAK3B,UAAU,CACR,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,IAAI;IAKtB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI;CAI5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAMzE;AAID;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,eAAe,EAC1B,MAAM,UAAU,KACf,OAAO,CAAC,WAAW,CAqCrB,CAAC;AAoBF,wBAAgB,IAAI,CAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,cAAc,EAAE,QAAQ,GACvB,MAAM,CAAC;AACV,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;AAWlE,eAAO,MAAM,WAAW;;;;6BA3EX,eAAe,QACpB,UAAU,KACf,OAAO,CAAC,WAAW,CAAC;CA8EtB,CAAC"}
@@ -50,6 +50,8 @@ declare const QuickCrypto: {
50
50
  bufferLikeToArrayBuffer(buf: utils.BufferLike): ArrayBuffer;
51
51
  binaryLikeToArrayBuffer(input: utils.BinaryLikeNode, encoding?: string): ArrayBuffer;
52
52
  ab2str(buf: ArrayBuffer, encoding?: string): string;
53
+ bufferToString(buf: ArrayBuffer, encoding?: string): string;
54
+ stringToBuffer(str: string, encoding?: string): ArrayBuffer;
53
55
  abvToArrayBuffer: (buf: utils.ABV) => ArrayBuffer;
54
56
  kEmptyObject: any;
55
57
  ensureBytes(title: string, hex: utils.Hex, expectedLength?: number): Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAGxD,OAAO,KAAK,YAAY,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,MAAM,CAAC;AAG3B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAIjC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC;;;GAGG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAjBD,cAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAsCrB,yCAKC,EAAC,YAAe;qBAQT,0BACX,EACE,sEAAsE;IAEtE,2BAFoB;qBAmBK,oCACpB,EAAC,2BAAwB;;;;;;qIAyB+7E,CAAC;mKAA85B,CAAC;;;;;;;;;;;;;;+DAvB33G,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA5BoD,CAAC;gBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAP5E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,YAUnB,CAAC;AAYF,eAAe,WAAW,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAGxD,OAAO,KAAK,YAAY,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,MAAM,CAAC;AAG3B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAIjC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC;;;GAGG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAZd,cAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAiCR,yCAKC,EAAC,YAAe;qBAQT,0BACX,EACE,sEAAsE;IAEtE,2BAFoB;qBAmBK,oCACpB,EAAC,2BAAwB;;;;;;qIAyB+7E,CAAC;mKAA85B,CAAC;;;;;;;;;;;;;;+DAvB33G,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA5BoD,CAAC;gBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAP5E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,YAUnB,CAAC;AAYF,eAAe,WAAW,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC"}
@@ -4,5 +4,7 @@ export interface Utils extends HybridObject<{
4
4
  android: 'c++';
5
5
  }> {
6
6
  timingSafeEqual(a: ArrayBuffer, b: ArrayBuffer): boolean;
7
+ bufferToString(buffer: ArrayBuffer, encoding: string): string;
8
+ stringToBuffer(str: string, encoding: string): ArrayBuffer;
7
9
  }
8
10
  //# sourceMappingURL=utils.nitro.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/utils.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,KAAM,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IACzE,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;CAC1D"}
1
+ {"version":3,"file":"utils.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/utils.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,KAAM,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IACzE,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACzD,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9D,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5D"}
@@ -21,6 +21,10 @@ export declare function bufferLikeToArrayBuffer(buf: BufferLike): ArrayBuffer;
21
21
  export declare function binaryLikeToArrayBuffer(input: BinaryLikeNode, // CipherKey adds compat with node types
22
22
  encoding?: string): ArrayBuffer;
23
23
  export declare function ab2str(buf: ArrayBuffer, encoding?: string): string;
24
+ /** Native C++ buffer-to-string — exposed for benchmarking */
25
+ export declare function bufferToString(buf: ArrayBuffer, encoding?: string): string;
26
+ /** Native C++ string-to-buffer — exposed for benchmarking */
27
+ export declare function stringToBuffer(str: string, encoding?: string): ArrayBuffer;
24
28
  export declare const kEmptyObject: any;
25
29
  export * from './noble';
26
30
  //# sourceMappingURL=conversion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,GAAG,gBAQxC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,eAAe,GAAG,UAAU,GAAG,eAAe,GAClD,WAAW,CAiBb;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAgCpE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,wCAAwC;AAC/D,QAAQ,GAAE,MAAgB,GACzB,WAAW,CA+Db;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAc,UAEhE;AAED,eAAO,MAAM,YAAY,KAAqC,CAAC;AAE/D,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI/D;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,GAAG,gBAQxC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,eAAe,GAAG,UAAU,GAAG,eAAe,GAClD,WAAW,CAiBb;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAgCpE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,wCAAwC;AAC/D,QAAQ,GAAE,MAAgB,GACzB,WAAW,CAiEb;AAaD,wBAAgB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAc,GAAG,MAAM,CAKzE;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,WAAW,EAChB,QAAQ,GAAE,MAAc,GACvB,MAAM,CAER;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAgB,GACzB,WAAW,CAEb;AAED,eAAO,MAAM,YAAY,KAAqC,CAAC;AAE/D,cAAc,SAAS,CAAC"}
@@ -15,6 +15,8 @@ namespace margelo::nitro::crypto {
15
15
  // load custom methods/properties
16
16
  registerHybrids(this, [](Prototype& prototype) {
17
17
  prototype.registerHybridMethod("timingSafeEqual", &HybridUtilsSpec::timingSafeEqual);
18
+ prototype.registerHybridMethod("bufferToString", &HybridUtilsSpec::bufferToString);
19
+ prototype.registerHybridMethod("stringToBuffer", &HybridUtilsSpec::stringToBuffer);
18
20
  });
19
21
  }
20
22
 
@@ -16,6 +16,7 @@
16
16
 
17
17
 
18
18
  #include <NitroModules/ArrayBuffer.hpp>
19
+ #include <string>
19
20
 
20
21
  namespace margelo::nitro::crypto {
21
22
 
@@ -49,6 +50,8 @@ namespace margelo::nitro::crypto {
49
50
  public:
50
51
  // Methods
51
52
  virtual bool timingSafeEqual(const std::shared_ptr<ArrayBuffer>& a, const std::shared_ptr<ArrayBuffer>& b) = 0;
53
+ virtual std::string bufferToString(const std::shared_ptr<ArrayBuffer>& buffer, const std::string& encoding) = 0;
54
+ virtual std::shared_ptr<ArrayBuffer> stringToBuffer(const std::string& str, const std::string& encoding) = 0;
52
55
 
53
56
  protected:
54
57
  // Hybrid Setup
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-quick-crypto",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
4
4
  "description": "A fast implementation of Node's `crypto` module written in C/C++ JSI",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
package/src/hash.ts CHANGED
@@ -120,7 +120,7 @@ class Hash extends Stream.Transform {
120
120
  * @param encoding The `encoding` of the return value.
121
121
  */
122
122
  digest(): Buffer;
123
- digest(encoding: Encoding): Buffer;
123
+ digest(encoding: Encoding): string;
124
124
  digest(encoding?: Encoding): Buffer | string {
125
125
  const nativeDigest = this.native.digest(encoding);
126
126
 
@@ -296,6 +296,12 @@ const internalDigest = (
296
296
  return arrayBuffer;
297
297
  };
298
298
 
299
+ export function hash(
300
+ algorithm: string,
301
+ data: BinaryLike,
302
+ outputEncoding: Encoding,
303
+ ): string;
304
+ export function hash(algorithm: string, data: BinaryLike): Buffer;
299
305
  export function hash(
300
306
  algorithm: string,
301
307
  data: BinaryLike,
@@ -2,4 +2,6 @@ import { type HybridObject } from 'react-native-nitro-modules';
2
2
 
3
3
  export interface Utils extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
4
4
  timingSafeEqual(a: ArrayBuffer, b: ArrayBuffer): boolean;
5
+ bufferToString(buffer: ArrayBuffer, encoding: string): string;
6
+ stringToBuffer(str: string, encoding: string): ArrayBuffer;
5
7
  }
@@ -1,7 +1,11 @@
1
1
  import { Buffer as CraftzdogBuffer } from '@craftzdog/react-native-buffer';
2
2
  import { Buffer as SafeBuffer } from 'safe-buffer';
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ import type { Utils } from '../specs/utils.nitro';
3
5
  import type { ABV, BinaryLikeNode, BufferLike } from './types';
4
6
 
7
+ const utils = NitroModules.createHybridObject<Utils>('Utils');
8
+
5
9
  /**
6
10
  * Converts supplied argument to an ArrayBuffer. Note this does not copy the
7
11
  * data so it is faster than toArrayBuffer. Not copying is important for
@@ -93,8 +97,10 @@ export function binaryLikeToArrayBuffer(
93
97
  );
94
98
  }
95
99
 
100
+ if (nativeEncodings.has(encoding)) {
101
+ return utils.stringToBuffer(input, encoding);
102
+ }
96
103
  const buffer = CraftzdogBuffer.from(input, encoding);
97
-
98
104
  return buffer.buffer.slice(
99
105
  buffer.byteOffset,
100
106
  buffer.byteOffset + buffer.byteLength,
@@ -149,10 +155,40 @@ export function binaryLikeToArrayBuffer(
149
155
  );
150
156
  }
151
157
 
152
- export function ab2str(buf: ArrayBuffer, encoding: string = 'hex') {
158
+ const nativeEncodings = new Set([
159
+ 'hex',
160
+ 'base64',
161
+ 'base64url',
162
+ 'utf8',
163
+ 'utf-8',
164
+ 'latin1',
165
+ 'binary',
166
+ 'ascii',
167
+ ]);
168
+
169
+ export function ab2str(buf: ArrayBuffer, encoding: string = 'hex'): string {
170
+ if (nativeEncodings.has(encoding)) {
171
+ return utils.bufferToString(buf, encoding);
172
+ }
153
173
  return CraftzdogBuffer.from(buf).toString(encoding);
154
174
  }
155
175
 
176
+ /** Native C++ buffer-to-string — exposed for benchmarking */
177
+ export function bufferToString(
178
+ buf: ArrayBuffer,
179
+ encoding: string = 'hex',
180
+ ): string {
181
+ return utils.bufferToString(buf, encoding);
182
+ }
183
+
184
+ /** Native C++ string-to-buffer — exposed for benchmarking */
185
+ export function stringToBuffer(
186
+ str: string,
187
+ encoding: string = 'utf-8',
188
+ ): ArrayBuffer {
189
+ return utils.stringToBuffer(str, encoding);
190
+ }
191
+
156
192
  export const kEmptyObject = Object.freeze(Object.create(null));
157
193
 
158
194
  export * from './noble';