@astrox/identity-ledgerhq 0.0.16 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +5 -5
- package/lib/cjs/identity/ledger.d.ts +0 -24
- package/lib/cjs/identity/ledger.js +0 -113
- package/lib/cjs/identity/ledger.js.map +0 -1
- package/lib/cjs/identity/secp256k1.d.ts +0 -14
- package/lib/cjs/identity/secp256k1.js +0 -75
- package/lib/cjs/identity/secp256k1.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -2
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/index.js.map +0 -1
- package/lib/esm/identity/ledger.d.ts +0 -24
- package/lib/esm/identity/ledger.js +0 -87
- package/lib/esm/identity/ledger.js.map +0 -1
- package/lib/esm/identity/secp256k1.d.ts +0 -14
- package/lib/esm/identity/secp256k1.js +0 -71
- package/lib/esm/identity/secp256k1.js.map +0 -1
- package/lib/esm/index.d.ts +0 -2
- package/lib/esm/index.js +0 -3
- package/lib/esm/index.js.map +0 -1
- package/lib/tsconfig-cjs.tsbuildinfo +0 -2442
- package/lib/tsconfig.tsbuildinfo +0 -2441
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@astrox/identity-ledgerhq",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.24",
|
4
4
|
"author": "DFINITY Stiftung <sdk@astrox.org>",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"description": "JavaScript and TypeScript library to manage identity and authentication with the Internet Computer",
|
@@ -42,9 +42,9 @@
|
|
42
42
|
"test:coverage": "jest --verbose --collectCoverage"
|
43
43
|
},
|
44
44
|
"dependencies": {
|
45
|
-
"@astrox/agent": "^0.0.
|
46
|
-
"@astrox/identity": "^0.0.
|
47
|
-
"@astrox/principal": "^0.0.
|
45
|
+
"@astrox/agent": "^0.0.24",
|
46
|
+
"@astrox/identity": "^0.0.24",
|
47
|
+
"@astrox/principal": "^0.0.24",
|
48
48
|
"@ledgerhq/hw-transport": "^5.49.0",
|
49
49
|
"@ledgerhq/hw-transport-webhid": "^5.49.0",
|
50
50
|
"@zondax/ledger-dfinity": "0.2.1",
|
@@ -68,5 +68,5 @@
|
|
68
68
|
"typescript": "^4.2.3",
|
69
69
|
"whatwg-fetch": "^3.0.0"
|
70
70
|
},
|
71
|
-
"gitHead": "
|
71
|
+
"gitHead": "d30a12d7f9c700aff21fea4a3e9909fbf86dbce2"
|
72
72
|
}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import { HttpAgentRequest, PublicKey, Signature, SignIdentity } from '@astrox/agent';
|
2
|
-
/**
|
3
|
-
* A Hardware Ledger Internet Computer Agent identity.
|
4
|
-
*/
|
5
|
-
export declare class LedgerIdentity extends SignIdentity {
|
6
|
-
private readonly _app;
|
7
|
-
readonly derivePath: string;
|
8
|
-
private readonly _publicKey;
|
9
|
-
private readonly _address;
|
10
|
-
/**
|
11
|
-
* Create a LedgerIdentity using the Web USB transport.
|
12
|
-
* @param derivePath The derivation path.
|
13
|
-
*/
|
14
|
-
static create(derivePath?: string): Promise<LedgerIdentity>;
|
15
|
-
private constructor();
|
16
|
-
/**
|
17
|
-
* Required by Ledger.com that the user should be able to press a Button in UI
|
18
|
-
* and verify the address/pubkey are the same as on the device screen.
|
19
|
-
*/
|
20
|
-
showAddressAndPubKeyOnDevice(): Promise<void>;
|
21
|
-
getPublicKey(): PublicKey;
|
22
|
-
sign(blob: ArrayBuffer): Promise<Signature>;
|
23
|
-
transformRequest(request: HttpAgentRequest): Promise<unknown>;
|
24
|
-
}
|
@@ -1,113 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
-
}) : (function(o, m, k, k2) {
|
6
|
-
if (k2 === undefined) k2 = k;
|
7
|
-
o[k2] = m[k];
|
8
|
-
}));
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
11
|
-
}) : function(o, v) {
|
12
|
-
o["default"] = v;
|
13
|
-
});
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
15
|
-
if (mod && mod.__esModule) return mod;
|
16
|
-
var result = {};
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
18
|
-
__setModuleDefault(result, mod);
|
19
|
-
return result;
|
20
|
-
};
|
21
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
22
|
-
var t = {};
|
23
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
24
|
-
t[p] = s[p];
|
25
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
26
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
27
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
28
|
-
t[p[i]] = s[p[i]];
|
29
|
-
}
|
30
|
-
return t;
|
31
|
-
};
|
32
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
33
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
34
|
-
};
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
36
|
-
exports.LedgerIdentity = void 0;
|
37
|
-
const agent_1 = require("@astrox/agent");
|
38
|
-
const principal_1 = require("@astrox/principal");
|
39
|
-
const ledger_dfinity_1 = __importDefault(require("@zondax/ledger-dfinity"));
|
40
|
-
const buffer_1 = require("buffer/");
|
41
|
-
const secp256k1_1 = require("./secp256k1");
|
42
|
-
/**
|
43
|
-
* Convert the HttpAgentRequest body into cbor which can be signed by the Ledger Hardware Wallet.
|
44
|
-
* @param request - body of the HttpAgentRequest
|
45
|
-
*/
|
46
|
-
function _prepareCborForLedger(request) {
|
47
|
-
return agent_1.Cbor.encode({ content: request });
|
48
|
-
}
|
49
|
-
/**
|
50
|
-
* A Hardware Ledger Internet Computer Agent identity.
|
51
|
-
*/
|
52
|
-
class LedgerIdentity extends agent_1.SignIdentity {
|
53
|
-
constructor(_app, derivePath, _publicKey, _address) {
|
54
|
-
super();
|
55
|
-
this._app = _app;
|
56
|
-
this.derivePath = derivePath;
|
57
|
-
this._publicKey = _publicKey;
|
58
|
-
this._address = _address;
|
59
|
-
}
|
60
|
-
/**
|
61
|
-
* Create a LedgerIdentity using the Web USB transport.
|
62
|
-
* @param derivePath The derivation path.
|
63
|
-
*/
|
64
|
-
static async create(derivePath = `m/44'/223'/0'/0/0`) {
|
65
|
-
const TransportClass = (await Promise.resolve().then(() => __importStar(require('@ledgerhq/hw-transport-webhid')))).default;
|
66
|
-
const transport = await TransportClass.create();
|
67
|
-
const app = new ledger_dfinity_1.default(transport);
|
68
|
-
const resp = await app.getAddressAndPubKey(derivePath);
|
69
|
-
// This type doesn't have the right fields in it, so we have to manually type it.
|
70
|
-
const principal = resp.principalText;
|
71
|
-
const publicKey = secp256k1_1.Secp256k1PublicKey.fromRaw(resp.publicKey);
|
72
|
-
const address = resp.address;
|
73
|
-
if (principal !== principal_1.Principal.selfAuthenticating(new Uint8Array(publicKey.toDer())).toText()) {
|
74
|
-
throw new Error('Principal returned by device does not match public key.');
|
75
|
-
}
|
76
|
-
return new this(app, derivePath, publicKey, address.buffer);
|
77
|
-
}
|
78
|
-
/**
|
79
|
-
* Required by Ledger.com that the user should be able to press a Button in UI
|
80
|
-
* and verify the address/pubkey are the same as on the device screen.
|
81
|
-
*/
|
82
|
-
async showAddressAndPubKeyOnDevice() {
|
83
|
-
await this._app.showAddressAndPubKey(this.derivePath);
|
84
|
-
}
|
85
|
-
getPublicKey() {
|
86
|
-
return this._publicKey;
|
87
|
-
}
|
88
|
-
async sign(blob) {
|
89
|
-
// Force an `as any` because the types are compatible but TypeScript cannot figure it out.
|
90
|
-
const resp = await this._app.sign(this.derivePath, buffer_1.Buffer.from(blob));
|
91
|
-
const signatureRS = resp.signatureRS;
|
92
|
-
if (!signatureRS) {
|
93
|
-
throw new Error(`A ledger error happened during signature:\n` +
|
94
|
-
`Code: ${resp.returnCode}\n` +
|
95
|
-
`Message: ${JSON.stringify(resp.errorMessage)}\n`);
|
96
|
-
}
|
97
|
-
if ((signatureRS === null || signatureRS === void 0 ? void 0 : signatureRS.byteLength) !== 64) {
|
98
|
-
throw new Error(`Signature must be 64 bytes long (is ${signatureRS.length})`);
|
99
|
-
}
|
100
|
-
return signatureRS.buffer;
|
101
|
-
}
|
102
|
-
async transformRequest(request) {
|
103
|
-
const { body } = request, fields = __rest(request, ["body"]);
|
104
|
-
const signature = await this.sign(_prepareCborForLedger(body));
|
105
|
-
return Object.assign(Object.assign({}, fields), { body: {
|
106
|
-
content: body,
|
107
|
-
sender_pubkey: this._publicKey.toDer(),
|
108
|
-
sender_sig: signature,
|
109
|
-
} });
|
110
|
-
}
|
111
|
-
}
|
112
|
-
exports.LedgerIdentity = LedgerIdentity;
|
113
|
-
//# sourceMappingURL=ledger.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/identity/ledger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAQuB;AACvB,iDAA8C;AAC9C,4EAAkE;AAClE,oCAAiC;AACjC,2CAAiD;AAEjD;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAAkC;IAC/D,OAAO,YAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,oBAAY;IAuB9C,YACmB,IAAgB,EACjB,UAAkB,EACjB,UAA8B,EAC9B,QAAqB;QAEtC,KAAK,EAAE,CAAC;QALS,SAAI,GAAJ,IAAI,CAAY;QACjB,eAAU,GAAV,UAAU,CAAQ;QACjB,eAAU,GAAV,UAAU,CAAoB;QAC9B,aAAQ,GAAR,QAAQ,CAAa;IAGxC,CAAC;IA7BD;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,mBAAmB;QACzD,MAAM,cAAc,GAAG,CAAC,wDAAa,+BAA+B,GAAC,CAAC,CAAC,OAAO,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,wBAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACvD,iFAAiF;QACjF,MAAM,SAAS,GAAI,IAA6C,CAAC,aAAa,CAAC;QAC/E,MAAM,SAAS,GAAG,8BAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,IAAI,SAAS,KAAK,qBAAS,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1F,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;SAC5E;QAED,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAWD;;;OAGG;IACI,KAAK,CAAC,4BAA4B;QACvC,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAiB;QACjC,0FAA0F;QAC1F,MAAM,IAAI,GAAiB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAM,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CACb,6CAA6C;gBAC3C,SAAS,IAAI,CAAC,UAAU,IAAI;gBAC5B,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CACpD,CAAC;SACH;QAED,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,MAAK,EAAE,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/E;QAED,OAAO,WAAW,CAAC,MAAmB,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,OAAyB;QACrD,MAAM,EAAE,IAAI,KAAgB,OAAO,EAAlB,MAAM,UAAK,OAAO,EAA7B,QAAmB,CAAU,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,uCACK,MAAM,KACT,IAAI,EAAE;gBACJ,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;gBACtC,UAAU,EAAE,SAAS;aACtB,IACD;IACJ,CAAC;CACF;AA3ED,wCA2EC"}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { DerEncodedPublicKey, PublicKey } from '@astrox/agent';
|
2
|
-
export declare class Secp256k1PublicKey implements PublicKey {
|
3
|
-
static fromRaw(rawKey: ArrayBuffer): Secp256k1PublicKey;
|
4
|
-
static fromDer(derKey: DerEncodedPublicKey): Secp256k1PublicKey;
|
5
|
-
private static RAW_KEY_LENGTH;
|
6
|
-
private static DER_PREFIX;
|
7
|
-
static derEncode(publicKey: ArrayBuffer): DerEncodedPublicKey;
|
8
|
-
static derDecode(key: DerEncodedPublicKey): ArrayBuffer;
|
9
|
-
private readonly rawKey;
|
10
|
-
private readonly derKey;
|
11
|
-
private constructor();
|
12
|
-
toDer(): DerEncodedPublicKey;
|
13
|
-
toRaw(): ArrayBuffer;
|
14
|
-
}
|
@@ -1,75 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.Secp256k1PublicKey = void 0;
|
4
|
-
function equals(b1, b2) {
|
5
|
-
if (b1.byteLength !== b2.byteLength) {
|
6
|
-
return false;
|
7
|
-
}
|
8
|
-
const u1 = new Uint8Array(b1);
|
9
|
-
const u2 = new Uint8Array(b2);
|
10
|
-
for (let i = 0; i < u1.length; i++) {
|
11
|
-
if (u1[i] !== u2[i]) {
|
12
|
-
return false;
|
13
|
-
}
|
14
|
-
}
|
15
|
-
return true;
|
16
|
-
}
|
17
|
-
// This implementation is adjusted from the Ed25519PublicKey.
|
18
|
-
// The RAW_KEY_LENGTH and DER_PREFIX are modified accordingly
|
19
|
-
class Secp256k1PublicKey {
|
20
|
-
// `fromRaw` and `fromDer` should be used for instantiation, not this constructor.
|
21
|
-
constructor(key) {
|
22
|
-
this.rawKey = key;
|
23
|
-
this.derKey = Secp256k1PublicKey.derEncode(key);
|
24
|
-
}
|
25
|
-
static fromRaw(rawKey) {
|
26
|
-
return new Secp256k1PublicKey(rawKey);
|
27
|
-
}
|
28
|
-
static fromDer(derKey) {
|
29
|
-
return new Secp256k1PublicKey(this.derDecode(derKey));
|
30
|
-
}
|
31
|
-
static derEncode(publicKey) {
|
32
|
-
if (publicKey.byteLength !== Secp256k1PublicKey.RAW_KEY_LENGTH) {
|
33
|
-
const bl = publicKey.byteLength;
|
34
|
-
throw new TypeError(`secp256k1 public key must be ${Secp256k1PublicKey.RAW_KEY_LENGTH} bytes long (is ${bl})`);
|
35
|
-
}
|
36
|
-
const derPublicKey = Uint8Array.from([
|
37
|
-
...Secp256k1PublicKey.DER_PREFIX,
|
38
|
-
...new Uint8Array(publicKey),
|
39
|
-
]);
|
40
|
-
return derPublicKey.buffer;
|
41
|
-
}
|
42
|
-
static derDecode(key) {
|
43
|
-
const expectedLength = Secp256k1PublicKey.DER_PREFIX.length + Secp256k1PublicKey.RAW_KEY_LENGTH;
|
44
|
-
if (key.byteLength !== expectedLength) {
|
45
|
-
const bl = key.byteLength;
|
46
|
-
throw new TypeError(`secp256k1 DER-encoded public key must be ${expectedLength} bytes long (is ${bl})`);
|
47
|
-
}
|
48
|
-
const rawKey = key.slice(0, Secp256k1PublicKey.DER_PREFIX.length);
|
49
|
-
if (!equals(this.derEncode(rawKey), key)) {
|
50
|
-
throw new TypeError('secp256k1 DER-encoded public key is invalid. A valid secp256k1 DER-encoded public key ' +
|
51
|
-
`must have the following prefix: ${Secp256k1PublicKey.DER_PREFIX}`);
|
52
|
-
}
|
53
|
-
return rawKey;
|
54
|
-
}
|
55
|
-
toDer() {
|
56
|
-
return this.derKey;
|
57
|
-
}
|
58
|
-
toRaw() {
|
59
|
-
return this.rawKey;
|
60
|
-
}
|
61
|
-
}
|
62
|
-
exports.Secp256k1PublicKey = Secp256k1PublicKey;
|
63
|
-
// The length of secp256k1 public keys is always 65 bytes.
|
64
|
-
Secp256k1PublicKey.RAW_KEY_LENGTH = 65;
|
65
|
-
// Adding this prefix to a raw public key is sufficient to DER-encode it.
|
66
|
-
// prettier-ignore
|
67
|
-
Secp256k1PublicKey.DER_PREFIX = Uint8Array.from([
|
68
|
-
0x30, 0x56,
|
69
|
-
0x30, 0x10,
|
70
|
-
0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01,
|
71
|
-
0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x0a,
|
72
|
-
0x03, 0x42,
|
73
|
-
0x00, // no padding
|
74
|
-
]);
|
75
|
-
//# sourceMappingURL=secp256k1.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../../../src/identity/secp256k1.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/index.d.ts
DELETED
package/lib/cjs/index.js
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
-
}) : (function(o, m, k, k2) {
|
6
|
-
if (k2 === undefined) k2 = k;
|
7
|
-
o[k2] = m[k];
|
8
|
-
}));
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
11
|
-
};
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
13
|
-
__exportStar(require("./identity/ledger"), exports);
|
14
|
-
__exportStar(require("./identity/secp256k1"), exports);
|
15
|
-
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC"}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import { HttpAgentRequest, PublicKey, Signature, SignIdentity } from '@astrox/agent';
|
2
|
-
/**
|
3
|
-
* A Hardware Ledger Internet Computer Agent identity.
|
4
|
-
*/
|
5
|
-
export declare class LedgerIdentity extends SignIdentity {
|
6
|
-
private readonly _app;
|
7
|
-
readonly derivePath: string;
|
8
|
-
private readonly _publicKey;
|
9
|
-
private readonly _address;
|
10
|
-
/**
|
11
|
-
* Create a LedgerIdentity using the Web USB transport.
|
12
|
-
* @param derivePath The derivation path.
|
13
|
-
*/
|
14
|
-
static create(derivePath?: string): Promise<LedgerIdentity>;
|
15
|
-
private constructor();
|
16
|
-
/**
|
17
|
-
* Required by Ledger.com that the user should be able to press a Button in UI
|
18
|
-
* and verify the address/pubkey are the same as on the device screen.
|
19
|
-
*/
|
20
|
-
showAddressAndPubKeyOnDevice(): Promise<void>;
|
21
|
-
getPublicKey(): PublicKey;
|
22
|
-
sign(blob: ArrayBuffer): Promise<Signature>;
|
23
|
-
transformRequest(request: HttpAgentRequest): Promise<unknown>;
|
24
|
-
}
|
@@ -1,87 +0,0 @@
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
2
|
-
var t = {};
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
4
|
-
t[p] = s[p];
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
8
|
-
t[p[i]] = s[p[i]];
|
9
|
-
}
|
10
|
-
return t;
|
11
|
-
};
|
12
|
-
import { Cbor, SignIdentity, } from '@astrox/agent';
|
13
|
-
import { Principal } from '@astrox/principal';
|
14
|
-
import DfinityApp from '@zondax/ledger-dfinity';
|
15
|
-
import { Buffer } from 'buffer/';
|
16
|
-
import { Secp256k1PublicKey } from './secp256k1';
|
17
|
-
/**
|
18
|
-
* Convert the HttpAgentRequest body into cbor which can be signed by the Ledger Hardware Wallet.
|
19
|
-
* @param request - body of the HttpAgentRequest
|
20
|
-
*/
|
21
|
-
function _prepareCborForLedger(request) {
|
22
|
-
return Cbor.encode({ content: request });
|
23
|
-
}
|
24
|
-
/**
|
25
|
-
* A Hardware Ledger Internet Computer Agent identity.
|
26
|
-
*/
|
27
|
-
export class LedgerIdentity extends SignIdentity {
|
28
|
-
constructor(_app, derivePath, _publicKey, _address) {
|
29
|
-
super();
|
30
|
-
this._app = _app;
|
31
|
-
this.derivePath = derivePath;
|
32
|
-
this._publicKey = _publicKey;
|
33
|
-
this._address = _address;
|
34
|
-
}
|
35
|
-
/**
|
36
|
-
* Create a LedgerIdentity using the Web USB transport.
|
37
|
-
* @param derivePath The derivation path.
|
38
|
-
*/
|
39
|
-
static async create(derivePath = `m/44'/223'/0'/0/0`) {
|
40
|
-
const TransportClass = (await import('@ledgerhq/hw-transport-webhid')).default;
|
41
|
-
const transport = await TransportClass.create();
|
42
|
-
const app = new DfinityApp(transport);
|
43
|
-
const resp = await app.getAddressAndPubKey(derivePath);
|
44
|
-
// This type doesn't have the right fields in it, so we have to manually type it.
|
45
|
-
const principal = resp.principalText;
|
46
|
-
const publicKey = Secp256k1PublicKey.fromRaw(resp.publicKey);
|
47
|
-
const address = resp.address;
|
48
|
-
if (principal !== Principal.selfAuthenticating(new Uint8Array(publicKey.toDer())).toText()) {
|
49
|
-
throw new Error('Principal returned by device does not match public key.');
|
50
|
-
}
|
51
|
-
return new this(app, derivePath, publicKey, address.buffer);
|
52
|
-
}
|
53
|
-
/**
|
54
|
-
* Required by Ledger.com that the user should be able to press a Button in UI
|
55
|
-
* and verify the address/pubkey are the same as on the device screen.
|
56
|
-
*/
|
57
|
-
async showAddressAndPubKeyOnDevice() {
|
58
|
-
await this._app.showAddressAndPubKey(this.derivePath);
|
59
|
-
}
|
60
|
-
getPublicKey() {
|
61
|
-
return this._publicKey;
|
62
|
-
}
|
63
|
-
async sign(blob) {
|
64
|
-
// Force an `as any` because the types are compatible but TypeScript cannot figure it out.
|
65
|
-
const resp = await this._app.sign(this.derivePath, Buffer.from(blob));
|
66
|
-
const signatureRS = resp.signatureRS;
|
67
|
-
if (!signatureRS) {
|
68
|
-
throw new Error(`A ledger error happened during signature:\n` +
|
69
|
-
`Code: ${resp.returnCode}\n` +
|
70
|
-
`Message: ${JSON.stringify(resp.errorMessage)}\n`);
|
71
|
-
}
|
72
|
-
if ((signatureRS === null || signatureRS === void 0 ? void 0 : signatureRS.byteLength) !== 64) {
|
73
|
-
throw new Error(`Signature must be 64 bytes long (is ${signatureRS.length})`);
|
74
|
-
}
|
75
|
-
return signatureRS.buffer;
|
76
|
-
}
|
77
|
-
async transformRequest(request) {
|
78
|
-
const { body } = request, fields = __rest(request, ["body"]);
|
79
|
-
const signature = await this.sign(_prepareCborForLedger(body));
|
80
|
-
return Object.assign(Object.assign({}, fields), { body: {
|
81
|
-
content: body,
|
82
|
-
sender_pubkey: this._publicKey.toDer(),
|
83
|
-
sender_sig: signature,
|
84
|
-
} });
|
85
|
-
}
|
86
|
-
}
|
87
|
-
//# sourceMappingURL=ledger.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/identity/ledger.ts"],"names":[],"mappings":"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"}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { DerEncodedPublicKey, PublicKey } from '@astrox/agent';
|
2
|
-
export declare class Secp256k1PublicKey implements PublicKey {
|
3
|
-
static fromRaw(rawKey: ArrayBuffer): Secp256k1PublicKey;
|
4
|
-
static fromDer(derKey: DerEncodedPublicKey): Secp256k1PublicKey;
|
5
|
-
private static RAW_KEY_LENGTH;
|
6
|
-
private static DER_PREFIX;
|
7
|
-
static derEncode(publicKey: ArrayBuffer): DerEncodedPublicKey;
|
8
|
-
static derDecode(key: DerEncodedPublicKey): ArrayBuffer;
|
9
|
-
private readonly rawKey;
|
10
|
-
private readonly derKey;
|
11
|
-
private constructor();
|
12
|
-
toDer(): DerEncodedPublicKey;
|
13
|
-
toRaw(): ArrayBuffer;
|
14
|
-
}
|
@@ -1,71 +0,0 @@
|
|
1
|
-
function equals(b1, b2) {
|
2
|
-
if (b1.byteLength !== b2.byteLength) {
|
3
|
-
return false;
|
4
|
-
}
|
5
|
-
const u1 = new Uint8Array(b1);
|
6
|
-
const u2 = new Uint8Array(b2);
|
7
|
-
for (let i = 0; i < u1.length; i++) {
|
8
|
-
if (u1[i] !== u2[i]) {
|
9
|
-
return false;
|
10
|
-
}
|
11
|
-
}
|
12
|
-
return true;
|
13
|
-
}
|
14
|
-
// This implementation is adjusted from the Ed25519PublicKey.
|
15
|
-
// The RAW_KEY_LENGTH and DER_PREFIX are modified accordingly
|
16
|
-
export class Secp256k1PublicKey {
|
17
|
-
// `fromRaw` and `fromDer` should be used for instantiation, not this constructor.
|
18
|
-
constructor(key) {
|
19
|
-
this.rawKey = key;
|
20
|
-
this.derKey = Secp256k1PublicKey.derEncode(key);
|
21
|
-
}
|
22
|
-
static fromRaw(rawKey) {
|
23
|
-
return new Secp256k1PublicKey(rawKey);
|
24
|
-
}
|
25
|
-
static fromDer(derKey) {
|
26
|
-
return new Secp256k1PublicKey(this.derDecode(derKey));
|
27
|
-
}
|
28
|
-
static derEncode(publicKey) {
|
29
|
-
if (publicKey.byteLength !== Secp256k1PublicKey.RAW_KEY_LENGTH) {
|
30
|
-
const bl = publicKey.byteLength;
|
31
|
-
throw new TypeError(`secp256k1 public key must be ${Secp256k1PublicKey.RAW_KEY_LENGTH} bytes long (is ${bl})`);
|
32
|
-
}
|
33
|
-
const derPublicKey = Uint8Array.from([
|
34
|
-
...Secp256k1PublicKey.DER_PREFIX,
|
35
|
-
...new Uint8Array(publicKey),
|
36
|
-
]);
|
37
|
-
return derPublicKey.buffer;
|
38
|
-
}
|
39
|
-
static derDecode(key) {
|
40
|
-
const expectedLength = Secp256k1PublicKey.DER_PREFIX.length + Secp256k1PublicKey.RAW_KEY_LENGTH;
|
41
|
-
if (key.byteLength !== expectedLength) {
|
42
|
-
const bl = key.byteLength;
|
43
|
-
throw new TypeError(`secp256k1 DER-encoded public key must be ${expectedLength} bytes long (is ${bl})`);
|
44
|
-
}
|
45
|
-
const rawKey = key.slice(0, Secp256k1PublicKey.DER_PREFIX.length);
|
46
|
-
if (!equals(this.derEncode(rawKey), key)) {
|
47
|
-
throw new TypeError('secp256k1 DER-encoded public key is invalid. A valid secp256k1 DER-encoded public key ' +
|
48
|
-
`must have the following prefix: ${Secp256k1PublicKey.DER_PREFIX}`);
|
49
|
-
}
|
50
|
-
return rawKey;
|
51
|
-
}
|
52
|
-
toDer() {
|
53
|
-
return this.derKey;
|
54
|
-
}
|
55
|
-
toRaw() {
|
56
|
-
return this.rawKey;
|
57
|
-
}
|
58
|
-
}
|
59
|
-
// The length of secp256k1 public keys is always 65 bytes.
|
60
|
-
Secp256k1PublicKey.RAW_KEY_LENGTH = 65;
|
61
|
-
// Adding this prefix to a raw public key is sufficient to DER-encode it.
|
62
|
-
// prettier-ignore
|
63
|
-
Secp256k1PublicKey.DER_PREFIX = Uint8Array.from([
|
64
|
-
0x30, 0x56,
|
65
|
-
0x30, 0x10,
|
66
|
-
0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01,
|
67
|
-
0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x0a,
|
68
|
-
0x03, 0x42,
|
69
|
-
0x00, // no padding
|
70
|
-
]);
|
71
|
-
//# sourceMappingURL=secp256k1.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../../../src/identity/secp256k1.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.d.ts
DELETED
package/lib/esm/index.js
DELETED
package/lib/esm/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|