@cardano-sdk/crypto 0.1.11 → 0.1.13
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/README.md +3 -0
- package/dist/cjs/Bip32/Bip32KeyDerivation.d.ts +3 -0
- package/dist/cjs/Bip32/Bip32KeyDerivation.d.ts.map +1 -0
- package/dist/cjs/Bip32/Bip32KeyDerivation.js +73 -0
- package/dist/cjs/Bip32/Bip32KeyDerivation.js.map +1 -0
- package/dist/cjs/Bip32/Bip32PrivateKey.d.ts +19 -0
- package/dist/cjs/Bip32/Bip32PrivateKey.d.ts.map +1 -0
- package/dist/cjs/Bip32/Bip32PrivateKey.js +111 -0
- package/dist/cjs/Bip32/Bip32PrivateKey.js.map +1 -0
- package/dist/cjs/Bip32/Bip32PublicKey.d.ts +14 -0
- package/dist/cjs/Bip32/Bip32PublicKey.d.ts.map +1 -0
- package/dist/cjs/Bip32/Bip32PublicKey.js +78 -0
- package/dist/cjs/Bip32/Bip32PublicKey.js.map +1 -0
- package/dist/cjs/Bip32/index.d.ts +3 -0
- package/dist/cjs/Bip32/index.d.ts.map +1 -0
- package/dist/cjs/Bip32/index.js +19 -0
- package/dist/cjs/Bip32/index.js.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519KeyHash.d.ts +11 -0
- package/dist/cjs/Ed25519e/Ed25519KeyHash.d.ts.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519KeyHash.js +41 -0
- package/dist/cjs/Ed25519e/Ed25519KeyHash.js.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519PrivateKey.d.ts +24 -0
- package/dist/cjs/Ed25519e/Ed25519PrivateKey.d.ts.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519PrivateKey.js +88 -0
- package/dist/cjs/Ed25519e/Ed25519PrivateKey.js.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519PublicKey.d.ts +16 -0
- package/dist/cjs/Ed25519e/Ed25519PublicKey.d.ts.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519PublicKey.js +52 -0
- package/dist/cjs/Ed25519e/Ed25519PublicKey.js.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519Signature.d.ts +11 -0
- package/dist/cjs/Ed25519e/Ed25519Signature.d.ts.map +1 -0
- package/dist/cjs/Ed25519e/Ed25519Signature.js +41 -0
- package/dist/cjs/Ed25519e/Ed25519Signature.js.map +1 -0
- package/dist/cjs/Ed25519e/index.d.ts +5 -0
- package/dist/cjs/Ed25519e/index.d.ts.map +1 -0
- package/dist/cjs/Ed25519e/index.js +21 -0
- package/dist/cjs/Ed25519e/index.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/strategies/SodiumBip32Ed25519.d.ts +19 -0
- package/dist/cjs/strategies/SodiumBip32Ed25519.d.ts.map +1 -0
- package/dist/cjs/strategies/SodiumBip32Ed25519.js +52 -0
- package/dist/cjs/strategies/SodiumBip32Ed25519.js.map +1 -0
- package/dist/cjs/strategies/index.d.ts +1 -0
- package/dist/cjs/strategies/index.d.ts.map +1 -1
- package/dist/cjs/strategies/index.js +1 -0
- package/dist/cjs/strategies/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/Bip32/Bip32KeyDerivation.d.ts +3 -0
- package/dist/esm/Bip32/Bip32KeyDerivation.d.ts.map +1 -0
- package/dist/esm/Bip32/Bip32KeyDerivation.js +68 -0
- package/dist/esm/Bip32/Bip32KeyDerivation.js.map +1 -0
- package/dist/esm/Bip32/Bip32PrivateKey.d.ts +19 -0
- package/dist/esm/Bip32/Bip32PrivateKey.d.ts.map +1 -0
- package/dist/esm/Bip32/Bip32PrivateKey.js +84 -0
- package/dist/esm/Bip32/Bip32PrivateKey.js.map +1 -0
- package/dist/esm/Bip32/Bip32PublicKey.d.ts +14 -0
- package/dist/esm/Bip32/Bip32PublicKey.d.ts.map +1 -0
- package/dist/esm/Bip32/Bip32PublicKey.js +51 -0
- package/dist/esm/Bip32/Bip32PublicKey.js.map +1 -0
- package/dist/esm/Bip32/index.d.ts +3 -0
- package/dist/esm/Bip32/index.d.ts.map +1 -0
- package/dist/esm/Bip32/index.js +3 -0
- package/dist/esm/Bip32/index.js.map +1 -0
- package/dist/esm/Ed25519e/Ed25519KeyHash.d.ts +11 -0
- package/dist/esm/Ed25519e/Ed25519KeyHash.d.ts.map +1 -0
- package/dist/esm/Ed25519e/Ed25519KeyHash.js +37 -0
- package/dist/esm/Ed25519e/Ed25519KeyHash.js.map +1 -0
- package/dist/esm/Ed25519e/Ed25519PrivateKey.d.ts +24 -0
- package/dist/esm/Ed25519e/Ed25519PrivateKey.d.ts.map +1 -0
- package/dist/esm/Ed25519e/Ed25519PrivateKey.js +84 -0
- package/dist/esm/Ed25519e/Ed25519PrivateKey.js.map +1 -0
- package/dist/esm/Ed25519e/Ed25519PublicKey.d.ts +16 -0
- package/dist/esm/Ed25519e/Ed25519PublicKey.d.ts.map +1 -0
- package/dist/esm/Ed25519e/Ed25519PublicKey.js +48 -0
- package/dist/esm/Ed25519e/Ed25519PublicKey.js.map +1 -0
- package/dist/esm/Ed25519e/Ed25519Signature.d.ts +11 -0
- package/dist/esm/Ed25519e/Ed25519Signature.d.ts.map +1 -0
- package/dist/esm/Ed25519e/Ed25519Signature.js +37 -0
- package/dist/esm/Ed25519e/Ed25519Signature.js.map +1 -0
- package/dist/esm/Ed25519e/index.d.ts +5 -0
- package/dist/esm/Ed25519e/index.d.ts.map +1 -0
- package/dist/esm/Ed25519e/index.js +5 -0
- package/dist/esm/Ed25519e/index.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/strategies/SodiumBip32Ed25519.d.ts +19 -0
- package/dist/esm/strategies/SodiumBip32Ed25519.d.ts.map +1 -0
- package/dist/esm/strategies/SodiumBip32Ed25519.js +48 -0
- package/dist/esm/strategies/SodiumBip32Ed25519.js.map +1 -0
- package/dist/esm/strategies/index.d.ts +1 -0
- package/dist/esm/strategies/index.d.ts.map +1 -1
- package/dist/esm/strategies/index.js +1 -0
- package/dist/esm/strategies/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bip32KeyDerivation.d.ts","sourceRoot":"","sources":["../../../src/Bip32/Bip32KeyDerivation.ts"],"names":[],"mappings":"AA8HA,eAAO,MAAM,aAAa,QAAS,MAAM,SAAS,MAAM,KAAG,MAe1D,CAAC;AAWF,eAAO,MAAM,YAAY,QAAS,MAAM,SAAS,MAAM,KAAG,MAuBzD,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { BN } from 'bn.js';
|
|
2
|
+
import { InvalidArgumentError } from '@cardano-sdk/util';
|
|
3
|
+
import { crypto_auth_hmacsha512, crypto_core_ed25519_add, crypto_scalarmult_ed25519_base_noclamp } from 'libsodium-wrappers-sumo';
|
|
4
|
+
const isHardenedDerivation = (index) => index >= 2147483648;
|
|
5
|
+
const deriveHardened = (index, scalar, iv, chainCode) => {
|
|
6
|
+
const data = Buffer.allocUnsafe(1 + 64 + 4);
|
|
7
|
+
data.writeUInt32LE(index, 1 + 64);
|
|
8
|
+
scalar.copy(data, 1);
|
|
9
|
+
iv.copy(data, 1 + 32);
|
|
10
|
+
data[0] = 0x00;
|
|
11
|
+
const zMac = crypto_auth_hmacsha512(data, chainCode);
|
|
12
|
+
data[0] = 0x01;
|
|
13
|
+
const ccMac = crypto_auth_hmacsha512(data, chainCode);
|
|
14
|
+
return { ccMac, zMac };
|
|
15
|
+
};
|
|
16
|
+
const deriveSoft = (index, scalar, chainCode) => {
|
|
17
|
+
const data = Buffer.allocUnsafe(1 + 32 + 4);
|
|
18
|
+
data.writeUInt32LE(index, 1 + 32);
|
|
19
|
+
const vk = Buffer.from(crypto_scalarmult_ed25519_base_noclamp(scalar));
|
|
20
|
+
vk.copy(data, 1);
|
|
21
|
+
data[0] = 0x02;
|
|
22
|
+
const zMac = crypto_auth_hmacsha512(data, chainCode);
|
|
23
|
+
data[0] = 0x03;
|
|
24
|
+
const ccMac = crypto_auth_hmacsha512(data, chainCode);
|
|
25
|
+
return { ccMac, zMac };
|
|
26
|
+
};
|
|
27
|
+
const truc28Mul8 = (lhs, rhs) => new BN(lhs, 16, 'le').add(new BN(rhs.slice(0, 28), 16, 'le').mul(new BN(8))).toArrayLike(Buffer, 'le', 32);
|
|
28
|
+
const pointOfTrunc28Mul8 = (sk) => {
|
|
29
|
+
const left = new BN(sk.slice(0, 28), 16, 'le').mul(new BN(8)).toArrayLike(Buffer, 'le', 32);
|
|
30
|
+
return crypto_scalarmult_ed25519_base_noclamp(left);
|
|
31
|
+
};
|
|
32
|
+
const add = (lhs, rhs) => {
|
|
33
|
+
let r = new BN(lhs, 16, 'le').add(new BN(rhs, 16, 'le')).toArrayLike(Buffer, 'le').subarray(0, 32);
|
|
34
|
+
if (r.length !== 32) {
|
|
35
|
+
r = Buffer.from(r.toString('hex').padEnd(32, '0'), 'hex');
|
|
36
|
+
}
|
|
37
|
+
return r;
|
|
38
|
+
};
|
|
39
|
+
export const derivePrivate = (key, index) => {
|
|
40
|
+
const kl = key.subarray(0, 32);
|
|
41
|
+
const kr = key.subarray(32, 64);
|
|
42
|
+
const cc = key.subarray(64, 96);
|
|
43
|
+
const { ccMac, zMac } = isHardenedDerivation(index) ? deriveHardened(index, kl, kr, cc) : deriveSoft(index, kl, cc);
|
|
44
|
+
const chainCode = ccMac.slice(32, 64);
|
|
45
|
+
const zl = zMac.slice(0, 32);
|
|
46
|
+
const zr = zMac.slice(32, 64);
|
|
47
|
+
const left = truc28Mul8(kl, zl);
|
|
48
|
+
const right = add(kr, zr);
|
|
49
|
+
return Buffer.concat([left, right, chainCode]);
|
|
50
|
+
};
|
|
51
|
+
export const derivePublic = (key, index) => {
|
|
52
|
+
const pk = key.subarray(0, 32);
|
|
53
|
+
const cc = key.subarray(32, 64);
|
|
54
|
+
const data = Buffer.allocUnsafe(1 + 32 + 4);
|
|
55
|
+
data.writeUInt32LE(index, 1 + 32);
|
|
56
|
+
if (isHardenedDerivation(index))
|
|
57
|
+
throw new InvalidArgumentError('index', 'Public key can not be derived from a hardened index.');
|
|
58
|
+
pk.copy(data, 1);
|
|
59
|
+
data[0] = 0x02;
|
|
60
|
+
const z = crypto_auth_hmacsha512(data, cc);
|
|
61
|
+
data[0] = 0x03;
|
|
62
|
+
const c = crypto_auth_hmacsha512(data, cc);
|
|
63
|
+
const chainCode = c.slice(32, 64);
|
|
64
|
+
const zl = z.slice(0, 32);
|
|
65
|
+
const p = pointOfTrunc28Mul8(zl);
|
|
66
|
+
return Buffer.concat([crypto_core_ed25519_add(p, pk), chainCode]);
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=Bip32KeyDerivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bip32KeyDerivation.js","sourceRoot":"","sources":["../../../src/Bip32/Bip32KeyDerivation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="pouchdb-core" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { Bip32PrivateKeyHex } from '../hexTypes';
|
|
4
|
+
import { Bip32PublicKey } from './Bip32PublicKey';
|
|
5
|
+
import { Ed25519PrivateKey } from '../Ed25519e';
|
|
6
|
+
export declare const BIP32_ED25519_PRIVATE_KEY_LENGTH = 96;
|
|
7
|
+
export declare class Bip32PrivateKey {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(key: Uint8Array);
|
|
10
|
+
static fromBip39Entropy(entropy: Buffer, password: string): Promise<Bip32PrivateKey>;
|
|
11
|
+
static fromBytes(key: Uint8Array): Bip32PrivateKey;
|
|
12
|
+
static fromHex(key: Bip32PrivateKeyHex): Bip32PrivateKey;
|
|
13
|
+
derive(derivationIndices: number[]): Promise<Bip32PrivateKey>;
|
|
14
|
+
toRawKey(): Ed25519PrivateKey;
|
|
15
|
+
toPublic(): Promise<Bip32PublicKey>;
|
|
16
|
+
bytes(): Uint8Array;
|
|
17
|
+
hex(): Bip32PrivateKeyHex;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Bip32PrivateKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bip32PrivateKey.d.ts","sourceRoot":"","sources":["../../../src/Bip32/Bip32PrivateKey.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAuC,iBAAiB,EAAqC,MAAM,aAAa,CAAC;AAqCxH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAUnD,qBAAa,eAAe;;gBAQd,GAAG,EAAE,UAAU;IAkB3B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAkBpF,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU;IAchC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB;IA2BhC,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAcnE,QAAQ,IAAI,iBAAiB;IASvB,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAazC,KAAK,IAAI,UAAU;IAOnB,GAAG,IAAI,kBAAkB;CAG1B"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _Bip32PrivateKey_key;
|
|
13
|
+
import * as Bip32KeyDerivation from './Bip32KeyDerivation';
|
|
14
|
+
import { Bip32PrivateKeyHex } from '../hexTypes';
|
|
15
|
+
import { Bip32PublicKey } from './Bip32PublicKey';
|
|
16
|
+
import { EXTENDED_ED25519_PRIVATE_KEY_LENGTH, Ed25519PrivateKey, NORMAL_ED25519_PRIVATE_KEY_LENGTH } from '../Ed25519e';
|
|
17
|
+
import { InvalidArgumentError } from '@cardano-sdk/util';
|
|
18
|
+
import { crypto_scalarmult_ed25519_base_noclamp, ready } from 'libsodium-wrappers-sumo';
|
|
19
|
+
import { pbkdf2 } from 'pbkdf2';
|
|
20
|
+
const SCALAR_INDEX = 0;
|
|
21
|
+
const SCALAR_SIZE = 32;
|
|
22
|
+
const PBKDF2_ITERATIONS = 4096;
|
|
23
|
+
const PBKDF2_KEY_SIZE = 96;
|
|
24
|
+
const PBKDF2_DIGEST_ALGORITHM = 'sha512';
|
|
25
|
+
const CHAIN_CODE_INDEX = 64;
|
|
26
|
+
const CHAIN_CODE_SIZE = 32;
|
|
27
|
+
const clampScalar = (scalar) => {
|
|
28
|
+
scalar[0] &= 248;
|
|
29
|
+
scalar[31] &= 31;
|
|
30
|
+
scalar[31] |= 64;
|
|
31
|
+
return scalar;
|
|
32
|
+
};
|
|
33
|
+
const extendedScalar = (extendedKey) => extendedKey.slice(SCALAR_INDEX, SCALAR_SIZE);
|
|
34
|
+
export const BIP32_ED25519_PRIVATE_KEY_LENGTH = 96;
|
|
35
|
+
export class Bip32PrivateKey {
|
|
36
|
+
constructor(key) {
|
|
37
|
+
_Bip32PrivateKey_key.set(this, void 0);
|
|
38
|
+
__classPrivateFieldSet(this, _Bip32PrivateKey_key, key, "f");
|
|
39
|
+
}
|
|
40
|
+
static fromBip39Entropy(entropy, password) {
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
pbkdf2(password, entropy, PBKDF2_ITERATIONS, PBKDF2_KEY_SIZE, PBKDF2_DIGEST_ALGORITHM, (err, xprv) => {
|
|
43
|
+
if (err) {
|
|
44
|
+
reject(err);
|
|
45
|
+
}
|
|
46
|
+
xprv = clampScalar(xprv);
|
|
47
|
+
resolve(Bip32PrivateKey.fromBytes(xprv));
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
static fromBytes(key) {
|
|
52
|
+
if (key.length !== BIP32_ED25519_PRIVATE_KEY_LENGTH)
|
|
53
|
+
throw new InvalidArgumentError('key', `Key should be ${NORMAL_ED25519_PRIVATE_KEY_LENGTH} bytes; however ${key.length} bytes were provided.`);
|
|
54
|
+
return new Bip32PrivateKey(key);
|
|
55
|
+
}
|
|
56
|
+
static fromHex(key) {
|
|
57
|
+
return Bip32PrivateKey.fromBytes(Buffer.from(key, 'hex'));
|
|
58
|
+
}
|
|
59
|
+
async derive(derivationIndices) {
|
|
60
|
+
await ready;
|
|
61
|
+
let key = Buffer.from(__classPrivateFieldGet(this, _Bip32PrivateKey_key, "f"));
|
|
62
|
+
for (const index of derivationIndices) {
|
|
63
|
+
key = Bip32KeyDerivation.derivePrivate(key, index);
|
|
64
|
+
}
|
|
65
|
+
return Bip32PrivateKey.fromBytes(key);
|
|
66
|
+
}
|
|
67
|
+
toRawKey() {
|
|
68
|
+
return Ed25519PrivateKey.fromExtendedBytes(__classPrivateFieldGet(this, _Bip32PrivateKey_key, "f").slice(0, EXTENDED_ED25519_PRIVATE_KEY_LENGTH));
|
|
69
|
+
}
|
|
70
|
+
async toPublic() {
|
|
71
|
+
await ready;
|
|
72
|
+
const scalar = extendedScalar(__classPrivateFieldGet(this, _Bip32PrivateKey_key, "f").slice(0, EXTENDED_ED25519_PRIVATE_KEY_LENGTH));
|
|
73
|
+
const publicKey = crypto_scalarmult_ed25519_base_noclamp(scalar);
|
|
74
|
+
return Bip32PublicKey.fromBytes(Buffer.concat([publicKey, __classPrivateFieldGet(this, _Bip32PrivateKey_key, "f").slice(CHAIN_CODE_INDEX, CHAIN_CODE_INDEX + CHAIN_CODE_SIZE)]));
|
|
75
|
+
}
|
|
76
|
+
bytes() {
|
|
77
|
+
return __classPrivateFieldGet(this, _Bip32PrivateKey_key, "f");
|
|
78
|
+
}
|
|
79
|
+
hex() {
|
|
80
|
+
return Bip32PrivateKeyHex(Buffer.from(__classPrivateFieldGet(this, _Bip32PrivateKey_key, "f")).toString('hex'));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
_Bip32PrivateKey_key = new WeakMap();
|
|
84
|
+
//# sourceMappingURL=Bip32PrivateKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bip32PrivateKey.js","sourceRoot":"","sources":["../../../src/Bip32/Bip32PrivateKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Bip32PublicKeyHex } from '../hexTypes';
|
|
2
|
+
import { Ed25519PublicKey } from '../Ed25519e';
|
|
3
|
+
export declare const BIP32_ED25519_PUBLIC_KEY_LENGTH = 64;
|
|
4
|
+
export declare class Bip32PublicKey {
|
|
5
|
+
#private;
|
|
6
|
+
private constructor();
|
|
7
|
+
static fromBytes(key: Uint8Array): Bip32PublicKey;
|
|
8
|
+
static fromHex(key: Bip32PublicKeyHex): Bip32PublicKey;
|
|
9
|
+
toRawKey(): Ed25519PublicKey;
|
|
10
|
+
derive(derivationIndices: number[]): Promise<Bip32PublicKey>;
|
|
11
|
+
bytes(): Uint8Array;
|
|
12
|
+
hex(): Bip32PublicKeyHex;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Bip32PublicKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bip32PublicKey.d.ts","sourceRoot":"","sources":["../../../src/Bip32/Bip32PublicKey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAA6B,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI1E,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAKlD,qBAAa,cAAc;;IAQzB,OAAO;IASP,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc;IAcjD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IAQtD,QAAQ,IAAI,gBAAgB;IAUtB,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAclE,KAAK,IAAI,UAAU;IAOnB,GAAG,IAAI,iBAAiB;CAGzB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _Bip32PublicKey_key;
|
|
13
|
+
import * as Bip32KeyDerivation from './Bip32KeyDerivation';
|
|
14
|
+
import { Bip32PublicKeyHex } from '../hexTypes';
|
|
15
|
+
import { ED25519_PUBLIC_KEY_LENGTH, Ed25519PublicKey } from '../Ed25519e';
|
|
16
|
+
import { InvalidArgumentError } from '@cardano-sdk/util';
|
|
17
|
+
import { ready } from 'libsodium-wrappers-sumo';
|
|
18
|
+
export const BIP32_ED25519_PUBLIC_KEY_LENGTH = 64;
|
|
19
|
+
export class Bip32PublicKey {
|
|
20
|
+
constructor(key) {
|
|
21
|
+
_Bip32PublicKey_key.set(this, void 0);
|
|
22
|
+
__classPrivateFieldSet(this, _Bip32PublicKey_key, key, "f");
|
|
23
|
+
}
|
|
24
|
+
static fromBytes(key) {
|
|
25
|
+
if (key.length !== BIP32_ED25519_PUBLIC_KEY_LENGTH)
|
|
26
|
+
throw new InvalidArgumentError('key', `Key should be ${BIP32_ED25519_PUBLIC_KEY_LENGTH} bytes; however ${key.length} bytes were provided.`);
|
|
27
|
+
return new Bip32PublicKey(key);
|
|
28
|
+
}
|
|
29
|
+
static fromHex(key) {
|
|
30
|
+
return Bip32PublicKey.fromBytes(Buffer.from(key, 'hex'));
|
|
31
|
+
}
|
|
32
|
+
toRawKey() {
|
|
33
|
+
return Ed25519PublicKey.fromBytes(__classPrivateFieldGet(this, _Bip32PublicKey_key, "f").slice(0, ED25519_PUBLIC_KEY_LENGTH));
|
|
34
|
+
}
|
|
35
|
+
async derive(derivationIndices) {
|
|
36
|
+
await ready;
|
|
37
|
+
let key = Buffer.from(__classPrivateFieldGet(this, _Bip32PublicKey_key, "f"));
|
|
38
|
+
for (const index of derivationIndices) {
|
|
39
|
+
key = Bip32KeyDerivation.derivePublic(key, index);
|
|
40
|
+
}
|
|
41
|
+
return Bip32PublicKey.fromBytes(key);
|
|
42
|
+
}
|
|
43
|
+
bytes() {
|
|
44
|
+
return __classPrivateFieldGet(this, _Bip32PublicKey_key, "f");
|
|
45
|
+
}
|
|
46
|
+
hex() {
|
|
47
|
+
return Bip32PublicKeyHex(Buffer.from(__classPrivateFieldGet(this, _Bip32PublicKey_key, "f")).toString('hex'));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
_Bip32PublicKey_key = new WeakMap();
|
|
51
|
+
//# sourceMappingURL=Bip32PublicKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bip32PublicKey.js","sourceRoot":"","sources":["../../../src/Bip32/Bip32PublicKey.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAKlD,MAAM,OAAO,cAAc;IAQzB,YAAoB,GAAe;QAPnC,sCAA0B;QAQxB,uBAAA,IAAI,uBAAQ,GAAG,MAAA,CAAC;IAClB,CAAC;IAOD,MAAM,CAAC,SAAS,CAAC,GAAe;QAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,+BAA+B;YAChD,MAAM,IAAI,oBAAoB,CAC5B,KAAK,EACL,iBAAiB,+BAA+B,mBAAmB,GAAG,CAAC,MAAM,uBAAuB,CACrG,CAAC;QACJ,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAOD,MAAM,CAAC,OAAO,CAAC,GAAsB;QACnC,OAAO,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;IAMD,QAAQ;QACN,OAAO,gBAAgB,CAAC,SAAS,CAAC,uBAAA,IAAI,2BAAK,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACnF,CAAC;IAQD,KAAK,CAAC,MAAM,CAAC,iBAA2B;QACtC,MAAM,KAAK,CAAC;QACZ,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,2BAAK,CAAC,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE;YACrC,GAAG,GAAG,kBAAkB,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACnD;QAED,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAKD,KAAK;QACH,OAAO,uBAAA,IAAI,2BAAK,CAAC;IACnB,CAAC;IAKD,GAAG;QACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,2BAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Bip32/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Bip32/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Ed25519KeyHashHex } from '../hexTypes';
|
|
2
|
+
export declare const ED25519_PUBLIC_KEY_HASH_LENGTH = 28;
|
|
3
|
+
export declare class Ed25519KeyHash {
|
|
4
|
+
#private;
|
|
5
|
+
private constructor();
|
|
6
|
+
static fromBytes(hash: Uint8Array): Ed25519KeyHash;
|
|
7
|
+
static fromHex(hash: Ed25519KeyHashHex): Ed25519KeyHash;
|
|
8
|
+
bytes(): Uint8Array;
|
|
9
|
+
hex(): Ed25519KeyHashHex;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=Ed25519KeyHash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519KeyHash.d.ts","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519KeyHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAKjD,qBAAa,cAAc;;IAQzB,OAAO;IASP,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU;IAcjC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB;IAOtC,KAAK,IAAI,UAAU;IAOnB,GAAG,IAAI,iBAAiB;CAGzB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _Ed25519KeyHash_hash;
|
|
13
|
+
import { Ed25519KeyHashHex } from '../hexTypes';
|
|
14
|
+
import { InvalidArgumentError } from '@cardano-sdk/util';
|
|
15
|
+
export const ED25519_PUBLIC_KEY_HASH_LENGTH = 28;
|
|
16
|
+
export class Ed25519KeyHash {
|
|
17
|
+
constructor(hash) {
|
|
18
|
+
_Ed25519KeyHash_hash.set(this, void 0);
|
|
19
|
+
__classPrivateFieldSet(this, _Ed25519KeyHash_hash, hash, "f");
|
|
20
|
+
}
|
|
21
|
+
static fromBytes(hash) {
|
|
22
|
+
if (hash.length !== ED25519_PUBLIC_KEY_HASH_LENGTH)
|
|
23
|
+
throw new InvalidArgumentError('hash', `Hash should be ${ED25519_PUBLIC_KEY_HASH_LENGTH} bytes; however ${hash.length} bytes were provided.`);
|
|
24
|
+
return new Ed25519KeyHash(hash);
|
|
25
|
+
}
|
|
26
|
+
static fromHex(hash) {
|
|
27
|
+
return Ed25519KeyHash.fromBytes(Buffer.from(hash, 'hex'));
|
|
28
|
+
}
|
|
29
|
+
bytes() {
|
|
30
|
+
return __classPrivateFieldGet(this, _Ed25519KeyHash_hash, "f");
|
|
31
|
+
}
|
|
32
|
+
hex() {
|
|
33
|
+
return Ed25519KeyHashHex(Buffer.from(__classPrivateFieldGet(this, _Ed25519KeyHash_hash, "f")).toString('hex'));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
_Ed25519KeyHash_hash = new WeakMap();
|
|
37
|
+
//# sourceMappingURL=Ed25519KeyHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519KeyHash.js","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519KeyHash.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAKjD,MAAM,OAAO,cAAc;IAQzB,YAAoB,IAAgB;QAPpC,uCAA2B;QAQzB,uBAAA,IAAI,wBAAS,IAAI,MAAA,CAAC;IACpB,CAAC;IAOD,MAAM,CAAC,SAAS,CAAC,IAAgB;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,8BAA8B;YAChD,MAAM,IAAI,oBAAoB,CAC5B,MAAM,EACN,kBAAkB,8BAA8B,mBAAmB,IAAI,CAAC,MAAM,uBAAuB,CACtG,CAAC;QACJ,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAOD,MAAM,CAAC,OAAO,CAAC,IAAuB;QACpC,OAAO,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAKD,KAAK;QACH,OAAO,uBAAA,IAAI,4BAAM,CAAC;IACpB,CAAC;IAKD,GAAG;QACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,4BAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Ed25519PrivateExtendedKeyHex, Ed25519PrivateNormalKeyHex } from '../hexTypes';
|
|
2
|
+
import { Ed25519PublicKey } from './Ed25519PublicKey';
|
|
3
|
+
import { Ed25519Signature } from './Ed25519Signature';
|
|
4
|
+
import { HexBlob } from '@cardano-sdk/util';
|
|
5
|
+
export declare const NORMAL_ED25519_PRIVATE_KEY_LENGTH = 32;
|
|
6
|
+
export declare const EXTENDED_ED25519_PRIVATE_KEY_LENGTH = 64;
|
|
7
|
+
export declare enum Ed25519PrivateKeyType {
|
|
8
|
+
Normal = "Normal",
|
|
9
|
+
Extended = "Extended"
|
|
10
|
+
}
|
|
11
|
+
export declare class Ed25519PrivateKey {
|
|
12
|
+
#private;
|
|
13
|
+
readonly __type: Ed25519PrivateKeyType;
|
|
14
|
+
private constructor();
|
|
15
|
+
toPublic(): Promise<Ed25519PublicKey>;
|
|
16
|
+
sign(message: HexBlob): Promise<Ed25519Signature>;
|
|
17
|
+
static fromNormalBytes(keyMaterial: Uint8Array): Ed25519PrivateKey;
|
|
18
|
+
static fromExtendedBytes(keyMaterial: Uint8Array): Ed25519PrivateKey;
|
|
19
|
+
static fromNormalHex(keyMaterial: Ed25519PrivateNormalKeyHex): Ed25519PrivateKey;
|
|
20
|
+
static fromExtendedHex(keyMaterial: Ed25519PrivateExtendedKeyHex): Ed25519PrivateKey;
|
|
21
|
+
bytes(): Uint8Array;
|
|
22
|
+
hex(): Ed25519PrivateNormalKeyHex | Ed25519PrivateExtendedKeyHex;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=Ed25519PrivateKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519PrivateKey.d.ts","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519PrivateKey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAwB,MAAM,mBAAmB,CAAC;AAiBlE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,mCAAmC,KAAK,CAAC;AA0CtD,oBAAY,qBAAqB;IAC/B,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAKD,qBAAa,iBAAiB;;IAE5B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAQvC,OAAO;IAUD,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgBrC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiBvD,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,iBAAiB;IAelE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,UAAU,GAAG,iBAAiB;IAcpE,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,0BAA0B,GAAG,iBAAiB;IAShF,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,4BAA4B,GAAG,iBAAiB;IAOpF,KAAK,IAAI,UAAU;IAOnB,GAAG,IAAI,0BAA0B,GAAG,4BAA4B;CAKjE"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _Ed25519PrivateKey_keyMaterial;
|
|
13
|
+
import { Ed25519PrivateExtendedKeyHex, Ed25519PrivateNormalKeyHex } from '../hexTypes';
|
|
14
|
+
import { Ed25519PublicKey } from './Ed25519PublicKey';
|
|
15
|
+
import { Ed25519Signature } from './Ed25519Signature';
|
|
16
|
+
import { InvalidArgumentError } from '@cardano-sdk/util';
|
|
17
|
+
import { crypto_core_ed25519_scalar_add, crypto_core_ed25519_scalar_mul, crypto_core_ed25519_scalar_reduce, crypto_hash_sha512, crypto_scalarmult_ed25519_base_noclamp, crypto_sign_detached, crypto_sign_seed_keypair, ready } from 'libsodium-wrappers-sumo';
|
|
18
|
+
const SCALAR_INDEX = 0;
|
|
19
|
+
const SCALAR_SIZE = 32;
|
|
20
|
+
const IV_INDEX = 32;
|
|
21
|
+
const IV_SIZE = 32;
|
|
22
|
+
export const NORMAL_ED25519_PRIVATE_KEY_LENGTH = 32;
|
|
23
|
+
export const EXTENDED_ED25519_PRIVATE_KEY_LENGTH = 64;
|
|
24
|
+
const extendedScalar = (extendedKey) => extendedKey.slice(SCALAR_INDEX, SCALAR_SIZE);
|
|
25
|
+
const extendedIv = (extendedKey) => extendedKey.slice(IV_INDEX, IV_INDEX + IV_SIZE);
|
|
26
|
+
const signExtendedDetached = (extendedKey, message) => {
|
|
27
|
+
const scalar = extendedScalar(extendedKey);
|
|
28
|
+
const publicKey = crypto_scalarmult_ed25519_base_noclamp(scalar);
|
|
29
|
+
const nonce = crypto_core_ed25519_scalar_reduce(crypto_hash_sha512(Buffer.concat([extendedIv(extendedKey), message])));
|
|
30
|
+
const r = crypto_scalarmult_ed25519_base_noclamp(nonce);
|
|
31
|
+
let hram = crypto_hash_sha512(Buffer.concat([r, publicKey, message]));
|
|
32
|
+
hram = crypto_core_ed25519_scalar_reduce(hram);
|
|
33
|
+
return Buffer.concat([r, crypto_core_ed25519_scalar_add(crypto_core_ed25519_scalar_mul(hram, scalar), nonce)]);
|
|
34
|
+
};
|
|
35
|
+
export var Ed25519PrivateKeyType;
|
|
36
|
+
(function (Ed25519PrivateKeyType) {
|
|
37
|
+
Ed25519PrivateKeyType["Normal"] = "Normal";
|
|
38
|
+
Ed25519PrivateKeyType["Extended"] = "Extended";
|
|
39
|
+
})(Ed25519PrivateKeyType || (Ed25519PrivateKeyType = {}));
|
|
40
|
+
export class Ed25519PrivateKey {
|
|
41
|
+
constructor(keyMaterial, type) {
|
|
42
|
+
_Ed25519PrivateKey_keyMaterial.set(this, void 0);
|
|
43
|
+
__classPrivateFieldSet(this, _Ed25519PrivateKey_keyMaterial, keyMaterial, "f");
|
|
44
|
+
this.__type = type;
|
|
45
|
+
}
|
|
46
|
+
async toPublic() {
|
|
47
|
+
await ready;
|
|
48
|
+
return Ed25519PublicKey.fromBytes(this.__type === Ed25519PrivateKeyType.Extended
|
|
49
|
+
? crypto_scalarmult_ed25519_base_noclamp(extendedScalar(__classPrivateFieldGet(this, _Ed25519PrivateKey_keyMaterial, "f")))
|
|
50
|
+
: crypto_sign_seed_keypair(__classPrivateFieldGet(this, _Ed25519PrivateKey_keyMaterial, "f")).publicKey);
|
|
51
|
+
}
|
|
52
|
+
async sign(message) {
|
|
53
|
+
await ready;
|
|
54
|
+
return Ed25519Signature.fromBytes(this.__type === Ed25519PrivateKeyType.Extended
|
|
55
|
+
? signExtendedDetached(__classPrivateFieldGet(this, _Ed25519PrivateKey_keyMaterial, "f"), Buffer.from(message, 'hex'))
|
|
56
|
+
: crypto_sign_detached(Buffer.from(message, 'hex'), Buffer.concat([__classPrivateFieldGet(this, _Ed25519PrivateKey_keyMaterial, "f"), (await this.toPublic()).bytes()])));
|
|
57
|
+
}
|
|
58
|
+
static fromNormalBytes(keyMaterial) {
|
|
59
|
+
if (keyMaterial.length !== NORMAL_ED25519_PRIVATE_KEY_LENGTH)
|
|
60
|
+
throw new InvalidArgumentError('keyMaterial', `Key should be ${NORMAL_ED25519_PRIVATE_KEY_LENGTH} bytes; however ${keyMaterial.length} bytes were provided.`);
|
|
61
|
+
return new Ed25519PrivateKey(keyMaterial, Ed25519PrivateKeyType.Normal);
|
|
62
|
+
}
|
|
63
|
+
static fromExtendedBytes(keyMaterial) {
|
|
64
|
+
if (keyMaterial.length !== EXTENDED_ED25519_PRIVATE_KEY_LENGTH)
|
|
65
|
+
throw new InvalidArgumentError('keyMaterial', `Key should be ${EXTENDED_ED25519_PRIVATE_KEY_LENGTH} bytes; however ${keyMaterial.length} bytes were provided.`);
|
|
66
|
+
return new Ed25519PrivateKey(keyMaterial, Ed25519PrivateKeyType.Extended);
|
|
67
|
+
}
|
|
68
|
+
static fromNormalHex(keyMaterial) {
|
|
69
|
+
return Ed25519PrivateKey.fromNormalBytes(Buffer.from(keyMaterial, 'hex'));
|
|
70
|
+
}
|
|
71
|
+
static fromExtendedHex(keyMaterial) {
|
|
72
|
+
return Ed25519PrivateKey.fromExtendedBytes(Buffer.from(keyMaterial, 'hex'));
|
|
73
|
+
}
|
|
74
|
+
bytes() {
|
|
75
|
+
return __classPrivateFieldGet(this, _Ed25519PrivateKey_keyMaterial, "f");
|
|
76
|
+
}
|
|
77
|
+
hex() {
|
|
78
|
+
return this.__type === Ed25519PrivateKeyType.Extended
|
|
79
|
+
? Ed25519PrivateExtendedKeyHex(Buffer.from(__classPrivateFieldGet(this, _Ed25519PrivateKey_keyMaterial, "f")).toString('hex'))
|
|
80
|
+
: Ed25519PrivateNormalKeyHex(Buffer.from(__classPrivateFieldGet(this, _Ed25519PrivateKey_keyMaterial, "f")).toString('hex'));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
_Ed25519PrivateKey_keyMaterial = new WeakMap();
|
|
84
|
+
//# sourceMappingURL=Ed25519PrivateKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519PrivateKey.js","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519PrivateKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Ed25519KeyHash } from './Ed25519KeyHash';
|
|
2
|
+
import { Ed25519PublicKeyHex } from '../hexTypes';
|
|
3
|
+
import { Ed25519Signature } from './Ed25519Signature';
|
|
4
|
+
import { HexBlob } from '@cardano-sdk/util';
|
|
5
|
+
export declare const ED25519_PUBLIC_KEY_LENGTH = 32;
|
|
6
|
+
export declare class Ed25519PublicKey {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(keyMaterial: Uint8Array);
|
|
9
|
+
verify(signature: Ed25519Signature, message: HexBlob): Promise<boolean>;
|
|
10
|
+
static fromBytes(keyMaterial: Uint8Array): Ed25519PublicKey;
|
|
11
|
+
static fromHex(keyMaterial: Ed25519PublicKeyHex): Ed25519PublicKey;
|
|
12
|
+
hash(): Promise<Ed25519KeyHash>;
|
|
13
|
+
bytes(): Uint8Array;
|
|
14
|
+
hex(): Ed25519PublicKeyHex;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=Ed25519PublicKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519PublicKey.d.ts","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519PublicKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAwB,MAAM,mBAAmB,CAAC;AAGlE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAM5C,qBAAa,gBAAgB;;gBAQf,WAAW,EAAE,UAAU;IAY7B,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAU7E,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU;IAcxC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB;IAOzC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IASrC,KAAK,IAAI,UAAU;IAOnB,GAAG,IAAI,mBAAmB;CAG3B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _Ed25519PublicKey_keyMaterial;
|
|
13
|
+
import { ED25519_PUBLIC_KEY_HASH_LENGTH, Ed25519KeyHash } from './Ed25519KeyHash';
|
|
14
|
+
import { Ed25519PublicKeyHex } from '../hexTypes';
|
|
15
|
+
import { InvalidArgumentError } from '@cardano-sdk/util';
|
|
16
|
+
import { crypto_generichash, crypto_sign_verify_detached, ready } from 'libsodium-wrappers-sumo';
|
|
17
|
+
export const ED25519_PUBLIC_KEY_LENGTH = 32;
|
|
18
|
+
export class Ed25519PublicKey {
|
|
19
|
+
constructor(keyMaterial) {
|
|
20
|
+
_Ed25519PublicKey_keyMaterial.set(this, void 0);
|
|
21
|
+
__classPrivateFieldSet(this, _Ed25519PublicKey_keyMaterial, keyMaterial, "f");
|
|
22
|
+
}
|
|
23
|
+
async verify(signature, message) {
|
|
24
|
+
await ready;
|
|
25
|
+
return crypto_sign_verify_detached(signature.bytes(), Buffer.from(message, 'hex'), __classPrivateFieldGet(this, _Ed25519PublicKey_keyMaterial, "f"));
|
|
26
|
+
}
|
|
27
|
+
static fromBytes(keyMaterial) {
|
|
28
|
+
if (keyMaterial.length !== ED25519_PUBLIC_KEY_LENGTH)
|
|
29
|
+
throw new InvalidArgumentError('keyMaterial', `Key should be ${ED25519_PUBLIC_KEY_LENGTH} bytes; however ${keyMaterial.length} bytes were provided.`);
|
|
30
|
+
return new Ed25519PublicKey(keyMaterial);
|
|
31
|
+
}
|
|
32
|
+
static fromHex(keyMaterial) {
|
|
33
|
+
return Ed25519PublicKey.fromBytes(Buffer.from(keyMaterial, 'hex'));
|
|
34
|
+
}
|
|
35
|
+
async hash() {
|
|
36
|
+
await ready;
|
|
37
|
+
const hash = crypto_generichash(ED25519_PUBLIC_KEY_HASH_LENGTH, __classPrivateFieldGet(this, _Ed25519PublicKey_keyMaterial, "f"));
|
|
38
|
+
return Ed25519KeyHash.fromBytes(hash);
|
|
39
|
+
}
|
|
40
|
+
bytes() {
|
|
41
|
+
return __classPrivateFieldGet(this, _Ed25519PublicKey_keyMaterial, "f");
|
|
42
|
+
}
|
|
43
|
+
hex() {
|
|
44
|
+
return Ed25519PublicKeyHex(Buffer.from(__classPrivateFieldGet(this, _Ed25519PublicKey_keyMaterial, "f")).toString('hex'));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
_Ed25519PublicKey_keyMaterial = new WeakMap();
|
|
48
|
+
//# sourceMappingURL=Ed25519PublicKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519PublicKey.js","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519PublicKey.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,8BAA8B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAW,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEjG,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAM5C,MAAM,OAAO,gBAAgB;IAQ3B,YAAY,WAAuB;QAPnC,gDAAkC;QAQhC,uBAAA,IAAI,iCAAgB,WAAW,MAAA,CAAC;IAClC,CAAC;IAUD,KAAK,CAAC,MAAM,CAAC,SAA2B,EAAE,OAAgB;QACxD,MAAM,KAAK,CAAC;QACZ,OAAO,2BAA2B,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,uBAAA,IAAI,qCAAa,CAAC,CAAC;IACxG,CAAC;IAOD,MAAM,CAAC,SAAS,CAAC,WAAuB;QACtC,IAAI,WAAW,CAAC,MAAM,KAAK,yBAAyB;YAClD,MAAM,IAAI,oBAAoB,CAC5B,aAAa,EACb,iBAAiB,yBAAyB,mBAAmB,WAAW,CAAC,MAAM,uBAAuB,CACvG,CAAC;QACJ,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAOD,MAAM,CAAC,OAAO,CAAC,WAAgC;QAC7C,OAAO,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IAKD,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC;QACZ,MAAM,IAAI,GAAG,kBAAkB,CAAC,8BAA8B,EAAE,uBAAA,IAAI,qCAAa,CAAC,CAAC;QACnF,OAAO,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAKD,KAAK;QACH,OAAO,uBAAA,IAAI,qCAAa,CAAC;IAC3B,CAAC;IAKD,GAAG;QACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Ed25519SignatureHex } from '../hexTypes';
|
|
2
|
+
export declare const ED25519_SIGNATURE_LENGTH = 64;
|
|
3
|
+
export declare class Ed25519Signature {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(signature: Uint8Array);
|
|
6
|
+
static fromBytes(signature: Uint8Array): Ed25519Signature;
|
|
7
|
+
static fromHex(signature: Ed25519SignatureHex): Ed25519Signature;
|
|
8
|
+
bytes(): Uint8Array;
|
|
9
|
+
hex(): Ed25519SignatureHex;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=Ed25519Signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519Signature.d.ts","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519Signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAK3C,qBAAa,gBAAgB;;gBAQf,SAAS,EAAE,UAAU;IASjC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU;IActC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB;IAO7C,KAAK,IAAI,UAAU;IAOnB,GAAG,IAAI,mBAAmB;CAG3B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _Ed25519Signature_signature;
|
|
13
|
+
import { Ed25519SignatureHex } from '../hexTypes';
|
|
14
|
+
import { InvalidArgumentError } from '@cardano-sdk/util';
|
|
15
|
+
export const ED25519_SIGNATURE_LENGTH = 64;
|
|
16
|
+
export class Ed25519Signature {
|
|
17
|
+
constructor(signature) {
|
|
18
|
+
_Ed25519Signature_signature.set(this, void 0);
|
|
19
|
+
__classPrivateFieldSet(this, _Ed25519Signature_signature, signature, "f");
|
|
20
|
+
}
|
|
21
|
+
static fromBytes(signature) {
|
|
22
|
+
if (signature.length !== ED25519_SIGNATURE_LENGTH)
|
|
23
|
+
throw new InvalidArgumentError('signature', `signature should be ${ED25519_SIGNATURE_LENGTH} bytes; however ${signature.length} bytes were provided.`);
|
|
24
|
+
return new Ed25519Signature(signature);
|
|
25
|
+
}
|
|
26
|
+
static fromHex(signature) {
|
|
27
|
+
return Ed25519Signature.fromBytes(Buffer.from(signature, 'hex'));
|
|
28
|
+
}
|
|
29
|
+
bytes() {
|
|
30
|
+
return __classPrivateFieldGet(this, _Ed25519Signature_signature, "f");
|
|
31
|
+
}
|
|
32
|
+
hex() {
|
|
33
|
+
return Ed25519SignatureHex(Buffer.from(__classPrivateFieldGet(this, _Ed25519Signature_signature, "f")).toString('hex'));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
_Ed25519Signature_signature = new WeakMap();
|
|
37
|
+
//# sourceMappingURL=Ed25519Signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519Signature.js","sourceRoot":"","sources":["../../../src/Ed25519e/Ed25519Signature.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAK3C,MAAM,OAAO,gBAAgB;IAQ3B,YAAY,SAAqB;QAPjC,8CAAgC;QAQ9B,uBAAA,IAAI,+BAAc,SAAS,MAAA,CAAC;IAC9B,CAAC;IAOD,MAAM,CAAC,SAAS,CAAC,SAAqB;QACpC,IAAI,SAAS,CAAC,MAAM,KAAK,wBAAwB;YAC/C,MAAM,IAAI,oBAAoB,CAC5B,WAAW,EACX,uBAAuB,wBAAwB,mBAAmB,SAAS,CAAC,MAAM,uBAAuB,CAC1G,CAAC;QACJ,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAOD,MAAM,CAAC,OAAO,CAAC,SAA8B;QAC3C,OAAO,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IAKD,KAAK;QACH,OAAO,uBAAA,IAAI,mCAAW,CAAC;IACzB,CAAC;IAKD,GAAG;QACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,mCAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF"}
|