@ledgerhq/hw-app-solana 6.27.6 → 7.0.0-next.0
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 +12 -0
- package/README.md +21 -1
- package/lib/Solana.d.ts +14 -0
- package/lib/Solana.d.ts.map +1 -1
- package/lib/Solana.js +33 -1
- package/lib/Solana.js.map +1 -1
- package/lib-es/Solana.d.ts +14 -0
- package/lib-es/Solana.d.ts.map +1 -1
- package/lib-es/Solana.js +33 -1
- package/lib-es/Solana.js.map +1 -1
- package/package.json +1 -1
- package/src/Solana.ts +36 -0
- package/tests/Solana.test.ts +19 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@ledgerhq/hw-app-solana:build: cache hit, replaying output
|
|
1
|
+
@ledgerhq/hw-app-solana:build: cache hit, replaying output fc9190d23e4d3b91
|
|
2
2
|
@ledgerhq/hw-app-solana:build:
|
|
3
3
|
@ledgerhq/hw-app-solana:build: > @ledgerhq/hw-app-solana@6.27.6 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/hw-app-solana
|
|
4
4
|
@ledgerhq/hw-app-solana:build: > tsc && tsc -m ES6 --outDir lib-es
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ledgerhq/hw-app-solana
|
|
2
2
|
|
|
3
|
+
## 7.0.0-next.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#1433](https://github.com/LedgerHQ/ledger-live/pull/1433) [`1b43ce613f`](https://github.com/LedgerHQ/ledger-live/commit/1b43ce613f599cef9f69e40e7e3cfa8c1033c786) Thanks [@askibin](https://github.com/askibin)! - Add signOffchainMessage
|
|
8
|
+
|
|
9
|
+
## 6.28.0
|
|
10
|
+
|
|
11
|
+
### Major Changes
|
|
12
|
+
|
|
13
|
+
- Add signOffchainMessage
|
|
14
|
+
|
|
3
15
|
## 6.27.6
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -48,8 +48,11 @@ If ledger returns error `6808` - enable blind signature in settings (not needed
|
|
|
48
48
|
* [signTransaction](#signtransaction)
|
|
49
49
|
* [Parameters](#parameters-2)
|
|
50
50
|
* [Examples](#examples-2)
|
|
51
|
-
* [
|
|
51
|
+
* [signOffchainMessage](#signoffchainmessage)
|
|
52
|
+
* [Parameters](#parameters-3)
|
|
52
53
|
* [Examples](#examples-3)
|
|
54
|
+
* [getAppConfiguration](#getappconfiguration)
|
|
55
|
+
* [Examples](#examples-4)
|
|
53
56
|
|
|
54
57
|
### Solana
|
|
55
58
|
|
|
@@ -104,6 +107,23 @@ solana.signTransaction("44'/501'/0'", txBuffer).then(r => r.signature)
|
|
|
104
107
|
|
|
105
108
|
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{signature: [Buffer](https://nodejs.org/api/buffer.html)}>** an object with the signature field
|
|
106
109
|
|
|
110
|
+
#### signOffchainMessage
|
|
111
|
+
|
|
112
|
+
Sign a Solana off-chain message.
|
|
113
|
+
|
|
114
|
+
##### Parameters
|
|
115
|
+
|
|
116
|
+
* `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a BIP32 path
|
|
117
|
+
* `msgBuffer` **[Buffer](https://nodejs.org/api/buffer.html)** serialized off-chain message
|
|
118
|
+
|
|
119
|
+
##### Examples
|
|
120
|
+
|
|
121
|
+
```javascript
|
|
122
|
+
solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{signature: [Buffer](https://nodejs.org/api/buffer.html)}>** an object with the signature field
|
|
126
|
+
|
|
107
127
|
#### getAppConfiguration
|
|
108
128
|
|
|
109
129
|
Get application configuration.
|
package/lib/Solana.d.ts
CHANGED
|
@@ -43,6 +43,20 @@ export default class Solana {
|
|
|
43
43
|
signTransaction(path: string, txBuffer: Buffer): Promise<{
|
|
44
44
|
signature: Buffer;
|
|
45
45
|
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Sign a Solana off-chain message.
|
|
48
|
+
*
|
|
49
|
+
* @param path a BIP32 path
|
|
50
|
+
* @param msgBuffer serialized off-chain message
|
|
51
|
+
*
|
|
52
|
+
* @returns an object with the signature field
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
56
|
+
*/
|
|
57
|
+
signOffchainMessage(path: string, msgBuffer: Buffer): Promise<{
|
|
58
|
+
signature: Buffer;
|
|
59
|
+
}>;
|
|
46
60
|
/**
|
|
47
61
|
* Get application configuration.
|
|
48
62
|
*
|
package/lib/Solana.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AA2B/C;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,SAAS,CAAY;gBAG3B,SAAS,EAAE,SAAS,EAGpB,WAAW,GAAE,MAAsC;IAUrD;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EAGZ,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAcF;;;;;;;;;;OAUG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;OAOG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAU/C,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;YAUP,YAAY;IAiD1B,OAAO,CAAC,cAAc;CAavB;AAED,aAAK,iBAAiB;IACpB,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,aAAK,SAAS,GAAG;IACf,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/lib/Solana.js
CHANGED
|
@@ -77,7 +77,8 @@ var LEDGER_CLA = 0xe0;
|
|
|
77
77
|
var INS = {
|
|
78
78
|
GET_VERSION: 0x04,
|
|
79
79
|
GET_ADDR: 0x05,
|
|
80
|
-
SIGN: 0x06
|
|
80
|
+
SIGN: 0x06,
|
|
81
|
+
SIGN_OFFCHAIN: 0x07
|
|
81
82
|
};
|
|
82
83
|
var EXTRA_STATUS_CODES;
|
|
83
84
|
(function (EXTRA_STATUS_CODES) {
|
|
@@ -167,6 +168,37 @@ var Solana = /** @class */ (function () {
|
|
|
167
168
|
});
|
|
168
169
|
});
|
|
169
170
|
};
|
|
171
|
+
/**
|
|
172
|
+
* Sign a Solana off-chain message.
|
|
173
|
+
*
|
|
174
|
+
* @param path a BIP32 path
|
|
175
|
+
* @param msgBuffer serialized off-chain message
|
|
176
|
+
*
|
|
177
|
+
* @returns an object with the signature field
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
181
|
+
*/
|
|
182
|
+
Solana.prototype.signOffchainMessage = function (path, msgBuffer) {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
184
|
+
var pathBuffer, pathsCountBuffer, payload, signatureBuffer;
|
|
185
|
+
return __generator(this, function (_a) {
|
|
186
|
+
switch (_a.label) {
|
|
187
|
+
case 0:
|
|
188
|
+
pathBuffer = this.pathToBuffer(path);
|
|
189
|
+
pathsCountBuffer = Buffer.alloc(1);
|
|
190
|
+
pathsCountBuffer.writeUInt8(1, 0);
|
|
191
|
+
payload = Buffer.concat([pathsCountBuffer, pathBuffer, msgBuffer]);
|
|
192
|
+
return [4 /*yield*/, this.sendToDevice(INS.SIGN_OFFCHAIN, P1_CONFIRM, payload)];
|
|
193
|
+
case 1:
|
|
194
|
+
signatureBuffer = _a.sent();
|
|
195
|
+
return [2 /*return*/, {
|
|
196
|
+
signature: signatureBuffer
|
|
197
|
+
}];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
};
|
|
170
202
|
/**
|
|
171
203
|
* Get application configuration.
|
|
172
204
|
*
|
package/lib/Solana.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA+C;AAE/C,0DAAiC;AAEjC,IAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,SAAS,GAAG,IAAI,CAAC;AACvB,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB,IAAM,WAAW,GAAG,GAAG,CAAC;AAExB,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,GAAG,GAAG;IACV,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":"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"}
|
package/lib-es/Solana.d.ts
CHANGED
|
@@ -43,6 +43,20 @@ export default class Solana {
|
|
|
43
43
|
signTransaction(path: string, txBuffer: Buffer): Promise<{
|
|
44
44
|
signature: Buffer;
|
|
45
45
|
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Sign a Solana off-chain message.
|
|
48
|
+
*
|
|
49
|
+
* @param path a BIP32 path
|
|
50
|
+
* @param msgBuffer serialized off-chain message
|
|
51
|
+
*
|
|
52
|
+
* @returns an object with the signature field
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
56
|
+
*/
|
|
57
|
+
signOffchainMessage(path: string, msgBuffer: Buffer): Promise<{
|
|
58
|
+
signature: Buffer;
|
|
59
|
+
}>;
|
|
46
60
|
/**
|
|
47
61
|
* Get application configuration.
|
|
48
62
|
*
|
package/lib-es/Solana.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AA2B/C;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,SAAS,CAAY;gBAG3B,SAAS,EAAE,SAAS,EAGpB,WAAW,GAAE,MAAsC;IAUrD;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EAGZ,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAcF;;;;;;;;;;OAUG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;OAOG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAU/C,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;YAUP,YAAY;IAiD1B,OAAO,CAAC,cAAc;CAavB;AAED,aAAK,iBAAiB;IACpB,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,aAAK,SAAS,GAAG;IACf,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/lib-es/Solana.js
CHANGED
|
@@ -72,7 +72,8 @@ var LEDGER_CLA = 0xe0;
|
|
|
72
72
|
var INS = {
|
|
73
73
|
GET_VERSION: 0x04,
|
|
74
74
|
GET_ADDR: 0x05,
|
|
75
|
-
SIGN: 0x06
|
|
75
|
+
SIGN: 0x06,
|
|
76
|
+
SIGN_OFFCHAIN: 0x07
|
|
76
77
|
};
|
|
77
78
|
var EXTRA_STATUS_CODES;
|
|
78
79
|
(function (EXTRA_STATUS_CODES) {
|
|
@@ -162,6 +163,37 @@ var Solana = /** @class */ (function () {
|
|
|
162
163
|
});
|
|
163
164
|
});
|
|
164
165
|
};
|
|
166
|
+
/**
|
|
167
|
+
* Sign a Solana off-chain message.
|
|
168
|
+
*
|
|
169
|
+
* @param path a BIP32 path
|
|
170
|
+
* @param msgBuffer serialized off-chain message
|
|
171
|
+
*
|
|
172
|
+
* @returns an object with the signature field
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
176
|
+
*/
|
|
177
|
+
Solana.prototype.signOffchainMessage = function (path, msgBuffer) {
|
|
178
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
179
|
+
var pathBuffer, pathsCountBuffer, payload, signatureBuffer;
|
|
180
|
+
return __generator(this, function (_a) {
|
|
181
|
+
switch (_a.label) {
|
|
182
|
+
case 0:
|
|
183
|
+
pathBuffer = this.pathToBuffer(path);
|
|
184
|
+
pathsCountBuffer = Buffer.alloc(1);
|
|
185
|
+
pathsCountBuffer.writeUInt8(1, 0);
|
|
186
|
+
payload = Buffer.concat([pathsCountBuffer, pathBuffer, msgBuffer]);
|
|
187
|
+
return [4 /*yield*/, this.sendToDevice(INS.SIGN_OFFCHAIN, P1_CONFIRM, payload)];
|
|
188
|
+
case 1:
|
|
189
|
+
signatureBuffer = _a.sent();
|
|
190
|
+
return [2 /*return*/, {
|
|
191
|
+
signature: signatureBuffer
|
|
192
|
+
}];
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
};
|
|
165
197
|
/**
|
|
166
198
|
* Get application configuration.
|
|
167
199
|
*
|
package/lib-es/Solana.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,IAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,SAAS,GAAG,IAAI,CAAC;AACvB,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB,IAAM,WAAW,GAAG,GAAG,CAAC;AAExB,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,GAAG,GAAG;IACV,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Solana.ts
CHANGED
|
@@ -18,6 +18,7 @@ const INS = {
|
|
|
18
18
|
GET_VERSION: 0x04,
|
|
19
19
|
GET_ADDR: 0x05,
|
|
20
20
|
SIGN: 0x06,
|
|
21
|
+
SIGN_OFFCHAIN: 0x07,
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
enum EXTRA_STATUS_CODES {
|
|
@@ -120,6 +121,41 @@ export default class Solana {
|
|
|
120
121
|
};
|
|
121
122
|
}
|
|
122
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Sign a Solana off-chain message.
|
|
126
|
+
*
|
|
127
|
+
* @param path a BIP32 path
|
|
128
|
+
* @param msgBuffer serialized off-chain message
|
|
129
|
+
*
|
|
130
|
+
* @returns an object with the signature field
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
134
|
+
*/
|
|
135
|
+
async signOffchainMessage(
|
|
136
|
+
path: string,
|
|
137
|
+
msgBuffer: Buffer
|
|
138
|
+
): Promise<{
|
|
139
|
+
signature: Buffer;
|
|
140
|
+
}> {
|
|
141
|
+
const pathBuffer = this.pathToBuffer(path);
|
|
142
|
+
// Ledger app supports only a single derivation path per call ATM
|
|
143
|
+
const pathsCountBuffer = Buffer.alloc(1);
|
|
144
|
+
pathsCountBuffer.writeUInt8(1, 0);
|
|
145
|
+
|
|
146
|
+
const payload = Buffer.concat([pathsCountBuffer, pathBuffer, msgBuffer]);
|
|
147
|
+
|
|
148
|
+
const signatureBuffer = await this.sendToDevice(
|
|
149
|
+
INS.SIGN_OFFCHAIN,
|
|
150
|
+
P1_CONFIRM,
|
|
151
|
+
payload
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
signature: signatureBuffer,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
123
159
|
/**
|
|
124
160
|
* Get application configuration.
|
|
125
161
|
*
|
package/tests/Solana.test.ts
CHANGED
|
@@ -67,6 +67,25 @@ test("signTransaction", async () => {
|
|
|
67
67
|
);
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
+
test("signOffchainMessage", async () => {
|
|
71
|
+
const transport = await openTransportReplayer(
|
|
72
|
+
RecordStore.fromString(`
|
|
73
|
+
=> e00701003a01028000002c800001f5ff736f6c616e61206f6666636861696e00001c004c6f6e67204f66662d436861696e2054657374204d6573736167652e
|
|
74
|
+
<= dd23d8f798aeb0085f97f3aae20e52866bf529e0d880959784ff0e91beaf6f2eb73b7b0ef484801399066b92561f6c523b27f9579e17d0f8106b33edc5f45b079000
|
|
75
|
+
`)
|
|
76
|
+
);
|
|
77
|
+
const solana = new Solana(transport);
|
|
78
|
+
const message = Buffer.from(
|
|
79
|
+
"ff736f6c616e61206f6666636861696e00001c004c6f6e67204f66662d436861696e2054657374204d6573736167652e",
|
|
80
|
+
"hex"
|
|
81
|
+
);
|
|
82
|
+
const { signature } = await solana.signOffchainMessage("44'/501'", message);
|
|
83
|
+
const result = signature.toString("hex");
|
|
84
|
+
expect(result).toEqual(
|
|
85
|
+
"dd23d8f798aeb0085f97f3aae20e52866bf529e0d880959784ff0e91beaf6f2eb73b7b0ef484801399066b92561f6c523b27f9579e17d0f8106b33edc5f45b07"
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
|
|
70
89
|
test("chunked payload (payload length > MAX_PAYLOAD)", async () => {
|
|
71
90
|
const transport = await openTransportReplayer(
|
|
72
91
|
RecordStore.fromString(`
|