@ledgerhq/hw-app-canton 0.6.0 → 0.7.0-nightly.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/README.md +3 -2
- package/lib/Canton.d.ts +58 -9
- package/lib/Canton.d.ts.map +1 -1
- package/lib/Canton.js +237 -39
- package/lib/Canton.js.map +1 -1
- package/lib-es/Canton.d.ts +58 -9
- package/lib-es/Canton.d.ts.map +1 -1
- package/lib-es/Canton.js +238 -40
- package/lib-es/Canton.js.map +1 -1
- package/package.json +5 -5
- package/src/Canton.test.ts +288 -35
- package/src/Canton.ts +336 -48
- package/lib/Canton.integ.test.d.ts +0 -2
- package/lib/Canton.integ.test.d.ts.map +0 -1
- package/lib/Canton.integ.test.js +0 -88
- package/lib/Canton.integ.test.js.map +0 -1
- package/lib/Canton.test.d.ts +0 -2
- package/lib/Canton.test.d.ts.map +0 -1
- package/lib/Canton.test.js +0 -127
- package/lib/Canton.test.js.map +0 -1
- package/lib-es/Canton.integ.test.d.ts +0 -2
- package/lib-es/Canton.integ.test.d.ts.map +0 -1
- package/lib-es/Canton.integ.test.js +0 -60
- package/lib-es/Canton.integ.test.js.map +0 -1
- package/lib-es/Canton.test.d.ts +0 -2
- package/lib-es/Canton.test.d.ts.map +0 -1
- package/lib-es/Canton.test.js +0 -122
- package/lib-es/Canton.test.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/hw-app-canton@0.
|
|
2
|
+
> @ledgerhq/hw-app-canton@0.7.0-nightly.0 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/hw-app-canton
|
|
3
3
|
> tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ledgerhq/hw-app-canton
|
|
2
2
|
|
|
3
|
+
## 0.7.0-nightly.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#12405](https://github.com/LedgerHQ/ledger-live/pull/12405) [`0a5188a`](https://github.com/LedgerHQ/ledger-live/commit/0a5188aecac545b677cd5d4e8256bbb97081d269) Thanks [@ishaba](https://github.com/ishaba)! - add challenge support for canton onboarding request
|
|
8
|
+
|
|
9
|
+
## 0.7.0-nightly.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#12173](https://github.com/LedgerHQ/ledger-live/pull/12173) [`f4965d6`](https://github.com/LedgerHQ/ledger-live/commit/f4965d6dfc64949b0afa765cc9e4b24324b5df1d) Thanks [@ishaba](https://github.com/ishaba)! - add canton full transaction signing support
|
|
14
|
+
|
|
3
15
|
## 0.6.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -55,12 +55,13 @@ Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/
|
|
|
55
55
|
|
|
56
56
|
#### signTransaction
|
|
57
57
|
|
|
58
|
-
Sign a Canton transaction
|
|
58
|
+
Sign a Canton transaction
|
|
59
|
+
using the appropriate signing method based on transaction type.
|
|
59
60
|
|
|
60
61
|
##### Parameters
|
|
61
62
|
|
|
62
63
|
* `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a path in BIP-32 format
|
|
63
|
-
* `
|
|
64
|
+
* `data` **(CantonPreparedTransaction | CantonUntypedVersionedMessage | [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** either prepared transaction components, untyped versioned message, or txHash string (backwards compatibility)
|
|
64
65
|
|
|
65
66
|
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<CantonSignature>** the signature
|
|
66
67
|
|
package/lib/Canton.d.ts
CHANGED
|
@@ -7,7 +7,20 @@ export type CantonAddress = {
|
|
|
7
7
|
address: string;
|
|
8
8
|
path: string;
|
|
9
9
|
};
|
|
10
|
-
export type CantonSignature =
|
|
10
|
+
export type CantonSignature = {
|
|
11
|
+
signature: string;
|
|
12
|
+
applicationSignature?: string;
|
|
13
|
+
};
|
|
14
|
+
export type CantonPreparedTransaction = {
|
|
15
|
+
damlTransaction: Uint8Array;
|
|
16
|
+
nodes: Uint8Array[];
|
|
17
|
+
metadata: Uint8Array;
|
|
18
|
+
inputContracts: Uint8Array[];
|
|
19
|
+
};
|
|
20
|
+
export type CantonUntypedVersionedMessage = {
|
|
21
|
+
transactions: string[];
|
|
22
|
+
challenge?: string;
|
|
23
|
+
};
|
|
11
24
|
/**
|
|
12
25
|
* Canton BOLOS API
|
|
13
26
|
*/
|
|
@@ -23,29 +36,65 @@ export default class Canton {
|
|
|
23
36
|
*/
|
|
24
37
|
getAddress(path: string, display?: boolean): Promise<CantonAddress>;
|
|
25
38
|
/**
|
|
26
|
-
* Sign a Canton transaction
|
|
39
|
+
* Sign a Canton transaction
|
|
40
|
+
* using the appropriate signing method based on transaction type.
|
|
27
41
|
*
|
|
28
42
|
* @param path a path in BIP-32 format
|
|
29
|
-
* @param
|
|
43
|
+
* @param data either prepared transaction components, untyped versioned message, or txHash string (backwards compatibility)
|
|
30
44
|
* @return the signature
|
|
31
45
|
*/
|
|
32
|
-
signTransaction(path: string,
|
|
46
|
+
signTransaction(path: string, data: CantonPreparedTransaction | CantonUntypedVersionedMessage | string): Promise<CantonSignature>;
|
|
47
|
+
/**
|
|
48
|
+
* Sign a transaction hash (backwards compatibility)
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
private signTxHash;
|
|
52
|
+
/**
|
|
53
|
+
* Sign a prepared Canton transaction
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
private signPreparedTransaction;
|
|
57
|
+
/**
|
|
58
|
+
* Sign topology transactions for Canton onboarding
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
private signUntypedVersionedMessage;
|
|
33
62
|
/**
|
|
34
63
|
* Get the app configuration.
|
|
35
64
|
* @return the app configuration including version
|
|
36
65
|
*/
|
|
37
66
|
getAppConfiguration(): Promise<AppConfig>;
|
|
38
67
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
68
|
+
* Validate Uint8Array with descriptive error message
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
private validateUint8Array;
|
|
72
|
+
/**
|
|
73
|
+
* Unified chunking strategy for sending data to device
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
private sendChunkedData;
|
|
77
|
+
/**
|
|
78
|
+
* Create optimized chunks from payload
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
private createChunks;
|
|
82
|
+
/**
|
|
83
|
+
* Parse signature response - handles both TLV format (onboarding) and single signatures
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
private parseSignatureResponse;
|
|
87
|
+
/**
|
|
88
|
+
* Check transport response for errors and throw appropriate exceptions
|
|
41
89
|
* @private
|
|
42
90
|
*/
|
|
43
|
-
private
|
|
91
|
+
private checkTransportResponse;
|
|
44
92
|
/**
|
|
45
|
-
*
|
|
93
|
+
* Extract response data from transport response
|
|
94
|
+
* APDU responses have format: [data][status_code(2_bytes)]
|
|
46
95
|
* @private
|
|
47
96
|
*/
|
|
48
|
-
private
|
|
97
|
+
private extractResponseData;
|
|
49
98
|
/**
|
|
50
99
|
* Serialize a BIP path to a data buffer for Canton BOLOS
|
|
51
100
|
* @private
|
package/lib/Canton.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canton.d.ts","sourceRoot":"","sources":["../src/Canton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Canton.d.ts","sourceRoot":"","sources":["../src/Canton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAgCpD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,eAAe,EAAE,UAAU,CAAC;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,UAAU,CAAC;IACrB,cAAc,EAAE,UAAU,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAgC;IAU7E;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBhF;;;;;;;OAOG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,yBAAyB,GAAG,6BAA6B,GAAG,MAAM,GACvE,OAAO,CAAC,eAAe,CAAC;IAa3B;;;OAGG;YACW,UAAU;IA+BxB;;;OAGG;YACW,uBAAuB;IA4ErC;;;OAGG;YACW,2BAA2B;IA4EzC;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAkB/C;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;OAGG;YACW,eAAe;IAmC7B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAkBpB;;;OAGG;IAEH,OAAO,CAAC,sBAAsB;IAkC9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAwBpC;;;OAGG;IACH,OAAO,CAAC,cAAc;CAOvB"}
|
package/lib/Canton.js
CHANGED
|
@@ -8,13 +8,11 @@ const bip32_path_1 = __importDefault(require("bip32-path"));
|
|
|
8
8
|
const CLA = 0xe0;
|
|
9
9
|
const P1_NON_CONFIRM = 0x00;
|
|
10
10
|
const P1_CONFIRM = 0x01;
|
|
11
|
-
|
|
11
|
+
const P1_SIGN_UNTYPED_VERSIONED_MESSAGE = 0x01;
|
|
12
|
+
const P1_SIGN_PREPARED_TRANSACTION = 0x02;
|
|
12
13
|
const P2_NONE = 0x00;
|
|
13
|
-
// P2 indicating first APDU in a large request.
|
|
14
14
|
const P2_FIRST = 0x01;
|
|
15
|
-
// P2 indicating that this is not the last APDU in a large request.
|
|
16
15
|
const P2_MORE = 0x02;
|
|
17
|
-
// P2 indicating that this is the last APDU of a message in a multi message request.
|
|
18
16
|
const P2_MSG_END = 0x04;
|
|
19
17
|
const INS = {
|
|
20
18
|
GET_VERSION: 0x03,
|
|
@@ -28,6 +26,7 @@ const STATUS = {
|
|
|
28
26
|
};
|
|
29
27
|
const ED25519_SIGNATURE_HEX_LENGTH = 128; // hex characters (64 bytes)
|
|
30
28
|
const CANTON_SIGNATURE_HEX_LENGTH = 132; // hex characters (66 bytes with framing)
|
|
29
|
+
const MAX_APDU_DATA_LENGTH = 255;
|
|
31
30
|
/**
|
|
32
31
|
* Canton BOLOS API
|
|
33
32
|
*/
|
|
@@ -49,7 +48,8 @@ class Canton {
|
|
|
49
48
|
const serializedPath = this.serializePath(bipPath);
|
|
50
49
|
const p1 = display ? P1_CONFIRM : P1_NON_CONFIRM;
|
|
51
50
|
const response = await this.transport.send(CLA, INS.GET_ADDR, p1, P2_NONE, serializedPath);
|
|
52
|
-
|
|
51
|
+
this.checkTransportResponse(response);
|
|
52
|
+
const responseData = this.extractResponseData(response);
|
|
53
53
|
const { publicKey } = this.extractPublicKeyAndChainCode(responseData);
|
|
54
54
|
const address = "canton_" + this.publicKeyToAddress(publicKey);
|
|
55
55
|
return {
|
|
@@ -59,23 +59,153 @@ class Canton {
|
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
* Sign a Canton transaction
|
|
62
|
+
* Sign a Canton transaction
|
|
63
|
+
* using the appropriate signing method based on transaction type.
|
|
63
64
|
*
|
|
64
65
|
* @param path a path in BIP-32 format
|
|
65
|
-
* @param
|
|
66
|
+
* @param data either prepared transaction components, untyped versioned message, or txHash string (backwards compatibility)
|
|
66
67
|
* @return the signature
|
|
67
68
|
*/
|
|
68
|
-
async signTransaction(path,
|
|
69
|
+
async signTransaction(path, data) {
|
|
70
|
+
// Backwards compatibility: handle txHash string format
|
|
71
|
+
if (typeof data === "string") {
|
|
72
|
+
return this.signTxHash(path, data);
|
|
73
|
+
}
|
|
74
|
+
if ("damlTransaction" in data) {
|
|
75
|
+
return this.signPreparedTransaction(path, data);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return this.signUntypedVersionedMessage(path, data);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Sign a transaction hash (backwards compatibility)
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
async signTxHash(path, txHash) {
|
|
86
|
+
// 1. Send the derivation path
|
|
87
|
+
const bipPath = bip32_path_1.default.fromString(path).toPathArray();
|
|
88
|
+
const serializedPath = this.serializePath(bipPath);
|
|
89
|
+
const pathResponse = await this.transport.send(CLA, INS.SIGN, P1_SIGN_UNTYPED_VERSIONED_MESSAGE, P2_FIRST | P2_MORE, serializedPath);
|
|
90
|
+
this.checkTransportResponse(pathResponse);
|
|
91
|
+
// 2. Send the transaction hash as a single transaction
|
|
92
|
+
const transactionBuffer = Buffer.from(txHash, "hex");
|
|
93
|
+
const response = await this.transport.send(CLA, INS.SIGN, P1_SIGN_UNTYPED_VERSIONED_MESSAGE, P2_MSG_END, transactionBuffer);
|
|
94
|
+
this.checkTransportResponse(response);
|
|
95
|
+
const responseData = this.extractResponseData(response);
|
|
96
|
+
return this.parseSignatureResponse(responseData);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Sign a prepared Canton transaction
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
async signPreparedTransaction(path, components) {
|
|
103
|
+
let responseData = null;
|
|
69
104
|
// 1. Send the derivation path
|
|
70
105
|
const bipPath = bip32_path_1.default.fromString(path).toPathArray();
|
|
71
106
|
const serializedPath = this.serializePath(bipPath);
|
|
72
|
-
const pathResponse = await this.transport.send(CLA, INS.SIGN,
|
|
73
|
-
this.
|
|
74
|
-
// 2. Send the transaction
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
107
|
+
const pathResponse = await this.transport.send(CLA, INS.SIGN, P1_SIGN_PREPARED_TRANSACTION, P2_FIRST | P2_MORE, serializedPath);
|
|
108
|
+
this.checkTransportResponse(pathResponse);
|
|
109
|
+
// 2. Send the DAML transaction
|
|
110
|
+
await this.sendChunkedData({
|
|
111
|
+
ins: INS.SIGN,
|
|
112
|
+
p1: P1_SIGN_PREPARED_TRANSACTION,
|
|
113
|
+
payload: Buffer.from(components.damlTransaction),
|
|
114
|
+
isFinal: false,
|
|
115
|
+
});
|
|
116
|
+
// 3. Send each node
|
|
117
|
+
for (const [i, node] of components.nodes.entries()) {
|
|
118
|
+
this.validateUint8Array(node, `Node at index ${i}`);
|
|
119
|
+
await this.sendChunkedData({
|
|
120
|
+
ins: INS.SIGN,
|
|
121
|
+
p1: P1_SIGN_PREPARED_TRANSACTION,
|
|
122
|
+
payload: Buffer.from(node),
|
|
123
|
+
isFinal: false,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// 4. Send the metadata
|
|
127
|
+
const isFinal = components.inputContracts.length === 0;
|
|
128
|
+
const result = await this.sendChunkedData({
|
|
129
|
+
ins: INS.SIGN,
|
|
130
|
+
p1: P1_SIGN_PREPARED_TRANSACTION,
|
|
131
|
+
payload: Buffer.from(components.metadata),
|
|
132
|
+
isFinal,
|
|
133
|
+
});
|
|
134
|
+
if (isFinal) {
|
|
135
|
+
responseData = result;
|
|
136
|
+
}
|
|
137
|
+
// 5. Send each input contract - last one should return data
|
|
138
|
+
for (const [i, inputContract] of components.inputContracts.entries()) {
|
|
139
|
+
this.validateUint8Array(inputContract, `Input contract at index ${i}`);
|
|
140
|
+
const isFinal = i === components.inputContracts.length - 1;
|
|
141
|
+
const result = await this.sendChunkedData({
|
|
142
|
+
ins: INS.SIGN,
|
|
143
|
+
p1: P1_SIGN_PREPARED_TRANSACTION,
|
|
144
|
+
payload: Buffer.from(inputContract),
|
|
145
|
+
isFinal,
|
|
146
|
+
});
|
|
147
|
+
if (isFinal) {
|
|
148
|
+
responseData = result;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (!responseData) {
|
|
152
|
+
throw new Error("No response data received from device");
|
|
153
|
+
}
|
|
154
|
+
return this.parseSignatureResponse(responseData);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Sign topology transactions for Canton onboarding
|
|
158
|
+
* @private
|
|
159
|
+
*/
|
|
160
|
+
async signUntypedVersionedMessage(path, data) {
|
|
161
|
+
const { transactions, challenge } = data;
|
|
162
|
+
if (!transactions || transactions.length === 0) {
|
|
163
|
+
throw new TypeError("At least one transaction is required");
|
|
164
|
+
}
|
|
165
|
+
// 1. Send the derivation path with optional challenge
|
|
166
|
+
const bipPath = bip32_path_1.default.fromString(path).toPathArray();
|
|
167
|
+
const serializedPath = this.serializePath(bipPath);
|
|
168
|
+
let pathData = serializedPath;
|
|
169
|
+
if (challenge) {
|
|
170
|
+
const challengeBuffer = Buffer.from(challenge, "hex");
|
|
171
|
+
pathData = Buffer.concat([serializedPath, challengeBuffer]);
|
|
172
|
+
}
|
|
173
|
+
const pathResponse = await this.transport.send(CLA, INS.SIGN, P1_SIGN_UNTYPED_VERSIONED_MESSAGE, P2_FIRST | P2_MORE, pathData);
|
|
174
|
+
this.checkTransportResponse(pathResponse);
|
|
175
|
+
// 2. Send each transaction using chunking for large data
|
|
176
|
+
for (const [i, transaction] of transactions.entries()) {
|
|
177
|
+
if (!transaction) {
|
|
178
|
+
throw new TypeError(`Transaction at index ${i} is undefined or null`);
|
|
179
|
+
}
|
|
180
|
+
const transactionBuffer = Buffer.from(transaction, "hex");
|
|
181
|
+
const isLastTransaction = i === transactions.length - 1;
|
|
182
|
+
if (transactionBuffer.length <= MAX_APDU_DATA_LENGTH) {
|
|
183
|
+
// Small transaction - send directly
|
|
184
|
+
const p2 = isLastTransaction ? P2_MSG_END : P2_MORE | P2_MSG_END;
|
|
185
|
+
const response = await this.transport.send(CLA, INS.SIGN, P1_SIGN_UNTYPED_VERSIONED_MESSAGE, p2, transactionBuffer);
|
|
186
|
+
if (isLastTransaction) {
|
|
187
|
+
this.checkTransportResponse(response);
|
|
188
|
+
const responseData = this.extractResponseData(response);
|
|
189
|
+
return this.parseSignatureResponse(responseData, challenge);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
this.checkTransportResponse(response);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// Large transaction - use chunking
|
|
197
|
+
const responseData = await this.sendChunkedData({
|
|
198
|
+
ins: INS.SIGN,
|
|
199
|
+
p1: P1_SIGN_UNTYPED_VERSIONED_MESSAGE,
|
|
200
|
+
payload: transactionBuffer,
|
|
201
|
+
isFinal: isLastTransaction,
|
|
202
|
+
});
|
|
203
|
+
if (isLastTransaction && responseData) {
|
|
204
|
+
return this.parseSignatureResponse(responseData, challenge);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
throw new TypeError("No transactions provided");
|
|
79
209
|
}
|
|
80
210
|
/**
|
|
81
211
|
* Get the app configuration.
|
|
@@ -83,46 +213,114 @@ class Canton {
|
|
|
83
213
|
*/
|
|
84
214
|
async getAppConfiguration() {
|
|
85
215
|
const response = await this.transport.send(CLA, INS.GET_VERSION, P1_NON_CONFIRM, P2_NONE, Buffer.alloc(0));
|
|
86
|
-
|
|
216
|
+
this.checkTransportResponse(response);
|
|
217
|
+
const responseData = this.extractResponseData(response);
|
|
87
218
|
const { major, minor, patch } = this.extractVersion(responseData);
|
|
88
219
|
return {
|
|
89
220
|
version: `${major}.${minor}.${patch}`,
|
|
90
221
|
};
|
|
91
222
|
}
|
|
92
223
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
224
|
+
* Validate Uint8Array with descriptive error message
|
|
225
|
+
* @private
|
|
226
|
+
*/
|
|
227
|
+
validateUint8Array(value, context) {
|
|
228
|
+
if (!value) {
|
|
229
|
+
throw new TypeError(`${context} is undefined or null`);
|
|
230
|
+
}
|
|
231
|
+
if (!(value instanceof Uint8Array)) {
|
|
232
|
+
throw new TypeError(`${context} is not a Uint8Array: ${typeof value}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Unified chunking strategy for sending data to device
|
|
95
237
|
* @private
|
|
96
238
|
*/
|
|
97
|
-
|
|
239
|
+
async sendChunkedData({ ins, p1, payload, isFinal = false, }) {
|
|
240
|
+
const chunks = this.createChunks(payload);
|
|
241
|
+
let responseData = null;
|
|
242
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
243
|
+
const isLastChunk = i === chunks.length - 1;
|
|
244
|
+
let p2 = P2_MORE;
|
|
245
|
+
if (isLastChunk) {
|
|
246
|
+
p2 = isFinal ? P2_MSG_END : P2_MORE | P2_MSG_END;
|
|
247
|
+
}
|
|
248
|
+
const response = await this.transport.send(CLA, ins, p1, p2, chunks[i]);
|
|
249
|
+
if (isFinal && isLastChunk) {
|
|
250
|
+
this.checkTransportResponse(response);
|
|
251
|
+
responseData = this.extractResponseData(response);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
this.checkTransportResponse(response);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return responseData;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Create optimized chunks from payload
|
|
261
|
+
* @private
|
|
262
|
+
*/
|
|
263
|
+
createChunks(payload) {
|
|
264
|
+
if (payload.length <= MAX_APDU_DATA_LENGTH) {
|
|
265
|
+
return [payload];
|
|
266
|
+
}
|
|
267
|
+
const totalChunks = Math.ceil(payload.length / MAX_APDU_DATA_LENGTH);
|
|
268
|
+
const chunks = new Array(totalChunks);
|
|
269
|
+
let offset = 0;
|
|
270
|
+
for (let i = 0; i < totalChunks; i++) {
|
|
271
|
+
const chunkSize = Math.min(MAX_APDU_DATA_LENGTH, payload.length - offset);
|
|
272
|
+
chunks[i] = payload.slice(offset, offset + chunkSize);
|
|
273
|
+
offset += chunkSize;
|
|
274
|
+
}
|
|
275
|
+
return chunks;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Parse signature response - handles both TLV format (onboarding) and single signatures
|
|
279
|
+
* @private
|
|
280
|
+
*/
|
|
281
|
+
parseSignatureResponse(response, challenge) {
|
|
282
|
+
// Handle TLV (Type-Length-Value) format: [40][64B main][00][40][64B challenge] = 262 hex chars (131 bytes)
|
|
283
|
+
if (response.length === 131 &&
|
|
284
|
+
response.readUInt8(0) === 0x40 &&
|
|
285
|
+
response.readUInt8(65) === 0x00 &&
|
|
286
|
+
response.readUInt8(66) === 0x40) {
|
|
287
|
+
const signature = response.slice(1, 65).toString("hex");
|
|
288
|
+
const applicationSignature = response.slice(67, 131).toString("hex");
|
|
289
|
+
return {
|
|
290
|
+
signature,
|
|
291
|
+
...(challenge && { applicationSignature }),
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
// Handle single signature formats
|
|
295
|
+
const signature = response.toString("hex");
|
|
296
|
+
// Pure 64-byte Ed25519 signature = 128 hex chars (64 bytes)
|
|
98
297
|
if (signature.length === ED25519_SIGNATURE_HEX_LENGTH) {
|
|
99
|
-
return signature;
|
|
298
|
+
return { signature };
|
|
100
299
|
}
|
|
300
|
+
// Canton-framed signature: [40][64B Ed25519 sig][00] = 132 hex chars (65 bytes)
|
|
101
301
|
if (signature.length === CANTON_SIGNATURE_HEX_LENGTH) {
|
|
102
302
|
const cleanedSignature = signature.slice(2, -2);
|
|
103
|
-
return cleanedSignature;
|
|
303
|
+
return { signature: cleanedSignature };
|
|
104
304
|
}
|
|
105
|
-
|
|
106
|
-
return signature;
|
|
305
|
+
return { signature };
|
|
107
306
|
}
|
|
108
307
|
/**
|
|
109
|
-
*
|
|
308
|
+
* Check transport response for errors and throw appropriate exceptions
|
|
110
309
|
* @private
|
|
111
310
|
*/
|
|
112
|
-
|
|
311
|
+
checkTransportResponse(response) {
|
|
113
312
|
const statusCode = response.readUInt16BE(response.length - 2);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
switch (errorType) {
|
|
117
|
-
case "address":
|
|
118
|
-
throw new errors_1.UserRefusedAddress();
|
|
119
|
-
case "transaction":
|
|
120
|
-
throw new errors_1.UserRefusedOnDevice();
|
|
121
|
-
default:
|
|
122
|
-
throw new Error();
|
|
123
|
-
}
|
|
313
|
+
if (statusCode !== STATUS.OK) {
|
|
314
|
+
throw new errors_1.TransportStatusError(statusCode);
|
|
124
315
|
}
|
|
125
|
-
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Extract response data from transport response
|
|
319
|
+
* APDU responses have format: [data][status_code(2_bytes)]
|
|
320
|
+
* @private
|
|
321
|
+
*/
|
|
322
|
+
extractResponseData(response) {
|
|
323
|
+
return response.slice(0, -2);
|
|
126
324
|
}
|
|
127
325
|
/**
|
|
128
326
|
* Serialize a BIP path to a data buffer for Canton BOLOS
|
|
@@ -177,9 +375,9 @@ class Canton {
|
|
|
177
375
|
*/
|
|
178
376
|
extractVersion(data) {
|
|
179
377
|
return {
|
|
180
|
-
major: parseInt(data.subarray(0, 1).toString("hex"), 16),
|
|
181
|
-
minor: parseInt(data.subarray(1, 2).toString("hex"), 16),
|
|
182
|
-
patch: parseInt(data.subarray(2, 3).toString("hex"), 16),
|
|
378
|
+
major: Number.parseInt(data.subarray(0, 1).toString("hex"), 16),
|
|
379
|
+
minor: Number.parseInt(data.subarray(1, 2).toString("hex"), 16),
|
|
380
|
+
patch: Number.parseInt(data.subarray(2, 3).toString("hex"), 16),
|
|
183
381
|
};
|
|
184
382
|
}
|
|
185
383
|
}
|
package/lib/Canton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canton.js","sourceRoot":"","sources":["../src/Canton.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Canton.js","sourceRoot":"","sources":["../src/Canton.ts"],"names":[],"mappings":"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"}
|
package/lib-es/Canton.d.ts
CHANGED
|
@@ -7,7 +7,20 @@ export type CantonAddress = {
|
|
|
7
7
|
address: string;
|
|
8
8
|
path: string;
|
|
9
9
|
};
|
|
10
|
-
export type CantonSignature =
|
|
10
|
+
export type CantonSignature = {
|
|
11
|
+
signature: string;
|
|
12
|
+
applicationSignature?: string;
|
|
13
|
+
};
|
|
14
|
+
export type CantonPreparedTransaction = {
|
|
15
|
+
damlTransaction: Uint8Array;
|
|
16
|
+
nodes: Uint8Array[];
|
|
17
|
+
metadata: Uint8Array;
|
|
18
|
+
inputContracts: Uint8Array[];
|
|
19
|
+
};
|
|
20
|
+
export type CantonUntypedVersionedMessage = {
|
|
21
|
+
transactions: string[];
|
|
22
|
+
challenge?: string;
|
|
23
|
+
};
|
|
11
24
|
/**
|
|
12
25
|
* Canton BOLOS API
|
|
13
26
|
*/
|
|
@@ -23,29 +36,65 @@ export default class Canton {
|
|
|
23
36
|
*/
|
|
24
37
|
getAddress(path: string, display?: boolean): Promise<CantonAddress>;
|
|
25
38
|
/**
|
|
26
|
-
* Sign a Canton transaction
|
|
39
|
+
* Sign a Canton transaction
|
|
40
|
+
* using the appropriate signing method based on transaction type.
|
|
27
41
|
*
|
|
28
42
|
* @param path a path in BIP-32 format
|
|
29
|
-
* @param
|
|
43
|
+
* @param data either prepared transaction components, untyped versioned message, or txHash string (backwards compatibility)
|
|
30
44
|
* @return the signature
|
|
31
45
|
*/
|
|
32
|
-
signTransaction(path: string,
|
|
46
|
+
signTransaction(path: string, data: CantonPreparedTransaction | CantonUntypedVersionedMessage | string): Promise<CantonSignature>;
|
|
47
|
+
/**
|
|
48
|
+
* Sign a transaction hash (backwards compatibility)
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
private signTxHash;
|
|
52
|
+
/**
|
|
53
|
+
* Sign a prepared Canton transaction
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
private signPreparedTransaction;
|
|
57
|
+
/**
|
|
58
|
+
* Sign topology transactions for Canton onboarding
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
private signUntypedVersionedMessage;
|
|
33
62
|
/**
|
|
34
63
|
* Get the app configuration.
|
|
35
64
|
* @return the app configuration including version
|
|
36
65
|
*/
|
|
37
66
|
getAppConfiguration(): Promise<AppConfig>;
|
|
38
67
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
68
|
+
* Validate Uint8Array with descriptive error message
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
private validateUint8Array;
|
|
72
|
+
/**
|
|
73
|
+
* Unified chunking strategy for sending data to device
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
private sendChunkedData;
|
|
77
|
+
/**
|
|
78
|
+
* Create optimized chunks from payload
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
private createChunks;
|
|
82
|
+
/**
|
|
83
|
+
* Parse signature response - handles both TLV format (onboarding) and single signatures
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
private parseSignatureResponse;
|
|
87
|
+
/**
|
|
88
|
+
* Check transport response for errors and throw appropriate exceptions
|
|
41
89
|
* @private
|
|
42
90
|
*/
|
|
43
|
-
private
|
|
91
|
+
private checkTransportResponse;
|
|
44
92
|
/**
|
|
45
|
-
*
|
|
93
|
+
* Extract response data from transport response
|
|
94
|
+
* APDU responses have format: [data][status_code(2_bytes)]
|
|
46
95
|
* @private
|
|
47
96
|
*/
|
|
48
|
-
private
|
|
97
|
+
private extractResponseData;
|
|
49
98
|
/**
|
|
50
99
|
* Serialize a BIP path to a data buffer for Canton BOLOS
|
|
51
100
|
* @private
|
package/lib-es/Canton.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canton.d.ts","sourceRoot":"","sources":["../src/Canton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Canton.d.ts","sourceRoot":"","sources":["../src/Canton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAgCpD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,eAAe,EAAE,UAAU,CAAC;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,UAAU,CAAC;IACrB,cAAc,EAAE,UAAU,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAgC;IAU7E;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBhF;;;;;;;OAOG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,yBAAyB,GAAG,6BAA6B,GAAG,MAAM,GACvE,OAAO,CAAC,eAAe,CAAC;IAa3B;;;OAGG;YACW,UAAU;IA+BxB;;;OAGG;YACW,uBAAuB;IA4ErC;;;OAGG;YACW,2BAA2B;IA4EzC;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAkB/C;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;OAGG;YACW,eAAe;IAmC7B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAkBpB;;;OAGG;IAEH,OAAO,CAAC,sBAAsB;IAkC9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAwBpC;;;OAGG;IACH,OAAO,CAAC,cAAc;CAOvB"}
|