@siacentral/ledgerjs-sia 1.1.0 → 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 +10 -0
- package/lib/sia.d.ts.map +1 -1
- package/lib/sia.js +46 -4
- 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,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
import type Transport from "@ledgerhq/hw-transport";
|
|
3
4
|
import { Buffer } from 'buffer';
|
|
4
5
|
interface VerifyResponse {
|
|
@@ -57,6 +58,15 @@ export default class Sia {
|
|
|
57
58
|
* @returns {string} the base64 encoded signature
|
|
58
59
|
*/
|
|
59
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>;
|
|
60
70
|
close(): Promise<void>;
|
|
61
71
|
}
|
|
62
72
|
export {};
|
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]) {
|
|
@@ -57,6 +57,7 @@ var Sia = /** @class */ (function () {
|
|
|
57
57
|
transport.decorateAppAPIMethods(this, [
|
|
58
58
|
'signTransactionV044',
|
|
59
59
|
'signTransaction',
|
|
60
|
+
'signV2Transaction',
|
|
60
61
|
'verifyPublicKey',
|
|
61
62
|
'verifyStandardAddress'
|
|
62
63
|
], scrambleKey);
|
|
@@ -74,7 +75,7 @@ var Sia = /** @class */ (function () {
|
|
|
74
75
|
case 0: return [4 /*yield*/, this.transport.send(0xe0, 0x01, 0x00, 0x00, buffer_1.Buffer.alloc(0))];
|
|
75
76
|
case 1:
|
|
76
77
|
resp = _a.sent();
|
|
77
|
-
return [2 /*return*/, "v"
|
|
78
|
+
return [2 /*return*/, "v".concat(resp[0], ".").concat(resp[1], ".").concat(resp[2])];
|
|
78
79
|
}
|
|
79
80
|
});
|
|
80
81
|
});
|
|
@@ -98,7 +99,7 @@ var Sia = /** @class */ (function () {
|
|
|
98
99
|
// the status code is appended as the last 2 bytes of the response, but
|
|
99
100
|
// the transport already handles invalid codes.
|
|
100
101
|
return [2 /*return*/, {
|
|
101
|
-
publicKey: "ed25519:"
|
|
102
|
+
publicKey: "ed25519:".concat(resp.slice(0, 32).reduce(function (v, b) { return v + ('0' + b.toString(16)).slice(-2); }, '')),
|
|
102
103
|
address: resp.slice(32, resp.length - 2).toString()
|
|
103
104
|
}];
|
|
104
105
|
}
|
|
@@ -124,7 +125,7 @@ var Sia = /** @class */ (function () {
|
|
|
124
125
|
// the status code is appended as the last 2 bytes of the response, but
|
|
125
126
|
// the transport already handles invalid codes.
|
|
126
127
|
return [2 /*return*/, {
|
|
127
|
-
publicKey: "ed25519:"
|
|
128
|
+
publicKey: "ed25519:".concat(resp.slice(0, 32).reduce(function (v, b) { return v + ('0' + b.toString(16)).slice(-2); }, '')),
|
|
128
129
|
address: resp.slice(32, resp.length - 2).toString()
|
|
129
130
|
}];
|
|
130
131
|
}
|
|
@@ -158,6 +159,7 @@ var Sia = /** @class */ (function () {
|
|
|
158
159
|
if (!(i < buf.length)) return [3 /*break*/, 4];
|
|
159
160
|
return [4 /*yield*/, this.transport.send(0xe0, 0x08, i === 0 ? 0x00 : 0x80, 0x01, buffer_1.Buffer.from(buf.subarray(i, i + 255)))];
|
|
160
161
|
case 2:
|
|
162
|
+
// INS_GET_TXN_HASH = 0x08
|
|
161
163
|
resp = _a.sent();
|
|
162
164
|
_a.label = 3;
|
|
163
165
|
case 3:
|
|
@@ -199,6 +201,46 @@ var Sia = /** @class */ (function () {
|
|
|
199
201
|
if (!(i < buf.length)) return [3 /*break*/, 4];
|
|
200
202
|
return [4 /*yield*/, this.transport.send(0xe0, 0x08, i === 0 ? 0x00 : 0x80, 0x01, buffer_1.Buffer.from(buf.subarray(i, i + 255)))];
|
|
201
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
|
|
202
244
|
resp = _a.sent();
|
|
203
245
|
_a.label = 3;
|
|
204
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,iCAAgC;AAChC,4CAA2C;AAE3C,SAAS,cAAc,CAAC,GAAW;IAClC,IAAM,GAAG,GAAG,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC;AACZ,CAAC;AAOD;;;;;;GAMG;AACH;IAGC,aAAY,SAAoB,EAAE,WAAmB;QAAnB,4BAAA,EAAA,mBAAmB;QACpD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE;YACrC,qBAAqB;YACrB,iBAAiB;YACjB,iBAAiB;YACjB,uBAAuB;SACvB,EAAE,WAAW,CAAC,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACG,wBAAU,GAAhB;;;;;4BACc,qBAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAA;;wBAAzE,IAAI,GAAG,SAAkE;wBAE/E,sBAAO,
|
|
1
|
+
{"version":3,"file":"sia.js","sourceRoot":"","sources":["../src/sia.ts"],"names":[],"mappings":"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"}
|