@bitboxswiss/bitbox-api 0.1.0 → 0.2.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/CONTRIBUTING.md +4 -2
- package/README.md +69 -9
- package/dist/index.d.ts +337 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +451 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/cardano/methods.d.ts +7 -0
- package/dist/internal/cardano/methods.d.ts.map +1 -0
- package/dist/internal/cardano/methods.js +199 -0
- package/dist/internal/cardano/methods.js.map +1 -0
- package/dist/internal/cardano/query.d.ts +4 -0
- package/dist/internal/cardano/query.d.ts.map +1 -0
- package/dist/internal/cardano/query.js +20 -0
- package/dist/internal/cardano/query.js.map +1 -0
- package/dist/internal/connect-simulator.d.ts +2 -0
- package/dist/internal/connect-simulator.d.ts.map +1 -0
- package/dist/internal/connect-simulator.js +25 -0
- package/dist/internal/connect-simulator.js.map +1 -0
- package/dist/internal/connect.d.ts +2 -0
- package/dist/internal/connect.d.ts.map +1 -0
- package/dist/internal/connect.js +54 -0
- package/dist/internal/connect.js.map +1 -0
- package/dist/internal/constants.d.ts +2 -0
- package/dist/internal/constants.d.ts.map +1 -0
- package/dist/internal/constants.js +16 -0
- package/dist/internal/constants.js.map +1 -0
- package/dist/internal/device.d.ts +5 -0
- package/dist/internal/device.d.ts.map +1 -0
- package/dist/internal/device.js +40 -0
- package/dist/internal/device.js.map +1 -0
- package/dist/internal/errors.d.ts +2 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +220 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/eth/antiklepto.d.ts +5 -0
- package/dist/internal/eth/antiklepto.d.ts.map +1 -0
- package/dist/internal/eth/antiklepto.js +59 -0
- package/dist/internal/eth/antiklepto.js.map +1 -0
- package/dist/internal/eth/eip712.d.ts +25 -0
- package/dist/internal/eth/eip712.d.ts.map +1 -0
- package/dist/internal/eth/eip712.js +303 -0
- package/dist/internal/eth/eip712.js.map +1 -0
- package/dist/internal/eth/methods.d.ts +10 -0
- package/dist/internal/eth/methods.d.ts.map +1 -0
- package/dist/internal/eth/methods.js +245 -0
- package/dist/internal/eth/methods.js.map +1 -0
- package/dist/internal/eth/query.d.ts +4 -0
- package/dist/internal/eth/query.d.ts.map +1 -0
- package/dist/internal/eth/query.js +20 -0
- package/dist/internal/eth/query.js.map +1 -0
- package/dist/internal/eth/streaming.d.ts +4 -0
- package/dist/internal/eth/streaming.d.ts.map +1 -0
- package/dist/internal/eth/streaming.js +22 -0
- package/dist/internal/eth/streaming.js.map +1 -0
- package/dist/internal/eth/version.d.ts +2 -0
- package/dist/internal/eth/version.d.ts.map +1 -0
- package/dist/internal/eth/version.js +3 -0
- package/dist/internal/eth/version.js.map +1 -0
- package/dist/internal/hww.d.ts +2 -0
- package/dist/internal/hww.d.ts.map +1 -0
- package/dist/internal/hww.js +240 -0
- package/dist/internal/hww.js.map +1 -0
- package/dist/internal/keypath.d.ts +4 -0
- package/dist/internal/keypath.d.ts.map +1 -0
- package/dist/internal/keypath.js +47 -0
- package/dist/internal/keypath.js.map +1 -0
- package/dist/internal/message-queue.d.ts +2 -0
- package/dist/internal/message-queue.d.ts.map +1 -0
- package/dist/internal/message-queue.js +29 -0
- package/dist/internal/message-queue.js.map +1 -0
- package/dist/internal/noise-config.d.ts +2 -0
- package/dist/internal/noise-config.d.ts.map +1 -0
- package/dist/internal/noise-config.js +160 -0
- package/dist/internal/noise-config.js.map +1 -0
- package/dist/internal/noise.d.ts +2 -0
- package/dist/internal/noise.d.ts.map +1 -0
- package/dist/internal/noise.js +270 -0
- package/dist/internal/noise.js.map +1 -0
- package/dist/internal/pairing.d.ts +2 -0
- package/dist/internal/pairing.d.ts.map +1 -0
- package/dist/internal/pairing.js +130 -0
- package/dist/internal/pairing.js.map +1 -0
- package/dist/internal/proto-query.d.ts +5 -0
- package/dist/internal/proto-query.d.ts.map +1 -0
- package/dist/internal/proto-query.js +28 -0
- package/dist/internal/proto-query.js.map +1 -0
- package/dist/internal/read-write.d.ts +2 -0
- package/dist/internal/read-write.d.ts.map +1 -0
- package/dist/internal/read-write.js +40 -0
- package/dist/internal/read-write.js.map +1 -0
- package/dist/internal/restore.d.ts +3 -0
- package/dist/internal/restore.d.ts.map +1 -0
- package/dist/internal/restore.js +27 -0
- package/dist/internal/restore.js.map +1 -0
- package/dist/internal/transport-bridge.d.ts +2 -0
- package/dist/internal/transport-bridge.d.ts.map +1 -0
- package/dist/internal/transport-bridge.js +97 -0
- package/dist/internal/transport-bridge.js.map +1 -0
- package/dist/internal/transport-simulator.d.ts +2 -0
- package/dist/internal/transport-simulator.d.ts.map +1 -0
- package/dist/internal/transport-simulator.js +83 -0
- package/dist/internal/transport-simulator.js.map +1 -0
- package/dist/internal/transport-webhid.d.ts +2 -0
- package/dist/internal/transport-webhid.d.ts.map +1 -0
- package/dist/internal/transport-webhid.js +69 -0
- package/dist/internal/transport-webhid.js.map +1 -0
- package/dist/internal/u2f-framing.d.ts +2 -0
- package/dist/internal/u2f-framing.d.ts.map +1 -0
- package/dist/internal/u2f-framing.js +155 -0
- package/dist/internal/u2f-framing.js.map +1 -0
- package/dist/internal/utils.d.ts +2 -0
- package/dist/internal/utils.d.ts.map +1 -0
- package/dist/internal/utils.js +90 -0
- package/dist/internal/utils.js.map +1 -0
- package/dist/internal/version.d.ts +8 -0
- package/dist/internal/version.d.ts.map +1 -0
- package/dist/internal/version.js +9 -0
- package/dist/internal/version.js.map +1 -0
- package/dist/proto/gen/antiklepto_pb.d.ts +49 -0
- package/dist/proto/gen/antiklepto_pb.d.ts.map +1 -0
- package/dist/proto/gen/antiklepto_pb.js +22 -0
- package/dist/proto/gen/antiklepto_pb.js.map +1 -0
- package/dist/proto/gen/backup_commands_pb.d.ts +124 -0
- package/dist/proto/gen/backup_commands_pb.d.ts.map +1 -0
- package/dist/proto/gen/backup_commands_pb.js +42 -0
- package/dist/proto/gen/backup_commands_pb.js.map +1 -0
- package/dist/proto/gen/backup_pb.d.ts +150 -0
- package/dist/proto/gen/backup_pb.d.ts.map +1 -0
- package/dist/proto/gen/backup_pb.js +46 -0
- package/dist/proto/gen/backup_pb.js.map +1 -0
- package/dist/proto/gen/bitbox02_system_pb.d.ts +207 -0
- package/dist/proto/gen/bitbox02_system_pb.d.ts.map +1 -0
- package/dist/proto/gen/bitbox02_system_pb.js +80 -0
- package/dist/proto/gen/bitbox02_system_pb.js.map +1 -0
- package/dist/proto/gen/bluetooth_pb.d.ts +135 -0
- package/dist/proto/gen/bluetooth_pb.d.ts.map +1 -0
- package/dist/proto/gen/bluetooth_pb.js +42 -0
- package/dist/proto/gen/bluetooth_pb.js.map +1 -0
- package/dist/proto/gen/btc_pb.d.ts +1166 -0
- package/dist/proto/gen/btc_pb.d.ts.map +1 -0
- package/dist/proto/gen/btc_pb.js +442 -0
- package/dist/proto/gen/btc_pb.js.map +1 -0
- package/dist/proto/gen/cardano_pb.d.ts +504 -0
- package/dist/proto/gen/cardano_pb.d.ts.map +1 -0
- package/dist/proto/gen/cardano_pb.js +142 -0
- package/dist/proto/gen/cardano_pb.js.map +1 -0
- package/dist/proto/gen/common_pb.d.ts +129 -0
- package/dist/proto/gen/common_pb.d.ts.map +1 -0
- package/dist/proto/gen/common_pb.js +42 -0
- package/dist/proto/gen/common_pb.js.map +1 -0
- package/dist/proto/gen/eth_pb.d.ts +662 -0
- package/dist/proto/gen/eth_pb.d.ts.map +1 -0
- package/dist/proto/gen/eth_pb.js +221 -0
- package/dist/proto/gen/eth_pb.js.map +1 -0
- package/dist/proto/gen/hww_pb.d.ts +349 -0
- package/dist/proto/gen/hww_pb.d.ts.map +1 -0
- package/dist/proto/gen/hww_pb.js +38 -0
- package/dist/proto/gen/hww_pb.js.map +1 -0
- package/dist/proto/gen/keystore_pb.d.ts +108 -0
- package/dist/proto/gen/keystore_pb.d.ts.map +1 -0
- package/dist/proto/gen/keystore_pb.js +33 -0
- package/dist/proto/gen/keystore_pb.js.map +1 -0
- package/dist/proto/gen/mnemonic_pb.d.ts +48 -0
- package/dist/proto/gen/mnemonic_pb.d.ts.map +1 -0
- package/dist/proto/gen/mnemonic_pb.js +22 -0
- package/dist/proto/gen/mnemonic_pb.js.map +1 -0
- package/dist/proto/gen/perform_attestation_pb.d.ts +57 -0
- package/dist/proto/gen/perform_attestation_pb.d.ts.map +1 -0
- package/dist/proto/gen/perform_attestation_pb.js +17 -0
- package/dist/proto/gen/perform_attestation_pb.js.map +1 -0
- package/dist/proto/gen/system_pb.d.ts +38 -0
- package/dist/proto/gen/system_pb.d.ts.map +1 -0
- package/dist/proto/gen/system_pb.js +30 -0
- package/dist/proto/gen/system_pb.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../src/internal/cardano/methods.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type CardanoRequest, type CardanoResponse } from '../../proto/gen/cardano_pb.js';
|
|
2
|
+
import type { EncryptedChannel } from '../pairing.js';
|
|
3
|
+
export declare function queryCardano(channel: EncryptedChannel, cardanoRequest: CardanoRequest['request']): Promise<CardanoResponse['response']>;
|
|
4
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/internal/cardano/query.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,wBAAsB,YAAY,CAChC,OAAO,EAAE,gBAAgB,EACzB,cAAc,EAAE,cAAc,CAAC,SAAS,CAAC,GACxC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAatC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { create } from '@bufbuild/protobuf';
|
|
3
|
+
import { CardanoRequestSchema, } from '../../proto/gen/cardano_pb.js';
|
|
4
|
+
import { RequestSchema, } from '../../proto/gen/hww_pb.js';
|
|
5
|
+
import { query, unexpectedResponse } from '../proto-query.js';
|
|
6
|
+
export async function queryCardano(channel, cardanoRequest) {
|
|
7
|
+
const cardanoReq = create(CardanoRequestSchema, { request: cardanoRequest });
|
|
8
|
+
const wrapped = create(RequestSchema, {
|
|
9
|
+
request: { case: 'cardano', value: cardanoReq },
|
|
10
|
+
});
|
|
11
|
+
const response = await query(channel, wrapped);
|
|
12
|
+
if (response.response.case !== 'cardano') {
|
|
13
|
+
throw unexpectedResponse();
|
|
14
|
+
}
|
|
15
|
+
if (response.response.value.response.case === undefined) {
|
|
16
|
+
throw unexpectedResponse('BitBox returned an empty Cardano response');
|
|
17
|
+
}
|
|
18
|
+
return response.response.value.response;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/internal/cardano/query.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,oBAAoB,GAGrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,GAEd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAyB,EACzB,cAAyC;IAEzC,MAAM,UAAU,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAY,MAAM,CAAC,aAAa,EAAE;QAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;KAChD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-simulator.d.ts","sourceRoot":"","sources":["../../src/internal/connect-simulator.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Node-only, test-only entry point. Lives in its own module so the simulator
|
|
3
|
+
// transport (which imports `node:net`) is never reachable from the main
|
|
4
|
+
// `index.ts` dependency graph. Browser bundlers (webpack, Rollup, Vite) walk
|
|
5
|
+
// the static `import` graph from the package main; nothing here is touched
|
|
6
|
+
// unless a consumer explicitly imports this file.
|
|
7
|
+
import { FIRMWARE_CMD } from './constants.js';
|
|
8
|
+
import { openSession } from './connect.js';
|
|
9
|
+
import { U2fHidCommunication } from './hww.js';
|
|
10
|
+
import { NoiseConfigNoCache } from './noise-config.js';
|
|
11
|
+
import { openSimulator } from './transport-simulator.js';
|
|
12
|
+
/** @internal */
|
|
13
|
+
export async function connectSimulator(endpoint, onCloseCb, config = new NoiseConfigNoCache()) {
|
|
14
|
+
const session = await openSession((closeCb) => openSimulator(endpoint, closeCb), (lower) => new U2fHidCommunication(lower, FIRMWARE_CMD), onCloseCb);
|
|
15
|
+
return { ...session, config };
|
|
16
|
+
}
|
|
17
|
+
/** @internal */
|
|
18
|
+
export async function probeSimulatorInfo(endpoint, onCloseCb) {
|
|
19
|
+
const session = await openSession((closeCb) => openSimulator(endpoint, closeCb), (lower) => new U2fHidCommunication(lower, FIRMWARE_CMD), onCloseCb);
|
|
20
|
+
return {
|
|
21
|
+
info: session.hww.info,
|
|
22
|
+
close: session.close,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=connect-simulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-simulator.js","sourceRoot":"","sources":["../../src/internal/connect-simulator.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,6EAA6E;AAC7E,wEAAwE;AACxE,6EAA6E;AAC7E,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAuB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAa,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAoB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAQzD,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAiB,EACjB,SAAsB,EACtB,SAAsB,IAAI,kBAAkB,EAAE;IAE9C,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,EACvD,SAAS,CACV,CAAC;IACF,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAiB,EACjB,SAAsB;IAEtB,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,EACvD,SAAS,CACV,CAAC;IACF,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/internal/connect.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { FIRMWARE_CMD } from './constants.js';
|
|
3
|
+
import { HwwCommunication, U2fHidCommunication, U2fWsCommunication } from './hww.js';
|
|
4
|
+
import { defaultNoiseConfig } from './noise-config.js';
|
|
5
|
+
import { openBridge } from './transport-bridge.js';
|
|
6
|
+
import { openWebHID } from './transport-webhid.js';
|
|
7
|
+
const createHwwDefault = (comm) => HwwCommunication.create(comm);
|
|
8
|
+
/** @internal */
|
|
9
|
+
export async function openSession(openLower, wrapCommunication, onCloseCb, createHww = createHwwDefault) {
|
|
10
|
+
let armed = false;
|
|
11
|
+
const lower = await openLower(() => {
|
|
12
|
+
if (armed) {
|
|
13
|
+
onCloseCb?.();
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
try {
|
|
17
|
+
const hww = await createHww(wrapCommunication(lower));
|
|
18
|
+
armed = true;
|
|
19
|
+
return {
|
|
20
|
+
hww,
|
|
21
|
+
close() {
|
|
22
|
+
lower.close();
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
try {
|
|
28
|
+
lower.close();
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Preserve the original startup error if cleanup itself fails.
|
|
32
|
+
}
|
|
33
|
+
throw err;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** @internal */
|
|
37
|
+
export async function connectWebHID(onCloseCb) {
|
|
38
|
+
const session = await openSession(openWebHID, (lower) => new U2fHidCommunication(lower, FIRMWARE_CMD), onCloseCb);
|
|
39
|
+
return { ...session, config: defaultNoiseConfig() };
|
|
40
|
+
}
|
|
41
|
+
/** @internal */
|
|
42
|
+
export async function connectBridge(onCloseCb) {
|
|
43
|
+
const session = await openSession(openBridge, (lower) => new U2fWsCommunication(lower, FIRMWARE_CMD), onCloseCb);
|
|
44
|
+
return { ...session, config: defaultNoiseConfig() };
|
|
45
|
+
}
|
|
46
|
+
/** @internal */
|
|
47
|
+
export function connectAuto(onCloseCb) {
|
|
48
|
+
const nav = globalThis.navigator;
|
|
49
|
+
if (nav?.hid !== undefined) {
|
|
50
|
+
return connectWebHID(onCloseCb);
|
|
51
|
+
}
|
|
52
|
+
return connectBridge(onCloseCb);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/internal/connect.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAyBnD,MAAM,gBAAgB,GAAc,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE5E,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAoB,EACpB,iBAAoC,EACpC,SAAsB,EACtB,YAAuB,gBAAgB;IAEvC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,EAAE,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,KAAK,GAAG,IAAI,CAAC;QACb,OAAO;YACL,GAAG;YACH,KAAK;gBACH,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAsB;IACxD,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,UAAU,EACV,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,EACvD,SAAS,CACV,CAAC;IACF,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAsB;IACxD,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,UAAU,EACV,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,EACtD,SAAS,CACV,CAAC;IACF,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,WAAW,CAAC,SAAsB;IAChD,MAAM,GAAG,GAAI,UAAgD,CAAC,SAAS,CAAC;IACxE,IAAI,GAAG,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/internal/constants.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/** @internal */
|
|
3
|
+
export const VENDOR_ID = 0x03eb;
|
|
4
|
+
/** @internal */
|
|
5
|
+
export const PRODUCT_ID = 0x2403;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const FIRMWARE_CMD = 0x80 | 0x40 | 0x01;
|
|
8
|
+
/** @internal */
|
|
9
|
+
export const BRIDGE_BASE_URL = 'http://127.0.0.1:8178/api/v1';
|
|
10
|
+
/** @internal */
|
|
11
|
+
export const BRIDGE_WS_BASE_URL = 'ws://127.0.0.1:8178/api/v1/socket/';
|
|
12
|
+
/** @internal */
|
|
13
|
+
export const SIMULATOR_DEFAULT_ENDPOINT = '127.0.0.1:15423';
|
|
14
|
+
/** @internal */
|
|
15
|
+
export const BITBOX02_PRODUCT_PREFIX = 'BitBox02';
|
|
16
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/internal/constants.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAChC,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAEjC,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAC9D,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,oCAAoC,CAAC;AAEvE,gBAAgB;AAChB,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AAE5D,gBAAgB;AAChB,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../index.js';
|
|
2
|
+
import type { EncryptedChannel } from './pairing.js';
|
|
3
|
+
export declare function deviceInfo(channel: EncryptedChannel): Promise<DeviceInfo>;
|
|
4
|
+
export declare function rootFingerprint(channel: EncryptedChannel): Promise<string>;
|
|
5
|
+
//# sourceMappingURL=device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/internal/device.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,wBAAsB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmB/E;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWhF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { create } from '@bufbuild/protobuf';
|
|
3
|
+
import { bytesToHex } from '@noble/hashes/utils';
|
|
4
|
+
import { DeviceInfoRequestSchema } from '../proto/gen/bitbox02_system_pb.js';
|
|
5
|
+
import { RootFingerprintRequestSchema } from '../proto/gen/common_pb.js';
|
|
6
|
+
import { RequestSchema } from '../proto/gen/hww_pb.js';
|
|
7
|
+
import { query, unexpectedResponse } from './proto-query.js';
|
|
8
|
+
export async function deviceInfo(channel) {
|
|
9
|
+
const response = await query(channel, create(RequestSchema, {
|
|
10
|
+
request: {
|
|
11
|
+
case: 'deviceInfo',
|
|
12
|
+
value: create(DeviceInfoRequestSchema),
|
|
13
|
+
},
|
|
14
|
+
}));
|
|
15
|
+
if (response.response.case !== 'deviceInfo') {
|
|
16
|
+
throw unexpectedResponse();
|
|
17
|
+
}
|
|
18
|
+
const value = response.response.value;
|
|
19
|
+
return {
|
|
20
|
+
name: value.name,
|
|
21
|
+
initialized: value.initialized,
|
|
22
|
+
version: value.version,
|
|
23
|
+
mnemonicPassphraseEnabled: value.mnemonicPassphraseEnabled,
|
|
24
|
+
securechipModel: value.securechipModel,
|
|
25
|
+
monotonicIncrementsRemaining: value.monotonicIncrementsRemaining,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export async function rootFingerprint(channel) {
|
|
29
|
+
const response = await query(channel, create(RequestSchema, {
|
|
30
|
+
request: {
|
|
31
|
+
case: 'fingerprint',
|
|
32
|
+
value: create(RootFingerprintRequestSchema),
|
|
33
|
+
},
|
|
34
|
+
}));
|
|
35
|
+
if (response.response.case !== 'fingerprint') {
|
|
36
|
+
throw unexpectedResponse();
|
|
37
|
+
}
|
|
38
|
+
return bytesToHex(response.response.value.fingerprint);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/internal/device.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAyB;IACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE;QAC1D,OAAO,EAAE;YACP,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,MAAM,CAAC,uBAAuB,CAAC;SACvC;KACF,CAAC,CAAC,CAAC;IACJ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC5C,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB;QAC1D,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,4BAA4B,EAAE,KAAK,CAAC,4BAA4B;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAyB;IAC7D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE;QAC1D,OAAO,EAAE;YACP,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,MAAM,CAAC,4BAA4B,CAAC;SAC5C;KACF,CAAC,CAAC,CAAC;IACJ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC7C,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// JS-side connection, parsing, and input-shape errors.
|
|
3
|
+
/** @internal */ export const CODE_UNKNOWN_JS = 'unknown-js';
|
|
4
|
+
/** @internal */ export const CODE_COULD_NOT_OPEN = 'could-not-open';
|
|
5
|
+
/** @internal */ export const CODE_USER_ABORT = 'user-abort';
|
|
6
|
+
/** @internal */ export const CODE_INVALID_TYPE = 'invalid-type';
|
|
7
|
+
/** @internal */ export const CODE_PSBT_PARSE = 'psbt-parse';
|
|
8
|
+
/** @internal */ export const CODE_CHAIN_ID_TOO_LARGE = 'chain-id-too-large';
|
|
9
|
+
// Core API errors shared by pairing, transport, and method implementations.
|
|
10
|
+
/** @internal */ export const CODE_UNKNOWN = 'unknown';
|
|
11
|
+
/** @internal */ export const CODE_VERSION = 'version';
|
|
12
|
+
/** @internal */ export const CODE_COMMUNICATION = 'communication';
|
|
13
|
+
/** @internal */ export const CODE_NOISE = 'noise';
|
|
14
|
+
/** @internal */ export const CODE_NOISE_CONFIG = 'noise-config';
|
|
15
|
+
/** @internal */ export const CODE_PAIRING_REJECTED = 'pairing-rejected';
|
|
16
|
+
/** @internal */ export const CODE_UNEXPECTED_RESPONSE = 'unexpected-response';
|
|
17
|
+
/** @internal */ export const CODE_PROTOBUF_DECODE = 'protobuf-decode';
|
|
18
|
+
/** @internal */ export const CODE_KEYPATH_PARSE = 'keypath-parse';
|
|
19
|
+
/** @internal */ export const CODE_ANTIKLEPTO = 'antiklepto';
|
|
20
|
+
/** @internal */ export const CODE_ETH_TYPED_MESSAGE = 'eth-typed-message';
|
|
21
|
+
/** @internal */ export const CODE_BTC_SIGN = 'btc-sign';
|
|
22
|
+
// Device-origin errors reported through protobuf responses.
|
|
23
|
+
/** @internal */ export const CODE_BITBOX_UNKNOWN = 'bitbox-unknown';
|
|
24
|
+
/** @internal */ export const CODE_BITBOX_INVALID_INPUT = 'bitbox-invalid-input';
|
|
25
|
+
/** @internal */ export const CODE_BITBOX_MEMORY = 'bitbox-memory';
|
|
26
|
+
/** @internal */ export const CODE_BITBOX_GENERIC = 'bitbox-generic';
|
|
27
|
+
/** @internal */ export const CODE_BITBOX_USER_ABORT = 'bitbox-user-abort';
|
|
28
|
+
/** @internal */ export const CODE_BITBOX_INVALID_STATE = 'bitbox-invalid-state';
|
|
29
|
+
/** @internal */ export const CODE_BITBOX_DISABLED = 'bitbox-disabled';
|
|
30
|
+
/** @internal */ export const CODE_BITBOX_DUPLICATE = 'bitbox-duplicate';
|
|
31
|
+
/** @internal */ export const CODE_BITBOX_NOISE_ENCRYPT = 'bitbox-noise-encrypt';
|
|
32
|
+
/** @internal */ export const CODE_BITBOX_NOISE_DECRYPT = 'bitbox-noise-decrypt';
|
|
33
|
+
// PSBT error codes kept here for the public error surface, even before BTC support lands.
|
|
34
|
+
/** @internal */ export const CODE_PSBT_SIGN_ERROR = 'psbt-sign-error';
|
|
35
|
+
/** @internal */ export const CODE_PSBT_KEY_NOT_UNIQUE = 'psbt-key-not-unique';
|
|
36
|
+
/** @internal */ export const CODE_PSBT_KEY_NOT_FOUND = 'psbt-key-not-found';
|
|
37
|
+
/** @internal */ export const CODE_PSBT_UNKNOWN_OUTPUT_TYPE = 'psbt-unknown-output-type';
|
|
38
|
+
/** @internal */ export const CODE_PSBT_INVALID_OP_RETURN = 'psbt-invalid-op-return';
|
|
39
|
+
// TS compatibility codes for methods or lifecycle states without a device roundtrip.
|
|
40
|
+
/** @internal */ export const CODE_UNSUPPORTED = 'unsupported';
|
|
41
|
+
/** @internal */ export const CODE_NOT_IMPLEMENTED = 'not-implemented';
|
|
42
|
+
/** @internal */ export const CODE_INVALID_STATE = 'invalid-state';
|
|
43
|
+
// Device protobuf messages are ignored; the numeric code selects the stable public message.
|
|
44
|
+
/** @internal */
|
|
45
|
+
export const DEVICE_ERROR_TABLE = {
|
|
46
|
+
101: { code: CODE_BITBOX_INVALID_INPUT, message: 'bitbox error: invalid input' },
|
|
47
|
+
102: { code: CODE_BITBOX_MEMORY, message: 'bitbox error: memory' },
|
|
48
|
+
103: { code: CODE_BITBOX_GENERIC, message: 'bitbox error: generic error' },
|
|
49
|
+
104: { code: CODE_BITBOX_USER_ABORT, message: 'bitbox error: aborted by the user' },
|
|
50
|
+
105: { code: CODE_BITBOX_INVALID_STATE, message: "bitbox error: can't call this endpoint: wrong state" },
|
|
51
|
+
106: { code: CODE_BITBOX_DISABLED, message: 'bitbox error: function disabled' },
|
|
52
|
+
107: { code: CODE_BITBOX_DUPLICATE, message: 'bitbox error: duplicate entry' },
|
|
53
|
+
108: { code: CODE_BITBOX_NOISE_ENCRYPT, message: 'bitbox error: noise encryption failed' },
|
|
54
|
+
109: { code: CODE_BITBOX_NOISE_DECRYPT, message: 'bitbox error: noise decryption failed' },
|
|
55
|
+
};
|
|
56
|
+
/** @internal */
|
|
57
|
+
export const DEVICE_UNKNOWN = {
|
|
58
|
+
code: CODE_BITBOX_UNKNOWN,
|
|
59
|
+
message: 'bitbox error: error code not recognized',
|
|
60
|
+
};
|
|
61
|
+
/** @internal */
|
|
62
|
+
export function deviceErrorFor(protobufCode) {
|
|
63
|
+
return DEVICE_ERROR_TABLE[protobufCode] ?? DEVICE_UNKNOWN;
|
|
64
|
+
}
|
|
65
|
+
// Factories for public messages with runtime details.
|
|
66
|
+
/** @internal */
|
|
67
|
+
export function makeError(code, message) {
|
|
68
|
+
const err = new Error(message);
|
|
69
|
+
// Error.message is non-enumerable by default, so JSON serialization and
|
|
70
|
+
// Chrome extension message boundaries would otherwise drop it. Keep typed
|
|
71
|
+
// errors Error-like while preserving the public { code, message } shape.
|
|
72
|
+
Object.defineProperty(err, 'message', {
|
|
73
|
+
value: message,
|
|
74
|
+
enumerable: true,
|
|
75
|
+
configurable: true,
|
|
76
|
+
writable: true,
|
|
77
|
+
});
|
|
78
|
+
err.code = code;
|
|
79
|
+
return err;
|
|
80
|
+
}
|
|
81
|
+
/** @internal */
|
|
82
|
+
export function versionError(requirement) {
|
|
83
|
+
return makeError(CODE_VERSION, `firmware version ${requirement} required`);
|
|
84
|
+
}
|
|
85
|
+
/** @internal */
|
|
86
|
+
export function communicationError(detail) {
|
|
87
|
+
return makeError(CODE_COMMUNICATION, `communication error: ${detail}`);
|
|
88
|
+
}
|
|
89
|
+
/** @internal */
|
|
90
|
+
export function noiseConfigError(detail) {
|
|
91
|
+
return makeError(CODE_NOISE_CONFIG, `noise config error: ${detail}`);
|
|
92
|
+
}
|
|
93
|
+
/** @internal */
|
|
94
|
+
export function keypathParseError(input) {
|
|
95
|
+
return makeError(CODE_KEYPATH_PARSE, `failed parsing keypath: ${input}`);
|
|
96
|
+
}
|
|
97
|
+
/** @internal */
|
|
98
|
+
export function antikleptoError(detail) {
|
|
99
|
+
return makeError(CODE_ANTIKLEPTO, `Antiklepto verification failed: ${detail}`);
|
|
100
|
+
}
|
|
101
|
+
/** @internal */
|
|
102
|
+
export function ethTypedMessageError(detail) {
|
|
103
|
+
return makeError(CODE_ETH_TYPED_MESSAGE, `EIP-712 typed message processing error: ${detail}`);
|
|
104
|
+
}
|
|
105
|
+
/** @internal */
|
|
106
|
+
export function chainIdTooLargeError(chainId) {
|
|
107
|
+
return makeError(CODE_CHAIN_ID_TOO_LARGE, `Chain ID too large and would overflow in the computation of the \`v\` signature value: ${chainId}`);
|
|
108
|
+
}
|
|
109
|
+
/** @internal */
|
|
110
|
+
export function invalidTypeError(detail) {
|
|
111
|
+
return makeError(CODE_INVALID_TYPE, `invalid JavaScript type: ${detail}`);
|
|
112
|
+
}
|
|
113
|
+
/** @internal */
|
|
114
|
+
export function couldNotOpenWebHID() {
|
|
115
|
+
return makeError(CODE_COULD_NOT_OPEN, 'Could not open device. It might already have an open connection to another app. If so, please close the other app first.');
|
|
116
|
+
}
|
|
117
|
+
/** @internal */
|
|
118
|
+
export function couldNotOpenBridge(detail) {
|
|
119
|
+
return makeError(CODE_COULD_NOT_OPEN, `Could not open device. ${detail}`);
|
|
120
|
+
}
|
|
121
|
+
/** @internal */
|
|
122
|
+
export function userAbortConnect() {
|
|
123
|
+
return makeError(CODE_USER_ABORT, 'connection aborted by user');
|
|
124
|
+
}
|
|
125
|
+
/** @internal */
|
|
126
|
+
export function unknownJs(err) {
|
|
127
|
+
const e = makeError(CODE_UNKNOWN_JS, 'Unknown Javascript error');
|
|
128
|
+
e.err = err;
|
|
129
|
+
return e;
|
|
130
|
+
}
|
|
131
|
+
// Codes that can already cross the public boundary unchanged.
|
|
132
|
+
const TYPED_PUBLIC_CODES = new Set([
|
|
133
|
+
CODE_UNKNOWN_JS,
|
|
134
|
+
CODE_COULD_NOT_OPEN,
|
|
135
|
+
CODE_USER_ABORT,
|
|
136
|
+
CODE_INVALID_TYPE,
|
|
137
|
+
CODE_PSBT_PARSE,
|
|
138
|
+
CODE_CHAIN_ID_TOO_LARGE,
|
|
139
|
+
CODE_UNKNOWN,
|
|
140
|
+
CODE_VERSION,
|
|
141
|
+
CODE_COMMUNICATION,
|
|
142
|
+
CODE_NOISE_CONFIG,
|
|
143
|
+
CODE_PROTOBUF_DECODE,
|
|
144
|
+
CODE_KEYPATH_PARSE,
|
|
145
|
+
CODE_ANTIKLEPTO,
|
|
146
|
+
CODE_ETH_TYPED_MESSAGE,
|
|
147
|
+
CODE_BTC_SIGN,
|
|
148
|
+
CODE_BITBOX_UNKNOWN,
|
|
149
|
+
CODE_BITBOX_INVALID_INPUT,
|
|
150
|
+
CODE_BITBOX_MEMORY,
|
|
151
|
+
CODE_BITBOX_GENERIC,
|
|
152
|
+
CODE_BITBOX_USER_ABORT,
|
|
153
|
+
CODE_BITBOX_INVALID_STATE,
|
|
154
|
+
CODE_BITBOX_DISABLED,
|
|
155
|
+
CODE_BITBOX_DUPLICATE,
|
|
156
|
+
CODE_BITBOX_NOISE_ENCRYPT,
|
|
157
|
+
CODE_BITBOX_NOISE_DECRYPT,
|
|
158
|
+
CODE_PSBT_SIGN_ERROR,
|
|
159
|
+
CODE_PSBT_KEY_NOT_UNIQUE,
|
|
160
|
+
CODE_PSBT_KEY_NOT_FOUND,
|
|
161
|
+
CODE_PSBT_UNKNOWN_OUTPUT_TYPE,
|
|
162
|
+
CODE_PSBT_INVALID_OP_RETURN,
|
|
163
|
+
CODE_UNSUPPORTED,
|
|
164
|
+
CODE_NOT_IMPLEMENTED,
|
|
165
|
+
CODE_INVALID_STATE,
|
|
166
|
+
]);
|
|
167
|
+
function isTypedShape(err) {
|
|
168
|
+
return (err !== null &&
|
|
169
|
+
typeof err === 'object' &&
|
|
170
|
+
typeof err.code === 'string' &&
|
|
171
|
+
typeof err.message === 'string');
|
|
172
|
+
}
|
|
173
|
+
// Public API entry points use this to collapse internal transport/protocol details.
|
|
174
|
+
/** @internal */
|
|
175
|
+
export function toPublicError(err) {
|
|
176
|
+
if (!isTypedShape(err)) {
|
|
177
|
+
return unknownJs(err);
|
|
178
|
+
}
|
|
179
|
+
const { code, message } = err;
|
|
180
|
+
if (code === CODE_NOISE) {
|
|
181
|
+
return makeError(CODE_NOISE, 'noise channel error');
|
|
182
|
+
}
|
|
183
|
+
if (code === CODE_UNEXPECTED_RESPONSE) {
|
|
184
|
+
return makeError(CODE_UNEXPECTED_RESPONSE, 'BitBox returned an unexpected response');
|
|
185
|
+
}
|
|
186
|
+
if (code === CODE_PAIRING_REJECTED) {
|
|
187
|
+
return makeError(CODE_PAIRING_REJECTED, 'pairing code rejected by user');
|
|
188
|
+
}
|
|
189
|
+
if (TYPED_PUBLIC_CODES.has(code)) {
|
|
190
|
+
return err;
|
|
191
|
+
}
|
|
192
|
+
switch (code) {
|
|
193
|
+
case 'webhid-cancel':
|
|
194
|
+
return userAbortConnect();
|
|
195
|
+
case 'webhid':
|
|
196
|
+
case 'simulator':
|
|
197
|
+
return couldNotOpenWebHID();
|
|
198
|
+
case 'bridge':
|
|
199
|
+
return couldNotOpenBridge(message);
|
|
200
|
+
case 'write':
|
|
201
|
+
return communicationError('write error');
|
|
202
|
+
case 'read':
|
|
203
|
+
return communicationError('read error');
|
|
204
|
+
case 'u2f-decode':
|
|
205
|
+
return communicationError('u2f framing decoding error');
|
|
206
|
+
case 'info':
|
|
207
|
+
return communicationError('error querying device info');
|
|
208
|
+
case 'noise-pairing-rejected':
|
|
209
|
+
return makeError(CODE_PAIRING_REJECTED, 'pairing code rejected by user');
|
|
210
|
+
}
|
|
211
|
+
return unknownJs(err);
|
|
212
|
+
}
|
|
213
|
+
/** @internal */
|
|
214
|
+
export function ensureTyped(err) {
|
|
215
|
+
if (isTypedShape(err)) {
|
|
216
|
+
return err;
|
|
217
|
+
}
|
|
218
|
+
return unknownJs(err);
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function genHostNonce(): Uint8Array;
|
|
2
|
+
export declare function taggedSha256(tag: Uint8Array, msg: Uint8Array): Uint8Array;
|
|
3
|
+
export declare function hostCommit(hostNonce: Uint8Array): Uint8Array;
|
|
4
|
+
export declare function verifyEcdsa(hostNonce: Uint8Array, signerCommitment: Uint8Array, signature: Uint8Array): void;
|
|
5
|
+
//# sourceMappingURL=antiklepto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antiklepto.d.ts","sourceRoot":"","sources":["../../../src/internal/eth/antiklepto.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,IAAI,UAAU,CAQzC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAGzE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAE5D;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,UAAU,EACrB,gBAAgB,EAAE,UAAU,EAC5B,SAAS,EAAE,UAAU,GACpB,IAAI,CA8BN"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { secp256k1 } from '@noble/curves/secp256k1';
|
|
3
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
4
|
+
import { antikleptoError } from '../errors.js';
|
|
5
|
+
import { bytesToBigIntBE, concatBytes, utf8ToBytes } from '../utils.js';
|
|
6
|
+
const HOST_COMMIT_TAG = utf8ToBytes('s2c/ecdsa/data');
|
|
7
|
+
const POINT_TWEAK_TAG = utf8ToBytes('s2c/ecdsa/point');
|
|
8
|
+
const VERIFICATION_FAILED_MESSAGE = 'Could not verify that the host nonce was contributed to the signature. If this happens repeatedly, the device might be attempting to leak the seed through the signature.';
|
|
9
|
+
export function genHostNonce() {
|
|
10
|
+
const out = new Uint8Array(32);
|
|
11
|
+
try {
|
|
12
|
+
globalThis.crypto.getRandomValues(out);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw antikleptoError('Failed generating antiklepto host nonce');
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
export function taggedSha256(tag, msg) {
|
|
20
|
+
const tagHash = sha256(tag);
|
|
21
|
+
return sha256(concatBytes(tagHash, tagHash, msg));
|
|
22
|
+
}
|
|
23
|
+
export function hostCommit(hostNonce) {
|
|
24
|
+
return taggedSha256(HOST_COMMIT_TAG, hostNonce);
|
|
25
|
+
}
|
|
26
|
+
export function verifyEcdsa(hostNonce, signerCommitment, signature) {
|
|
27
|
+
if (signature.length !== 65) {
|
|
28
|
+
throw antikleptoError('signature must be 65 bytes');
|
|
29
|
+
}
|
|
30
|
+
let point;
|
|
31
|
+
try {
|
|
32
|
+
point = secp256k1.ProjectivePoint.fromHex(signerCommitment);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw antikleptoError('failed to parse signer commitment');
|
|
36
|
+
}
|
|
37
|
+
const compressed = point.toRawBytes(true);
|
|
38
|
+
const tweak = taggedSha256(POINT_TWEAK_TAG, concatBytes(compressed, hostNonce));
|
|
39
|
+
const tweakBig = bytesToBigIntBE(tweak);
|
|
40
|
+
if (tweakBig === 0n || tweakBig >= secp256k1.CURVE.n) {
|
|
41
|
+
throw antikleptoError('tweak is an invalid scalar');
|
|
42
|
+
}
|
|
43
|
+
let tweaked;
|
|
44
|
+
try {
|
|
45
|
+
tweaked = point.add(secp256k1.ProjectivePoint.BASE.multiply(tweakBig));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw antikleptoError('failed to apply tweak');
|
|
49
|
+
}
|
|
50
|
+
const uncompressed = tweaked.toRawBytes(false);
|
|
51
|
+
const xCoord = uncompressed.subarray(1, 33);
|
|
52
|
+
const sigR = signature.subarray(0, 32);
|
|
53
|
+
for (let i = 0; i < 32; i += 1) {
|
|
54
|
+
if (xCoord[i] !== sigR[i]) {
|
|
55
|
+
throw antikleptoError(VERIFICATION_FAILED_MESSAGE);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=antiklepto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antiklepto.js","sourceRoot":"","sources":["../../../src/internal/eth/antiklepto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ETHSignTypedMessageRequest_DataType as DataType, type ETHSignTypedMessageRequest_MemberType, type ETHSignTypedMessageRequest_StructType, type ETHTypedMessageValueResponse } from '../../proto/gen/eth_pb.js';
|
|
2
|
+
export { DataType };
|
|
3
|
+
export declare class TypedMessageError extends Error {
|
|
4
|
+
readonly code = "eth-typed-message";
|
|
5
|
+
constructor(detail: string);
|
|
6
|
+
}
|
|
7
|
+
export interface Eip712TypeMember {
|
|
8
|
+
name: string;
|
|
9
|
+
type: string;
|
|
10
|
+
}
|
|
11
|
+
export interface Eip712Message {
|
|
12
|
+
types: Record<string, Eip712TypeMember[]>;
|
|
13
|
+
primaryType: string;
|
|
14
|
+
domain: Record<string, unknown>;
|
|
15
|
+
message: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export declare function parseEip712Message(input: unknown): Eip712Message;
|
|
18
|
+
export declare function parseType(typ: string, types: Record<string, Eip712TypeMember[]>): ETHSignTypedMessageRequest_MemberType;
|
|
19
|
+
export declare function buildStructTypes(types: Record<string, Eip712TypeMember[]>): ETHSignTypedMessageRequest_StructType[];
|
|
20
|
+
export declare function encodeValue(typ: ETHSignTypedMessageRequest_MemberType, value: unknown): Uint8Array;
|
|
21
|
+
export declare function getValue(what: ETHTypedMessageValueResponse, msg: Eip712Message): {
|
|
22
|
+
value: Uint8Array;
|
|
23
|
+
dataType: DataType;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=eip712.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712.d.ts","sourceRoot":"","sources":["../../../src/internal/eth/eip712.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,mCAAmC,IAAI,QAAQ,EAM/C,KAAK,qCAAqC,EAC1C,KAAK,qCAAqC,EAC1C,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AASnC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,uBAAuB;gBACxB,MAAM,EAAE,MAAM;CAG3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAyBD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAahE;AAgBD,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,GACxC,qCAAqC,CAgEvC;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,GACxC,qCAAqC,EAAE,CAazC;AA0DD,wBAAgB,WAAW,CACzB,GAAG,EAAE,qCAAqC,EAC1C,KAAK,EAAE,OAAO,GACb,UAAU,CAoDZ;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,4BAA4B,EAClC,GAAG,EAAE,aAAa,GACjB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAkE3C"}
|