@keplr-wallet/crypto 0.11.21 → 0.11.22
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/build/hash.js +1 -1
- package/build/hash.js.map +1 -1
- package/build/hash.spec.d.ts +1 -0
- package/build/hash.spec.js +12 -0
- package/build/hash.spec.js.map +1 -0
- package/build/key.d.ts +2 -1
- package/build/key.js +13 -1
- package/build/key.js.map +1 -1
- package/build/key.spec.js +5 -0
- package/build/key.spec.js.map +1 -1
- package/package.json +2 -2
- package/src/hash.spec.ts +17 -0
- package/src/hash.ts +1 -1
- package/src/key.spec.ts +15 -0
- package/src/key.ts +16 -1
package/build/hash.js
CHANGED
|
@@ -9,7 +9,7 @@ class Hash {
|
|
|
9
9
|
return new Uint8Array(new sha_js_1.sha256().update(data).digest());
|
|
10
10
|
}
|
|
11
11
|
static keccak256(data) {
|
|
12
|
-
return
|
|
12
|
+
return buffer_1.Buffer.from(keccak256_1.keccak256(data).replace("0x", ""), "hex");
|
|
13
13
|
}
|
|
14
14
|
static truncHashPortion(str, firstCharCount = str.length, endCharCount = 0) {
|
|
15
15
|
return (str.substring(0, firstCharCount) +
|
package/build/hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,wDAAqD;AACrD,oCAAiC;AAEjC,MAAa,IAAI;IACf,MAAM,CAAC,MAAM,CAAC,IAAgB;QAC5B,OAAO,IAAI,UAAU,CAAC,IAAI,eAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAgB;QAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,wDAAqD;AACrD,oCAAiC;AAEjC,MAAa,IAAI;IACf,MAAM,CAAC,MAAM,CAAC,IAAgB;QAC5B,OAAO,IAAI,UAAU,CAAC,IAAI,eAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAgB;QAC/B,OAAO,eAAM,CAAC,IAAI,CAAC,qBAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,gBAAgB,CACrB,GAAW,EACX,cAAc,GAAG,GAAG,CAAC,MAAM,EAC3B,YAAY,GAAG,CAAC;QAEhB,OAAO,CACL,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;YAChC,GAAG;YACH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CACrD,CAAC;IACJ,CAAC;CACF;AApBD,oBAoBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const hash_1 = require("./hash");
|
|
4
|
+
describe("Test hash", () => {
|
|
5
|
+
it("sha256", () => {
|
|
6
|
+
expect(Buffer.from(hash_1.Hash.sha256(Buffer.from("12345678", "hex"))).toString("hex")).toBe("b2ed992186a5cb19f6668aade821f502c1d00970dfd0e35128d51bac4649916c");
|
|
7
|
+
});
|
|
8
|
+
it("keccak256", () => {
|
|
9
|
+
expect(Buffer.from(hash_1.Hash.keccak256(Buffer.from("12345678", "hex"))).toString("hex")).toBe("30ca65d5da355227c97ff836c9c6719af9d3835fc6bc72bddc50eeecc1bb2b25");
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=hash.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.spec.js","sourceRoot":"","sources":["../src/hash.spec.ts"],"names":[],"mappings":";;AAAA,iCAA8B;AAE9B,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAChB,MAAM,CACJ,MAAM,CAAC,IAAI,CAAC,WAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzE,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;QACnB,MAAM,CACJ,MAAM,CAAC,IAAI,CAAC,WAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAClE,KAAK,CACN,CACF,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/build/key.d.ts
CHANGED
|
@@ -15,8 +15,9 @@ export declare class PrivKeySecp256k1 {
|
|
|
15
15
|
export declare class PubKeySecp256k1 {
|
|
16
16
|
protected readonly pubKey: Uint8Array;
|
|
17
17
|
constructor(pubKey: Uint8Array);
|
|
18
|
-
toBytes(): Uint8Array;
|
|
18
|
+
toBytes(uncompressed?: boolean): Uint8Array;
|
|
19
19
|
getAddress(): Uint8Array;
|
|
20
|
+
getEthAddress(): Uint8Array;
|
|
20
21
|
toKeyPair(): ec.KeyPair;
|
|
21
22
|
/**
|
|
22
23
|
* @deprecated Use `verifyDigest32(Hash.sha256(data))` instead.
|
package/build/key.js
CHANGED
|
@@ -48,14 +48,26 @@ class PubKeySecp256k1 {
|
|
|
48
48
|
constructor(pubKey) {
|
|
49
49
|
this.pubKey = pubKey;
|
|
50
50
|
}
|
|
51
|
-
toBytes() {
|
|
51
|
+
toBytes(uncompressed) {
|
|
52
|
+
if (uncompressed) {
|
|
53
|
+
const keyPair = this.toKeyPair();
|
|
54
|
+
return new Uint8Array(buffer_1.Buffer.from(keyPair.getPublic().encode("hex", false), "hex"));
|
|
55
|
+
}
|
|
52
56
|
return new Uint8Array(this.pubKey);
|
|
53
57
|
}
|
|
58
|
+
// Cosmos address
|
|
54
59
|
getAddress() {
|
|
55
60
|
let hash = crypto_js_1.default.SHA256(crypto_js_1.default.lib.WordArray.create(this.pubKey)).toString();
|
|
56
61
|
hash = crypto_js_1.default.RIPEMD160(crypto_js_1.default.enc.Hex.parse(hash)).toString();
|
|
57
62
|
return new Uint8Array(buffer_1.Buffer.from(hash, "hex"));
|
|
58
63
|
}
|
|
64
|
+
getEthAddress() {
|
|
65
|
+
// Should be uncompressed.
|
|
66
|
+
// And remove prefix byte.
|
|
67
|
+
// And hash by keccak256.
|
|
68
|
+
// Use last 20 bytes.
|
|
69
|
+
return hash_1.Hash.keccak256(this.toBytes(true).slice(1)).slice(-20);
|
|
70
|
+
}
|
|
59
71
|
toKeyPair() {
|
|
60
72
|
const secp256k1 = new elliptic_1.ec("secp256k1");
|
|
61
73
|
return secp256k1.keyFromPublic(buffer_1.Buffer.from(this.pubKey).toString("hex"), "hex");
|
package/build/key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.js","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA8B;AAC9B,0DAAiC;AAEjC,oCAAiC;AACjC,iCAA8B;AAE9B,MAAa,gBAAgB;IAS3B,YAA+B,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IARtD,MAAM,CAAC,iBAAiB;QACtB,MAAM,SAAS,GAAG,IAAI,aAAE,CAAC,WAAW,CAAC,CAAC;QAEtC,OAAO,IAAI,gBAAgB,CACzB,eAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,CAC3D,CAAC;IACJ,CAAC;IAID,OAAO;QACL,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,SAAS;QACP,MAAM,SAAS,GAAG,IAAI,aAAE,CAAC,WAAW,CAAC,CAAC;QAEtC,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,eAAe,CACxB,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,GAAe;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,MAAkB;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;SACvE;QAED,MAAM,SAAS,GAAG,IAAI,aAAE,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;YACjC,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,UAAU,CACnB,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CACpE,CAAC;IACJ,CAAC;CACF;AAjDD,4CAiDC;AAED,MAAa,eAAe;IAC1B,YAA+B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAErD,OAAO;
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"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"}
|
package/build/key.spec.js
CHANGED
|
@@ -69,5 +69,10 @@ describe("Test priv key", () => {
|
|
|
69
69
|
pubKey.verifyDigest32(hash_1.Hash.sha256(new Uint8Array([1, 2, 3])), new Uint8Array(63));
|
|
70
70
|
}).toThrow();
|
|
71
71
|
});
|
|
72
|
+
it("test eth address", () => {
|
|
73
|
+
const privKey = new key_1.PrivKeySecp256k1(mnemonic_1.Mnemonic.generateWalletFromMnemonic("notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius", `m/44'/60'/0'/0/0`));
|
|
74
|
+
const ethAddress = privKey.getPubKey().getEthAddress();
|
|
75
|
+
expect(Buffer.from(ethAddress).toString("hex")).toBe("d38de26638cbf4f5c99bd8787fedfdb50c3f236a");
|
|
76
|
+
});
|
|
72
77
|
});
|
|
73
78
|
//# sourceMappingURL=key.spec.js.map
|
package/build/key.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.spec.js","sourceRoot":"","sources":["../src/key.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"key.spec.js","sourceRoot":"","sources":["../src/key.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keplr-wallet/crypto",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.22",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"author": "chainapsis",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"elliptic": "^6.5.3",
|
|
32
32
|
"sha.js": "^2.4.11"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "fdcad4028c640345066f4955a8b94fc1fc1ccf96"
|
|
35
35
|
}
|
package/src/hash.spec.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Hash } from "./hash";
|
|
2
|
+
|
|
3
|
+
describe("Test hash", () => {
|
|
4
|
+
it("sha256", () => {
|
|
5
|
+
expect(
|
|
6
|
+
Buffer.from(Hash.sha256(Buffer.from("12345678", "hex"))).toString("hex")
|
|
7
|
+
).toBe("b2ed992186a5cb19f6668aade821f502c1d00970dfd0e35128d51bac4649916c");
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("keccak256", () => {
|
|
11
|
+
expect(
|
|
12
|
+
Buffer.from(Hash.keccak256(Buffer.from("12345678", "hex"))).toString(
|
|
13
|
+
"hex"
|
|
14
|
+
)
|
|
15
|
+
).toBe("30ca65d5da355227c97ff836c9c6719af9d3835fc6bc72bddc50eeecc1bb2b25");
|
|
16
|
+
});
|
|
17
|
+
});
|
package/src/hash.ts
CHANGED
package/src/key.spec.ts
CHANGED
|
@@ -84,4 +84,19 @@ describe("Test priv key", () => {
|
|
|
84
84
|
);
|
|
85
85
|
}).toThrow();
|
|
86
86
|
});
|
|
87
|
+
|
|
88
|
+
it("test eth address", () => {
|
|
89
|
+
const privKey = new PrivKeySecp256k1(
|
|
90
|
+
Mnemonic.generateWalletFromMnemonic(
|
|
91
|
+
"notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius",
|
|
92
|
+
`m/44'/60'/0'/0/0`
|
|
93
|
+
)
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
const ethAddress = privKey.getPubKey().getEthAddress();
|
|
97
|
+
|
|
98
|
+
expect(Buffer.from(ethAddress).toString("hex")).toBe(
|
|
99
|
+
"d38de26638cbf4f5c99bd8787fedfdb50c3f236a"
|
|
100
|
+
);
|
|
101
|
+
});
|
|
87
102
|
});
|
package/src/key.ts
CHANGED
|
@@ -58,10 +58,17 @@ export class PrivKeySecp256k1 {
|
|
|
58
58
|
export class PubKeySecp256k1 {
|
|
59
59
|
constructor(protected readonly pubKey: Uint8Array) {}
|
|
60
60
|
|
|
61
|
-
toBytes(): Uint8Array {
|
|
61
|
+
toBytes(uncompressed?: boolean): Uint8Array {
|
|
62
|
+
if (uncompressed) {
|
|
63
|
+
const keyPair = this.toKeyPair();
|
|
64
|
+
return new Uint8Array(
|
|
65
|
+
Buffer.from(keyPair.getPublic().encode("hex", false), "hex")
|
|
66
|
+
);
|
|
67
|
+
}
|
|
62
68
|
return new Uint8Array(this.pubKey);
|
|
63
69
|
}
|
|
64
70
|
|
|
71
|
+
// Cosmos address
|
|
65
72
|
getAddress(): Uint8Array {
|
|
66
73
|
let hash = CryptoJS.SHA256(
|
|
67
74
|
CryptoJS.lib.WordArray.create(this.pubKey as any)
|
|
@@ -71,6 +78,14 @@ export class PubKeySecp256k1 {
|
|
|
71
78
|
return new Uint8Array(Buffer.from(hash, "hex"));
|
|
72
79
|
}
|
|
73
80
|
|
|
81
|
+
getEthAddress(): Uint8Array {
|
|
82
|
+
// Should be uncompressed.
|
|
83
|
+
// And remove prefix byte.
|
|
84
|
+
// And hash by keccak256.
|
|
85
|
+
// Use last 20 bytes.
|
|
86
|
+
return Hash.keccak256(this.toBytes(true).slice(1)).slice(-20);
|
|
87
|
+
}
|
|
88
|
+
|
|
74
89
|
toKeyPair(): ec.KeyPair {
|
|
75
90
|
const secp256k1 = new ec("secp256k1");
|
|
76
91
|
|