aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util/src/bitcoin.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-04-20 15:14:18 -0300
committerSebastian <sebasjm@gmail.com>2022-04-20 15:14:18 -0300
commit0cb4e4498db5d87e0bc89062204b746992b22279 (patch)
tree8ac0a7cbcf576c1ec18e093b749f420809c21c31 /packages/taler-util/src/bitcoin.ts
parent37ce3972f9bc37c0b96ed78814dc99303b202859 (diff)
downloadwallet-core-0cb4e4498db5d87e0bc89062204b746992b22279.tar.gz
wallet-core-0cb4e4498db5d87e0bc89062204b746992b22279.tar.bz2
wallet-core-0cb4e4498db5d87e0bc89062204b746992b22279.zip
addr list and test
Diffstat (limited to 'packages/taler-util/src/bitcoin.ts')
-rw-r--r--packages/taler-util/src/bitcoin.ts27
1 files changed, 15 insertions, 12 deletions
diff --git a/packages/taler-util/src/bitcoin.ts b/packages/taler-util/src/bitcoin.ts
index 62d8d8dce..822652a8a 100644
--- a/packages/taler-util/src/bitcoin.ts
+++ b/packages/taler-util/src/bitcoin.ts
@@ -26,10 +26,6 @@ import { AmountJson, Amounts } from "./amounts.js";
import { decodeCrock } from "./talerCrypto.js";
import * as segwit from "./segwit_addr.js";
-export interface SegwitAddrs {
- addr1: string;
- addr2: string;
-}
function buf2hex(buffer: Uint8Array) {
// buffer is an ArrayBuffer
@@ -43,10 +39,17 @@ const hext2buf = (hexString: string) =>
export function generateFakeSegwitAddress(
- reservePub: string,
+ reservePub: string | undefined,
addr: string
-): SegwitAddrs {
- const pub = decodeCrock(reservePub);
+): string[] {
+ if (!reservePub) return []
+ let pub;
+ try {
+ pub = decodeCrock(reservePub);
+ } catch {
+ // pub = new Uint8Array(0)
+ }
+ if (!pub || pub.length !== 32) return []
const first_rnd = new Uint8Array(4);
first_rnd.set(pub.subarray(0, 4))
@@ -62,7 +65,7 @@ export function generateFakeSegwitAddress(
const second_part = new Uint8Array(first_rnd.length + pub.length / 2);
second_part.set(second_rnd, 0);
- second_part.set(pub.subarray(16), 4);
+ second_part.set(pub.subarray(16, 32), 4);
const prefix =
addr[0] === "t" && addr[1] == "b"
@@ -74,10 +77,10 @@ export function generateFakeSegwitAddress(
: undefined;
if (prefix === undefined) throw new Error("unknown bitcoin net");
- return {
- addr1: segwit.default.encode(prefix, 0, first_part),
- addr2: segwit.default.encode(prefix, 0, second_part),
- };
+ const addr1 = segwit.default.encode(prefix, 0, first_part);
+ const addr2 = segwit.default.encode(prefix, 0, second_part);
+
+ return [addr1, addr2]
}
// https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp