@ledgerhq/hw-app-solana 7.5.5 → 7.6.0-nightly.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/CHANGELOG.md +6 -0
- package/README.md +1 -0
- package/lib/Solana.d.ts +2 -1
- package/lib/Solana.d.ts.map +1 -1
- package/lib/Solana.js +6 -4
- package/lib/Solana.js.map +1 -1
- package/lib-es/Solana.d.ts +2 -1
- package/lib-es/Solana.d.ts.map +1 -1
- package/lib-es/Solana.js +6 -4
- package/lib-es/Solana.js.map +1 -1
- package/package.json +2 -2
- package/src/Solana.ts +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @ledgerhq/hw-app-solana
|
|
2
2
|
|
|
3
|
+
## 7.6.0-nightly.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#12199](https://github.com/LedgerHQ/ledger-live/pull/12199) [`2a67525`](https://github.com/LedgerHQ/ledger-live/commit/2a67525bfce19b673126ce6dddfca240559b10db) Thanks [@dilaouid](https://github.com/dilaouid)! - feat(solana): new P2 field user input type ATA/SOL
|
|
8
|
+
|
|
3
9
|
## 7.5.5
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -113,6 +113,7 @@ Sign a Solana transaction.
|
|
|
113
113
|
|
|
114
114
|
* `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a BIP32 path
|
|
115
115
|
* `txBuffer` **[Buffer](https://nodejs.org/api/buffer.html)** serialized transaction
|
|
116
|
+
* `userInputType` **(`"ata"` | `"sol"`)?** optional user input type (ata or sol, for the case of token transfers)
|
|
116
117
|
|
|
117
118
|
##### Examples
|
|
118
119
|
|
package/lib/Solana.d.ts
CHANGED
|
@@ -42,13 +42,14 @@ export default class Solana {
|
|
|
42
42
|
*
|
|
43
43
|
* @param path a BIP32 path
|
|
44
44
|
* @param txBuffer serialized transaction
|
|
45
|
+
* @param userInputType optional user input type (ata or sol, for the case of token transfers)
|
|
45
46
|
*
|
|
46
47
|
* @returns an object with the signature field
|
|
47
48
|
*
|
|
48
49
|
* @example
|
|
49
50
|
* solana.signTransaction("44'/501'/0'", txBuffer).then(r => r.signature)
|
|
50
51
|
*/
|
|
51
|
-
signTransaction(path: string, txBuffer: Buffer): Promise<{
|
|
52
|
+
signTransaction(path: string, txBuffer: Buffer, userInputType?: "ata" | "sol"): Promise<{
|
|
52
53
|
signature: Buffer;
|
|
53
54
|
}>;
|
|
54
55
|
/**
|
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;AAK/C,OAAO,EAAE,eAAe,EAAmB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";;AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAK/C,OAAO,EAAE,eAAe,EAAmB,MAAM,cAAc,CAAC;AA4BhE;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,SAAS,CAAY;gBAG3B,SAAS,EAAE,SAAS,EAGpB,WAAW,GAAE,MAAsC;IAiBrD;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EAGZ,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAcF;;;;OAIG;IACG,+BAA+B,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9E;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,GAC5B,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAgBF;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAeF;;;;;;;OAOG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAa/C;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAerC;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYxD,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,aAAa;YAUP,YAAY;IAqC1B,OAAO,CAAC,cAAc;CAWvB;AAED,aAAK,iBAAiB;IACpB,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,KAAK,SAAS,GAAG;IACf,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/lib/Solana.js
CHANGED
|
@@ -11,6 +11,7 @@ const P1_CONFIRM = 0x01;
|
|
|
11
11
|
const P2_INIT = 0x00;
|
|
12
12
|
const P2_EXTEND = 0x01;
|
|
13
13
|
const P2_MORE = 0x02;
|
|
14
|
+
const P2_USER_INPUT_ATA = 0x08;
|
|
14
15
|
const MAX_PAYLOAD = 255;
|
|
15
16
|
const LEDGER_CLA = 0xe0;
|
|
16
17
|
const INS = {
|
|
@@ -89,19 +90,21 @@ class Solana {
|
|
|
89
90
|
*
|
|
90
91
|
* @param path a BIP32 path
|
|
91
92
|
* @param txBuffer serialized transaction
|
|
93
|
+
* @param userInputType optional user input type (ata or sol, for the case of token transfers)
|
|
92
94
|
*
|
|
93
95
|
* @returns an object with the signature field
|
|
94
96
|
*
|
|
95
97
|
* @example
|
|
96
98
|
* solana.signTransaction("44'/501'/0'", txBuffer).then(r => r.signature)
|
|
97
99
|
*/
|
|
98
|
-
async signTransaction(path, txBuffer) {
|
|
100
|
+
async signTransaction(path, txBuffer, userInputType) {
|
|
99
101
|
const pathBuffer = this.pathToBuffer(path);
|
|
100
102
|
// Ledger app supports only a single derivation path per call ATM
|
|
101
103
|
const pathsCountBuffer = Buffer.alloc(1);
|
|
102
104
|
pathsCountBuffer.writeUInt8(1, 0);
|
|
103
105
|
const payload = Buffer.concat([pathsCountBuffer, pathBuffer, txBuffer]);
|
|
104
|
-
const
|
|
106
|
+
const p2Flag = userInputType === "ata" ? P2_USER_INPUT_ATA : undefined;
|
|
107
|
+
const signatureBuffer = await this.sendToDevice(INS.SIGN, P1_CONFIRM, payload, p2Flag);
|
|
105
108
|
return {
|
|
106
109
|
signature: signatureBuffer,
|
|
107
110
|
};
|
|
@@ -187,7 +190,7 @@ class Solana {
|
|
|
187
190
|
return buf;
|
|
188
191
|
}
|
|
189
192
|
// send chunked if payload size exceeds maximum for a call
|
|
190
|
-
async sendToDevice(instruction, p1, payload) {
|
|
193
|
+
async sendToDevice(instruction, p1, payload, p2 = P2_INIT) {
|
|
191
194
|
/*
|
|
192
195
|
* By default transport will throw if status code is not OK.
|
|
193
196
|
* For some payloads we need to enable blind sign in the app settings
|
|
@@ -195,7 +198,6 @@ class Solana {
|
|
|
195
198
|
* so we handle it and show a user friendly error message.
|
|
196
199
|
*/
|
|
197
200
|
const acceptStatusList = [errors_1.StatusCodes.OK, EXTRA_STATUS_CODES.BLIND_SIGNATURE_REQUIRED];
|
|
198
|
-
let p2 = P2_INIT;
|
|
199
201
|
let payload_offset = 0;
|
|
200
202
|
if (payload.length > MAX_PAYLOAD) {
|
|
201
203
|
while (payload.length - payload_offset > MAX_PAYLOAD) {
|
package/lib/Solana.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";;;;;AAEA,6CAA+C;AAE/C,4DAAiC;AACjC,6CAAgE;AAEhE,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,OAAO,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":"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"}
|
package/lib-es/Solana.d.ts
CHANGED
|
@@ -42,13 +42,14 @@ export default class Solana {
|
|
|
42
42
|
*
|
|
43
43
|
* @param path a BIP32 path
|
|
44
44
|
* @param txBuffer serialized transaction
|
|
45
|
+
* @param userInputType optional user input type (ata or sol, for the case of token transfers)
|
|
45
46
|
*
|
|
46
47
|
* @returns an object with the signature field
|
|
47
48
|
*
|
|
48
49
|
* @example
|
|
49
50
|
* solana.signTransaction("44'/501'/0'", txBuffer).then(r => r.signature)
|
|
50
51
|
*/
|
|
51
|
-
signTransaction(path: string, txBuffer: Buffer): Promise<{
|
|
52
|
+
signTransaction(path: string, txBuffer: Buffer, userInputType?: "ata" | "sol"): Promise<{
|
|
52
53
|
signature: Buffer;
|
|
53
54
|
}>;
|
|
54
55
|
/**
|
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;AAK/C,OAAO,EAAE,eAAe,EAAmB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";;AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAK/C,OAAO,EAAE,eAAe,EAAmB,MAAM,cAAc,CAAC;AA4BhE;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,SAAS,CAAY;gBAG3B,SAAS,EAAE,SAAS,EAGpB,WAAW,GAAE,MAAsC;IAiBrD;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EAGZ,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAcF;;;;OAIG;IACG,+BAA+B,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9E;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,GAC5B,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAgBF;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAeF;;;;;;;OAOG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAa/C;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAerC;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYxD,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,aAAa;YAUP,YAAY;IAqC1B,OAAO,CAAC,cAAc;CAWvB;AAED,aAAK,iBAAiB;IACpB,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,KAAK,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
|
@@ -6,6 +6,7 @@ const P1_CONFIRM = 0x01;
|
|
|
6
6
|
const P2_INIT = 0x00;
|
|
7
7
|
const P2_EXTEND = 0x01;
|
|
8
8
|
const P2_MORE = 0x02;
|
|
9
|
+
const P2_USER_INPUT_ATA = 0x08;
|
|
9
10
|
const MAX_PAYLOAD = 255;
|
|
10
11
|
const LEDGER_CLA = 0xe0;
|
|
11
12
|
const INS = {
|
|
@@ -84,19 +85,21 @@ export default class Solana {
|
|
|
84
85
|
*
|
|
85
86
|
* @param path a BIP32 path
|
|
86
87
|
* @param txBuffer serialized transaction
|
|
88
|
+
* @param userInputType optional user input type (ata or sol, for the case of token transfers)
|
|
87
89
|
*
|
|
88
90
|
* @returns an object with the signature field
|
|
89
91
|
*
|
|
90
92
|
* @example
|
|
91
93
|
* solana.signTransaction("44'/501'/0'", txBuffer).then(r => r.signature)
|
|
92
94
|
*/
|
|
93
|
-
async signTransaction(path, txBuffer) {
|
|
95
|
+
async signTransaction(path, txBuffer, userInputType) {
|
|
94
96
|
const pathBuffer = this.pathToBuffer(path);
|
|
95
97
|
// Ledger app supports only a single derivation path per call ATM
|
|
96
98
|
const pathsCountBuffer = Buffer.alloc(1);
|
|
97
99
|
pathsCountBuffer.writeUInt8(1, 0);
|
|
98
100
|
const payload = Buffer.concat([pathsCountBuffer, pathBuffer, txBuffer]);
|
|
99
|
-
const
|
|
101
|
+
const p2Flag = userInputType === "ata" ? P2_USER_INPUT_ATA : undefined;
|
|
102
|
+
const signatureBuffer = await this.sendToDevice(INS.SIGN, P1_CONFIRM, payload, p2Flag);
|
|
100
103
|
return {
|
|
101
104
|
signature: signatureBuffer,
|
|
102
105
|
};
|
|
@@ -182,7 +185,7 @@ export default class Solana {
|
|
|
182
185
|
return buf;
|
|
183
186
|
}
|
|
184
187
|
// send chunked if payload size exceeds maximum for a call
|
|
185
|
-
async sendToDevice(instruction, p1, payload) {
|
|
188
|
+
async sendToDevice(instruction, p1, payload, p2 = P2_INIT) {
|
|
186
189
|
/*
|
|
187
190
|
* By default transport will throw if status code is not OK.
|
|
188
191
|
* For some payloads we need to enable blind sign in the app settings
|
|
@@ -190,7 +193,6 @@ export default class Solana {
|
|
|
190
193
|
* so we handle it and show a user friendly error message.
|
|
191
194
|
*/
|
|
192
195
|
const acceptStatusList = [StatusCodes.OK, EXTRA_STATUS_CODES.BLIND_SIGNATURE_REQUIRED];
|
|
193
|
-
let p2 = P2_INIT;
|
|
194
196
|
let payload_offset = 0;
|
|
195
197
|
if (payload.length > MAX_PAYLOAD) {
|
|
196
198
|
while (payload.length - payload_offset > MAX_PAYLOAD) {
|
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;AACjC,OAAO,EAAmB,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,OAAO,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/hw-app-solana",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.6.0-nightly.0",
|
|
4
4
|
"description": "Ledger Hardware Wallet Solana Application API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"bip32-path": "^0.4.2",
|
|
31
31
|
"@ledgerhq/errors": "^6.26.0",
|
|
32
|
-
"@ledgerhq/hw-transport": "
|
|
32
|
+
"@ledgerhq/hw-transport": "6.31.12"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/jest": "^29.5.10",
|
package/src/Solana.ts
CHANGED
|
@@ -11,6 +11,7 @@ const P1_CONFIRM = 0x01;
|
|
|
11
11
|
const P2_INIT = 0x00;
|
|
12
12
|
const P2_EXTEND = 0x01;
|
|
13
13
|
const P2_MORE = 0x02;
|
|
14
|
+
const P2_USER_INPUT_ATA = 0x08;
|
|
14
15
|
|
|
15
16
|
const MAX_PAYLOAD = 255;
|
|
16
17
|
|
|
@@ -118,6 +119,7 @@ export default class Solana {
|
|
|
118
119
|
*
|
|
119
120
|
* @param path a BIP32 path
|
|
120
121
|
* @param txBuffer serialized transaction
|
|
122
|
+
* @param userInputType optional user input type (ata or sol, for the case of token transfers)
|
|
121
123
|
*
|
|
122
124
|
* @returns an object with the signature field
|
|
123
125
|
*
|
|
@@ -127,6 +129,7 @@ export default class Solana {
|
|
|
127
129
|
async signTransaction(
|
|
128
130
|
path: string,
|
|
129
131
|
txBuffer: Buffer,
|
|
132
|
+
userInputType?: "ata" | "sol",
|
|
130
133
|
): Promise<{
|
|
131
134
|
signature: Buffer;
|
|
132
135
|
}> {
|
|
@@ -137,7 +140,8 @@ export default class Solana {
|
|
|
137
140
|
|
|
138
141
|
const payload = Buffer.concat([pathsCountBuffer, pathBuffer, txBuffer]);
|
|
139
142
|
|
|
140
|
-
const
|
|
143
|
+
const p2Flag = userInputType === "ata" ? P2_USER_INPUT_ATA : undefined;
|
|
144
|
+
const signatureBuffer = await this.sendToDevice(INS.SIGN, P1_CONFIRM, payload, p2Flag);
|
|
141
145
|
|
|
142
146
|
return {
|
|
143
147
|
signature: signatureBuffer,
|
|
@@ -253,7 +257,7 @@ export default class Solana {
|
|
|
253
257
|
}
|
|
254
258
|
|
|
255
259
|
// send chunked if payload size exceeds maximum for a call
|
|
256
|
-
private async sendToDevice(instruction: number, p1: number, payload: Buffer) {
|
|
260
|
+
private async sendToDevice(instruction: number, p1: number, payload: Buffer, p2 = P2_INIT) {
|
|
257
261
|
/*
|
|
258
262
|
* By default transport will throw if status code is not OK.
|
|
259
263
|
* For some payloads we need to enable blind sign in the app settings
|
|
@@ -261,8 +265,6 @@ export default class Solana {
|
|
|
261
265
|
* so we handle it and show a user friendly error message.
|
|
262
266
|
*/
|
|
263
267
|
const acceptStatusList = [StatusCodes.OK, EXTRA_STATUS_CODES.BLIND_SIGNATURE_REQUIRED];
|
|
264
|
-
|
|
265
|
-
let p2 = P2_INIT;
|
|
266
268
|
let payload_offset = 0;
|
|
267
269
|
|
|
268
270
|
if (payload.length > MAX_PAYLOAD) {
|