Skip to content

Commit 0bcb477

Browse files
committed
added Bitcoin WIF & Sui Bech32 private key import/export
1 parent 80a784b commit 0bcb477

23 files changed

+487
-27
lines changed

export/index.template.html

Lines changed: 364 additions & 2 deletions
Large diffs are not rendered by default.

export/index.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,25 @@ describe("TKHQ", () => {
120120
expect(encodedKey).toEqual(keySol);
121121
});
122122

123+
it("encodes bitcoin WIF private key correctly", async () => {
124+
const keyWif = "L1sF5SF3CnCN9gA7vh7MAtbiVu9igdr3C1BYPKZduw4yaezdeCTV";
125+
const keyWifBytes = (TKHQ.base58Decode(keyWif)).subarray(0, -4); // remove 4 byte checksum
126+
expect(keyWifBytes.length).toEqual(34); // 1 byte version + 32 byte privkey + 1 byte compressed flag
127+
const keyPrivBytes = keyWifBytes.subarray(1, 33);
128+
const encodedKey = await TKHQ.encodeKey(keyPrivBytes, "BITCOIN_WIF");
129+
expect(encodedKey).toEqual(keyWif);
130+
});
131+
132+
it("encodes sui bech32 private key correctly", async () => {
133+
const keySui =
134+
"suiprivkey1qpj5xd9396rxsu7h45tzccalhuf95e4pygls3ps9txszn9ywpwsnznaeq0l";
135+
const { _, words} = TKHQ.decodeBech32(keySui);
136+
const keySuiBytes = (TKHQ.bech32FromWords(words)).subarray(1); // remove 1 byte scheme flag
137+
expect(keySuiBytes.length).toEqual(32);
138+
const encodedKey = await TKHQ.encodeKey(keySuiBytes, "SUI_BECH32");
139+
expect(encodedKey).toEqual(keySui);
140+
});
141+
123142
it("encodes wallet with only mnemonic correctly", async () => {
124143
const mnemonic =
125144
"suffer surround soup duck goose patrol add unveil appear eye neglect hurry alpha project tomorrow embody hen wish twenty join notable amused burden treat";

import/dist/common.bundle.a08f852097edf002c64d.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

import/dist/common.bundle.a08f852097edf002c64d.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

import/dist/common.bundle.dc714a7b2514c5752e63.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

import/dist/common.bundle.a08f852097edf002c64d.js.LICENSE.txt renamed to import/dist/common.bundle.dc714a7b2514c5752e63.js.LICENSE.txt

File renamed without changes.

import/dist/common.bundle.dc714a7b2514c5752e63.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

import/dist/index.bundle.fa4b8f8eab66cd51d789.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

import/dist/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!doctype html><html class="no-js"><head><link rel="icon" type="image/svg+xml" href="./favicon.svg"/><meta charset="utf-8"/><title>Turnkey Import</title><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="color-scheme" content="light dark"/><meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; base-uri 'self'; object-src 'none'; form-action 'none'"><link href="/index.styles.0903e8b6c7ae355513d0.css" rel="stylesheet"></head><body><form><label id="mnemonic-label" for="plaintext">Mnemonic:</label> <textarea name="plaintext" id="plaintext"></textarea> <label id="passphrase-label" for="passphrase">Passphrase:</label> <textarea name="passphrase" id="passphrase"></textarea></form><script defer="defer" src="/vendors.bundle.21bb724fa18b849859c6.js"></script><script defer="defer" src="/common.bundle.a08f852097edf002c64d.js"></script><script defer="defer" src="/index.bundle.fa4b8f8eab66cd51d789.js"></script></body></html>
1+
<!doctype html><html class="no-js"><head><link rel="icon" type="image/svg+xml" href="./favicon.svg"/><meta charset="utf-8"/><title>Turnkey Import</title><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="color-scheme" content="light dark"/><meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; base-uri 'self'; object-src 'none'; form-action 'none'"><link href="/index.styles.ffa96c55390662fee576.css" rel="stylesheet"></head><body><form><label id="mnemonic-label" for="plaintext">Mnemonic:</label> <textarea name="plaintext" id="plaintext"></textarea> <label id="passphrase-label" for="passphrase">Passphrase:</label> <textarea name="passphrase" id="passphrase"></textarea></form><script defer="defer" src="/vendors.bundle.e0c655267435fe0beb13.js"></script><script defer="defer" src="/common.bundle.dc714a7b2514c5752e63.js"></script><script defer="defer" src="/index.bundle.fa4b8f8eab66cd51d789.js"></script></body></html>

0 commit comments

Comments
 (0)