@ledgerhq/hw-ledger-key-ring-protocol 0.2.1-nightly.0 → 0.2.1-nightly.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +14 -0
- package/lib/ApduDevice.d.ts.map +1 -1
- package/lib/ApduDevice.js +37 -41
- package/lib/ApduDevice.js.map +1 -1
- package/lib/CommandBlock.d.ts +4 -4
- package/lib/CommandBlock.d.ts.map +1 -1
- package/lib/CommandBlock.js +18 -35
- package/lib/CommandBlock.js.map +1 -1
- package/lib/CommandStream.d.ts +1 -1
- package/lib/CommandStream.d.ts.map +1 -1
- package/lib/CommandStream.js +5 -7
- package/lib/CommandStream.js.map +1 -1
- package/lib/Crypto.d.ts +11 -11
- package/lib/Crypto.d.ts.map +1 -1
- package/lib/Device.d.ts +1 -1
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +28 -36
- package/lib/Device.js.map +1 -1
- package/lib/NobleCrypto.d.ts +13 -15
- package/lib/NobleCrypto.d.ts.map +1 -1
- package/lib/NobleCrypto.js +90 -148
- package/lib/NobleCrypto.js.map +1 -1
- package/lib/StreamTreeCipher.d.ts.map +1 -1
- package/lib/StreamTreeCipher.js +32 -36
- package/lib/StreamTreeCipher.js.map +1 -1
- package/lib/__tests__/codec.js +33 -33
- package/lib/__tests__/codec.js.map +1 -1
- package/lib-es/ApduDevice.d.ts.map +1 -1
- package/lib-es/ApduDevice.js +37 -41
- package/lib-es/ApduDevice.js.map +1 -1
- package/lib-es/CommandBlock.d.ts +4 -4
- package/lib-es/CommandBlock.d.ts.map +1 -1
- package/lib-es/CommandBlock.js +18 -35
- package/lib-es/CommandBlock.js.map +1 -1
- package/lib-es/CommandStream.d.ts +1 -1
- package/lib-es/CommandStream.d.ts.map +1 -1
- package/lib-es/CommandStream.js +5 -7
- package/lib-es/CommandStream.js.map +1 -1
- package/lib-es/Crypto.d.ts +11 -11
- package/lib-es/Crypto.d.ts.map +1 -1
- package/lib-es/Device.d.ts +1 -1
- package/lib-es/Device.d.ts.map +1 -1
- package/lib-es/Device.js +28 -36
- package/lib-es/Device.js.map +1 -1
- package/lib-es/NobleCrypto.d.ts +13 -15
- package/lib-es/NobleCrypto.d.ts.map +1 -1
- package/lib-es/NobleCrypto.js +90 -148
- package/lib-es/NobleCrypto.js.map +1 -1
- package/lib-es/StreamTreeCipher.d.ts.map +1 -1
- package/lib-es/StreamTreeCipher.js +32 -36
- package/lib-es/StreamTreeCipher.js.map +1 -1
- package/lib-es/__tests__/codec.js +33 -33
- package/lib-es/__tests__/codec.js.map +1 -1
- package/package.json +2 -2
- package/src/ApduDevice.ts +10 -14
- package/src/CommandBlock.ts +11 -14
- package/src/CommandStream.ts +6 -8
- package/src/Crypto.ts +11 -11
- package/src/Device.ts +26 -34
- package/src/NobleCrypto.ts +20 -59
- package/src/StreamTreeCipher.ts +15 -15
- package/src/__tests__/codec.ts +32 -32
package/lib/Device.js
CHANGED
|
@@ -27,32 +27,26 @@ class SoftwareDevice {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
generateSharedKey() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return { xpriv, publicKey: pk.publicKey };
|
|
34
|
-
});
|
|
30
|
+
const xpriv = Crypto_1.crypto.randomBytes(64);
|
|
31
|
+
const pk = Crypto_1.crypto.derivePrivate(xpriv, []);
|
|
32
|
+
return { xpriv, publicKey: pk.publicKey };
|
|
35
33
|
}
|
|
36
34
|
encryptSharedKey(sharedKey, recipient) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
};
|
|
48
|
-
});
|
|
35
|
+
const kp = Crypto_1.crypto.randomKeypair();
|
|
36
|
+
const ecdh = Crypto_1.crypto.ecdh(kp, recipient);
|
|
37
|
+
const initializationVector = Crypto_1.crypto.randomBytes(16);
|
|
38
|
+
const encryptedXpriv = Crypto_1.crypto.encrypt(ecdh, initializationVector, sharedKey.xpriv);
|
|
39
|
+
return {
|
|
40
|
+
encryptedXpriv,
|
|
41
|
+
publicKey: sharedKey.publicKey,
|
|
42
|
+
ephemeralPublicKey: kp.publicKey,
|
|
43
|
+
initializationVector,
|
|
44
|
+
};
|
|
49
45
|
}
|
|
50
46
|
decryptSharedKey(encryptedSharedKey) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return { xpriv, publicKey: encryptedSharedKey.publicKey };
|
|
55
|
-
});
|
|
47
|
+
const ecdh = Crypto_1.crypto.ecdh(this.keyPair, encryptedSharedKey.ephemeralPublicKey);
|
|
48
|
+
const xpriv = Crypto_1.crypto.decrypt(ecdh, encryptedSharedKey.initializationVector, encryptedSharedKey.encryptedXpriv);
|
|
49
|
+
return { xpriv, publicKey: encryptedSharedKey.publicKey };
|
|
56
50
|
}
|
|
57
51
|
deriveKey(tree, path) {
|
|
58
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -66,8 +60,8 @@ class SoftwareDevice {
|
|
|
66
60
|
ephemeralPublicKey: event.ephemeralPublicKey,
|
|
67
61
|
initializationVector: event.nonce,
|
|
68
62
|
};
|
|
69
|
-
const sharedKey =
|
|
70
|
-
const newKey =
|
|
63
|
+
const sharedKey = this.decryptSharedKey(encryptedSharedKey);
|
|
64
|
+
const newKey = Crypto_1.crypto.derivePrivate(sharedKey.xpriv, path);
|
|
71
65
|
const xpriv = new Uint8Array(64);
|
|
72
66
|
xpriv.set(newKey.privateKey);
|
|
73
67
|
xpriv.set(newKey.chainCode, 32);
|
|
@@ -94,9 +88,9 @@ class SoftwareDevice {
|
|
|
94
88
|
switch (command.getType()) {
|
|
95
89
|
case CommandBlock_1.CommandType.Seed: {
|
|
96
90
|
// Generate the shared key
|
|
97
|
-
sharedKey =
|
|
91
|
+
sharedKey = this.generateSharedKey();
|
|
98
92
|
// Encrypt the shared key and inject it in the command
|
|
99
|
-
const encryptedSharedKey =
|
|
93
|
+
const encryptedSharedKey = this.encryptSharedKey(sharedKey, this.keyPair.publicKey);
|
|
100
94
|
command.groupKey = sharedKey.publicKey;
|
|
101
95
|
command.encryptedXpriv = encryptedSharedKey.encryptedXpriv;
|
|
102
96
|
command.ephemeralPublicKey = encryptedSharedKey.ephemeralPublicKey;
|
|
@@ -110,7 +104,7 @@ class SoftwareDevice {
|
|
|
110
104
|
}
|
|
111
105
|
sharedKey = yield this.deriveKey(tree, command.path);
|
|
112
106
|
// Encrypt the shared key and inject it in the command
|
|
113
|
-
const encryptedDerivedKey =
|
|
107
|
+
const encryptedDerivedKey = this.encryptSharedKey(sharedKey, this.keyPair.publicKey);
|
|
114
108
|
command.groupKey = sharedKey.publicKey;
|
|
115
109
|
command.encryptedXpriv = encryptedDerivedKey.encryptedXpriv;
|
|
116
110
|
command.initializationVector = encryptedDerivedKey.initializationVector;
|
|
@@ -123,7 +117,7 @@ class SoftwareDevice {
|
|
|
123
117
|
// If the current stream is the seed stream, read the key from the first command in the first block
|
|
124
118
|
const encryptedKey = resolved.getEncryptedKey(this.keyPair.publicKey);
|
|
125
119
|
if (encryptedKey) {
|
|
126
|
-
sharedKey =
|
|
120
|
+
sharedKey = this.decryptSharedKey({
|
|
127
121
|
encryptedXpriv: encryptedKey.encryptedXpriv,
|
|
128
122
|
initializationVector: encryptedKey.initialiationVector,
|
|
129
123
|
publicKey: encryptedKey.issuer,
|
|
@@ -142,7 +136,7 @@ class SoftwareDevice {
|
|
|
142
136
|
if (!sharedKey)
|
|
143
137
|
throw new Error("Cannot find the shared key");
|
|
144
138
|
}
|
|
145
|
-
const encryptedSharedKey =
|
|
139
|
+
const encryptedSharedKey = this.encryptSharedKey(sharedKey, command.recipient);
|
|
146
140
|
command.encryptedXpriv = encryptedSharedKey.encryptedXpriv;
|
|
147
141
|
command.initializationVector = encryptedSharedKey.initializationVector;
|
|
148
142
|
command.ephemeralPublicKey = encryptedSharedKey.ephemeralPublicKey;
|
|
@@ -150,7 +144,7 @@ class SoftwareDevice {
|
|
|
150
144
|
}
|
|
151
145
|
}
|
|
152
146
|
}
|
|
153
|
-
const signature = (
|
|
147
|
+
const signature = (0, CommandBlock_1.signCommandBlock)(lastBlock, (yield this.getPublicKey()).publicKey, this.keyPair.privateKey).signature;
|
|
154
148
|
lastBlock.signature = signature;
|
|
155
149
|
return lastBlock;
|
|
156
150
|
});
|
|
@@ -167,11 +161,11 @@ class SoftwareDevice {
|
|
|
167
161
|
publicKey: event.groupPublicKey,
|
|
168
162
|
ephemeralPublicKey: event.ephemeralPublicKey,
|
|
169
163
|
};
|
|
170
|
-
const sharedKey =
|
|
164
|
+
const sharedKey = this.decryptSharedKey(encryptedSharedKey);
|
|
171
165
|
// Derive the key to match the path
|
|
172
166
|
let index = Crypto_1.DerivationPath.toIndexArray(event.stream.getStreamPath()).length;
|
|
173
167
|
while (index < path.length) {
|
|
174
|
-
const derivation =
|
|
168
|
+
const derivation = Crypto_1.crypto.derivePrivate(sharedKey.xpriv, [index]);
|
|
175
169
|
const xpriv = new Uint8Array(64);
|
|
176
170
|
xpriv.set(derivation.privateKey);
|
|
177
171
|
xpriv.set(derivation.chainCode, 32);
|
|
@@ -191,10 +185,8 @@ exports.SoftwareDevice = SoftwareDevice;
|
|
|
191
185
|
*
|
|
192
186
|
*/
|
|
193
187
|
function createDevice() {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
return new SoftwareDevice(kp);
|
|
197
|
-
});
|
|
188
|
+
const kp = Crypto_1.crypto.randomKeypair();
|
|
189
|
+
return new SoftwareDevice(kp);
|
|
198
190
|
}
|
|
199
191
|
exports.createDevice = createDevice;
|
|
200
192
|
exports.ISSUER_PLACEHOLDER = new Uint8Array([
|
package/lib/Device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Device.js","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,iDAOwB;AACxB,oFAA4D;AAC5D,qCAA2D;AA0C3D,MAAa,cAAc;IAGzB,YAAY,EAAW;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAEK,YAAY;;YAChB,OAAO,IAAI,qBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;KAAA;
|
|
1
|
+
{"version":3,"file":"Device.js","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"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"}
|
package/lib/NobleCrypto.d.ts
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { Crypto, KeyPair, KeyPairWithChainCode } from "./Crypto";
|
|
2
2
|
export declare class NobleCryptoSecp256k1 implements Crypto {
|
|
3
|
-
randomKeypair():
|
|
4
|
-
derivePrivate(xpriv: Uint8Array, path: number[]):
|
|
5
|
-
keypairFromSecretKey(secretKey: Uint8Array):
|
|
3
|
+
randomKeypair(): KeyPair;
|
|
4
|
+
derivePrivate(xpriv: Uint8Array, path: number[]): KeyPairWithChainCode;
|
|
5
|
+
keypairFromSecretKey(secretKey: Uint8Array): KeyPair;
|
|
6
6
|
private derEncode;
|
|
7
7
|
private derDecode;
|
|
8
|
-
sign(message: Uint8Array, keyPair: KeyPair):
|
|
9
|
-
verify(message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array):
|
|
8
|
+
sign(message: Uint8Array, keyPair: KeyPair): Uint8Array;
|
|
9
|
+
verify(message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): boolean;
|
|
10
10
|
private to_array;
|
|
11
11
|
private normalizeKey;
|
|
12
12
|
private normalizeNonce;
|
|
13
13
|
private concat;
|
|
14
14
|
private enforceLength;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
encrypt(secret: Uint8Array, nonce: Uint8Array, message: Uint8Array): Promise<Uint8Array>;
|
|
18
|
-
decrypt(secret: Uint8Array, nonce: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
15
|
+
encrypt(secret: Uint8Array, nonce: Uint8Array, message: Uint8Array): Uint8Array;
|
|
16
|
+
decrypt(secret: Uint8Array, nonce: Uint8Array, ciphertext: Uint8Array): Uint8Array;
|
|
19
17
|
/**
|
|
20
18
|
* Ledger Live data are encrypted following pattern based on ECIES.
|
|
21
19
|
* For each encryption the Ledger Live instance generates a random keypair over secp256k1 (ephemeral public key)
|
|
@@ -28,12 +26,12 @@ export declare class NobleCryptoSecp256k1 implements Crypto {
|
|
|
28
26
|
16 bytes : Tag/MAC (from AES-256-GCM)
|
|
29
27
|
variable : Encrypted data
|
|
30
28
|
*/
|
|
31
|
-
encryptUserData(commandStreamPrivateKey: Uint8Array, data: Uint8Array):
|
|
32
|
-
decryptUserData(commandStreamPrivateKey: Uint8Array, data: Uint8Array):
|
|
33
|
-
randomBytes(size: number):
|
|
34
|
-
ecdh(keyPair: KeyPair, publicKey: Uint8Array):
|
|
35
|
-
computeSymmetricKey(privateKey: Uint8Array, extra: Uint8Array):
|
|
36
|
-
hash(message: Uint8Array):
|
|
29
|
+
encryptUserData(commandStreamPrivateKey: Uint8Array, data: Uint8Array): Uint8Array;
|
|
30
|
+
decryptUserData(commandStreamPrivateKey: Uint8Array, data: Uint8Array): Uint8Array;
|
|
31
|
+
randomBytes(size: number): Uint8Array;
|
|
32
|
+
ecdh(keyPair: KeyPair, publicKey: Uint8Array): Uint8Array;
|
|
33
|
+
computeSymmetricKey(privateKey: Uint8Array, extra: Uint8Array): any;
|
|
34
|
+
hash(message: Uint8Array): Uint8Array;
|
|
37
35
|
from_hex(hex: string): Uint8Array;
|
|
38
36
|
to_hex(bytes?: Uint8Array | undefined | null): string;
|
|
39
37
|
}
|
package/lib/NobleCrypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NobleCrypto.d.ts","sourceRoot":"","sources":["../src/NobleCrypto.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMjE,qBAAa,oBAAqB,YAAW,MAAM;
|
|
1
|
+
{"version":3,"file":"NobleCrypto.d.ts","sourceRoot":"","sources":["../src/NobleCrypto.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMjE,qBAAa,oBAAqB,YAAW,MAAM;IACjD,aAAa,IAAI,OAAO;IAQxB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB;IActE,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO;IAOpD,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,SAAS;IAYjB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU;IAMvD,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO;IAMlF,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU;IAW/E,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU;IAYlF;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAmClF,eAAe,CAAC,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IA2BlF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIrC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU;IAOzD,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;IAK7D,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAIrC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAQjC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM;CAGtD;AAED,wBAAgB,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAKpE"}
|
package/lib/NobleCrypto.js
CHANGED
|
@@ -22,15 +22,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
27
|
};
|
|
@@ -46,36 +37,30 @@ const AES_BLOCK_SIZE = 16;
|
|
|
46
37
|
const PRIVATE_KEY_SIZE = 32;
|
|
47
38
|
class NobleCryptoSecp256k1 {
|
|
48
39
|
randomKeypair() {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return this.keypairFromSecretKey(pk);
|
|
55
|
-
});
|
|
40
|
+
let pk;
|
|
41
|
+
do {
|
|
42
|
+
pk = crypto.randomBytes(PRIVATE_KEY_SIZE);
|
|
43
|
+
} while (!secp256k1.privateKeyVerify(pk));
|
|
44
|
+
return this.keypairFromSecretKey(pk);
|
|
56
45
|
}
|
|
57
46
|
derivePrivate(xpriv, path) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
};
|
|
70
|
-
});
|
|
47
|
+
const pk = xpriv.slice(0, 32);
|
|
48
|
+
const chainCode = xpriv.slice(32);
|
|
49
|
+
let node = bip32.fromPrivateKey(Buffer.from(pk), Buffer.from(chainCode));
|
|
50
|
+
for (const index of path) {
|
|
51
|
+
node = node.derive(index);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
publicKey: this.to_array(node.publicKey),
|
|
55
|
+
privateKey: this.to_array(node.privateKey),
|
|
56
|
+
chainCode: this.to_array(node.chainCode),
|
|
57
|
+
};
|
|
71
58
|
}
|
|
72
59
|
keypairFromSecretKey(secretKey) {
|
|
73
|
-
return
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
};
|
|
78
|
-
});
|
|
60
|
+
return {
|
|
61
|
+
publicKey: secp256k1.publicKeyCreate(secretKey),
|
|
62
|
+
privateKey: secretKey,
|
|
63
|
+
};
|
|
79
64
|
}
|
|
80
65
|
derEncode(R, S) {
|
|
81
66
|
if (R[0] > 0x7f) {
|
|
@@ -98,18 +83,14 @@ class NobleCryptoSecp256k1 {
|
|
|
98
83
|
};
|
|
99
84
|
}
|
|
100
85
|
sign(message, keyPair) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return this.derEncode(signature.slice(0, 32), signature.slice(32, 64));
|
|
105
|
-
});
|
|
86
|
+
const signature = secp256k1.ecdsaSign(message, keyPair.privateKey).signature;
|
|
87
|
+
// DER encoding
|
|
88
|
+
return this.derEncode(signature.slice(0, 32), signature.slice(32, 64));
|
|
106
89
|
}
|
|
107
90
|
verify(message, signature, publicKey) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return secp256k1.ecdsaVerify(this.concat(R, S), message, publicKey);
|
|
112
|
-
});
|
|
91
|
+
// DER decoding
|
|
92
|
+
const { R, S } = this.derDecode(signature);
|
|
93
|
+
return secp256k1.ecdsaVerify(this.concat(R, S), message, publicKey);
|
|
113
94
|
}
|
|
114
95
|
to_array(buffer) {
|
|
115
96
|
return new Uint8Array(buffer);
|
|
@@ -145,53 +126,26 @@ class NobleCryptoSecp256k1 {
|
|
|
145
126
|
}
|
|
146
127
|
return buffer;
|
|
147
128
|
}
|
|
148
|
-
pad(message) {
|
|
149
|
-
// ISO9797M2 implementation
|
|
150
|
-
const padLength = AES_BLOCK_SIZE - (message.length % AES_BLOCK_SIZE);
|
|
151
|
-
if (padLength === AES_BLOCK_SIZE) {
|
|
152
|
-
return message;
|
|
153
|
-
}
|
|
154
|
-
const padding = new Uint8Array(padLength);
|
|
155
|
-
padding[0] = 0x80;
|
|
156
|
-
padding.fill(0, 1);
|
|
157
|
-
return this.concat(message, padding);
|
|
158
|
-
}
|
|
159
|
-
unpad(message) {
|
|
160
|
-
// ISO9797M2 implementation
|
|
161
|
-
for (let i = message.length - 1; i >= 0; i--) {
|
|
162
|
-
if (message[i] === 0x80) {
|
|
163
|
-
return message.slice(0, i);
|
|
164
|
-
}
|
|
165
|
-
if (message[i] !== 0x00) {
|
|
166
|
-
return message;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
throw new Error("Invalid padding");
|
|
170
|
-
}
|
|
171
129
|
encrypt(secret, nonce, message) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
return this.concat(bytes, cipher.getAuthTag());
|
|
181
|
-
});
|
|
130
|
+
const normalizedSecret = this.normalizeKey(secret);
|
|
131
|
+
const normalizeNonce = this.normalizeNonce(nonce);
|
|
132
|
+
const cipher = crypto.createCipheriv("aes-256-gcm", normalizedSecret, normalizeNonce);
|
|
133
|
+
cipher.setAutoPadding(false);
|
|
134
|
+
let result = cipher.update(this.to_hex(message), "hex", "hex");
|
|
135
|
+
result += cipher.final("hex");
|
|
136
|
+
const bytes = this.from_hex(result);
|
|
137
|
+
return this.concat(bytes, cipher.getAuthTag());
|
|
182
138
|
}
|
|
183
139
|
decrypt(secret, nonce, ciphertext) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
return this.from_hex(result);
|
|
194
|
-
});
|
|
140
|
+
const normalizedSecret = this.normalizeKey(secret);
|
|
141
|
+
const normalizeNonce = this.normalizeNonce(nonce);
|
|
142
|
+
const encryptedData = ciphertext.slice(0, ciphertext.length - AES_BLOCK_SIZE);
|
|
143
|
+
const authTag = ciphertext.slice(encryptedData.length);
|
|
144
|
+
const decipher = crypto.createDecipheriv("aes-256-gcm", normalizedSecret, normalizeNonce);
|
|
145
|
+
decipher.setAuthTag(authTag);
|
|
146
|
+
let result = decipher.update(this.to_hex(encryptedData), "hex", "hex");
|
|
147
|
+
result += decipher.final("hex");
|
|
148
|
+
return this.from_hex(result);
|
|
195
149
|
}
|
|
196
150
|
/**
|
|
197
151
|
* Ledger Live data are encrypted following pattern based on ECIES.
|
|
@@ -206,75 +160,63 @@ class NobleCryptoSecp256k1 {
|
|
|
206
160
|
variable : Encrypted data
|
|
207
161
|
*/
|
|
208
162
|
encryptUserData(commandStreamPrivateKey, data) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
return result;
|
|
231
|
-
});
|
|
163
|
+
// Generate ephemeral key pair
|
|
164
|
+
const ephemeralKeypair = this.randomKeypair();
|
|
165
|
+
// Derive the shared secret using ECDH
|
|
166
|
+
const sharedSecret = this.ecdh(this.keypairFromSecretKey(commandStreamPrivateKey), ephemeralKeypair.publicKey);
|
|
167
|
+
// Normalize the shared secret to be used as AES key
|
|
168
|
+
const aesKey = this.computeSymmetricKey(sharedSecret, new Uint8Array());
|
|
169
|
+
// Generate a random IV (nonce)
|
|
170
|
+
const iv = crypto.randomBytes(16);
|
|
171
|
+
// Encrypt the data using AES-256-GCM
|
|
172
|
+
const cipher = crypto.createCipheriv("aes-256-gcm", aesKey, iv);
|
|
173
|
+
let encryptedData = cipher.update(data);
|
|
174
|
+
encryptedData = Buffer.concat([encryptedData, cipher.final()]);
|
|
175
|
+
const tag = cipher.getAuthTag();
|
|
176
|
+
// Serialize the format
|
|
177
|
+
const result = new Uint8Array(1 + ephemeralKeypair.publicKey.length + iv.length + tag.length + encryptedData.length);
|
|
178
|
+
result[0] = 0x00; // Version of the format
|
|
179
|
+
result.set(ephemeralKeypair.publicKey, 1);
|
|
180
|
+
result.set(iv, 34);
|
|
181
|
+
result.set(tag, 50);
|
|
182
|
+
result.set(encryptedData, 66);
|
|
183
|
+
return result;
|
|
232
184
|
}
|
|
233
185
|
decryptUserData(commandStreamPrivateKey, data) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
return new Uint8Array(decryptedData.buffer, decryptedData.byteOffset, decryptedData.byteLength);
|
|
253
|
-
});
|
|
186
|
+
const version = data[0];
|
|
187
|
+
if (version !== 0x00) {
|
|
188
|
+
throw new Error("Unsupported format version");
|
|
189
|
+
}
|
|
190
|
+
const ephemeralPublicKey = data.slice(1, 34);
|
|
191
|
+
const iv = data.slice(34, 50);
|
|
192
|
+
const tag = data.slice(50, 66);
|
|
193
|
+
const encryptedData = data.slice(66);
|
|
194
|
+
// Derive the shared secret using ECDH
|
|
195
|
+
const sharedSecret = this.ecdh(this.keypairFromSecretKey(commandStreamPrivateKey), ephemeralPublicKey);
|
|
196
|
+
// Normalize the shared secret to be used as AES key
|
|
197
|
+
const aesKey = this.computeSymmetricKey(sharedSecret, new Uint8Array());
|
|
198
|
+
// Decrypt the data using AES-256-GCM
|
|
199
|
+
const decipher = crypto.createDecipheriv("aes-256-gcm", aesKey, iv);
|
|
200
|
+
decipher.setAuthTag(tag);
|
|
201
|
+
let decryptedData = decipher.update(encryptedData);
|
|
202
|
+
decryptedData = Buffer.concat([decryptedData, decipher.final()]);
|
|
203
|
+
return new Uint8Array(decryptedData.buffer, decryptedData.byteOffset, decryptedData.byteLength);
|
|
254
204
|
}
|
|
255
205
|
randomBytes(size) {
|
|
256
|
-
return
|
|
257
|
-
return crypto.randomBytes(size);
|
|
258
|
-
});
|
|
206
|
+
return crypto.randomBytes(size);
|
|
259
207
|
}
|
|
260
208
|
ecdh(keyPair, publicKey) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
return point.slice(1);
|
|
266
|
-
});
|
|
209
|
+
const pubkey = Buffer.from(publicKey);
|
|
210
|
+
const privkey = Buffer.from(keyPair.privateKey);
|
|
211
|
+
const point = ecc.pointMultiply(pubkey, privkey, ecc.isPointCompressed(pubkey));
|
|
212
|
+
return point.slice(1);
|
|
267
213
|
}
|
|
268
214
|
computeSymmetricKey(privateKey, extra) {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
return digest;
|
|
272
|
-
});
|
|
215
|
+
const digest = (0, create_hmac_1.default)("sha256", Buffer.from(extra)).update(Buffer.from(privateKey)).digest();
|
|
216
|
+
return digest;
|
|
273
217
|
}
|
|
274
218
|
hash(message) {
|
|
275
|
-
return
|
|
276
|
-
return crypto.createHash("sha256").update(Buffer.from(message)).digest();
|
|
277
|
-
});
|
|
219
|
+
return crypto.createHash("sha256").update(Buffer.from(message)).digest();
|
|
278
220
|
}
|
|
279
221
|
from_hex(hex) {
|
|
280
222
|
const bytes = new Uint8Array(hex.length / 2);
|
package/lib/NobleCrypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NobleCrypto.js","sourceRoot":"","sources":["../src/NobleCrypto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NobleCrypto.js","sourceRoot":"","sources":["../src/NobleCrypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamTreeCipher.d.ts","sourceRoot":"","sources":["../src/StreamTreeCipher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,GAAG,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,WAAW,IAAO;IAClB,WAAW,IAAO;CACnB;AAYD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;IAKtD,IAAI,IAAI,IAAI,oBAAoB,CAE/B;IAED;;;;;;;;;OASG;IACG,OAAO,CACX,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,EACnB,KAAK,GAAE,UAAU,GAAG,IAAW,GAC9B,OAAO,CAAC,UAAU,CAAC;YAgCR,eAAe;
|
|
1
|
+
{"version":3,"file":"StreamTreeCipher.d.ts","sourceRoot":"","sources":["../src/StreamTreeCipher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,GAAG,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,WAAW,IAAO;IAClB,WAAW,IAAO;CACnB;AAYD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;IAKtD,IAAI,IAAI,IAAI,oBAAoB,CAE/B;IAED;;;;;;;;;OASG;IACG,OAAO,CACX,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,EACnB,KAAK,GAAE,UAAU,GAAG,IAAW,GAC9B,OAAO,CAAC,UAAU,CAAC;YAgCR,eAAe;IAmB7B,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,UAAU;IAkBlB;;;;;;;;;OASG;IACG,OAAO,CACX,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,UAAU,CAAC;IAgCtB,OAAO,CAAC,eAAe;IAKvB,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,oBAAuD,GAC5D,gBAAgB;CAGpB"}
|