@siacentral/ledgerjs-sia 1.0.3 → 1.1.1
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/README.md +9 -5
- package/lib/sia.d.ts +28 -10
- package/lib/sia.d.ts.map +1 -1
- package/lib/sia.js +78 -21
- package/lib/sia.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,14 +20,18 @@ import TransportWebHID from '@ledgerhq/hw-transport-webhid';
|
|
|
20
20
|
* and returns the first Sia address of the ledger wallet.
|
|
21
21
|
*/
|
|
22
22
|
async function connect() {
|
|
23
|
+
let sia;
|
|
23
24
|
try {
|
|
24
|
-
const transport = await TransportWebHID.create()
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const transport = await TransportWebHID.create();
|
|
26
|
+
sia = new Sia(transport);
|
|
27
|
+
|
|
28
|
+
const address = await sia.getAddress(0);
|
|
28
29
|
console.log(address);
|
|
29
30
|
} catch (ex) {
|
|
30
31
|
// TODO: handle error
|
|
32
|
+
} finally {
|
|
33
|
+
// always close the transport when done.
|
|
34
|
+
if (sia) sia.close();
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
|
|
@@ -56,4 +60,4 @@ async function connect() {
|
|
|
56
60
|
|
|
57
61
|
connect();
|
|
58
62
|
</script>
|
|
59
|
-
```
|
|
63
|
+
```
|
package/lib/sia.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
import type Transport from "@ledgerhq/hw-transport";
|
|
3
4
|
import { Buffer } from 'buffer';
|
|
5
|
+
interface VerifyResponse {
|
|
6
|
+
address: string;
|
|
7
|
+
publicKey: string;
|
|
8
|
+
}
|
|
4
9
|
/**
|
|
5
10
|
* Sia
|
|
6
11
|
*
|
|
@@ -18,20 +23,23 @@ export default class Sia {
|
|
|
18
23
|
*/
|
|
19
24
|
getVersion(): Promise<string>;
|
|
20
25
|
/**
|
|
21
|
-
*
|
|
22
|
-
* public key index.
|
|
23
|
-
*
|
|
26
|
+
* verifyPublicKey returns the public key and standard Sia address for
|
|
27
|
+
* the provided public key index. The user will be asked to verify the
|
|
28
|
+
* public key on the display. A standard address is defined as an address
|
|
29
|
+
* having 1 public key, requiring 1 signature, and no timelock.
|
|
24
30
|
* @param index {number} the index of the public key
|
|
25
|
-
* @returns {
|
|
31
|
+
* @returns {VerifyResponse} the public key and standard address
|
|
26
32
|
*/
|
|
27
|
-
|
|
33
|
+
verifyPublicKey(index: number): Promise<VerifyResponse>;
|
|
28
34
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
35
|
+
* verifyStandardAddress returns the public key and standard Sia address for
|
|
36
|
+
* the provided public key index. The user will be asked to verify the
|
|
37
|
+
* address on the display. A standard address is defined as an address
|
|
38
|
+
* having 1 public key, requiring 1 signature, and no timelock.
|
|
39
|
+
* @param index {number} the index of the public key
|
|
40
|
+
* @returns {VerifyResponse} the public key and standard address
|
|
33
41
|
*/
|
|
34
|
-
|
|
42
|
+
verifyStandardAddress(index: number): Promise<VerifyResponse>;
|
|
35
43
|
/**
|
|
36
44
|
* signTransactionV044 signs the transaction with the provided key
|
|
37
45
|
* @deprecated deprecated in v0.4.5
|
|
@@ -50,6 +58,16 @@ export default class Sia {
|
|
|
50
58
|
* @returns {string} the base64 encoded signature
|
|
51
59
|
*/
|
|
52
60
|
signTransaction(encodedTxn: Buffer, sigIndex: number, keyIndex: number, changeIndex: number): Promise<string>;
|
|
61
|
+
/**
|
|
62
|
+
* signV2Transaction signs the v2 transaction with the provided key
|
|
63
|
+
* @param encodedTxn {Buffer} a sia encoded (V2TransactionSemantics) v2 transaction
|
|
64
|
+
* @param sigIndex {number} the index of the signature to sign
|
|
65
|
+
* @param keyIndex {number} the index of the key to sign with
|
|
66
|
+
* @param changeIndex {number} the index of the key used for the change output
|
|
67
|
+
* @returns {string} the base64 encoded signature
|
|
68
|
+
*/
|
|
69
|
+
signV2Transaction(encodedTxn: Buffer, sigIndex: number, keyIndex: number, changeIndex: number): Promise<string>;
|
|
53
70
|
close(): Promise<void>;
|
|
54
71
|
}
|
|
72
|
+
export {};
|
|
55
73
|
//# sourceMappingURL=sia.d.ts.map
|
package/lib/sia.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sia.d.ts","sourceRoot":"","sources":["../src/sia.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sia.d.ts","sourceRoot":"","sources":["../src/sia.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAShC,UAAU,cAAc;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,GAAG;IACvB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAQ;IAWrD;;;;OAIG;IACG,UAAU,IAAK,OAAO,CAAC,MAAM,CAAC;IAMpC;;;;;;;OAOG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAI,OAAO,CAAC,cAAc,CAAC;IAW9D;;;;;;;OAOG;IACG,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAI,OAAO,CAAC,cAAc,CAAC;IAWpE;;;;;;;OAOG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAI,OAAO,CAAC,MAAM,CAAC;IA0BnG;;;;;;;OAOG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAI,OAAO,CAAC,MAAM,CAAC;IAwBpH;;;;;;;OAOG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAI,OAAO,CAAC,MAAM,CAAC;IAwBtH,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAGvB"}
|
package/lib/sia.js
CHANGED
|
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
14
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
18
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -36,7 +36,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
exports.__esModule = true;
|
|
39
|
-
var utf8_1 = require("@stablelib/utf8");
|
|
40
39
|
var buffer_1 = require("buffer");
|
|
41
40
|
var base64_1 = require("@stablelib/base64");
|
|
42
41
|
function uint32ToBuffer(val) {
|
|
@@ -56,10 +55,11 @@ var Sia = /** @class */ (function () {
|
|
|
56
55
|
if (scrambleKey === void 0) { scrambleKey = 'Sia'; }
|
|
57
56
|
this.transport = transport;
|
|
58
57
|
transport.decorateAppAPIMethods(this, [
|
|
59
|
-
'getPublicKey',
|
|
60
|
-
'getStandardAddress',
|
|
61
58
|
'signTransactionV044',
|
|
62
|
-
'signTransaction'
|
|
59
|
+
'signTransaction',
|
|
60
|
+
'signV2Transaction',
|
|
61
|
+
'verifyPublicKey',
|
|
62
|
+
'verifyStandardAddress'
|
|
63
63
|
], scrambleKey);
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
@@ -75,46 +75,59 @@ var Sia = /** @class */ (function () {
|
|
|
75
75
|
case 0: return [4 /*yield*/, this.transport.send(0xe0, 0x01, 0x00, 0x00, buffer_1.Buffer.alloc(0))];
|
|
76
76
|
case 1:
|
|
77
77
|
resp = _a.sent();
|
|
78
|
-
return [2 /*return*/, "v"
|
|
78
|
+
return [2 /*return*/, "v".concat(resp[0], ".").concat(resp[1], ".").concat(resp[2])];
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
81
|
});
|
|
82
82
|
};
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
85
|
-
* public key index.
|
|
86
|
-
*
|
|
84
|
+
* verifyPublicKey returns the public key and standard Sia address for
|
|
85
|
+
* the provided public key index. The user will be asked to verify the
|
|
86
|
+
* public key on the display. A standard address is defined as an address
|
|
87
|
+
* having 1 public key, requiring 1 signature, and no timelock.
|
|
87
88
|
* @param index {number} the index of the public key
|
|
88
|
-
* @returns {
|
|
89
|
+
* @returns {VerifyResponse} the public key and standard address
|
|
89
90
|
*/
|
|
90
|
-
Sia.prototype.
|
|
91
|
+
Sia.prototype.verifyPublicKey = function (index) {
|
|
91
92
|
return __awaiter(this, void 0, void 0, function () {
|
|
92
93
|
var resp;
|
|
93
94
|
return __generator(this, function (_a) {
|
|
94
95
|
switch (_a.label) {
|
|
95
|
-
case 0: return [4 /*yield*/, this.transport.send(0xe0, 0x02, 0x00,
|
|
96
|
+
case 0: return [4 /*yield*/, this.transport.send(0xe0, 0x02, 0x00, 0x01, uint32ToBuffer(index))];
|
|
96
97
|
case 1:
|
|
97
98
|
resp = _a.sent();
|
|
98
|
-
|
|
99
|
+
// the status code is appended as the last 2 bytes of the response, but
|
|
100
|
+
// the transport already handles invalid codes.
|
|
101
|
+
return [2 /*return*/, {
|
|
102
|
+
publicKey: "ed25519:".concat(resp.slice(0, 32).reduce(function (v, b) { return v + ('0' + b.toString(16)).slice(-2); }, '')),
|
|
103
|
+
address: resp.slice(32, resp.length - 2).toString()
|
|
104
|
+
}];
|
|
99
105
|
}
|
|
100
106
|
});
|
|
101
107
|
});
|
|
102
108
|
};
|
|
103
109
|
/**
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
110
|
+
* verifyStandardAddress returns the public key and standard Sia address for
|
|
111
|
+
* the provided public key index. The user will be asked to verify the
|
|
112
|
+
* address on the display. A standard address is defined as an address
|
|
113
|
+
* having 1 public key, requiring 1 signature, and no timelock.
|
|
114
|
+
* @param index {number} the index of the public key
|
|
115
|
+
* @returns {VerifyResponse} the public key and standard address
|
|
108
116
|
*/
|
|
109
|
-
Sia.prototype.
|
|
117
|
+
Sia.prototype.verifyStandardAddress = function (index) {
|
|
110
118
|
return __awaiter(this, void 0, void 0, function () {
|
|
111
119
|
var resp;
|
|
112
120
|
return __generator(this, function (_a) {
|
|
113
121
|
switch (_a.label) {
|
|
114
|
-
case 0: return [4 /*yield*/, this.transport.send(0xe0, 0x02, 0x00,
|
|
122
|
+
case 0: return [4 /*yield*/, this.transport.send(0xe0, 0x02, 0x00, 0x00, uint32ToBuffer(index))];
|
|
115
123
|
case 1:
|
|
116
124
|
resp = _a.sent();
|
|
117
|
-
|
|
125
|
+
// the status code is appended as the last 2 bytes of the response, but
|
|
126
|
+
// the transport already handles invalid codes.
|
|
127
|
+
return [2 /*return*/, {
|
|
128
|
+
publicKey: "ed25519:".concat(resp.slice(0, 32).reduce(function (v, b) { return v + ('0' + b.toString(16)).slice(-2); }, '')),
|
|
129
|
+
address: resp.slice(32, resp.length - 2).toString()
|
|
130
|
+
}];
|
|
118
131
|
}
|
|
119
132
|
});
|
|
120
133
|
});
|
|
@@ -146,12 +159,16 @@ var Sia = /** @class */ (function () {
|
|
|
146
159
|
if (!(i < buf.length)) return [3 /*break*/, 4];
|
|
147
160
|
return [4 /*yield*/, this.transport.send(0xe0, 0x08, i === 0 ? 0x00 : 0x80, 0x01, buffer_1.Buffer.from(buf.subarray(i, i + 255)))];
|
|
148
161
|
case 2:
|
|
162
|
+
// INS_GET_TXN_HASH = 0x08
|
|
149
163
|
resp = _a.sent();
|
|
150
164
|
_a.label = 3;
|
|
151
165
|
case 3:
|
|
152
166
|
i += 255;
|
|
153
167
|
return [3 /*break*/, 1];
|
|
154
|
-
case 4:
|
|
168
|
+
case 4:
|
|
169
|
+
console.log(resp);
|
|
170
|
+
console.log(resp.length);
|
|
171
|
+
return [2 /*return*/, (0, base64_1.encode)(resp.slice(0, resp.length - 2))];
|
|
155
172
|
}
|
|
156
173
|
});
|
|
157
174
|
});
|
|
@@ -184,6 +201,46 @@ var Sia = /** @class */ (function () {
|
|
|
184
201
|
if (!(i < buf.length)) return [3 /*break*/, 4];
|
|
185
202
|
return [4 /*yield*/, this.transport.send(0xe0, 0x08, i === 0 ? 0x00 : 0x80, 0x01, buffer_1.Buffer.from(buf.subarray(i, i + 255)))];
|
|
186
203
|
case 2:
|
|
204
|
+
// INS_GET_TXN_HASH = 0x08
|
|
205
|
+
resp = _a.sent();
|
|
206
|
+
_a.label = 3;
|
|
207
|
+
case 3:
|
|
208
|
+
i += 255;
|
|
209
|
+
return [3 /*break*/, 1];
|
|
210
|
+
case 4: return [2 /*return*/, (0, base64_1.encode)(resp)];
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* signV2Transaction signs the v2 transaction with the provided key
|
|
217
|
+
* @param encodedTxn {Buffer} a sia encoded (V2TransactionSemantics) v2 transaction
|
|
218
|
+
* @param sigIndex {number} the index of the signature to sign
|
|
219
|
+
* @param keyIndex {number} the index of the key to sign with
|
|
220
|
+
* @param changeIndex {number} the index of the key used for the change output
|
|
221
|
+
* @returns {string} the base64 encoded signature
|
|
222
|
+
*/
|
|
223
|
+
Sia.prototype.signV2Transaction = function (encodedTxn, sigIndex, keyIndex, changeIndex) {
|
|
224
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
225
|
+
var buf, resp, i;
|
|
226
|
+
return __generator(this, function (_a) {
|
|
227
|
+
switch (_a.label) {
|
|
228
|
+
case 0:
|
|
229
|
+
buf = buffer_1.Buffer.alloc(encodedTxn.length + 10);
|
|
230
|
+
resp = buffer_1.Buffer.alloc(0);
|
|
231
|
+
if (encodedTxn.length === 0)
|
|
232
|
+
throw new Error('empty transaction');
|
|
233
|
+
buf.writeUInt32LE(keyIndex, 0);
|
|
234
|
+
buf.writeUInt16LE(sigIndex, 4);
|
|
235
|
+
buf.writeUInt32LE(changeIndex, 6);
|
|
236
|
+
buf.set(encodedTxn, 10);
|
|
237
|
+
i = 0;
|
|
238
|
+
_a.label = 1;
|
|
239
|
+
case 1:
|
|
240
|
+
if (!(i < buf.length)) return [3 /*break*/, 4];
|
|
241
|
+
return [4 /*yield*/, this.transport.send(0xe0, 0x10, i === 0 ? 0x00 : 0x80, 0x01, buffer_1.Buffer.from(buf.subarray(i, i + 255)))];
|
|
242
|
+
case 2:
|
|
243
|
+
// INS_GET_V2TXN_HASH = 0x10
|
|
187
244
|
resp = _a.sent();
|
|
188
245
|
_a.label = 3;
|
|
189
246
|
case 3:
|
package/lib/sia.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sia.js","sourceRoot":"","sources":["../src/sia.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"sia.js","sourceRoot":"","sources":["../src/sia.ts"],"names":[],"mappings":"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"}
|