@beclab/olaresid 0.1.1 → 0.1.2
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/CLI.md +1300 -0
- package/README.md +37 -31
- package/TAG.md +589 -0
- package/dist/abi/RootResolver2ABI.d.ts +54 -0
- package/dist/abi/RootResolver2ABI.d.ts.map +1 -0
- package/dist/abi/RootResolver2ABI.js +240 -0
- package/dist/abi/RootResolver2ABI.js.map +1 -0
- package/dist/business/index.d.ts +302 -0
- package/dist/business/index.d.ts.map +1 -0
- package/dist/business/index.js +1209 -0
- package/dist/business/index.js.map +1 -0
- package/dist/business/tag-context.d.ts +219 -0
- package/dist/business/tag-context.d.ts.map +1 -0
- package/dist/business/tag-context.js +537 -0
- package/dist/business/tag-context.js.map +1 -0
- package/dist/cli.js +2085 -39
- package/dist/cli.js.map +1 -1
- package/dist/debug.d.ts.map +1 -1
- package/dist/debug.js +14 -2
- package/dist/debug.js.map +1 -1
- package/dist/index.d.ts +50 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +229 -9
- package/dist/index.js.map +1 -1
- package/dist/utils/crypto-utils.d.ts +130 -0
- package/dist/utils/crypto-utils.d.ts.map +1 -0
- package/dist/utils/crypto-utils.js +402 -0
- package/dist/utils/crypto-utils.js.map +1 -0
- package/dist/utils/error-parser.d.ts +35 -0
- package/dist/utils/error-parser.d.ts.map +1 -0
- package/dist/utils/error-parser.js +202 -0
- package/dist/utils/error-parser.js.map +1 -0
- package/dist/utils/tag-abi-codec.d.ts +69 -0
- package/dist/utils/tag-abi-codec.d.ts.map +1 -0
- package/dist/utils/tag-abi-codec.js +144 -0
- package/dist/utils/tag-abi-codec.js.map +1 -0
- package/dist/utils/tag-type-builder.d.ts +158 -0
- package/dist/utils/tag-type-builder.d.ts.map +1 -0
- package/dist/utils/tag-type-builder.js +410 -0
- package/dist/utils/tag-type-builder.js.map +1 -0
- package/examples/crypto-utilities.ts +140 -0
- package/examples/domain-context.ts +80 -0
- package/examples/generate-mnemonic.ts +149 -0
- package/examples/index.ts +1 -1
- package/examples/ip.ts +171 -0
- package/examples/legacy.ts +10 -10
- package/examples/list-wallets.ts +81 -0
- package/examples/quasar-demo/.eslintrc.js +23 -0
- package/examples/quasar-demo/.quasar/app.js +43 -0
- package/examples/quasar-demo/.quasar/client-entry.js +38 -0
- package/examples/quasar-demo/.quasar/client-prefetch.js +130 -0
- package/examples/quasar-demo/.quasar/quasar-user-options.js +16 -0
- package/examples/quasar-demo/README.md +49 -0
- package/examples/quasar-demo/index.html +11 -0
- package/examples/quasar-demo/package-lock.json +6407 -0
- package/examples/quasar-demo/package.json +36 -0
- package/examples/quasar-demo/quasar.config.js +73 -0
- package/examples/quasar-demo/src/App.vue +13 -0
- package/examples/quasar-demo/src/css/app.scss +1 -0
- package/examples/quasar-demo/src/layouts/MainLayout.vue +21 -0
- package/examples/quasar-demo/src/pages/IndexPage.vue +905 -0
- package/examples/quasar-demo/src/router/index.ts +25 -0
- package/examples/quasar-demo/src/router/routes.ts +11 -0
- package/examples/quasar-demo/tsconfig.json +28 -0
- package/examples/register-subdomain.ts +152 -0
- package/examples/rsa-keypair.ts +148 -0
- package/examples/tag-builder.ts +235 -0
- package/examples/tag-management.ts +534 -0
- package/examples/tag-nested-tuple.ts +190 -0
- package/examples/tag-simple.ts +149 -0
- package/examples/tag-tagger.ts +217 -0
- package/examples/test-nested-tuple-conversion.ts +143 -0
- package/examples/test-type-bytes-parser.ts +70 -0
- package/examples/transfer-domain.ts +197 -0
- package/examples/wallet-management.ts +196 -0
- package/package.json +24 -15
- package/src/abi/RootResolver2ABI.ts +237 -0
- package/src/business/index.ts +1490 -0
- package/src/business/tag-context.ts +713 -0
- package/src/cli.ts +2755 -39
- package/src/debug.ts +17 -2
- package/src/index.ts +300 -14
- package/src/utils/crypto-utils.ts +459 -0
- package/src/utils/error-parser.ts +225 -0
- package/src/utils/tag-abi-codec.ts +158 -0
- package/src/utils/tag-type-builder.ts +469 -0
- package/tsconfig.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform crypto utilities using Trust Wallet Core
|
|
3
|
+
* Works in both Node.js and Browser environments
|
|
4
|
+
*
|
|
5
|
+
* This implementation uses the same approach as TermiPass to ensure
|
|
6
|
+
* compatibility across the entire Olares ecosystem.
|
|
7
|
+
*/
|
|
8
|
+
export interface RSAPublicKeyData {
|
|
9
|
+
rsaPublicKey: string;
|
|
10
|
+
rsaPrivateKey: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DIDKeyData {
|
|
13
|
+
owner: string;
|
|
14
|
+
did: string;
|
|
15
|
+
mnemonic: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generate a random BIP39 mnemonic phrase
|
|
19
|
+
* @param wordCount Number of words (12, 15, 18, 21, or 24), default is 12
|
|
20
|
+
* @returns A mnemonic phrase string
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const mnemonic = generateMnemonic(12);
|
|
25
|
+
* console.log(mnemonic);
|
|
26
|
+
* // Output: "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateMnemonic(wordCount?: number): string;
|
|
30
|
+
/**
|
|
31
|
+
* Derive Ethereum address from mnemonic using Trust Wallet Core
|
|
32
|
+
* Uses standard BIP44 derivation path for Ethereum
|
|
33
|
+
*
|
|
34
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
35
|
+
* @returns Ethereum address (0x...)
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const address = await getEthereumAddressFromMnemonic(mnemonic);
|
|
40
|
+
* console.log(address); // "0x9858EfFD232B4033E47d90003D41EC34EcaEda94"
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function getEthereumAddressFromMnemonic(mnemonic: string): Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Derive EVM-compatible private key from mnemonic using Trust Wallet Core
|
|
46
|
+
* Uses standard BIP44 derivation path for Ethereum (m/44'/60'/0'/0/0)
|
|
47
|
+
*
|
|
48
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
49
|
+
* @returns Private key in hex format with 0x prefix (0x...)
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const privateKey = await getEVMPrivateKeyFromMnemonic(mnemonic);
|
|
54
|
+
* console.log(privateKey); // "0x1234567890abcdef..."
|
|
55
|
+
* // Can be used with ethers.Wallet or setSigner
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function getEVMPrivateKeyFromMnemonic(mnemonic: string): Promise<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Generate DID from mnemonic using Trust Wallet Core
|
|
61
|
+
* Uses Ed25519 key and follows did:key specification
|
|
62
|
+
* This implementation is identical to TermiPass
|
|
63
|
+
*
|
|
64
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
65
|
+
* @returns DID string in format: did:key:z...
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const did = await getDIDFromMnemonic(mnemonic);
|
|
70
|
+
* console.log(did);
|
|
71
|
+
* // Output: "did:key:z6MkhtRJqzrZNaeEvGvgJVJv6dyFWDRYpZuHW61e8hjF6Fow"
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function getDIDFromMnemonic(mnemonic: string): Promise<string>;
|
|
75
|
+
/**
|
|
76
|
+
* Derive both owner (Ethereum address) and DID from existing mnemonic
|
|
77
|
+
*
|
|
78
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
79
|
+
* @returns Object containing owner (Ethereum address) and DID
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const { owner, did } = await deriveDIDFromMnemonic(mnemonic);
|
|
84
|
+
* console.log('Owner:', owner);
|
|
85
|
+
* console.log('DID:', did);
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare function deriveDIDFromMnemonic(mnemonic: string): Promise<{
|
|
89
|
+
owner: string;
|
|
90
|
+
did: string;
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* Generate mnemonic, Ethereum address, and DID all at once
|
|
94
|
+
*
|
|
95
|
+
* @param wordCount Number of words in mnemonic (default 12)
|
|
96
|
+
* @returns Object containing mnemonic, owner (Ethereum address), and DID
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const keyData = await generateDIDKeyData(12);
|
|
101
|
+
* console.log('Mnemonic:', keyData.mnemonic);
|
|
102
|
+
* console.log('Owner:', keyData.owner);
|
|
103
|
+
* console.log('DID:', keyData.did);
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function generateDIDKeyData(wordCount?: number): Promise<DIDKeyData>;
|
|
107
|
+
/**
|
|
108
|
+
* Generate RSA key pair (cross-platform)
|
|
109
|
+
*
|
|
110
|
+
* - In Node.js: Returns immediately (synchronous)
|
|
111
|
+
* - In Browser: Returns a Promise (asynchronous, uses Web Crypto API)
|
|
112
|
+
*
|
|
113
|
+
* @param length Key length in bits (minimum 512, must be multiple of 8, default 2048)
|
|
114
|
+
* @returns Public and private keys in PEM PKCS#8 format
|
|
115
|
+
* @throws Error if key length is invalid or crypto API is unavailable
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* // Node.js (synchronous, but wrapped in Promise for compatibility)
|
|
120
|
+
* const keyPair = await createRsaKeyPair(2048);
|
|
121
|
+
*
|
|
122
|
+
* // Browser (asynchronous)
|
|
123
|
+
* const keyPair = await createRsaKeyPair(2048);
|
|
124
|
+
*
|
|
125
|
+
* console.log(keyPair.rsaPublicKey); // PEM format
|
|
126
|
+
* console.log(keyPair.rsaPrivateKey); // PEM format
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function createRsaKeyPair(length?: number): Promise<RSAPublicKeyData>;
|
|
130
|
+
//# sourceMappingURL=crypto-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-utils.d.ts","sourceRoot":"","sources":["../../src/utils/crypto-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyCH,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CACjB;AAgED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,MAAW,GAAG,MAAM,CAmB/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,8BAA8B,CACnD,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CACjD,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAmBjB;AA6BD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACZ,CAAC,CAaD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACvC,SAAS,GAAE,MAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CASrB;AA4FD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,GAAE,MAAa,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAgB3B"}
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-platform crypto utilities using Trust Wallet Core
|
|
4
|
+
* Works in both Node.js and Browser environments
|
|
5
|
+
*
|
|
6
|
+
* This implementation uses the same approach as TermiPass to ensure
|
|
7
|
+
* compatibility across the entire Olares ecosystem.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.generateMnemonic = generateMnemonic;
|
|
44
|
+
exports.getEthereumAddressFromMnemonic = getEthereumAddressFromMnemonic;
|
|
45
|
+
exports.getEVMPrivateKeyFromMnemonic = getEVMPrivateKeyFromMnemonic;
|
|
46
|
+
exports.getDIDFromMnemonic = getDIDFromMnemonic;
|
|
47
|
+
exports.deriveDIDFromMnemonic = deriveDIDFromMnemonic;
|
|
48
|
+
exports.generateDIDKeyData = generateDIDKeyData;
|
|
49
|
+
exports.createRsaKeyPair = createRsaKeyPair;
|
|
50
|
+
const bip39 = __importStar(require("bip39"));
|
|
51
|
+
const varint = __importStar(require("varint"));
|
|
52
|
+
// Base58 Bitcoin alphabet
|
|
53
|
+
const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
54
|
+
/**
|
|
55
|
+
* Encode bytes to base58btc format
|
|
56
|
+
* This is a pure implementation compatible with multiformats/bases/base58
|
|
57
|
+
*/
|
|
58
|
+
function base58Encode(bytes) {
|
|
59
|
+
// Convert bytes to bigint
|
|
60
|
+
let num = 0n;
|
|
61
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
62
|
+
num = num * 256n + BigInt(bytes[i]);
|
|
63
|
+
}
|
|
64
|
+
// Convert to base58
|
|
65
|
+
let encoded = '';
|
|
66
|
+
while (num > 0n) {
|
|
67
|
+
const remainder = Number(num % 58n);
|
|
68
|
+
encoded = BASE58_ALPHABET[remainder] + encoded;
|
|
69
|
+
num = num / 58n;
|
|
70
|
+
}
|
|
71
|
+
// Add leading '1's for leading zero bytes
|
|
72
|
+
for (let i = 0; i < bytes.length && bytes[i] === 0; i++) {
|
|
73
|
+
encoded = '1' + encoded;
|
|
74
|
+
}
|
|
75
|
+
// Add 'z' prefix for base58btc multibase
|
|
76
|
+
return 'z' + encoded;
|
|
77
|
+
}
|
|
78
|
+
// ============================================================================
|
|
79
|
+
// Trust Wallet Core Management
|
|
80
|
+
// ============================================================================
|
|
81
|
+
let walletCore = null;
|
|
82
|
+
let walletCoreLoaded = false;
|
|
83
|
+
let loadingPromise = null;
|
|
84
|
+
/**
|
|
85
|
+
* Load Trust Wallet Core (lazy loading)
|
|
86
|
+
* Works in both Node.js and browser environments
|
|
87
|
+
*/
|
|
88
|
+
async function loadWalletCore() {
|
|
89
|
+
// Return cached instance if already loaded
|
|
90
|
+
if (walletCoreLoaded && walletCore) {
|
|
91
|
+
return walletCore;
|
|
92
|
+
}
|
|
93
|
+
// If already loading, wait for that promise
|
|
94
|
+
if (loadingPromise) {
|
|
95
|
+
return loadingPromise;
|
|
96
|
+
}
|
|
97
|
+
// Start loading
|
|
98
|
+
loadingPromise = (async () => {
|
|
99
|
+
try {
|
|
100
|
+
// Check if running in browser or Node.js
|
|
101
|
+
if (typeof window !== 'undefined' &&
|
|
102
|
+
typeof require === 'undefined') {
|
|
103
|
+
// Browser environment with ES modules
|
|
104
|
+
const { initWasm } = await Promise.resolve().then(() => __importStar(require('@trustwallet/wallet-core')));
|
|
105
|
+
walletCore = await initWasm();
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Node.js environment
|
|
109
|
+
const { initWasm } = require('@trustwallet/wallet-core');
|
|
110
|
+
walletCore = await initWasm();
|
|
111
|
+
}
|
|
112
|
+
walletCoreLoaded = true;
|
|
113
|
+
return walletCore;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
loadingPromise = null; // Reset on error to allow retry
|
|
117
|
+
throw new Error(`Failed to load Trust Wallet Core: ${error instanceof Error ? error.message : String(error)}`);
|
|
118
|
+
}
|
|
119
|
+
})();
|
|
120
|
+
return loadingPromise;
|
|
121
|
+
}
|
|
122
|
+
// multicodec code for Ed25519 keys (0xed)
|
|
123
|
+
const ED25519_CODEC_ID = varint.encode(parseInt('0xed', 16));
|
|
124
|
+
// ============================================================================
|
|
125
|
+
// Mnemonic and Key Derivation Functions
|
|
126
|
+
// ============================================================================
|
|
127
|
+
/**
|
|
128
|
+
* Generate a random BIP39 mnemonic phrase
|
|
129
|
+
* @param wordCount Number of words (12, 15, 18, 21, or 24), default is 12
|
|
130
|
+
* @returns A mnemonic phrase string
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const mnemonic = generateMnemonic(12);
|
|
135
|
+
* console.log(mnemonic);
|
|
136
|
+
* // Output: "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
function generateMnemonic(wordCount = 12) {
|
|
140
|
+
// Convert word count to entropy bits
|
|
141
|
+
// 12 words = 128 bits, 15 words = 160 bits, etc.
|
|
142
|
+
const strengthMap = {
|
|
143
|
+
12: 128,
|
|
144
|
+
15: 160,
|
|
145
|
+
18: 192,
|
|
146
|
+
21: 224,
|
|
147
|
+
24: 256
|
|
148
|
+
};
|
|
149
|
+
const strength = strengthMap[wordCount];
|
|
150
|
+
if (!strength) {
|
|
151
|
+
throw new Error('Invalid word count. Must be one of: 12, 15, 18, 21, 24');
|
|
152
|
+
}
|
|
153
|
+
return bip39.generateMnemonic(strength);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Derive Ethereum address from mnemonic using Trust Wallet Core
|
|
157
|
+
* Uses standard BIP44 derivation path for Ethereum
|
|
158
|
+
*
|
|
159
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
160
|
+
* @returns Ethereum address (0x...)
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* const address = await getEthereumAddressFromMnemonic(mnemonic);
|
|
165
|
+
* console.log(address); // "0x9858EfFD232B4033E47d90003D41EC34EcaEda94"
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
async function getEthereumAddressFromMnemonic(mnemonic) {
|
|
169
|
+
// Validate mnemonic
|
|
170
|
+
if (!bip39.validateMnemonic(mnemonic)) {
|
|
171
|
+
throw new Error('Invalid mnemonic phrase');
|
|
172
|
+
}
|
|
173
|
+
const core = await loadWalletCore();
|
|
174
|
+
const { HDWallet, CoinType } = core;
|
|
175
|
+
const wallet = HDWallet.createWithMnemonic(mnemonic, '');
|
|
176
|
+
return wallet.getAddressForCoin(CoinType.ethereum);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Derive EVM-compatible private key from mnemonic using Trust Wallet Core
|
|
180
|
+
* Uses standard BIP44 derivation path for Ethereum (m/44'/60'/0'/0/0)
|
|
181
|
+
*
|
|
182
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
183
|
+
* @returns Private key in hex format with 0x prefix (0x...)
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* const privateKey = await getEVMPrivateKeyFromMnemonic(mnemonic);
|
|
188
|
+
* console.log(privateKey); // "0x1234567890abcdef..."
|
|
189
|
+
* // Can be used with ethers.Wallet or setSigner
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
async function getEVMPrivateKeyFromMnemonic(mnemonic) {
|
|
193
|
+
// Validate mnemonic
|
|
194
|
+
if (!bip39.validateMnemonic(mnemonic)) {
|
|
195
|
+
throw new Error('Invalid mnemonic phrase');
|
|
196
|
+
}
|
|
197
|
+
const core = await loadWalletCore();
|
|
198
|
+
const { HDWallet, CoinType } = core;
|
|
199
|
+
const wallet = HDWallet.createWithMnemonic(mnemonic, '');
|
|
200
|
+
// Get private key for Ethereum
|
|
201
|
+
const privateKeyData = wallet.getKeyForCoin(CoinType.ethereum);
|
|
202
|
+
// Convert to hex string with 0x prefix
|
|
203
|
+
const privateKeyHex = '0x' + Buffer.from(privateKeyData.data()).toString('hex');
|
|
204
|
+
return privateKeyHex;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get Ed25519 public key ID from mnemonic (internal helper)
|
|
208
|
+
* This is the same implementation as TermiPass
|
|
209
|
+
*
|
|
210
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
211
|
+
* @returns Base58btc encoded ID with multicodec prefix
|
|
212
|
+
*/
|
|
213
|
+
async function getID(mnemonic) {
|
|
214
|
+
const core = await loadWalletCore();
|
|
215
|
+
const { HDWallet, Curve } = core;
|
|
216
|
+
const wallet = HDWallet.createWithMnemonic(mnemonic, '');
|
|
217
|
+
const privateKey = wallet.getMasterKey(Curve.ed25519);
|
|
218
|
+
const publicKey = privateKey.getPublicKeyEd25519();
|
|
219
|
+
// Combine multicodec prefix with public key
|
|
220
|
+
const idBytes = new Uint8Array(publicKey.data().length + ED25519_CODEC_ID.length);
|
|
221
|
+
idBytes.set(ED25519_CODEC_ID, 0);
|
|
222
|
+
idBytes.set(publicKey.data(), ED25519_CODEC_ID.length);
|
|
223
|
+
// Encode to base58btc
|
|
224
|
+
const id = base58Encode(idBytes);
|
|
225
|
+
return id;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Generate DID from mnemonic using Trust Wallet Core
|
|
229
|
+
* Uses Ed25519 key and follows did:key specification
|
|
230
|
+
* This implementation is identical to TermiPass
|
|
231
|
+
*
|
|
232
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
233
|
+
* @returns DID string in format: did:key:z...
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* const did = await getDIDFromMnemonic(mnemonic);
|
|
238
|
+
* console.log(did);
|
|
239
|
+
* // Output: "did:key:z6MkhtRJqzrZNaeEvGvgJVJv6dyFWDRYpZuHW61e8hjF6Fow"
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
async function getDIDFromMnemonic(mnemonic) {
|
|
243
|
+
// Validate mnemonic
|
|
244
|
+
if (!bip39.validateMnemonic(mnemonic)) {
|
|
245
|
+
throw new Error('Invalid mnemonic phrase');
|
|
246
|
+
}
|
|
247
|
+
const id = await getID(mnemonic);
|
|
248
|
+
return `did:key:${id}`;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Derive both owner (Ethereum address) and DID from existing mnemonic
|
|
252
|
+
*
|
|
253
|
+
* @param mnemonic BIP39 mnemonic phrase
|
|
254
|
+
* @returns Object containing owner (Ethereum address) and DID
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* ```typescript
|
|
258
|
+
* const { owner, did } = await deriveDIDFromMnemonic(mnemonic);
|
|
259
|
+
* console.log('Owner:', owner);
|
|
260
|
+
* console.log('DID:', did);
|
|
261
|
+
* ```
|
|
262
|
+
*/
|
|
263
|
+
async function deriveDIDFromMnemonic(mnemonic) {
|
|
264
|
+
// Validate mnemonic once upfront
|
|
265
|
+
if (!bip39.validateMnemonic(mnemonic)) {
|
|
266
|
+
throw new Error('Invalid mnemonic phrase');
|
|
267
|
+
}
|
|
268
|
+
// Derive both in parallel for better performance
|
|
269
|
+
const [owner, did] = await Promise.all([
|
|
270
|
+
getEthereumAddressFromMnemonic(mnemonic),
|
|
271
|
+
getDIDFromMnemonic(mnemonic)
|
|
272
|
+
]);
|
|
273
|
+
return { owner, did };
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Generate mnemonic, Ethereum address, and DID all at once
|
|
277
|
+
*
|
|
278
|
+
* @param wordCount Number of words in mnemonic (default 12)
|
|
279
|
+
* @returns Object containing mnemonic, owner (Ethereum address), and DID
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* ```typescript
|
|
283
|
+
* const keyData = await generateDIDKeyData(12);
|
|
284
|
+
* console.log('Mnemonic:', keyData.mnemonic);
|
|
285
|
+
* console.log('Owner:', keyData.owner);
|
|
286
|
+
* console.log('DID:', keyData.did);
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
async function generateDIDKeyData(wordCount = 12) {
|
|
290
|
+
const mnemonic = generateMnemonic(wordCount);
|
|
291
|
+
const { owner, did } = await deriveDIDFromMnemonic(mnemonic);
|
|
292
|
+
return {
|
|
293
|
+
mnemonic,
|
|
294
|
+
owner,
|
|
295
|
+
did
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
// ============================================================================
|
|
299
|
+
// RSA Key Pair Generation (Browser and Node.js compatible)
|
|
300
|
+
// ============================================================================
|
|
301
|
+
/**
|
|
302
|
+
* Check if running in Node.js environment
|
|
303
|
+
*/
|
|
304
|
+
function isNode() {
|
|
305
|
+
return (typeof process !== 'undefined' &&
|
|
306
|
+
process.versions != null &&
|
|
307
|
+
process.versions.node != null);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Convert ArrayBuffer to PEM format
|
|
311
|
+
*/
|
|
312
|
+
function arrayBufferToPem(buffer, label) {
|
|
313
|
+
const binary = String.fromCharCode(...new Uint8Array(buffer));
|
|
314
|
+
const base64 = btoa(binary);
|
|
315
|
+
const formatted = base64.match(/.{1,64}/g)?.join('\n') || base64;
|
|
316
|
+
return `-----BEGIN ${label}-----\n${formatted}\n-----END ${label}-----`;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Generate RSA key pair in browser using Web Crypto API
|
|
320
|
+
*/
|
|
321
|
+
async function generateKeyPairBrowser(length) {
|
|
322
|
+
if (typeof window === 'undefined' ||
|
|
323
|
+
!window.crypto ||
|
|
324
|
+
!window.crypto.subtle) {
|
|
325
|
+
throw new Error('Web Crypto API not available in this browser');
|
|
326
|
+
}
|
|
327
|
+
const keyPair = await window.crypto.subtle.generateKey({
|
|
328
|
+
name: 'RSA-OAEP',
|
|
329
|
+
modulusLength: length,
|
|
330
|
+
publicExponent: new Uint8Array([1, 0, 1]), // 65537
|
|
331
|
+
hash: 'SHA-256'
|
|
332
|
+
}, true, // extractable
|
|
333
|
+
['encrypt', 'decrypt']);
|
|
334
|
+
const publicKeySpki = await window.crypto.subtle.exportKey('spki', keyPair.publicKey);
|
|
335
|
+
const privateKeyPkcs8 = await window.crypto.subtle.exportKey('pkcs8', keyPair.privateKey);
|
|
336
|
+
return {
|
|
337
|
+
rsaPublicKey: arrayBufferToPem(publicKeySpki, 'PUBLIC KEY'),
|
|
338
|
+
rsaPrivateKey: arrayBufferToPem(privateKeyPkcs8, 'PRIVATE KEY')
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Generate RSA key pair in Node.js using crypto module
|
|
343
|
+
*/
|
|
344
|
+
function generateKeyPairNode(length) {
|
|
345
|
+
// Dynamic require to avoid bundler issues
|
|
346
|
+
const crypto = require('crypto');
|
|
347
|
+
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
|
|
348
|
+
modulusLength: length,
|
|
349
|
+
publicKeyEncoding: {
|
|
350
|
+
type: 'spki',
|
|
351
|
+
format: 'pem'
|
|
352
|
+
},
|
|
353
|
+
privateKeyEncoding: {
|
|
354
|
+
type: 'pkcs8',
|
|
355
|
+
format: 'pem'
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
return {
|
|
359
|
+
rsaPublicKey: publicKey,
|
|
360
|
+
rsaPrivateKey: privateKey
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Generate RSA key pair (cross-platform)
|
|
365
|
+
*
|
|
366
|
+
* - In Node.js: Returns immediately (synchronous)
|
|
367
|
+
* - In Browser: Returns a Promise (asynchronous, uses Web Crypto API)
|
|
368
|
+
*
|
|
369
|
+
* @param length Key length in bits (minimum 512, must be multiple of 8, default 2048)
|
|
370
|
+
* @returns Public and private keys in PEM PKCS#8 format
|
|
371
|
+
* @throws Error if key length is invalid or crypto API is unavailable
|
|
372
|
+
*
|
|
373
|
+
* @example
|
|
374
|
+
* ```typescript
|
|
375
|
+
* // Node.js (synchronous, but wrapped in Promise for compatibility)
|
|
376
|
+
* const keyPair = await createRsaKeyPair(2048);
|
|
377
|
+
*
|
|
378
|
+
* // Browser (asynchronous)
|
|
379
|
+
* const keyPair = await createRsaKeyPair(2048);
|
|
380
|
+
*
|
|
381
|
+
* console.log(keyPair.rsaPublicKey); // PEM format
|
|
382
|
+
* console.log(keyPair.rsaPrivateKey); // PEM format
|
|
383
|
+
* ```
|
|
384
|
+
*/
|
|
385
|
+
function createRsaKeyPair(length = 2048) {
|
|
386
|
+
// Validate key length
|
|
387
|
+
if (length < 512) {
|
|
388
|
+
throw new Error('RSA key length must be at least 512 bits');
|
|
389
|
+
}
|
|
390
|
+
if (length % 8 !== 0) {
|
|
391
|
+
throw new Error('RSA key length must be a multiple of 8');
|
|
392
|
+
}
|
|
393
|
+
if (isNode()) {
|
|
394
|
+
// Node.js environment: use crypto module (synchronous, but wrap in Promise)
|
|
395
|
+
return Promise.resolve(generateKeyPairNode(length));
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
// Browser environment: use Web Crypto API (asynchronous)
|
|
399
|
+
return generateKeyPairBrowser(length);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=crypto-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-utils.js","sourceRoot":"","sources":["../../src/utils/crypto-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract Error Parser Utility
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities for parsing contract errors from ethers.js
|
|
5
|
+
* and converting them into user-friendly error messages.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Parsed error information
|
|
9
|
+
*/
|
|
10
|
+
export interface ParsedContractError {
|
|
11
|
+
message: string;
|
|
12
|
+
isNetworkError: boolean;
|
|
13
|
+
errorName?: string;
|
|
14
|
+
errorArgs?: any[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse contract error and determine if it's a network error or contract error
|
|
18
|
+
* @param error - The error object from ethers.js
|
|
19
|
+
* @returns Parsed error information with friendly message
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* try {
|
|
24
|
+
* await contract.someFunction();
|
|
25
|
+
* } catch (error) {
|
|
26
|
+
* const parsed = parseContractError(error);
|
|
27
|
+
* if (parsed.isNetworkError) {
|
|
28
|
+
* throw new Error(`Network error: ${parsed.message}`);
|
|
29
|
+
* }
|
|
30
|
+
* console.log(parsed.message); // User-friendly message
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseContractError(error: any): ParsedContractError;
|
|
35
|
+
//# sourceMappingURL=error-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-parser.d.ts","sourceRoot":"","sources":["../../src/utils/error-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;CAClB;AA2DD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB,CA0ClE"}
|