@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 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 new buffer_1.Buffer(keccak256_1.keccak256(data).replace("0x", ""), "hex");
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,IAAI,eAAM,CAAC,qBAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,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"}
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":"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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"key.spec.js","sourceRoot":"","sources":["../src/key.spec.ts"],"names":[],"mappings":";;AAAA,yCAAsC;AACtC,+BAAyC;AACzC,iCAA8B;AAE9B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,QAAQ,GACZ,gFAAgF,CAAC;QAEnF,MAAM,OAAO,GAAG,IAAI,sBAAgB,CAClC,mBAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAC9C,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,CACpC,IAAI,UAAU,CAAC;YACb,CAAC;YACD,EAAE;YACF,EAAE;YACF,GAAG;YACH,EAAE;YACF,EAAE;YACF,EAAE;YACF,GAAG;YACH,EAAE;YACF,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,EAAE;YACF,GAAG;YACH,CAAC;YACD,EAAE;YACF,GAAG;YACH,EAAE;YACF,EAAE;YACF,EAAE;YACF,EAAE;YACF,EAAE;YACF,EAAE;YACF,EAAE;YACF,GAAG;YACH,GAAG;YACH,EAAE;YACF,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACJ,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAG,sBAAgB,CAAC,iBAAiB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QAEnC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,WAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,WAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,OAAO,GAAG,sBAAgB,CAAC,iBAAiB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QAEnC,MAAM,CAAC,GAAG,EAAE;YACV,oBAAoB;YACpB,OAAO,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,GAAG,EAAE;YACV,oBAAoB;YACpB,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,GAAG,EAAE;YACV,yBAAyB;YACzB,MAAM,CAAC,cAAc,CACnB,WAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACtC,IAAI,UAAU,CAAC,EAAE,CAAC,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
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.21",
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": "0b09aba66cbec365a0d923caae6a2c4ba47dc1b9"
34
+ "gitHead": "fdcad4028c640345066f4955a8b94fc1fc1ccf96"
35
35
  }
@@ -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
@@ -8,7 +8,7 @@ export class Hash {
8
8
  }
9
9
 
10
10
  static keccak256(data: Uint8Array): Uint8Array {
11
- return new Buffer(keccak256(data).replace("0x", ""), "hex");
11
+ return Buffer.from(keccak256(data).replace("0x", ""), "hex");
12
12
  }
13
13
 
14
14
  static truncHashPortion(
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