@amadeus-protocol/sdk 1.0.8 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/chain.d.ts +144 -117
- package/dist/api/chain.d.ts.map +1 -1
- package/dist/api/chain.js +175 -146
- package/dist/api/chain.js.map +1 -1
- package/dist/api/contract.d.ts +78 -60
- package/dist/api/contract.d.ts.map +1 -1
- package/dist/api/contract.js +102 -75
- package/dist/api/contract.js.map +1 -1
- package/dist/api/epoch.d.ts +65 -66
- package/dist/api/epoch.d.ts.map +1 -1
- package/dist/api/epoch.js +90 -98
- package/dist/api/epoch.js.map +1 -1
- package/dist/api/peer.d.ts +77 -78
- package/dist/api/peer.d.ts.map +1 -1
- package/dist/api/peer.js +93 -94
- package/dist/api/peer.js.map +1 -1
- package/dist/api/proof.d.ts +44 -23
- package/dist/api/proof.d.ts.map +1 -1
- package/dist/api/proof.js +56 -29
- package/dist/api/proof.js.map +1 -1
- package/dist/api/transaction.d.ts +68 -69
- package/dist/api/transaction.d.ts.map +1 -1
- package/dist/api/transaction.js +84 -84
- package/dist/api/transaction.js.map +1 -1
- package/dist/api/wallet.d.ts +36 -37
- package/dist/api/wallet.d.ts.map +1 -1
- package/dist/api/wallet.js +47 -50
- package/dist/api/wallet.js.map +1 -1
- package/dist/client.d.ts +66 -68
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +231 -276
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +13 -10
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +49 -45
- package/dist/constants.js.map +1 -1
- package/dist/contract-state.d.ts +6 -3
- package/dist/contract-state.d.ts.map +1 -1
- package/dist/contract-state.js +88 -106
- package/dist/contract-state.js.map +1 -1
- package/dist/contracts/abi-types.d.ts +32 -32
- package/dist/contracts/abi-types.d.ts.map +1 -1
- package/dist/contracts/coin.d.ts +13 -20
- package/dist/contracts/coin.d.ts.map +1 -1
- package/dist/contracts/coin.js +42 -38
- package/dist/contracts/coin.js.map +1 -1
- package/dist/contracts/contract-call.d.ts +14 -16
- package/dist/contracts/contract-call.d.ts.map +1 -1
- package/dist/contracts/contract-call.js +45 -54
- package/dist/contracts/contract-call.js.map +1 -1
- package/dist/contracts/contract.d.ts +24 -55
- package/dist/contracts/contract.d.ts.map +1 -1
- package/dist/contracts/contract.js +63 -101
- package/dist/contracts/contract.js.map +1 -1
- package/dist/contracts/lockup/abi.d.ts +54 -51
- package/dist/contracts/lockup/abi.d.ts.map +1 -1
- package/dist/contracts/lockup/abi.js +65 -74
- package/dist/contracts/lockup/abi.js.map +1 -1
- package/dist/contracts/lockup/helpers.d.ts +22 -18
- package/dist/contracts/lockup/helpers.d.ts.map +1 -1
- package/dist/contracts/lockup/helpers.js +44 -47
- package/dist/contracts/lockup/helpers.js.map +1 -1
- package/dist/contracts/lockup/parsers.d.ts +7 -3
- package/dist/contracts/lockup/parsers.d.ts.map +1 -1
- package/dist/contracts/lockup/parsers.js +51 -55
- package/dist/contracts/lockup/parsers.js.map +1 -1
- package/dist/contracts/lockup/storage-keys.d.ts +5 -2
- package/dist/contracts/lockup/storage-keys.d.ts.map +1 -1
- package/dist/contracts/lockup/storage-keys.js +54 -70
- package/dist/contracts/lockup/storage-keys.js.map +1 -1
- package/dist/contracts/lockup/types.d.ts +73 -70
- package/dist/contracts/lockup/types.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/abi.d.ts +328 -325
- package/dist/contracts/lockup-prime/abi.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/abi.js +397 -417
- package/dist/contracts/lockup-prime/abi.js.map +1 -1
- package/dist/contracts/lockup-prime/helpers.d.ts +35 -31
- package/dist/contracts/lockup-prime/helpers.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/helpers.js +131 -137
- package/dist/contracts/lockup-prime/helpers.js.map +1 -1
- package/dist/contracts/lockup-prime/parsers.d.ts +9 -5
- package/dist/contracts/lockup-prime/parsers.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/parsers.js +61 -61
- package/dist/contracts/lockup-prime/parsers.js.map +1 -1
- package/dist/contracts/lockup-prime/storage-keys.d.ts +7 -4
- package/dist/contracts/lockup-prime/storage-keys.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/storage-keys.js +64 -80
- package/dist/contracts/lockup-prime/storage-keys.js.map +1 -1
- package/dist/contracts/lockup-prime/types.d.ts +92 -89
- package/dist/contracts/lockup-prime/types.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/types.js +12 -13
- package/dist/contracts/lockup-prime/types.js.map +1 -1
- package/dist/contracts/nft/abi.d.ts +104 -0
- package/dist/contracts/nft/abi.d.ts.map +1 -0
- package/dist/contracts/nft/abi.js +135 -0
- package/dist/contracts/nft/abi.js.map +1 -0
- package/dist/contracts/nft/helpers.d.ts +21 -0
- package/dist/contracts/nft/helpers.d.ts.map +1 -0
- package/dist/contracts/nft/helpers.js +61 -0
- package/dist/contracts/nft/helpers.js.map +1 -0
- package/dist/contracts/nft/types.d.ts +47 -0
- package/dist/contracts/nft/types.d.ts.map +1 -0
- package/dist/conversion.d.ts +5 -2
- package/dist/conversion.d.ts.map +1 -1
- package/dist/conversion.js +45 -50
- package/dist/conversion.js.map +1 -1
- package/dist/crypto.d.ts +14 -16
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +121 -140
- package/dist/crypto.js.map +1 -1
- package/dist/encoding.d.ts +11 -8
- package/dist/encoding.d.ts.map +1 -1
- package/dist/encoding.js +123 -144
- package/dist/encoding.js.map +1 -1
- package/dist/encryption.d.ts +15 -12
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +119 -117
- package/dist/encryption.js.map +1 -1
- package/dist/explorer.d.ts +10 -7
- package/dist/explorer.d.ts.map +1 -1
- package/dist/explorer.js +51 -48
- package/dist/explorer.js.map +1 -1
- package/dist/formatters.d.ts +8 -5
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +67 -68
- package/dist/formatters.js.map +1 -1
- package/dist/index.d.ts +42 -55
- package/dist/index.js +39 -55
- package/dist/mnemonic.d.ts +12 -9
- package/dist/mnemonic.d.ts.map +1 -1
- package/dist/mnemonic.js +105 -114
- package/dist/mnemonic.js.map +1 -1
- package/dist/networks.d.ts +14 -17
- package/dist/networks.d.ts.map +1 -1
- package/dist/networks.js +40 -36
- package/dist/networks.js.map +1 -1
- package/dist/schemas.js +75 -79
- package/dist/schemas.js.map +1 -1
- package/dist/sdk.d.ts +69 -65
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +126 -117
- package/dist/sdk.js.map +1 -1
- package/dist/serialization.d.ts +8 -18
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +207 -260
- package/dist/serialization.js.map +1 -1
- package/dist/signing.js +67 -67
- package/dist/signing.js.map +1 -1
- package/dist/transaction-builder.d.ts +175 -184
- package/dist/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder.js +295 -344
- package/dist/transaction-builder.js.map +1 -1
- package/dist/transaction-errors.d.ts +10 -12
- package/dist/transaction-errors.d.ts.map +1 -1
- package/dist/transaction-errors.js +145 -166
- package/dist/transaction-errors.js.map +1 -1
- package/dist/types.d.ts +530 -450
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +169 -183
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts +24 -26
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +194 -192
- package/dist/validation.js.map +1 -1
- package/package.json +4 -3
- package/dist/api/index.d.ts +0 -8
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -8
- package/dist/api/index.js.map +0 -1
- package/dist/contracts/abi-types.js +0 -8
- package/dist/contracts/abi-types.js.map +0 -1
- package/dist/contracts/index.d.ts +0 -7
- package/dist/contracts/index.d.ts.map +0 -1
- package/dist/contracts/index.js +0 -7
- package/dist/contracts/index.js.map +0 -1
- package/dist/contracts/lockup/calls.d.ts +0 -23
- package/dist/contracts/lockup/calls.d.ts.map +0 -1
- package/dist/contracts/lockup/calls.js +0 -25
- package/dist/contracts/lockup/calls.js.map +0 -1
- package/dist/contracts/lockup/index.d.ts +0 -6
- package/dist/contracts/lockup/index.d.ts.map +0 -1
- package/dist/contracts/lockup/index.js +0 -6
- package/dist/contracts/lockup/index.js.map +0 -1
- package/dist/contracts/lockup/types.js +0 -7
- package/dist/contracts/lockup/types.js.map +0 -1
- package/dist/contracts/lockup-prime/calls.d.ts +0 -53
- package/dist/contracts/lockup-prime/calls.d.ts.map +0 -1
- package/dist/contracts/lockup-prime/calls.js +0 -60
- package/dist/contracts/lockup-prime/calls.js.map +0 -1
- package/dist/contracts/lockup-prime/index.d.ts +0 -6
- package/dist/contracts/lockup-prime/index.d.ts.map +0 -1
- package/dist/contracts/lockup-prime/index.js +0 -6
- package/dist/contracts/lockup-prime/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/schemas.d.ts +0 -67
- package/dist/schemas.d.ts.map +0 -1
- package/dist/signing.d.ts +0 -39
- package/dist/signing.d.ts.map +0 -1
package/dist/crypto.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* This module provides cryptographic functions for key generation and BLS12-381 operations
|
|
5
|
-
* used by the Amadeus protocol.
|
|
6
|
-
*/
|
|
7
|
-
import type { KeyPair } from './types';
|
|
1
|
+
import { KeyPair } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/crypto.d.ts
|
|
8
4
|
/**
|
|
9
5
|
* Reduce a 64-byte seed to a 32-byte private key compatible with BLS12-381
|
|
10
6
|
*
|
|
@@ -12,7 +8,7 @@ import type { KeyPair } from './types';
|
|
|
12
8
|
* @returns 32-byte private key
|
|
13
9
|
* @throws Error if input is not exactly 64 bytes
|
|
14
10
|
*/
|
|
15
|
-
|
|
11
|
+
declare function reduce512To256LE(bytes64: Uint8Array): Uint8Array;
|
|
16
12
|
/**
|
|
17
13
|
* Derive a keypair from a 64-byte seed
|
|
18
14
|
*
|
|
@@ -24,7 +20,7 @@ export declare function reduce512To256LE(bytes64: Uint8Array): Uint8Array;
|
|
|
24
20
|
* const [pk, sk] = seed64ToKeypair(seed64)
|
|
25
21
|
* ```
|
|
26
22
|
*/
|
|
27
|
-
|
|
23
|
+
declare function seed64ToKeypair(seed64: Uint8Array): [Uint8Array, Uint8Array];
|
|
28
24
|
/**
|
|
29
25
|
* Get public key from a 64-byte seed
|
|
30
26
|
*
|
|
@@ -36,7 +32,7 @@ export declare function seed64ToKeypair(seed64: Uint8Array): [Uint8Array, Uint8A
|
|
|
36
32
|
* const publicKey = getPublicKey(seed64)
|
|
37
33
|
* ```
|
|
38
34
|
*/
|
|
39
|
-
|
|
35
|
+
declare function getPublicKey(seed64: Uint8Array): Uint8Array;
|
|
40
36
|
/**
|
|
41
37
|
* Derive secret key and seed64 from a Base58 encoded seed
|
|
42
38
|
*
|
|
@@ -49,9 +45,9 @@ export declare function getPublicKey(seed64: Uint8Array): Uint8Array;
|
|
|
49
45
|
* const { sk, seed64 } = deriveSkAndSeed64FromBase58Seed(base58Seed)
|
|
50
46
|
* ```
|
|
51
47
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
declare function deriveSkAndSeed64FromBase58Seed(base58Seed64: string): {
|
|
49
|
+
sk: Uint8Array;
|
|
50
|
+
seed64: Uint8Array;
|
|
55
51
|
};
|
|
56
52
|
/**
|
|
57
53
|
* Derive public key from a Base58 encoded seed
|
|
@@ -65,7 +61,7 @@ export declare function deriveSkAndSeed64FromBase58Seed(base58Seed64: string): {
|
|
|
65
61
|
* const publicKey = derivePublicKeyFromSeedBase58(base58Seed)
|
|
66
62
|
* ```
|
|
67
63
|
*/
|
|
68
|
-
|
|
64
|
+
declare function derivePublicKeyFromSeedBase58(base58Seed: string): string;
|
|
69
65
|
/**
|
|
70
66
|
* Generate a cryptographically secure random private key (64-byte seed)
|
|
71
67
|
*
|
|
@@ -76,7 +72,7 @@ export declare function derivePublicKeyFromSeedBase58(base58Seed: string): strin
|
|
|
76
72
|
* const seed = generatePrivateKey()
|
|
77
73
|
* ```
|
|
78
74
|
*/
|
|
79
|
-
|
|
75
|
+
declare function generatePrivateKey(): Uint8Array;
|
|
80
76
|
/**
|
|
81
77
|
* Generate a new keypair
|
|
82
78
|
*
|
|
@@ -89,5 +85,7 @@ export declare function generatePrivateKey(): Uint8Array;
|
|
|
89
85
|
* console.log(keypair.privateKey) // Base58 private key (seed)
|
|
90
86
|
* ```
|
|
91
87
|
*/
|
|
92
|
-
|
|
88
|
+
declare function generateKeypair(): KeyPair;
|
|
89
|
+
//#endregion
|
|
90
|
+
export { derivePublicKeyFromSeedBase58, deriveSkAndSeed64FromBase58Seed, generateKeypair, generatePrivateKey, getPublicKey, reduce512To256LE, seed64ToKeypair };
|
|
93
91
|
//# sourceMappingURL=crypto.d.ts.map
|
package/dist/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","names":[],"sources":["../src/crypto.ts"],"mappings":";;;;;;;;AA+DA;;iBAnCgB,gBAAA,CAAiB,OAAA,EAAS,UAAA,GAAa,UAAA;;;;;;;;;;;;iBAmCvC,eAAA,CAAgB,MAAA,EAAQ,UAAA,IAAc,UAAA,EAAY,UAAA;;;;;;;;;AAkClE;;;iBAjBgB,YAAA,CAAa,MAAA,EAAQ,UAAA,GAAa,UAAA;;;;;;;;AA6ClD;;;;;iBA5BgB,+BAAA,CAAgC,YAAA;EAC/C,EAAA,EAAI,UAAA;EACJ,MAAA,EAAQ,UAAA;AAAA;;AAsET;;;;;;;;;;;iBA5CgB,6BAAA,CAA8B,UAAA;;;;;;;;;;;iBA0B9B,kBAAA,CAAA,GAAsB,UAAA;;;;;;;;;;;;;iBAkBtB,eAAA,CAAA,GAAmB,OAAA"}
|
package/dist/crypto.js
CHANGED
|
@@ -1,156 +1,137 @@
|
|
|
1
|
+
import "./constants.js";
|
|
2
|
+
import { fromBase58, toBase58 } from "./encoding.js";
|
|
3
|
+
import { bls12_381 } from "@noble/curves/bls12-381";
|
|
4
|
+
//#region src/crypto.ts
|
|
1
5
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { AMADEUS_SEED_BYTE_LENGTH } from './constants';
|
|
9
|
-
import { toBase58, fromBase58 } from './encoding';
|
|
10
|
-
// Constant: BLS12-381 group order
|
|
11
|
-
const BLS12_381_ORDER = BigInt('0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001');
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// BLS12-381 KEY OPERATIONS
|
|
14
|
-
// ============================================================================
|
|
6
|
+
* Cryptographic Utilities for Amadeus Protocol
|
|
7
|
+
*
|
|
8
|
+
* This module provides cryptographic functions for key generation and BLS12-381 operations
|
|
9
|
+
* used by the Amadeus protocol.
|
|
10
|
+
*/
|
|
11
|
+
const BLS12_381_ORDER = BigInt("0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001");
|
|
15
12
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// Convert to 32-byte BIG-ENDIAN
|
|
34
|
-
const out = new Uint8Array(32);
|
|
35
|
-
for (let i = 31; i >= 0; i--) {
|
|
36
|
-
out[i] = Number(x & BigInt(0xff));
|
|
37
|
-
x >>= BigInt(8);
|
|
38
|
-
}
|
|
39
|
-
return out;
|
|
13
|
+
* Reduce a 64-byte seed to a 32-byte private key compatible with BLS12-381
|
|
14
|
+
*
|
|
15
|
+
* @param bytes64 - 64-byte seed
|
|
16
|
+
* @returns 32-byte private key
|
|
17
|
+
* @throws Error if input is not exactly 64 bytes
|
|
18
|
+
*/
|
|
19
|
+
function reduce512To256LE(bytes64) {
|
|
20
|
+
if (!(bytes64 instanceof Uint8Array) || bytes64.length !== 64) throw new Error("Expected 64-byte Uint8Array");
|
|
21
|
+
let x = BigInt(0);
|
|
22
|
+
for (let i = 0; i < 64; i++) x += BigInt(bytes64[i]) << BigInt(8) * BigInt(i);
|
|
23
|
+
x = x % BLS12_381_ORDER;
|
|
24
|
+
const out = new Uint8Array(32);
|
|
25
|
+
for (let i = 31; i >= 0; i--) {
|
|
26
|
+
out[i] = Number(x & BigInt(255));
|
|
27
|
+
x >>= BigInt(8);
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
40
30
|
}
|
|
41
31
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return [pk, sk];
|
|
32
|
+
* Derive a keypair from a 64-byte seed
|
|
33
|
+
*
|
|
34
|
+
* @param seed64 - 64-byte seed
|
|
35
|
+
* @returns Tuple of [publicKey, privateKey] as Uint8Array
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const [pk, sk] = seed64ToKeypair(seed64)
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
function seed64ToKeypair(seed64) {
|
|
43
|
+
const sk = reduce512To256LE(seed64);
|
|
44
|
+
return [bls12_381.getPublicKey(sk), sk];
|
|
56
45
|
}
|
|
57
46
|
/**
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
47
|
+
* Get public key from a 64-byte seed
|
|
48
|
+
*
|
|
49
|
+
* @param seed64 - 64-byte seed
|
|
50
|
+
* @returns Public key as Uint8Array
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* const publicKey = getPublicKey(seed64)
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
function getPublicKey(seed64) {
|
|
58
|
+
const [pk] = seed64ToKeypair(seed64);
|
|
59
|
+
return pk;
|
|
71
60
|
}
|
|
72
61
|
/**
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
sk,
|
|
92
|
-
seed64
|
|
93
|
-
};
|
|
62
|
+
* Derive secret key and seed64 from a Base58 encoded seed
|
|
63
|
+
*
|
|
64
|
+
* @param base58Seed64 - Base58 encoded 64-byte seed
|
|
65
|
+
* @returns Object containing sk (secret key) and seed64
|
|
66
|
+
* @throws Error if the seed is invalid
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* const { sk, seed64 } = deriveSkAndSeed64FromBase58Seed(base58Seed)
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
function deriveSkAndSeed64FromBase58Seed(base58Seed64) {
|
|
74
|
+
const seed64 = fromBase58(base58Seed64);
|
|
75
|
+
if (seed64.length !== 64) throw new Error("Invalid base58Seed: Must be 64 bytes (512 bits) long.");
|
|
76
|
+
return {
|
|
77
|
+
sk: reduce512To256LE(seed64),
|
|
78
|
+
seed64
|
|
79
|
+
};
|
|
94
80
|
}
|
|
95
81
|
/**
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (seed64.length !== AMADEUS_SEED_BYTE_LENGTH) {
|
|
113
|
-
throw new Error('Invalid base58Seed: Must be 64 bytes (512 bits) long.');
|
|
114
|
-
}
|
|
115
|
-
const publicKey = getPublicKey(seed64);
|
|
116
|
-
return toBase58(publicKey);
|
|
82
|
+
* Derive public key from a Base58 encoded seed
|
|
83
|
+
*
|
|
84
|
+
* @param base58Seed - Base58 encoded 64-byte seed
|
|
85
|
+
* @returns Base58 encoded public key
|
|
86
|
+
* @throws Error if the seed is invalid
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const publicKey = derivePublicKeyFromSeedBase58(base58Seed)
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
function derivePublicKeyFromSeedBase58(base58Seed) {
|
|
94
|
+
if (!base58Seed) throw new Error("Invalid base58Seed: Must be a non-empty base58 string.");
|
|
95
|
+
const seed64 = fromBase58(base58Seed);
|
|
96
|
+
if (seed64.length !== 64) throw new Error("Invalid base58Seed: Must be 64 bytes (512 bits) long.");
|
|
97
|
+
return toBase58(getPublicKey(seed64));
|
|
117
98
|
}
|
|
118
|
-
// ============================================================================
|
|
119
|
-
// KEY GENERATION
|
|
120
|
-
// ============================================================================
|
|
121
99
|
/**
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
100
|
+
* Generate a cryptographically secure random private key (64-byte seed)
|
|
101
|
+
*
|
|
102
|
+
* @returns 64-byte seed as Uint8Array
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* const seed = generatePrivateKey()
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
function generatePrivateKey() {
|
|
110
|
+
const seed = new Uint8Array(64);
|
|
111
|
+
crypto.getRandomValues(seed);
|
|
112
|
+
return seed;
|
|
135
113
|
}
|
|
136
114
|
/**
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
115
|
+
* Generate a new keypair
|
|
116
|
+
*
|
|
117
|
+
* @returns KeyPair object with Base58 encoded publicKey and privateKey
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* const keypair = generateKeypair()
|
|
122
|
+
* console.log(keypair.publicKey) // Base58 public key
|
|
123
|
+
* console.log(keypair.privateKey) // Base58 private key (seed)
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
function generateKeypair() {
|
|
127
|
+
const seed64 = generatePrivateKey();
|
|
128
|
+
const [pk] = seed64ToKeypair(seed64);
|
|
129
|
+
return {
|
|
130
|
+
publicKey: toBase58(pk),
|
|
131
|
+
privateKey: toBase58(seed64)
|
|
132
|
+
};
|
|
155
133
|
}
|
|
134
|
+
//#endregion
|
|
135
|
+
export { derivePublicKeyFromSeedBase58, deriveSkAndSeed64FromBase58Seed, generateKeypair, generatePrivateKey, getPublicKey, reduce512To256LE, seed64ToKeypair };
|
|
136
|
+
|
|
156
137
|
//# sourceMappingURL=crypto.js.map
|
package/dist/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","
|
|
1
|
+
{"version":3,"file":"crypto.js","names":["bls"],"sources":["../src/crypto.ts"],"sourcesContent":["/**\n * Cryptographic Utilities for Amadeus Protocol\n *\n * This module provides cryptographic functions for key generation and BLS12-381 operations\n * used by the Amadeus protocol.\n */\n\nimport { bls12_381 as bls } from '@noble/curves/bls12-381'\n\nimport { AMADEUS_SEED_BYTE_LENGTH } from './constants'\nimport { toBase58, fromBase58 } from './encoding'\n\n// Constant: BLS12-381 group order\nconst BLS12_381_ORDER = BigInt('0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001')\n\nimport type { KeyPair } from './types'\n\n// ============================================================================\n// BLS12-381 KEY OPERATIONS\n// ============================================================================\n\n/**\n * Reduce a 64-byte seed to a 32-byte private key compatible with BLS12-381\n *\n * @param bytes64 - 64-byte seed\n * @returns 32-byte private key\n * @throws Error if input is not exactly 64 bytes\n */\nexport function reduce512To256LE(bytes64: Uint8Array): Uint8Array {\n\tif (!(bytes64 instanceof Uint8Array) || bytes64.length !== AMADEUS_SEED_BYTE_LENGTH) {\n\t\tthrow new Error('Expected 64-byte Uint8Array')\n\t}\n\n\t// Convert 64 bytes LE -> BigInt\n\tlet x = BigInt(0)\n\tfor (let i = 0; i < AMADEUS_SEED_BYTE_LENGTH; i++) {\n\t\tx += BigInt(bytes64[i]) << (BigInt(8) * BigInt(i))\n\t}\n\n\t// Reduce mod the group order\n\tx = x % BLS12_381_ORDER\n\n\t// Convert to 32-byte BIG-ENDIAN\n\tconst out = new Uint8Array(32)\n\tfor (let i = 31; i >= 0; i--) {\n\t\tout[i] = Number(x & BigInt(0xff))\n\t\tx >>= BigInt(8)\n\t}\n\n\treturn out\n}\n\n/**\n * Derive a keypair from a 64-byte seed\n *\n * @param seed64 - 64-byte seed\n * @returns Tuple of [publicKey, privateKey] as Uint8Array\n *\n * @example\n * ```ts\n * const [pk, sk] = seed64ToKeypair(seed64)\n * ```\n */\nexport function seed64ToKeypair(seed64: Uint8Array): [Uint8Array, Uint8Array] {\n\tconst sk = reduce512To256LE(seed64)\n\tconst pk = bls.getPublicKey(sk)\n\treturn [pk, sk]\n}\n\n/**\n * Get public key from a 64-byte seed\n *\n * @param seed64 - 64-byte seed\n * @returns Public key as Uint8Array\n *\n * @example\n * ```ts\n * const publicKey = getPublicKey(seed64)\n * ```\n */\nexport function getPublicKey(seed64: Uint8Array): Uint8Array {\n\tconst [pk] = seed64ToKeypair(seed64)\n\treturn pk\n}\n\n/**\n * Derive secret key and seed64 from a Base58 encoded seed\n *\n * @param base58Seed64 - Base58 encoded 64-byte seed\n * @returns Object containing sk (secret key) and seed64\n * @throws Error if the seed is invalid\n *\n * @example\n * ```ts\n * const { sk, seed64 } = deriveSkAndSeed64FromBase58Seed(base58Seed)\n * ```\n */\nexport function deriveSkAndSeed64FromBase58Seed(base58Seed64: string): {\n\tsk: Uint8Array\n\tseed64: Uint8Array\n} {\n\tconst seed64 = fromBase58(base58Seed64)\n\tif (seed64.length !== AMADEUS_SEED_BYTE_LENGTH) {\n\t\tthrow new Error('Invalid base58Seed: Must be 64 bytes (512 bits) long.')\n\t}\n\tconst sk = reduce512To256LE(seed64)\n\n\treturn {\n\t\tsk,\n\t\tseed64\n\t}\n}\n\n/**\n * Derive public key from a Base58 encoded seed\n *\n * @param base58Seed - Base58 encoded 64-byte seed\n * @returns Base58 encoded public key\n * @throws Error if the seed is invalid\n *\n * @example\n * ```ts\n * const publicKey = derivePublicKeyFromSeedBase58(base58Seed)\n * ```\n */\nexport function derivePublicKeyFromSeedBase58(base58Seed: string): string {\n\tif (!base58Seed) {\n\t\tthrow new Error('Invalid base58Seed: Must be a non-empty base58 string.')\n\t}\n\tconst seed64 = fromBase58(base58Seed)\n\tif (seed64.length !== AMADEUS_SEED_BYTE_LENGTH) {\n\t\tthrow new Error('Invalid base58Seed: Must be 64 bytes (512 bits) long.')\n\t}\n\tconst publicKey = getPublicKey(seed64)\n\treturn toBase58(publicKey)\n}\n\n// ============================================================================\n// KEY GENERATION\n// ============================================================================\n\n/**\n * Generate a cryptographically secure random private key (64-byte seed)\n *\n * @returns 64-byte seed as Uint8Array\n *\n * @example\n * ```ts\n * const seed = generatePrivateKey()\n * ```\n */\nexport function generatePrivateKey(): Uint8Array {\n\tconst seed = new Uint8Array(AMADEUS_SEED_BYTE_LENGTH)\n\tcrypto.getRandomValues(seed)\n\treturn seed\n}\n\n/**\n * Generate a new keypair\n *\n * @returns KeyPair object with Base58 encoded publicKey and privateKey\n *\n * @example\n * ```ts\n * const keypair = generateKeypair()\n * console.log(keypair.publicKey) // Base58 public key\n * console.log(keypair.privateKey) // Base58 private key (seed)\n * ```\n */\nexport function generateKeypair(): KeyPair {\n\tconst seed64 = generatePrivateKey()\n\tconst [pk] = seed64ToKeypair(seed64)\n\n\treturn {\n\t\tpublicKey: toBase58(pk),\n\t\tprivateKey: toBase58(seed64)\n\t}\n}\n"],"mappings":";;;;;;;;;;AAaA,MAAM,kBAAkB,OAAO,qEAAqE;;;;;;;;AAepG,SAAgB,iBAAiB,SAAiC;CACjE,IAAI,EAAE,mBAAmB,eAAe,QAAQ,WAAA,IAC/C,MAAM,IAAI,MAAM,8BAA8B;CAI/C,IAAI,IAAI,OAAO,EAAE;CACjB,KAAK,IAAI,IAAI,GAAG,IAAA,IAA8B,KAC7C,KAAK,OAAO,QAAQ,GAAG,IAAK,OAAO,EAAE,GAAG,OAAO,EAAE;CAIlD,IAAI,IAAI;CAGR,MAAM,MAAM,IAAI,WAAW,GAAG;CAC9B,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,KAAK;EAC7B,IAAI,KAAK,OAAO,IAAI,OAAO,IAAK,CAAC;EACjC,MAAM,OAAO,EAAE;;CAGhB,OAAO;;;;;;;;;;;;;AAcR,SAAgB,gBAAgB,QAA8C;CAC7E,MAAM,KAAK,iBAAiB,OAAO;CAEnC,OAAO,CADIA,UAAI,aAAa,GAClB,EAAE,GAAG;;;;;;;;;;;;;AAchB,SAAgB,aAAa,QAAgC;CAC5D,MAAM,CAAC,MAAM,gBAAgB,OAAO;CACpC,OAAO;;;;;;;;;;;;;;AAeR,SAAgB,gCAAgC,cAG9C;CACD,MAAM,SAAS,WAAW,aAAa;CACvC,IAAI,OAAO,WAAA,IACV,MAAM,IAAI,MAAM,wDAAwD;CAIzE,OAAO;EACN,IAHU,iBAAiB,OAGzB;EACF;EACA;;;;;;;;;;;;;;AAeF,SAAgB,8BAA8B,YAA4B;CACzE,IAAI,CAAC,YACJ,MAAM,IAAI,MAAM,yDAAyD;CAE1E,MAAM,SAAS,WAAW,WAAW;CACrC,IAAI,OAAO,WAAA,IACV,MAAM,IAAI,MAAM,wDAAwD;CAGzE,OAAO,SADW,aAAa,OACN,CAAC;;;;;;;;;;;;AAiB3B,SAAgB,qBAAiC;CAChD,MAAM,OAAO,IAAI,WAAA,GAAoC;CACrD,OAAO,gBAAgB,KAAK;CAC5B,OAAO;;;;;;;;;;;;;;AAeR,SAAgB,kBAA2B;CAC1C,MAAM,SAAS,oBAAoB;CACnC,MAAM,CAAC,MAAM,gBAAgB,OAAO;CAEpC,OAAO;EACN,WAAW,SAAS,GAAG;EACvB,YAAY,SAAS,OAAO;EAC5B"}
|
package/dist/encoding.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//#region src/encoding.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Encoding/Decoding Utilities
|
|
3
4
|
*
|
|
@@ -17,7 +18,7 @@
|
|
|
17
18
|
* const base64 = uint8ArrayToBase64(new Uint8Array([1, 2, 3]))
|
|
18
19
|
* ```
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
|
+
declare function uint8ArrayToBase64(bytes: Uint8Array): string;
|
|
21
22
|
/**
|
|
22
23
|
* Convert Base64 string to Uint8Array
|
|
23
24
|
*
|
|
@@ -31,7 +32,7 @@ export declare function uint8ArrayToBase64(bytes: Uint8Array): string;
|
|
|
31
32
|
* const bytes = base64ToUint8Array('AQID')
|
|
32
33
|
* ```
|
|
33
34
|
*/
|
|
34
|
-
|
|
35
|
+
declare function base64ToUint8Array(base64: string): Uint8Array;
|
|
35
36
|
/**
|
|
36
37
|
* Convert ArrayBuffer to Base64 string
|
|
37
38
|
*
|
|
@@ -43,7 +44,7 @@ export declare function base64ToUint8Array(base64: string): Uint8Array;
|
|
|
43
44
|
* const base64 = arrayBufferToBase64(new ArrayBuffer(8))
|
|
44
45
|
* ```
|
|
45
46
|
*/
|
|
46
|
-
|
|
47
|
+
declare function arrayBufferToBase64(buffer: ArrayBuffer): string;
|
|
47
48
|
/**
|
|
48
49
|
* Convert Base64 string to ArrayBuffer
|
|
49
50
|
*
|
|
@@ -55,7 +56,7 @@ export declare function arrayBufferToBase64(buffer: ArrayBuffer): string;
|
|
|
55
56
|
* const buffer = base64ToArrayBuffer('AQID')
|
|
56
57
|
* ```
|
|
57
58
|
*/
|
|
58
|
-
|
|
59
|
+
declare function base64ToArrayBuffer(base64: string): ArrayBuffer;
|
|
59
60
|
/**
|
|
60
61
|
* Convert Uint8Array to ArrayBuffer
|
|
61
62
|
*
|
|
@@ -67,7 +68,7 @@ export declare function base64ToArrayBuffer(base64: string): ArrayBuffer;
|
|
|
67
68
|
* const buffer = uint8ArrayToArrayBuffer(new Uint8Array([1, 2, 3]))
|
|
68
69
|
* ```
|
|
69
70
|
*/
|
|
70
|
-
|
|
71
|
+
declare function uint8ArrayToArrayBuffer(bytes: Uint8Array): ArrayBuffer;
|
|
71
72
|
/**
|
|
72
73
|
* Convert ArrayBuffer to Uint8Array
|
|
73
74
|
*
|
|
@@ -79,7 +80,7 @@ export declare function uint8ArrayToArrayBuffer(bytes: Uint8Array): ArrayBuffer;
|
|
|
79
80
|
* const bytes = arrayBufferToUint8Array(new ArrayBuffer(8))
|
|
80
81
|
* ```
|
|
81
82
|
*/
|
|
82
|
-
|
|
83
|
+
declare function arrayBufferToUint8Array(buffer: ArrayBuffer): Uint8Array;
|
|
83
84
|
/**
|
|
84
85
|
* Encode a Uint8Array to Base58 string
|
|
85
86
|
*
|
|
@@ -91,7 +92,7 @@ export declare function arrayBufferToUint8Array(buffer: ArrayBuffer): Uint8Array
|
|
|
91
92
|
* const encoded = toBase58(new Uint8Array([1, 2, 3]))
|
|
92
93
|
* ```
|
|
93
94
|
*/
|
|
94
|
-
|
|
95
|
+
declare function toBase58(buf: Uint8Array): string;
|
|
95
96
|
/**
|
|
96
97
|
* Decode a Base58 string to Uint8Array
|
|
97
98
|
*
|
|
@@ -104,5 +105,7 @@ export declare function toBase58(buf: Uint8Array): string;
|
|
|
104
105
|
* const decoded = fromBase58('5Kd3N...')
|
|
105
106
|
* ```
|
|
106
107
|
*/
|
|
107
|
-
|
|
108
|
+
declare function fromBase58(str: string): Uint8Array;
|
|
109
|
+
//#endregion
|
|
110
|
+
export { arrayBufferToBase64, arrayBufferToUint8Array, base64ToArrayBuffer, base64ToUint8Array, fromBase58, toBase58, uint8ArrayToArrayBuffer, uint8ArrayToBase64 };
|
|
108
111
|
//# sourceMappingURL=encoding.d.ts.map
|
package/dist/encoding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","names":[],"sources":["../src/encoding.ts"],"mappings":";;AAiCA;;;;;AA0BA;;;;;AAyBA;;;;;AAgBA;;;AAzCA,iBA1BgB,kBAAA,CAAmB,KAAA,EAAO,UAAA;;AAwF1C;;;;;;;;;AAkBA;;;iBAhFgB,kBAAA,CAAmB,MAAA,WAAiB,UAAA;;;;;;AAmGpD;;;;;AAgBA;iBA1FgB,mBAAA,CAAoB,MAAA,EAAQ,WAAA;;;;;;;;;;;;iBAgB5B,mBAAA,CAAoB,MAAA,WAAiB,WAAA;;;;;;;;;;;;iBAqBrC,uBAAA,CAAwB,KAAA,EAAO,UAAA,GAAa,WAAA;;;;;;;;;;;;iBAkB5C,uBAAA,CAAwB,MAAA,EAAQ,WAAA,GAAc,UAAA;;;;;;;;;;;;iBAmB9C,QAAA,CAAS,GAAA,EAAK,UAAA;;;;;;;;;;;;;iBAgBd,UAAA,CAAW,GAAA,WAAc,UAAA"}
|