summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/crypto/talerCrypto.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2020-12-14 16:44:42 +0100
committerFlorian Dold <florian@dold.me>2020-12-14 16:44:42 +0100
commit12234083ecfe83de79eb2caf29808a0f17188e84 (patch)
tree2e369412845b51173ed0329bb08ee4dcaf48a3c6 /packages/taler-wallet-core/src/crypto/talerCrypto.ts
parent80a0fab1261fc06f79db4c32fd7a1a6d0cb0db0f (diff)
downloadwallet-core-12234083ecfe83de79eb2caf29808a0f17188e84.tar.gz
wallet-core-12234083ecfe83de79eb2caf29808a0f17188e84.tar.bz2
wallet-core-12234083ecfe83de79eb2caf29808a0f17188e84.zip
derive refresh info from secret seed
Diffstat (limited to 'packages/taler-wallet-core/src/crypto/talerCrypto.ts')
-rw-r--r--packages/taler-wallet-core/src/crypto/talerCrypto.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/crypto/talerCrypto.ts b/packages/taler-wallet-core/src/crypto/talerCrypto.ts
index 8713fc965..4faa523a0 100644
--- a/packages/taler-wallet-core/src/crypto/talerCrypto.ts
+++ b/packages/taler-wallet-core/src/crypto/talerCrypto.ts
@@ -389,3 +389,19 @@ export function setupRefreshPlanchet(
coinPub: eddsaGetPublic(coinPriv),
};
}
+
+export function setupRefreshTransferPub(
+ secretSeed: Uint8Array,
+ transferPubIndex: number,
+): EcdheKeyPair {
+ const info = stringToBytes("taler-transfer-pub-derivation");
+ const saltArrBuf = new ArrayBuffer(4);
+ const salt = new Uint8Array(saltArrBuf);
+ const saltDataView = new DataView(saltArrBuf);
+ saltDataView.setUint32(0, transferPubIndex);
+ const out = kdf(32, secretSeed, salt, info);
+ return {
+ ecdhePriv: out,
+ ecdhePub: ecdheGetPublic(out),
+ };
+}