@bitgo/sdk-core 1.0.1 → 1.1.0-rc.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/CHANGELOG.md +27 -0
- package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts +27 -0
- package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseKeyPair.js +3 -0
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +71 -0
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseTransaction.js +69 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +128 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +138 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts +29 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.js +19 -0
- package/dist/src/account-lib/baseCoin/baseUtils.d.ts +45 -0
- package/dist/src/account-lib/baseCoin/baseUtils.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseUtils.js +3 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +75 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.js +179 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +50 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +145 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts +43 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/enum.js +70 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts +65 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/errors.js +114 -0
- package/dist/src/account-lib/baseCoin/iface.d.ts +162 -0
- package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/iface.js +38 -0
- package/dist/src/account-lib/baseCoin/index.d.ts +12 -0
- package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/index.js +31 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +55 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +124 -0
- package/dist/src/account-lib/index.d.ts +4 -0
- package/dist/src/account-lib/index.d.ts.map +1 -0
- package/dist/src/account-lib/index.js +16 -0
- package/dist/src/account-lib/util/crypto.d.ts +106 -0
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -0
- package/dist/src/account-lib/util/crypto.js +269 -0
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +49 -0
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -0
- package/dist/src/account-lib/util/ed25519KeyDeriver.js +87 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/v2/environments.d.ts.map +1 -1
- package/dist/src/v2/environments.js +2 -2
- package/dist/tsconfig.tsbuildinfo +1679 -118
- package/package.json +23 -12
|
@@ -0,0 +1,124 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Secp256k1ExtendedKeyPair = void 0;
|
|
23
|
+
const bip32 = __importStar(require("bip32"));
|
|
24
|
+
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
25
|
+
const Crypto = __importStar(require("../util/crypto"));
|
|
26
|
+
const errors_1 = require("./errors");
|
|
27
|
+
/**
|
|
28
|
+
* Base class for SECP256K1 extended keypairs.
|
|
29
|
+
*/
|
|
30
|
+
class Secp256k1ExtendedKeyPair {
|
|
31
|
+
/**
|
|
32
|
+
* Public constructor. By default, creates a key pair with a random master seed.
|
|
33
|
+
*
|
|
34
|
+
* @param {KeyPairOptions} source Either a master seed, a private key (extended or raw), or a public key
|
|
35
|
+
* (extended, compressed, or uncompressed)
|
|
36
|
+
*/
|
|
37
|
+
constructor(source) {
|
|
38
|
+
this.source = source;
|
|
39
|
+
}
|
|
40
|
+
static toKeyPair(hdNode) {
|
|
41
|
+
if (hdNode.privateKey) {
|
|
42
|
+
return bitcoinjs_lib_1.ECPair.fromPrivateKey(hdNode.privateKey);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return bitcoinjs_lib_1.ECPair.fromPublicKey(hdNode.publicKey);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @param compressed
|
|
50
|
+
* @return Buffer 33 bytes if `compressed` is set, 65 bytes otherwise. Standard libsecp256k1 format.
|
|
51
|
+
*/
|
|
52
|
+
getPublicKey({ compressed }) {
|
|
53
|
+
var _a;
|
|
54
|
+
return bitcoinjs_lib_1.ECPair.fromPublicKey((_a = this.keyPair) === null || _a === void 0 ? void 0 : _a.publicKey, { compressed }).publicKey;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @return Buffer 32 bytes in standard libsecp256k1 format
|
|
58
|
+
*/
|
|
59
|
+
getPrivateKey() {
|
|
60
|
+
var _a;
|
|
61
|
+
return (_a = this.keyPair) === null || _a === void 0 ? void 0 : _a.privateKey;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Build a Hierarchical Deterministic node or an ECPair from a private key.
|
|
65
|
+
*
|
|
66
|
+
* @param {string} prv An extended or raw private key
|
|
67
|
+
*/
|
|
68
|
+
recordKeysFromPrivateKey(prv) {
|
|
69
|
+
if (Crypto.isValidXprv(prv)) {
|
|
70
|
+
this.hdNode = bip32.fromBase58(prv);
|
|
71
|
+
}
|
|
72
|
+
else if (Crypto.isValidPrv(prv)) {
|
|
73
|
+
// Cannot create the HD node without the chain code, so create a regular Key Chain
|
|
74
|
+
this.keyPair = bitcoinjs_lib_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
throw new Error('Unsupported private key');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Build a Hierarchical Deterministic node or an ECPair from a public key.
|
|
82
|
+
*
|
|
83
|
+
* @param {string} pub - An extended, compressed, or uncompressed public key
|
|
84
|
+
*/
|
|
85
|
+
recordKeysFromPublicKey(pub) {
|
|
86
|
+
if (Crypto.isValidXpub(pub)) {
|
|
87
|
+
this.hdNode = bip32.fromBase58(pub);
|
|
88
|
+
}
|
|
89
|
+
else if (Crypto.isValidPub(pub)) {
|
|
90
|
+
// Cannot create an HD node without the chain code, so create a regular Key Chain
|
|
91
|
+
this.keyPair = bitcoinjs_lib_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
throw new Error('Unsupported public key: ' + pub);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get the extended public key, and the private key if one is available. This is only possible
|
|
99
|
+
* when the key pair was created from a seed or extended keys.
|
|
100
|
+
*
|
|
101
|
+
* @returns {ExtendedKeys} The Extended keys object
|
|
102
|
+
*/
|
|
103
|
+
getExtendedKeys() {
|
|
104
|
+
if (!this.hdNode) {
|
|
105
|
+
throw new Error('Cannot get extended keys');
|
|
106
|
+
}
|
|
107
|
+
const result = {
|
|
108
|
+
xpub: this.hdNode.neutered().toBase58(),
|
|
109
|
+
};
|
|
110
|
+
// A neutered HD node means it only contains the public key information
|
|
111
|
+
if (!this.hdNode.isNeutered()) {
|
|
112
|
+
result.xprv = this.hdNode.toBase58();
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
getAddress(format) {
|
|
117
|
+
throw new errors_1.NotImplementedError('getAddress not implemented');
|
|
118
|
+
}
|
|
119
|
+
getKeys() {
|
|
120
|
+
throw new errors_1.NotImplementedError('getKeys not implemented');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.Secp256k1ExtendedKeyPair = Secp256k1ExtendedKeyPair;
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL3NlY3AyNTZrMUV4dGVuZGVkS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLGlEQUF1QztBQUN2Qyx1REFBeUM7QUFJekMscUNBQStDO0FBRS9DOztHQUVHO0FBQ0gsTUFBc0Isd0JBQXdCO0lBYzVDOzs7OztPQUtHO0lBQ0gsWUFBc0IsTUFBdUI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQXJCRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQTRCO1FBQzNDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNyQixPQUFPLHNCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNqRDthQUFNO1lBQ0wsT0FBTyxzQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBaUJEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxFQUFFLFVBQVUsRUFBMkI7O1FBQ2xELE9BQU8sc0JBQU0sQ0FBQyxhQUFhLENBQUMsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhOztRQUNYLE9BQU8sTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3QkFBd0IsQ0FBQyxHQUFXO1FBQ2xDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsa0ZBQWtGO1lBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsc0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMvRDthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FBQyxHQUFXO1FBQ2pDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsaUZBQWlGO1lBQ2pGLElBQUksQ0FBQyxPQUFPLEdBQUcsc0JBQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM5RDthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7UUFDRCxNQUFNLE1BQU0sR0FBaUI7WUFDM0IsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO1NBQ3hDLENBQUM7UUFDRix1RUFBdUU7UUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDN0IsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFzQjtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQWxHRCw0REFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXAzMiBmcm9tICdiaXAzMic7XG5pbXBvcnQgeyBFQ1BhaXIgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIENyeXB0byBmcm9tICcuLi91dGlsL2NyeXB0byc7XG5pbXBvcnQgeyBLZXlQYWlyT3B0aW9ucywgRXh0ZW5kZWRLZXlzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciB9IGZyb20gJy4vYmFzZUtleVBhaXInO1xuaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFNFQ1AyNTZLMSBleHRlbmRlZCBrZXlwYWlycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlY3AyNTZrMUV4dGVuZGVkS2V5UGFpciBpbXBsZW1lbnRzIEJhc2VLZXlQYWlyIHtcbiAgc3RhdGljIHRvS2V5UGFpcihoZE5vZGU6IGJpcDMyLkJJUDMySW50ZXJmYWNlKTogRUNQYWlyLkVDUGFpckludGVyZmFjZSB7XG4gICAgaWYgKGhkTm9kZS5wcml2YXRlS2V5KSB7XG4gICAgICByZXR1cm4gRUNQYWlyLmZyb21Qcml2YXRlS2V5KGhkTm9kZS5wcml2YXRlS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KGhkTm9kZS5wdWJsaWNLZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBIRCBwcm90b2NvbCAoQklQMzIpLiBPbmx5IGF2YWlsYWJsZSB3aGVuIGNyZWF0aW5nIGEgS2V5UGFpciBmcm9tIGEgc2VlZCxcbiAgLy8gb3IgZXh0ZW5kZWQga2V5c1xuICBwcm90ZWN0ZWQgaGROb2RlPzogYmlwMzIuQklQMzJJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBFQ1BhaXIuRUNQYWlySW50ZXJmYWNlO1xuICBwcm90ZWN0ZWQgc291cmNlPzogS2V5UGFpck9wdGlvbnM7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJPcHRpb25zfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXkgKGV4dGVuZGVkIG9yIHJhdyksIG9yIGEgcHVibGljIGtleVxuICAgKiAgICAgKGV4dGVuZGVkLCBjb21wcmVzc2VkLCBvciB1bmNvbXByZXNzZWQpXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gY29tcHJlc3NlZFxuICAgKiBAcmV0dXJuIEJ1ZmZlciAzMyBieXRlcyBpZiBgY29tcHJlc3NlZGAgaXMgc2V0LCA2NSBieXRlcyBvdGhlcndpc2UuIFN0YW5kYXJkIGxpYnNlY3AyNTZrMSBmb3JtYXQuXG4gICAqL1xuICBnZXRQdWJsaWNLZXkoeyBjb21wcmVzc2VkIH06IHsgY29tcHJlc3NlZDogYm9vbGVhbiB9KTogQnVmZmVyIHtcbiAgICByZXR1cm4gRUNQYWlyLmZyb21QdWJsaWNLZXkodGhpcy5rZXlQYWlyPy5wdWJsaWNLZXksIHsgY29tcHJlc3NlZCB9KS5wdWJsaWNLZXk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiBCdWZmZXIgMzIgYnl0ZXMgaW4gc3RhbmRhcmQgbGlic2VjcDI1NmsxIGZvcm1hdFxuICAgKi9cbiAgZ2V0UHJpdmF0ZUtleSgpOiBCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmtleVBhaXI/LnByaXZhdGVLZXk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBIaWVyYXJjaGljYWwgRGV0ZXJtaW5pc3RpYyBub2RlIG9yIGFuIEVDUGFpciBmcm9tIGEgcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgQW4gZXh0ZW5kZWQgb3IgcmF3IHByaXZhdGUga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoQ3J5cHRvLmlzVmFsaWRYcHJ2KHBydikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwcnYpO1xuICAgIH0gZWxzZSBpZiAoQ3J5cHRvLmlzVmFsaWRQcnYocHJ2KSkge1xuICAgICAgLy8gQ2Fubm90IGNyZWF0ZSB0aGUgSEQgbm9kZSB3aXRob3V0IHRoZSBjaGFpbiBjb2RlLCBzbyBjcmVhdGUgYSByZWd1bGFyIEtleSBDaGFpblxuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIEhpZXJhcmNoaWNhbCBEZXRlcm1pbmlzdGljIG5vZGUgb3IgYW4gRUNQYWlyIGZyb20gYSBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIC0gQW4gZXh0ZW5kZWQsIGNvbXByZXNzZWQsIG9yIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleShwdWI6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChDcnlwdG8uaXNWYWxpZFhwdWIocHViKSkge1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tQmFzZTU4KHB1Yik7XG4gICAgfSBlbHNlIGlmIChDcnlwdG8uaXNWYWxpZFB1YihwdWIpKSB7XG4gICAgICAvLyBDYW5ub3QgY3JlYXRlIGFuIEhEIG5vZGUgd2l0aG91dCB0aGUgY2hhaW4gY29kZSwgc28gY3JlYXRlIGEgcmVndWxhciBLZXkgQ2hhaW5cbiAgICAgIHRoaXMua2V5UGFpciA9IEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwdWJsaWMga2V5OiAnICsgcHViKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHRlbmRlZCBwdWJsaWMga2V5LCBhbmQgdGhlIHByaXZhdGUga2V5IGlmIG9uZSBpcyBhdmFpbGFibGUuIFRoaXMgaXMgb25seSBwb3NzaWJsZVxuICAgKiB3aGVuIHRoZSBrZXkgcGFpciB3YXMgY3JlYXRlZCBmcm9tIGEgc2VlZCBvciBleHRlbmRlZCBrZXlzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RXh0ZW5kZWRLZXlzfSBUaGUgRXh0ZW5kZWQga2V5cyBvYmplY3RcbiAgICovXG4gIGdldEV4dGVuZGVkS2V5cygpOiBFeHRlbmRlZEtleXMge1xuICAgIGlmICghdGhpcy5oZE5vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCBleHRlbmRlZCBrZXlzJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogRXh0ZW5kZWRLZXlzID0ge1xuICAgICAgeHB1YjogdGhpcy5oZE5vZGUubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgIH07XG4gICAgLy8gQSBuZXV0ZXJlZCBIRCBub2RlIG1lYW5zIGl0IG9ubHkgY29udGFpbnMgdGhlIHB1YmxpYyBrZXkgaW5mb3JtYXRpb25cbiAgICBpZiAoIXRoaXMuaGROb2RlLmlzTmV1dGVyZWQoKSkge1xuICAgICAgcmVzdWx0LnhwcnYgPSB0aGlzLmhkTm9kZS50b0Jhc2U1OCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0QWRkcmVzcyhmb3JtYXQ/OiBBZGRyZXNzRm9ybWF0KTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0QWRkcmVzcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldEtleXMoKTogYW55IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0S2V5cyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account-lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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("./baseCoin"), exports);
|
|
14
|
+
__exportStar(require("./util/crypto"), exports);
|
|
15
|
+
__exportStar(require("./util/ed25519KeyDeriver"), exports);
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTJCO0FBQzNCLGdEQUE4QjtBQUM5QiwyREFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2VDb2luJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbC9jcnlwdG8nO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsL2VkMjU1MTlLZXlEZXJpdmVyJztcbiJdfQ==
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ExtendedKeys } from '../baseCoin/iface';
|
|
3
|
+
/**
|
|
4
|
+
* @param {string} xpub - a base-58 encoded extended public key (BIP32)
|
|
5
|
+
* @returns {string} the uncompressed public key in hexadecimal
|
|
6
|
+
*/
|
|
7
|
+
export declare function xpubToUncompressedPub(xpub: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* @param {string} xprv - base58-encoded extended private key (BIP32)
|
|
10
|
+
* @returns {string} the hex-encoded raw private key
|
|
11
|
+
*/
|
|
12
|
+
export declare function xprvToRawPrv(xprv: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* @param {string} prv - Private key in hex format to get the extended keys for
|
|
15
|
+
* @returns {ExtendedKeys} xprv and xpub in string format
|
|
16
|
+
*/
|
|
17
|
+
export declare function rawPrvToExtendedKeys(prv: string): ExtendedKeys;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the input is a valid BIP32 xpub or not
|
|
20
|
+
*
|
|
21
|
+
* @param xpub
|
|
22
|
+
*/
|
|
23
|
+
export declare function isValidXpub(xpub: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Whether the input is a valid BIP32 xprv or not
|
|
26
|
+
*
|
|
27
|
+
* @param xprv
|
|
28
|
+
*/
|
|
29
|
+
export declare function isValidXprv(xprv: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the input is a valid secp256k1 public key
|
|
32
|
+
*
|
|
33
|
+
* @param pub
|
|
34
|
+
*/
|
|
35
|
+
export declare function isValidPub(pub: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether the input is a valid secp256k1 private key
|
|
38
|
+
*
|
|
39
|
+
* @param prv
|
|
40
|
+
*/
|
|
41
|
+
export declare function isValidPrv(prv: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the input is a valid ed25519 private key
|
|
44
|
+
*
|
|
45
|
+
* @param {string} prv A hexadecimal private key to validate
|
|
46
|
+
* @returns {boolean} Whether the input is a valid public key or not
|
|
47
|
+
*/
|
|
48
|
+
export declare function isValidEd25519Seed(prv: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Whether the input is a valid ed25519 private key
|
|
51
|
+
*
|
|
52
|
+
* @param {string} prv A hexadecimal private key to validate
|
|
53
|
+
* @returns {boolean} Whether the input is a valid public key or not
|
|
54
|
+
*/
|
|
55
|
+
export declare function isValidEd25519SecretKey(prv: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the input is a valid ed25519 public key
|
|
58
|
+
*
|
|
59
|
+
* @param {string} pub A hexadecimal public key to validate
|
|
60
|
+
* @returns {boolean} Whether the input is a valid public key or not
|
|
61
|
+
*/
|
|
62
|
+
export declare function isValidEd25519PublicKey(pub: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Whether the input is a valid BLS private key
|
|
65
|
+
*
|
|
66
|
+
* @param {string} prv a private key to validate
|
|
67
|
+
* @returns {boolean} Whether the input is a valid private key or not
|
|
68
|
+
*/
|
|
69
|
+
export declare function isValidBLSPrivateKey(prv: string): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Whether input is a valid BLS public key
|
|
72
|
+
*
|
|
73
|
+
* @param {string} pub the public key to validate
|
|
74
|
+
* @returns {boolean} Whether input is a valid public key or not
|
|
75
|
+
*/
|
|
76
|
+
export declare function isValidBLSPublicKey(pub: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Returns an hex string of the given buffer
|
|
79
|
+
*
|
|
80
|
+
* @param {Buffer | Uint8Array} buffer - the buffer to be converted to hex
|
|
81
|
+
* @returns {string} - the hex value
|
|
82
|
+
*/
|
|
83
|
+
export declare function toHex(buffer: Buffer | Uint8Array): string;
|
|
84
|
+
/**
|
|
85
|
+
* Returns an hex string of the given bigint
|
|
86
|
+
*
|
|
87
|
+
* @param {bigint} bigint - the bigint to be converted to hex
|
|
88
|
+
* @returns {string} - the hex value
|
|
89
|
+
*/
|
|
90
|
+
export declare function bigIntToHex(bigint: bigint): string;
|
|
91
|
+
/**
|
|
92
|
+
* Check if base58 decoded string is equale to length
|
|
93
|
+
*
|
|
94
|
+
* @param {string} value - string to be checked
|
|
95
|
+
* @param {number} length - expected decoded length
|
|
96
|
+
* @return {boolean} if the string can decoded as base58 and match the expected length
|
|
97
|
+
*/
|
|
98
|
+
export declare function isBase58(value: string, length: number): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Returns a Uint8Array of the given hex string
|
|
101
|
+
*
|
|
102
|
+
* @param {string} str - the hex string to be converted
|
|
103
|
+
* @returns {string} - the Uint8Array value
|
|
104
|
+
*/
|
|
105
|
+
export declare function toUint8Array(str: string): Uint8Array;
|
|
106
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/util/crypto.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;;;;;GAMG;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAEpD"}
|
|
@@ -0,0 +1,269 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.toUint8Array = exports.isBase58 = exports.bigIntToHex = exports.toHex = exports.isValidBLSPublicKey = exports.isValidBLSPrivateKey = exports.isValidEd25519PublicKey = exports.isValidEd25519SecretKey = exports.isValidEd25519Seed = exports.isValidPrv = exports.isValidPub = exports.isValidXprv = exports.isValidXpub = exports.rawPrvToExtendedKeys = exports.xprvToRawPrv = exports.xpubToUncompressedPub = void 0;
|
|
26
|
+
const bip32 = __importStar(require("bip32"));
|
|
27
|
+
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
28
|
+
const nacl = __importStar(require("tweetnacl"));
|
|
29
|
+
const hex = __importStar(require("@stablelib/hex"));
|
|
30
|
+
const bls = __importStar(require("noble-bls12-381"));
|
|
31
|
+
const strip_hex_prefix_1 = __importDefault(require("strip-hex-prefix"));
|
|
32
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
33
|
+
/**
|
|
34
|
+
* @param {string} xpub - a base-58 encoded extended public key (BIP32)
|
|
35
|
+
* @returns {string} the uncompressed public key in hexadecimal
|
|
36
|
+
*/
|
|
37
|
+
function xpubToUncompressedPub(xpub) {
|
|
38
|
+
if (!isValidXpub(xpub)) {
|
|
39
|
+
throw new Error('invalid xpub');
|
|
40
|
+
}
|
|
41
|
+
return bitcoinjs_lib_1.ECPair.fromPublicKey(bip32.fromBase58(xpub, bitcoinjs_lib_1.networks.bitcoin).publicKey, {
|
|
42
|
+
compressed: false,
|
|
43
|
+
}).publicKey.toString('hex');
|
|
44
|
+
}
|
|
45
|
+
exports.xpubToUncompressedPub = xpubToUncompressedPub;
|
|
46
|
+
/**
|
|
47
|
+
* @param {string} xprv - base58-encoded extended private key (BIP32)
|
|
48
|
+
* @returns {string} the hex-encoded raw private key
|
|
49
|
+
*/
|
|
50
|
+
function xprvToRawPrv(xprv) {
|
|
51
|
+
if (!isValidXprv(xprv)) {
|
|
52
|
+
throw new Error('invalid xprv');
|
|
53
|
+
}
|
|
54
|
+
const { privateKey } = bip32.fromBase58(xprv, bitcoinjs_lib_1.networks.bitcoin);
|
|
55
|
+
if (!privateKey) {
|
|
56
|
+
throw new Error('invalid xprv');
|
|
57
|
+
}
|
|
58
|
+
return privateKey.toString('hex');
|
|
59
|
+
}
|
|
60
|
+
exports.xprvToRawPrv = xprvToRawPrv;
|
|
61
|
+
/**
|
|
62
|
+
* @param {string} prv - Private key in hex format to get the extended keys for
|
|
63
|
+
* @returns {ExtendedKeys} xprv and xpub in string format
|
|
64
|
+
*/
|
|
65
|
+
function rawPrvToExtendedKeys(prv) {
|
|
66
|
+
const hd = bip32.fromPrivateKey(Buffer.from(prv, 'hex'), Buffer.alloc(32));
|
|
67
|
+
return {
|
|
68
|
+
xprv: hd.toBase58(),
|
|
69
|
+
xpub: hd.neutered().toBase58(),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
exports.rawPrvToExtendedKeys = rawPrvToExtendedKeys;
|
|
73
|
+
/**
|
|
74
|
+
* Whether the input is a valid BIP32 xpub or not
|
|
75
|
+
*
|
|
76
|
+
* @param xpub
|
|
77
|
+
*/
|
|
78
|
+
function isValidXpub(xpub) {
|
|
79
|
+
if (xpub.substr(0, 4) !== 'xpub') {
|
|
80
|
+
// check for xpub formats we don't support, such as tpub
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
bip32.fromBase58(xpub, bitcoinjs_lib_1.networks.bitcoin);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
// if HD generation didn't throw, it is a valid xpub
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
exports.isValidXpub = isValidXpub;
|
|
93
|
+
/**
|
|
94
|
+
* Whether the input is a valid BIP32 xprv or not
|
|
95
|
+
*
|
|
96
|
+
* @param xprv
|
|
97
|
+
*/
|
|
98
|
+
function isValidXprv(xprv) {
|
|
99
|
+
if (xprv.substr(0, 4) !== 'xprv') {
|
|
100
|
+
// check for xprv formats we don't support
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
bip32.fromBase58(xprv, bitcoinjs_lib_1.networks.bitcoin);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
// if HD generation didn't throw, it is a valid xprv
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
exports.isValidXprv = isValidXprv;
|
|
113
|
+
/**
|
|
114
|
+
* Whether the input is a valid secp256k1 public key
|
|
115
|
+
*
|
|
116
|
+
* @param pub
|
|
117
|
+
*/
|
|
118
|
+
function isValidPub(pub) {
|
|
119
|
+
try {
|
|
120
|
+
bitcoinjs_lib_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
exports.isValidPub = isValidPub;
|
|
128
|
+
/**
|
|
129
|
+
* Whether the input is a valid secp256k1 private key
|
|
130
|
+
*
|
|
131
|
+
* @param prv
|
|
132
|
+
*/
|
|
133
|
+
function isValidPrv(prv) {
|
|
134
|
+
try {
|
|
135
|
+
bitcoinjs_lib_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
exports.isValidPrv = isValidPrv;
|
|
143
|
+
/**
|
|
144
|
+
* Whether the input is a valid ed25519 private key
|
|
145
|
+
*
|
|
146
|
+
* @param {string} prv A hexadecimal private key to validate
|
|
147
|
+
* @returns {boolean} Whether the input is a valid public key or not
|
|
148
|
+
*/
|
|
149
|
+
function isValidEd25519Seed(prv) {
|
|
150
|
+
try {
|
|
151
|
+
const decodedPrv = toUint8Array(prv);
|
|
152
|
+
return decodedPrv.length === nacl.sign.seedLength;
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.isValidEd25519Seed = isValidEd25519Seed;
|
|
159
|
+
/**
|
|
160
|
+
* Whether the input is a valid ed25519 private key
|
|
161
|
+
*
|
|
162
|
+
* @param {string} prv A hexadecimal private key to validate
|
|
163
|
+
* @returns {boolean} Whether the input is a valid public key or not
|
|
164
|
+
*/
|
|
165
|
+
function isValidEd25519SecretKey(prv) {
|
|
166
|
+
try {
|
|
167
|
+
const decodedPrv = toUint8Array(prv);
|
|
168
|
+
return decodedPrv.length === nacl.sign.secretKeyLength;
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.isValidEd25519SecretKey = isValidEd25519SecretKey;
|
|
175
|
+
/**
|
|
176
|
+
* Whether the input is a valid ed25519 public key
|
|
177
|
+
*
|
|
178
|
+
* @param {string} pub A hexadecimal public key to validate
|
|
179
|
+
* @returns {boolean} Whether the input is a valid public key or not
|
|
180
|
+
*/
|
|
181
|
+
function isValidEd25519PublicKey(pub) {
|
|
182
|
+
try {
|
|
183
|
+
const decodedPub = new Uint8Array(Buffer.from(pub, 'hex'));
|
|
184
|
+
return decodedPub.length === nacl.sign.publicKeyLength;
|
|
185
|
+
}
|
|
186
|
+
catch (e) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.isValidEd25519PublicKey = isValidEd25519PublicKey;
|
|
191
|
+
/**
|
|
192
|
+
* Whether the input is a valid BLS private key
|
|
193
|
+
*
|
|
194
|
+
* @param {string} prv a private key to validate
|
|
195
|
+
* @returns {boolean} Whether the input is a valid private key or not
|
|
196
|
+
*/
|
|
197
|
+
function isValidBLSPrivateKey(prv) {
|
|
198
|
+
try {
|
|
199
|
+
return bls.Fr.isValid(BigInt(prv));
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
exports.isValidBLSPrivateKey = isValidBLSPrivateKey;
|
|
206
|
+
/**
|
|
207
|
+
* Whether input is a valid BLS public key
|
|
208
|
+
*
|
|
209
|
+
* @param {string} pub the public key to validate
|
|
210
|
+
* @returns {boolean} Whether input is a valid public key or not
|
|
211
|
+
*/
|
|
212
|
+
function isValidBLSPublicKey(pub) {
|
|
213
|
+
try {
|
|
214
|
+
bls.PointG1.fromCompressedHex(strip_hex_prefix_1.default(pub)).assertValidity();
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.isValidBLSPublicKey = isValidBLSPublicKey;
|
|
222
|
+
/**
|
|
223
|
+
* Returns an hex string of the given buffer
|
|
224
|
+
*
|
|
225
|
+
* @param {Buffer | Uint8Array} buffer - the buffer to be converted to hex
|
|
226
|
+
* @returns {string} - the hex value
|
|
227
|
+
*/
|
|
228
|
+
function toHex(buffer) {
|
|
229
|
+
return hex.encode(buffer, true);
|
|
230
|
+
}
|
|
231
|
+
exports.toHex = toHex;
|
|
232
|
+
/**
|
|
233
|
+
* Returns an hex string of the given bigint
|
|
234
|
+
*
|
|
235
|
+
* @param {bigint} bigint - the bigint to be converted to hex
|
|
236
|
+
* @returns {string} - the hex value
|
|
237
|
+
*/
|
|
238
|
+
function bigIntToHex(bigint) {
|
|
239
|
+
const hex = bigint.toString(16);
|
|
240
|
+
return '0x' + '0'.slice(0, hex.length % 2) + hex;
|
|
241
|
+
}
|
|
242
|
+
exports.bigIntToHex = bigIntToHex;
|
|
243
|
+
/**
|
|
244
|
+
* Check if base58 decoded string is equale to length
|
|
245
|
+
*
|
|
246
|
+
* @param {string} value - string to be checked
|
|
247
|
+
* @param {number} length - expected decoded length
|
|
248
|
+
* @return {boolean} if the string can decoded as base58 and match the expected length
|
|
249
|
+
*/
|
|
250
|
+
function isBase58(value, length) {
|
|
251
|
+
try {
|
|
252
|
+
return !!value && bs58_1.default.decode(value).length === length;
|
|
253
|
+
}
|
|
254
|
+
catch (e) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
exports.isBase58 = isBase58;
|
|
259
|
+
/**
|
|
260
|
+
* Returns a Uint8Array of the given hex string
|
|
261
|
+
*
|
|
262
|
+
* @param {string} str - the hex string to be converted
|
|
263
|
+
* @returns {string} - the Uint8Array value
|
|
264
|
+
*/
|
|
265
|
+
function toUint8Array(str) {
|
|
266
|
+
return hex.decode(str);
|
|
267
|
+
}
|
|
268
|
+
exports.toUint8Array = toUint8Array;
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL3V0aWwvY3J5cHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0IsaURBQWlEO0FBQ2pELGdEQUFrQztBQUNsQyxvREFBc0M7QUFDdEMscURBQXVDO0FBQ3ZDLHdFQUE4QztBQUU5QyxnREFBd0I7QUFFeEI7OztHQUdHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsSUFBWTtJQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakM7SUFDRCxPQUFPLHNCQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLHdCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFO1FBQzlFLFVBQVUsRUFBRSxLQUFLO0tBQ2xCLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFQRCxzREFPQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNqQztJQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSx3QkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLENB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SUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxPQUFPLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNuRCxDQUFDO0FBSEQsa0NBR0M7QUFFRDs7Ozs7O0dBTUc7QUFFSCxTQUFnQixRQUFRLENBQUMsS0FBYSxFQUFFLE1BQWM7SUFDcEQsSUFBSTtRQUNGLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxjQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7S0FDeEQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBTkQsNEJBTUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRkQsb0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXAzMiBmcm9tICdiaXAzMic7XG5pbXBvcnQgeyBFQ1BhaXIsIG5ldHdvcmtzIH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgKiBhcyBoZXggZnJvbSAnQHN0YWJsZWxpYi9oZXgnO1xuaW1wb3J0ICogYXMgYmxzIGZyb20gJ25vYmxlLWJsczEyLTM4MSc7XG5pbXBvcnQgc3RyaXBIZXhQcmVmaXggZnJvbSAnc3RyaXAtaGV4LXByZWZpeCc7XG5pbXBvcnQgeyBFeHRlbmRlZEtleXMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30geHB1YiAtIGEgYmFzZS01OCBlbmNvZGVkIGV4dGVuZGVkIHB1YmxpYyBrZXkgKEJJUDMyKVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5IGluIGhleGFkZWNpbWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4cHViVG9VbmNvbXByZXNzZWRQdWIoeHB1Yjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkWHB1Yih4cHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHViJyk7XG4gIH1cbiAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KGJpcDMyLmZyb21CYXNlNTgoeHB1YiwgbmV0d29ya3MuYml0Y29pbikucHVibGljS2V5LCB7XG4gICAgY29tcHJlc3NlZDogZmFsc2UsXG4gIH0pLnB1YmxpY0tleS50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHhwcnYgLSBiYXNlNTgtZW5jb2RlZCBleHRlbmRlZCBwcml2YXRlIGtleSAoQklQMzIpXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgaGV4LWVuY29kZWQgcmF3IHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4cHJ2VG9SYXdQcnYoeHBydjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkWHBydih4cHJ2KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHJ2Jyk7XG4gIH1cblxuICBjb25zdCB7IHByaXZhdGVLZXkgfSA9IGJpcDMyLmZyb21CYXNlNTgoeHBydiwgbmV0d29ya3MuYml0Y29pbik7XG4gIGlmICghcHJpdmF0ZUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHJ2Jyk7XG4gIH1cbiAgcmV0dXJuIHByaXZhdGVLZXkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgLSBQcml2YXRlIGtleSBpbiBoZXggZm9ybWF0IHRvIGdldCB0aGUgZXh0ZW5kZWQga2V5cyBmb3JcbiAqIEByZXR1cm5zIHtFeHRlbmRlZEtleXN9IHhwcnYgYW5kIHhwdWIgaW4gc3RyaW5nIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmF3UHJ2VG9FeHRlbmRlZEtleXMocHJ2OiBzdHJpbmcpOiBFeHRlbmRlZEtleXMge1xuICBjb25zdCBoZCA9IGJpcDMyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpLCBCdWZmZXIuYWxsb2MoMzIpKTtcbiAgcmV0dXJuIHtcbiAgICB4cHJ2OiBoZC50b0Jhc2U1OCgpLFxuICAgIHhwdWI6IGhkLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIEJJUDMyIHhwdWIgb3Igbm90XG4gKlxuICogQHBhcmFtIHhwdWJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRYcHViKHhwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoeHB1Yi5zdWJzdHIoMCwgNCkgIT09ICd4cHViJykge1xuICAgIC8vIGNoZWNrIGZvciB4cHViIGZvcm1hdHMgd2UgZG9uJ3Qgc3VwcG9ydCwgc3VjaCBhcyB0cHViXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYmlwMzIuZnJvbUJhc2U1OCh4cHViLCBuZXR3b3Jrcy5iaXRjb2luKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGlmIEhEIGdlbmVyYXRpb24gZGlkbid0IHRocm93LCBpdCBpcyBhIHZhbGlkIHhwdWJcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBCSVAzMiB4cHJ2IG9yIG5vdFxuICpcbiAqIEBwYXJhbSB4cHJ2XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkWHBydih4cHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHhwcnYuc3Vic3RyKDAsIDQpICE9PSAneHBydicpIHtcbiAgICAvLyBjaGVjayBmb3IgeHBydiBmb3JtYXRzIHdlIGRvbid0IHN1cHBvcnRcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBiaXAzMi5mcm9tQmFzZTU4KHhwcnYsIG5ldHdvcmtzLmJpdGNvaW4pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gaWYgSEQgZ2VuZXJhdGlvbiBkaWRuJ3QgdGhyb3csIGl0IGlzIGEgdmFsaWQgeHBydlxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHNlY3AyNTZrMSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHB1YlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHNlY3AyNTZrMSBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSBwcnZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgZWQyNTUxOSBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgQSBoZXhhZGVjaW1hbCBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5U2VlZChwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWRQcnYgPSB0b1VpbnQ4QXJyYXkocHJ2KTtcbiAgICByZXR1cm4gZGVjb2RlZFBydi5sZW5ndGggPT09IG5hY2wuc2lnbi5zZWVkTGVuZ3RoO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBlZDI1NTE5IHByaXZhdGUga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIGhleGFkZWNpbWFsIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwdWJsaWMga2V5IG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkUHJ2ID0gdG9VaW50OEFycmF5KHBydik7XG4gICAgcmV0dXJuIGRlY29kZWRQcnYubGVuZ3RoID09PSBuYWNsLnNpZ24uc2VjcmV0S2V5TGVuZ3RoO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBlZDI1NTE5IHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHViIEEgaGV4YWRlY2ltYWwgcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZFB1YiA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgICByZXR1cm4gZGVjb2RlZFB1Yi5sZW5ndGggPT09IG5hY2wuc2lnbi5wdWJsaWNLZXlMZW5ndGg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIEJMUyBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgYSBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHJpdmF0ZSBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQkxTUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBibHMuRnIuaXNWYWxpZChCaWdJbnQocHJ2KSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGlucHV0IGlzIGEgdmFsaWQgQkxTIHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHViIHRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQkxTUHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgYmxzLlBvaW50RzEuZnJvbUNvbXByZXNzZWRIZXgoc3RyaXBIZXhQcmVmaXgocHViKSkuYXNzZXJ0VmFsaWRpdHkoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gKlxuICogQHBhcmFtIHtCdWZmZXIgfCBVaW50OEFycmF5fSBidWZmZXIgLSB0aGUgYnVmZmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9IZXgoYnVmZmVyOiBCdWZmZXIgfCBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGhleC5lbmNvZGUoYnVmZmVyLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGhleCBzdHJpbmcgb2YgdGhlIGdpdmVuIGJpZ2ludFxuICpcbiAqIEBwYXJhbSB7YmlnaW50fSBiaWdpbnQgLSB0aGUgYmlnaW50IHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50VG9IZXgoYmlnaW50OiBiaWdpbnQpOiBzdHJpbmcge1xuICBjb25zdCBoZXggPSBiaWdpbnQudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gJzB4JyArICcwJy5zbGljZSgwLCBoZXgubGVuZ3RoICUgMikgKyBoZXg7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYmFzZTU4IGRlY29kZWQgc3RyaW5nIGlzIGVxdWFsZSB0byBsZW5ndGhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBzdHJpbmcgdG8gYmUgY2hlY2tlZFxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCAtIGV4cGVjdGVkIGRlY29kZWQgbGVuZ3RoXG4gKiBAcmV0dXJuIHtib29sZWFufSBpZiB0aGUgc3RyaW5nIGNhbiBkZWNvZGVkIGFzIGJhc2U1OCBhbmQgbWF0Y2ggdGhlIGV4cGVjdGVkIGxlbmd0aFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2U1OCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiAhIXZhbHVlICYmIGJzNTguZGVjb2RlKHZhbHVlKS5sZW5ndGggPT09IGxlbmd0aDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBVaW50OEFycmF5IG9mIHRoZSBnaXZlbiBoZXggc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIHRoZSBoZXggc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgVWludDhBcnJheSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9VaW50OEFycmF5KHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XG4gIHJldHVybiBoZXguZGVjb2RlKHN0cik7XG59XG4iXX0=
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export interface HdKeypair {
|
|
3
|
+
key: Buffer;
|
|
4
|
+
chainCode: Buffer;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Heirarchical determinisitic key derivation for the ed25519 elliptic curve,
|
|
8
|
+
* as defined in SLIP-0010.
|
|
9
|
+
*
|
|
10
|
+
* https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0005.md
|
|
11
|
+
* https://github.com/satoshilabs/slips/blob/master/slip-0010.md
|
|
12
|
+
*/
|
|
13
|
+
export declare class Ed25519KeyDeriver {
|
|
14
|
+
/**
|
|
15
|
+
* This key derivation code was copied and adapted from:
|
|
16
|
+
* https://github.com/chatch/stellar-hd-wallet/blob/612c12325ca9047dce460016fb7d148f55f575ca/src/hd-key.js
|
|
17
|
+
*
|
|
18
|
+
* There have been some slight modifications to improve typescript support.
|
|
19
|
+
*
|
|
20
|
+
* The original ed25519-hd-key module is licensed under "GPL-3".
|
|
21
|
+
*/
|
|
22
|
+
private static readonly ED25519_CURVE;
|
|
23
|
+
private static readonly HARDENED_OFFSET;
|
|
24
|
+
private static readonly PATH_REGEX;
|
|
25
|
+
/**
|
|
26
|
+
* Derive a SLIP-0010 key given a path and master key seed.
|
|
27
|
+
*
|
|
28
|
+
* @param path derivation path
|
|
29
|
+
* @param seed key seed
|
|
30
|
+
*/
|
|
31
|
+
static derivePath(path: string, seed: string): HdKeypair;
|
|
32
|
+
/**
|
|
33
|
+
* Generate a SLIP-0010 master key from the entropy seed
|
|
34
|
+
*
|
|
35
|
+
* @param seed master key seed used to recreate master key
|
|
36
|
+
*/
|
|
37
|
+
private static getMasterKeyFromSeed;
|
|
38
|
+
/**
|
|
39
|
+
* Calculate a child private key given the parent key, the chain code, and the child index.
|
|
40
|
+
*
|
|
41
|
+
* @param key parent key
|
|
42
|
+
* @param chainCode chain code for parent key
|
|
43
|
+
* @param index index of child to derive
|
|
44
|
+
*/
|
|
45
|
+
private static CKDPriv;
|
|
46
|
+
private static replaceDerive;
|
|
47
|
+
private static isValidPath;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ed25519KeyDeriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ed25519KeyDeriver.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/util/ed25519KeyDeriver.ts"],"names":[],"mappings":";AAKA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAkB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAc;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAEpE;;;;;OAKG;WACW,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS;IAY/D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAWnC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAatB,OAAO,CAAC,MAAM,CAAC,aAAa,CAA+D;IAC3F,OAAO,CAAC,MAAM,CAAC,WAAW;CAM3B"}
|