react-native-quick-crypto 1.0.0-beta.7 → 1.0.0-beta.8
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.
- package/QuickCrypto.podspec +7 -4
- package/lib/commonjs/ed.js +7 -6
- package/lib/commonjs/ed.js.map +1 -1
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/utils/conversion.js +34 -15
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/module/ed.js +7 -6
- package/lib/module/ed.js.map +1 -1
- package/lib/module/random.js.map +1 -1
- package/lib/module/utils/conversion.js +39 -20
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/types.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/ed.d.ts +5 -5
- package/lib/typescript/ed.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +6 -6
- package/lib/typescript/random.d.ts +5 -5
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/specs/edKeyPair.nitro.d.ts +2 -2
- package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -1
- package/lib/typescript/utils/conversion.d.ts +19 -5
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +6 -6
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +2 -2
- package/package.json +2 -2
- package/src/ed.ts +19 -16
- package/src/random.ts +7 -11
- package/src/specs/edKeyPair.nitro.ts +2 -2
- package/src/utils/conversion.ts +45 -22
- package/src/utils/types.ts +11 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,8 +58,8 @@ namespace margelo::nitro::crypto {
|
|
|
58
58
|
virtual std::shared_ptr<ArrayBuffer> getPrivateKey() = 0;
|
|
59
59
|
virtual std::shared_ptr<Promise<std::shared_ptr<ArrayBuffer>>> sign(const std::shared_ptr<ArrayBuffer>& message, const std::optional<std::shared_ptr<ArrayBuffer>>& key) = 0;
|
|
60
60
|
virtual std::shared_ptr<ArrayBuffer> signSync(const std::shared_ptr<ArrayBuffer>& message, const std::optional<std::shared_ptr<ArrayBuffer>>& key) = 0;
|
|
61
|
-
virtual std::shared_ptr<Promise<bool>> verify(const std::shared_ptr<ArrayBuffer>&
|
|
62
|
-
virtual bool verifySync(const std::shared_ptr<ArrayBuffer>&
|
|
61
|
+
virtual std::shared_ptr<Promise<bool>> verify(const std::shared_ptr<ArrayBuffer>& signature, const std::shared_ptr<ArrayBuffer>& message, const std::optional<std::shared_ptr<ArrayBuffer>>& key) = 0;
|
|
62
|
+
virtual bool verifySync(const std::shared_ptr<ArrayBuffer>& signature, const std::shared_ptr<ArrayBuffer>& message, const std::optional<std::shared_ptr<ArrayBuffer>>& key) = 0;
|
|
63
63
|
virtual void setCurve(const std::string& curve) = 0;
|
|
64
64
|
|
|
65
65
|
protected:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-quick-crypto",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.8",
|
|
4
4
|
"description": "A fast implementation of Node's `crypto` module written in C/C++ JSI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/commonjs/index",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"jest": "29.7.0",
|
|
91
91
|
"nitro-codegen": "0.18.2",
|
|
92
92
|
"prettier": "3.3.3",
|
|
93
|
-
"react-native-builder-bob": "0.
|
|
93
|
+
"react-native-builder-bob": "0.35.2",
|
|
94
94
|
"release-it": "17.6.0",
|
|
95
95
|
"typescript": "5.1.6",
|
|
96
96
|
"typescript-eslint": "^8.1.0"
|
package/src/ed.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
2
|
+
import { binaryLikeToArrayBuffer as toAB } from './utils';
|
|
2
3
|
import type { EdKeyPair } from './specs/edKeyPair.nitro';
|
|
3
|
-
import type { CFRGKeyPairType, KeyPairGenConfig } from './utils';
|
|
4
|
+
import type { BinaryLike, CFRGKeyPairType, KeyPairGenConfig } from './utils';
|
|
4
5
|
|
|
5
6
|
export class Ed {
|
|
6
7
|
type: CFRGKeyPairType;
|
|
@@ -44,33 +45,35 @@ export class Ed {
|
|
|
44
45
|
return this.native.getPrivateKey();
|
|
45
46
|
}
|
|
46
47
|
|
|
47
|
-
async sign(message:
|
|
48
|
-
return key
|
|
48
|
+
async sign(message: BinaryLike, key?: BinaryLike): Promise<ArrayBuffer> {
|
|
49
|
+
return key
|
|
50
|
+
? this.native.sign(toAB(message), toAB(key))
|
|
51
|
+
: this.native.sign(toAB(message));
|
|
49
52
|
}
|
|
50
53
|
|
|
51
|
-
signSync(message:
|
|
54
|
+
signSync(message: BinaryLike, key?: BinaryLike): ArrayBuffer {
|
|
52
55
|
return key
|
|
53
|
-
? this.native.signSync(message, key)
|
|
54
|
-
: this.native.signSync(message);
|
|
56
|
+
? this.native.signSync(toAB(message), toAB(key))
|
|
57
|
+
: this.native.signSync(toAB(message));
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
async verify(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
key?:
|
|
61
|
+
signature: BinaryLike,
|
|
62
|
+
message: BinaryLike,
|
|
63
|
+
key?: BinaryLike,
|
|
61
64
|
): Promise<boolean> {
|
|
62
65
|
return key
|
|
63
|
-
? this.native.verify(
|
|
64
|
-
: this.native.verify(
|
|
66
|
+
? this.native.verify(toAB(signature), toAB(message), toAB(key))
|
|
67
|
+
: this.native.verify(toAB(signature), toAB(message));
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
verifySync(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
key?:
|
|
71
|
+
signature: BinaryLike,
|
|
72
|
+
message: BinaryLike,
|
|
73
|
+
key?: BinaryLike,
|
|
71
74
|
): boolean {
|
|
72
75
|
return key
|
|
73
|
-
? this.native.verifySync(
|
|
74
|
-
: this.native.verifySync(
|
|
76
|
+
? this.native.verifySync(toAB(signature), toAB(message), toAB(key))
|
|
77
|
+
: this.native.verifySync(toAB(signature), toAB(message));
|
|
75
78
|
}
|
|
76
79
|
}
|
package/src/random.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ABV, RandomCallback } from './utils';
|
|
3
3
|
import { abvToArrayBuffer } from './utils';
|
|
4
4
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
5
5
|
import type { Random } from './specs/random.nitro';
|
|
@@ -14,25 +14,25 @@ function getNative(): Random {
|
|
|
14
14
|
return random;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export function randomFill<T extends
|
|
17
|
+
export function randomFill<T extends ABV>(
|
|
18
18
|
buffer: T,
|
|
19
19
|
callback: RandomCallback<T>,
|
|
20
20
|
): void;
|
|
21
21
|
|
|
22
|
-
export function randomFill<T extends
|
|
22
|
+
export function randomFill<T extends ABV>(
|
|
23
23
|
buffer: T,
|
|
24
24
|
offset: number,
|
|
25
25
|
callback: RandomCallback<T>,
|
|
26
26
|
): void;
|
|
27
27
|
|
|
28
|
-
export function randomFill<T extends
|
|
28
|
+
export function randomFill<T extends ABV>(
|
|
29
29
|
buffer: T,
|
|
30
30
|
offset: number,
|
|
31
31
|
size: number,
|
|
32
32
|
callback: RandomCallback<T>,
|
|
33
33
|
): void;
|
|
34
34
|
|
|
35
|
-
export function randomFill(buffer:
|
|
35
|
+
export function randomFill(buffer: ABV, ...rest: unknown[]): void {
|
|
36
36
|
if (typeof rest[rest.length - 1] !== 'function') {
|
|
37
37
|
throw new Error('No callback provided to randomFill');
|
|
38
38
|
}
|
|
@@ -65,17 +65,13 @@ export function randomFill(buffer: ArrayBufferView, ...rest: unknown[]): void {
|
|
|
65
65
|
);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
export function randomFillSync<T extends
|
|
68
|
+
export function randomFillSync<T extends ABV>(
|
|
69
69
|
buffer: T,
|
|
70
70
|
offset?: number,
|
|
71
71
|
size?: number,
|
|
72
72
|
): T;
|
|
73
73
|
|
|
74
|
-
export function randomFillSync(
|
|
75
|
-
buffer: ArrayBufferView,
|
|
76
|
-
offset: number = 0,
|
|
77
|
-
size?: number,
|
|
78
|
-
) {
|
|
74
|
+
export function randomFillSync(buffer: ABV, offset: number = 0, size?: number) {
|
|
79
75
|
getNative();
|
|
80
76
|
buffer = abvToArrayBuffer(buffer);
|
|
81
77
|
const res = random.randomFillSync(buffer, offset, size ?? buffer.byteLength);
|
|
@@ -27,13 +27,13 @@ export interface EdKeyPair
|
|
|
27
27
|
signSync(message: ArrayBuffer, key?: ArrayBuffer): ArrayBuffer;
|
|
28
28
|
|
|
29
29
|
verify(
|
|
30
|
-
message: ArrayBuffer,
|
|
31
30
|
signature: ArrayBuffer,
|
|
31
|
+
message: ArrayBuffer,
|
|
32
32
|
key?: ArrayBuffer,
|
|
33
33
|
): Promise<boolean>;
|
|
34
34
|
verifySync(
|
|
35
|
-
message: ArrayBuffer,
|
|
36
35
|
signature: ArrayBuffer,
|
|
36
|
+
message: ArrayBuffer,
|
|
37
37
|
key?: ArrayBuffer,
|
|
38
38
|
): boolean;
|
|
39
39
|
|
package/src/utils/conversion.ts
CHANGED
|
@@ -1,39 +1,62 @@
|
|
|
1
|
-
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
2
|
-
import { Buffer as
|
|
3
|
-
import type {
|
|
1
|
+
import { Buffer as CraftzdogBuffer } from '@craftzdog/react-native-buffer';
|
|
2
|
+
import { Buffer as SafeBuffer } from 'safe-buffer';
|
|
3
|
+
import type { ABV, BinaryLikeNode, BufferLike } from './types';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Converts supplied argument to an ArrayBuffer. Note this does not copy the
|
|
7
|
+
* data so it is faster than toArrayBuffer. Not copying is important for
|
|
8
|
+
* functions like randomFill which need to be able to write to the underlying
|
|
9
|
+
* buffer.
|
|
10
|
+
* @param buf
|
|
11
|
+
* @returns ArrayBuffer
|
|
12
|
+
*/
|
|
13
|
+
export const abvToArrayBuffer = (buf: ABV) => {
|
|
14
|
+
if (CraftzdogBuffer.isBuffer(buf)) {
|
|
15
|
+
return buf.buffer as ArrayBuffer;
|
|
8
16
|
}
|
|
9
|
-
if (ArrayBuffer.isView(
|
|
10
|
-
return
|
|
17
|
+
if (ArrayBuffer.isView(buf)) {
|
|
18
|
+
return buf.buffer as ArrayBuffer;
|
|
11
19
|
}
|
|
12
|
-
return
|
|
20
|
+
return buf as ArrayBuffer;
|
|
13
21
|
};
|
|
14
22
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Converts supplied argument to an ArrayBuffer. Note this copies data if the
|
|
25
|
+
* supplied buffer has the .slice() method, so can be a bit slow.
|
|
26
|
+
* @param buf
|
|
27
|
+
* @returns ArrayBuffer
|
|
28
|
+
*/
|
|
29
|
+
export function toArrayBuffer(
|
|
30
|
+
buf: CraftzdogBuffer | SafeBuffer | ArrayBufferView,
|
|
31
|
+
): ArrayBuffer {
|
|
32
|
+
if (CraftzdogBuffer.isBuffer(buf) || ArrayBuffer.isView(buf)) {
|
|
33
|
+
if (buf?.buffer?.slice) {
|
|
34
|
+
return buf.buffer.slice(
|
|
35
|
+
buf.byteOffset,
|
|
36
|
+
buf.byteOffset + buf.byteLength,
|
|
37
|
+
) as ArrayBuffer;
|
|
38
|
+
} else {
|
|
39
|
+
return buf.buffer as ArrayBuffer;
|
|
40
|
+
}
|
|
18
41
|
}
|
|
19
42
|
const ab = new ArrayBuffer(buf.length);
|
|
20
43
|
const view = new Uint8Array(ab);
|
|
21
44
|
for (let i = 0; i < buf.length; ++i) {
|
|
22
|
-
view[i] =
|
|
45
|
+
view[i] = SafeBuffer.isBuffer(buf) ? buf.readUInt8(i) : buf[i]!;
|
|
23
46
|
}
|
|
24
47
|
return ab;
|
|
25
48
|
}
|
|
26
49
|
|
|
27
50
|
export function bufferLikeToArrayBuffer(buf: BufferLike): ArrayBuffer {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
if (SBuffer.isBuffer(buf)) {
|
|
51
|
+
// Buffer
|
|
52
|
+
if (CraftzdogBuffer.isBuffer(buf) || SafeBuffer.isBuffer(buf)) {
|
|
32
53
|
return toArrayBuffer(buf);
|
|
33
54
|
}
|
|
55
|
+
// ArrayBufferView
|
|
34
56
|
if (ArrayBuffer.isView(buf)) {
|
|
35
|
-
return buf
|
|
57
|
+
return toArrayBuffer(buf);
|
|
36
58
|
}
|
|
59
|
+
// ArrayBuffer
|
|
37
60
|
return buf;
|
|
38
61
|
}
|
|
39
62
|
|
|
@@ -49,7 +72,7 @@ export function binaryLikeToArrayBuffer(
|
|
|
49
72
|
);
|
|
50
73
|
}
|
|
51
74
|
|
|
52
|
-
const buffer =
|
|
75
|
+
const buffer = CraftzdogBuffer.from(input, encoding);
|
|
53
76
|
|
|
54
77
|
return buffer.buffer.slice(
|
|
55
78
|
buffer.byteOffset,
|
|
@@ -58,14 +81,14 @@ export function binaryLikeToArrayBuffer(
|
|
|
58
81
|
}
|
|
59
82
|
|
|
60
83
|
// Buffer
|
|
61
|
-
if (
|
|
84
|
+
if (CraftzdogBuffer.isBuffer(input) || SafeBuffer.isBuffer(input)) {
|
|
62
85
|
return toArrayBuffer(input);
|
|
63
86
|
}
|
|
64
87
|
|
|
65
88
|
// ArrayBufferView
|
|
66
89
|
// TODO add further binary types to BinaryLike, UInt8Array and so for have this array as property
|
|
67
90
|
if (ArrayBuffer.isView(input)) {
|
|
68
|
-
return input
|
|
91
|
+
return toArrayBuffer(input);
|
|
69
92
|
}
|
|
70
93
|
|
|
71
94
|
// ArrayBuffer
|
|
@@ -94,7 +117,7 @@ export function binaryLikeToArrayBuffer(
|
|
|
94
117
|
}
|
|
95
118
|
|
|
96
119
|
export function ab2str(buf: ArrayBuffer, encoding: string = 'hex') {
|
|
97
|
-
return
|
|
120
|
+
return CraftzdogBuffer.from(buf).toString(encoding);
|
|
98
121
|
}
|
|
99
122
|
|
|
100
123
|
export const kEmptyObject = Object.freeze(Object.create(null));
|
package/src/utils/types.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { Buffer } from '@craftzdog/react-native-buffer';
|
|
2
|
-
import type { Buffer as
|
|
1
|
+
import type { Buffer as CraftzdogBuffer } from '@craftzdog/react-native-buffer';
|
|
2
|
+
import type { Buffer as SafeBuffer } from 'safe-buffer';
|
|
3
3
|
import type { CipherKey } from 'crypto'; // @types/node
|
|
4
4
|
import type { KeyObjectHandle } from '../specs/keyObjectHandle.nitro';
|
|
5
5
|
|
|
6
|
-
export type
|
|
6
|
+
export type ABV = TypedArray | DataView | ArrayBufferLike | CraftzdogBuffer;
|
|
7
7
|
|
|
8
8
|
export type TypedArray =
|
|
9
9
|
| Uint8Array
|
|
@@ -18,13 +18,17 @@ export type TypedArray =
|
|
|
18
18
|
|
|
19
19
|
export type RandomCallback<T> = (err: Error | null, value: T) => void;
|
|
20
20
|
|
|
21
|
-
export type BufferLike =
|
|
21
|
+
export type BufferLike =
|
|
22
|
+
| ArrayBuffer
|
|
23
|
+
| CraftzdogBuffer
|
|
24
|
+
| SafeBuffer
|
|
25
|
+
| ArrayBufferView;
|
|
22
26
|
|
|
23
27
|
export type BinaryLike =
|
|
24
28
|
| string
|
|
25
29
|
| ArrayBuffer
|
|
26
|
-
|
|
|
27
|
-
|
|
|
30
|
+
| CraftzdogBuffer
|
|
31
|
+
| SafeBuffer
|
|
28
32
|
| TypedArray
|
|
29
33
|
| DataView;
|
|
30
34
|
|
|
@@ -217,7 +221,7 @@ export type GenerateKeyPairOptions = {
|
|
|
217
221
|
saltLength?: number; // Minimal salt length in bytes (RSA-PSS).
|
|
218
222
|
divisorLength?: number; // Size of q in bits (DSA).
|
|
219
223
|
namedCurve?: string; // Name of the curve to use (EC).
|
|
220
|
-
prime?:
|
|
224
|
+
prime?: CraftzdogBuffer; // The prime parameter (DH).
|
|
221
225
|
primeLength?: number; // Prime length in bits (DH).
|
|
222
226
|
generator?: number; // Custom generator (DH). Default: 2.
|
|
223
227
|
groupName?: string; // Diffie-Hellman group name (DH). See crypto.getDiffieHellman().
|