aboutsummaryrefslogtreecommitdiff
path: root/src/crypto
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-03-30 16:09:32 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-03-30 16:09:32 +0530
commitaaf950e2ad5c07d4423f9822e3a0ae9f7b8d2bdf (patch)
tree9274139660f30c4857d80044eb4ac283aac1775a /src/crypto
parent15e18440dbad55df19977a2eb7053681259afc18 (diff)
downloadwallet-core-aaf950e2ad5c07d4423f9822e3a0ae9f7b8d2bdf.tar.xz
re-format with prettier v2, fix HTML
Diffstat (limited to 'src/crypto')
-rw-r--r--src/crypto/primitives/nacl-fast.ts25
-rw-r--r--src/crypto/primitives/sha256.ts5
-rw-r--r--src/crypto/talerCrypto-test.ts37
-rw-r--r--src/crypto/workers/cryptoApi.ts5
-rw-r--r--src/crypto/workers/cryptoImplementation.ts8
-rw-r--r--src/crypto/workers/cryptoWorker.ts2
-rw-r--r--src/crypto/workers/nodeThreadWorker.ts2
-rw-r--r--src/crypto/workers/synchronousWorker.ts4
8 files changed, 45 insertions, 43 deletions
diff --git a/src/crypto/primitives/nacl-fast.ts b/src/crypto/primitives/nacl-fast.ts
index 66ab78162..14cf569db 100644
--- a/src/crypto/primitives/nacl-fast.ts
+++ b/src/crypto/primitives/nacl-fast.ts
@@ -5,14 +5,14 @@
// Implementation derived from TweetNaCl version 20140427.
// See for details: http://tweetnacl.cr.yp.to/
-const gf = function(init: number[] = []) {
+const gf = function (init: number[] = []) {
const r = new Float64Array(16);
if (init) for (let i = 0; i < init.length; i++) r[i] = init[i];
return r;
};
// Pluggable, initialized in high-level API below.
-let randombytes = function(x: Uint8Array, n: number): void {
+let randombytes = function (x: Uint8Array, n: number): void {
throw new Error("no PRNG");
};
@@ -2373,13 +2373,11 @@ function crypto_hash(out: Uint8Array, m: Uint8Array, n: number) {
ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);
crypto_hashblocks_hl(hh, hl, x, n);
- for (let i = 0; i < 8; i++)
- ts64(out, 8 * i, hh[i], hl[i]);
+ for (let i = 0; i < 8; i++) ts64(out, 8 * i, hh[i], hl[i]);
return 0;
}
-
/**
* Incremental version of crypto_hash.
*/
@@ -2400,7 +2398,7 @@ export class HashState {
this.hh[5] = 0x9b05688c;
this.hh[6] = 0x1f83d9ab;
this.hh[7] = 0x5be0cd19;
-
+
this.hl[0] = 0xf3bcc908;
this.hl[1] = 0x84caa73b;
this.hl[2] = 0xfe94f82b;
@@ -2416,7 +2414,7 @@ export class HashState {
let i = 0;
while (i < data.length) {
const r = 128 - this.p;
- if (r > (data.length - i)) {
+ if (r > data.length - i) {
for (let j = 0; i + j < data.length; j++) {
this.next[this.p + j] = data[i + j];
}
@@ -2441,14 +2439,13 @@ export class HashState {
let b = this.total;
for (let i = 0; i < n; i++) x[i] = this.next[i];
x[n] = 128;
-
+
n = 256 - 128 * (n < 112 ? 1 : 0);
x[n - 9] = 0;
ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);
crypto_hashblocks_hl(this.hh, this.hl, x, n);
-
- for (let i = 0; i < 8; i++)
- ts64(out, 8 * i, this.hh[i], this.hl[i]);
+
+ for (let i = 0; i < 8; i++) ts64(out, 8 * i, this.hh[i], this.hl[i]);
return out;
}
}
@@ -3078,7 +3075,7 @@ export function sign_ed25519_pk_to_curve25519(
return x25519_pk;
}
-(function() {
+(function () {
// Initialize PRNG if environment provides CSPRNG.
// If not, methods calling randombytes will throw.
const crypto =
@@ -3086,7 +3083,7 @@ export function sign_ed25519_pk_to_curve25519(
if (crypto && crypto.getRandomValues) {
// Browsers.
var QUOTA = 65536;
- setPRNG(function(x: Uint8Array, n: number) {
+ setPRNG(function (x: Uint8Array, n: number) {
var i,
v = new Uint8Array(n);
for (i = 0; i < n; i += QUOTA) {
@@ -3099,7 +3096,7 @@ export function sign_ed25519_pk_to_curve25519(
// Node.js.
const cr = require("crypto");
if (cr && cr.randomBytes) {
- setPRNG(function(x: Uint8Array, n: number) {
+ setPRNG(function (x: Uint8Array, n: number) {
var i,
v = cr.randomBytes(n);
for (i = 0; i < n; i++) x[i] = v[i];
diff --git a/src/crypto/primitives/sha256.ts b/src/crypto/primitives/sha256.ts
index f4f6690c7..c0f245bb3 100644
--- a/src/crypto/primitives/sha256.ts
+++ b/src/crypto/primitives/sha256.ts
@@ -339,10 +339,7 @@ export class HMAC {
constructor(key: Uint8Array) {
const pad = new Uint8Array(this.blockSize);
if (key.length > this.blockSize) {
- new HashSha256()
- .update(key)
- .finish(pad)
- .clean();
+ new HashSha256().update(key).finish(pad).clean();
} else {
for (let i = 0; i < key.length; i++) {
pad[i] = key[i];
diff --git a/src/crypto/talerCrypto-test.ts b/src/crypto/talerCrypto-test.ts
index 59949dbd3..85c22d608 100644
--- a/src/crypto/talerCrypto-test.ts
+++ b/src/crypto/talerCrypto-test.ts
@@ -47,7 +47,7 @@ function bytesToHex(bytes: Uint8Array): string {
return hex.join("");
}
-test("encoding", t => {
+test("encoding", (t) => {
const utf8decoder = new TextDecoder("utf-8");
const utf8encoder = new TextEncoder();
const s = "Hello, World";
@@ -57,7 +57,7 @@ test("encoding", t => {
t.deepEqual(s, sOut);
});
-test("taler-exchange-tvg hash code", t => {
+test("taler-exchange-tvg hash code", (t) => {
const input = "91JPRV3F5GG4EKJN41A62V35E8";
const output =
"CW96WR74JS8T53EC8GKSGD49QKH4ZNFTZXDAWMMV5GJ1E4BM6B8GPN5NVHDJ8ZVXNCW7Q4WBYCV61HCA3PZC2YJD850DT29RHHN7ESR";
@@ -67,7 +67,7 @@ test("taler-exchange-tvg hash code", t => {
t.deepEqual(myOutput, output);
});
-test("taler-exchange-tvg ecdhe key", t => {
+test("taler-exchange-tvg ecdhe key", (t) => {
const priv1 = "X4T4N0M8PVQXQEBW2BA7049KFSM7J437NSDFC6GDNM3N5J9367A0";
const pub1 = "M997P494MS6A95G1P0QYWW2VNPSHSX5Q6JBY5B9YMNYWP0B50X3G";
const priv2 = "14A0MMQ64DCV8HE0CS3WBC9DHFJAHXRGV7NEARFJPC5R5E1697E0";
@@ -83,7 +83,7 @@ test("taler-exchange-tvg ecdhe key", t => {
t.deepEqual(encodeCrock(mySkm), skm);
});
-test("taler-exchange-tvg eddsa key", t => {
+test("taler-exchange-tvg eddsa key", (t) => {
const priv = "9TM70AKDTS57AWY9JK2J4TMBTMW6K62WHHGZWYDG0VM5ABPZKD40";
const pub = "8GSJZ649T2PXMKZC01Y4ANNBE7MF14QVK9SQEC4E46ZHKCVG8AS0";
@@ -91,7 +91,7 @@ test("taler-exchange-tvg eddsa key", t => {
t.deepEqual(encodeCrock(pair.publicKey), pub);
});
-test("taler-exchange-tvg kdf", t => {
+test("taler-exchange-tvg kdf", (t) => {
const salt = "94KPT83PCNS7J83KC5P78Y8";
const ikm = "94KPT83MD1JJ0WV5CDS6AX10D5Q70XBM41NPAY90DNGQ8SBJD5GPR";
const ctx =
@@ -110,7 +110,7 @@ test("taler-exchange-tvg kdf", t => {
t.deepEqual(encodeCrock(myOut), out);
});
-test("taler-exchange-tvg eddsa_ecdh", t => {
+test("taler-exchange-tvg eddsa_ecdh", (t) => {
const priv_ecdhe = "4AFZWMSGTVCHZPQ0R81NWXDCK4N58G7SDBBE5KXE080Y50370JJG";
const pub_ecdhe = "FXFN5GPAFTKVPWJDPVXQ87167S8T82T5ZV8CDYC0NH2AE14X0M30";
const priv_eddsa = "1KG54M8T3X8BSFSZXCR3SQBSR7Y9P53NX61M864S7TEVMJ2XVPF0";
@@ -137,7 +137,7 @@ test("taler-exchange-tvg eddsa_ecdh", t => {
t.deepEqual(encodeCrock(myKm2), key_material);
});
-test("taler-exchange-tvg blind signing", t => {
+test("taler-exchange-tvg blind signing", (t) => {
const messageHash =
"TT1R28D79EJEJ9PC35AQS35CCG85DSXSZ508MV2HS2FN4ME6AHESZX5WP485R8A75KG53FN6F1YNW95008663TKAPWB81420VG17BY8";
const rsaPublicKey =
@@ -149,18 +149,29 @@ test("taler-exchange-tvg blind signing", t => {
"5VW0MS5PRBA3W8TPATSTDA2YRFQM1Z7F2DWKQ8ATMZYYY768Q3STZ3HGNVYQ6JB5NKP80G5HGE58616FPA70SX9PTW7EN8EJ23E26FASBWZBP8E2RWQQ5E0F72B2PWRP5ZCA2J3AB3F6P86XK4PZYT64RF94MDGHY0GSDSSBH5YSFB3VM0KVXA52H2Y2G9S85AVCSD3BTMHQRF5BJJ8JE00T4GK70PSTVCGMRKRNA7DGW7GD2F35W55AXF7R2YJC8PAGNSJYWKC3PC75A5N8H69K299AK5PM3CDDHNS4BMRNGF7K49CR4ZBFRXDAWMB3X6T05Q4NKSG0F1KP5JA0XBMF2YJK7KEPRD1EWCHJE44T9YXBTK4W9CV77X7Z9P407ZC6YB3M2ARANZXHJKSM3XC33M";
const sig =
"PFT6WQJGCM9DE6264DJS6RMG4XDMCDBJKZGSXAF3BEXWZ979Q13NETKK05S1YV91CX3Y034FSS86SSHZTTE8097RRESQP52EKFGTWJXKHZJEQJ49YHMBNQDHW4CFBJECNJSV2PMHWVGXV7HB84R6P0S3ES559HWQX01Q9MYDEGRNHKW87QR2BNSG951D5NQGAKEJ2SSJBE18S6WYAC24FAP8TT8ANECH5371J0DJY0YR0VWAFWVJDV8XQSFXWMJ80N3A80SPSHPYJY3WZZXW63WQ46WHYY56ZSNE5G1RZ5CR0XYV2ECKPM8R0FS58EV16WTRAM1ABBFVNAT3CAEFAZCWP3XHPVBQY5NZVTD5QS2Q8SKJQ2XB30E11CWDN9KTV5CBK4DN72EVG73F3W3BATAKHG";
-
- const myBm = rsaBlind(decodeCrock(messageHash), decodeCrock(bks), decodeCrock(rsaPublicKey));
+
+ const myBm = rsaBlind(
+ decodeCrock(messageHash),
+ decodeCrock(bks),
+ decodeCrock(rsaPublicKey),
+ );
t.deepEqual(encodeCrock(myBm), bm);
- const mySig = rsaUnblind(decodeCrock(bs), decodeCrock(rsaPublicKey), decodeCrock(bks));
+ const mySig = rsaUnblind(
+ decodeCrock(bs),
+ decodeCrock(rsaPublicKey),
+ decodeCrock(bks),
+ );
t.deepEqual(encodeCrock(mySig), sig);
- const v = rsaVerify(decodeCrock(messageHash), decodeCrock(sig), decodeCrock(rsaPublicKey));
+ const v = rsaVerify(
+ decodeCrock(messageHash),
+ decodeCrock(sig),
+ decodeCrock(rsaPublicKey),
+ );
t.true(v);
});
-
test("incremental hashing #1", (t) => {
const n = 1024;
const d = nacl.randomBytes(n);
@@ -198,4 +209,4 @@ test("incremental hashing #2", (t) => {
t.deepEqual(encodeCrock(h1), encodeCrock(h3));
t.deepEqual(encodeCrock(h1), encodeCrock(h2));
-}); \ No newline at end of file
+});
diff --git a/src/crypto/workers/cryptoApi.ts b/src/crypto/workers/cryptoApi.ts
index 0b7c2e233..ab97e1274 100644
--- a/src/crypto/workers/cryptoApi.ts
+++ b/src/crypto/workers/cryptoApi.ts
@@ -281,8 +281,9 @@ export class CryptoApi {
CryptoApi.enableTracing &&
console.log(
- `rpc ${currentWorkItem.operation} took ${timer.performanceNow() -
- currentWorkItem.startTime}ms`,
+ `rpc ${currentWorkItem.operation} took ${
+ timer.performanceNow() - currentWorkItem.startTime
+ }ms`,
);
currentWorkItem.resolve(msg.data.result);
}
diff --git a/src/crypto/workers/cryptoImplementation.ts b/src/crypto/workers/cryptoImplementation.ts
index 55caecb43..156c72ba0 100644
--- a/src/crypto/workers/cryptoImplementation.ts
+++ b/src/crypto/workers/cryptoImplementation.ts
@@ -313,9 +313,7 @@ export class CryptoImplementation {
stringToBytes(paytoUri + "\0"),
new Uint8Array(0),
);
- const p = buildSigPS(SignaturePurpose.MASTER_WIRE_DETAILS)
- .put(h)
- .build();
+ const p = buildSigPS(SignaturePurpose.MASTER_WIRE_DETAILS).put(h).build();
return eddsaVerify(p, decodeCrock(sig), decodeCrock(masterPub));
}
@@ -467,8 +465,8 @@ export class CryptoImplementation {
exchangeBaseUrl,
hash: encodeCrock(sessionHash),
meltCoinPub: meltCoin.coinPub,
- newDenomHashes: newCoinDenoms.map(d => d.denomPubHash),
- newDenoms: newCoinDenoms.map(d => d.denomPub),
+ newDenomHashes: newCoinDenoms.map((d) => d.denomPubHash),
+ newDenoms: newCoinDenoms.map((d) => d.denomPub),
norevealIndex: undefined,
planchetsForGammas: planchetsForGammas,
transferPrivs,
diff --git a/src/crypto/workers/cryptoWorker.ts b/src/crypto/workers/cryptoWorker.ts
index d4449f4a2..9f3ee6f50 100644
--- a/src/crypto/workers/cryptoWorker.ts
+++ b/src/crypto/workers/cryptoWorker.ts
@@ -5,4 +5,4 @@ export interface CryptoWorker {
onmessage: ((m: any) => void) | undefined;
onerror: ((m: any) => void) | undefined;
-} \ No newline at end of file
+}
diff --git a/src/crypto/workers/nodeThreadWorker.ts b/src/crypto/workers/nodeThreadWorker.ts
index e40f3c950..1247900f9 100644
--- a/src/crypto/workers/nodeThreadWorker.ts
+++ b/src/crypto/workers/nodeThreadWorker.ts
@@ -96,7 +96,7 @@ export function handleWorkerMessage(msg: any) {
}
};
- handleRequest().catch(e => {
+ handleRequest().catch((e) => {
console.error("error in node worker", e);
});
}
diff --git a/src/crypto/workers/synchronousWorker.ts b/src/crypto/workers/synchronousWorker.ts
index 12eecde9a..b453468d5 100644
--- a/src/crypto/workers/synchronousWorker.ts
+++ b/src/crypto/workers/synchronousWorker.ts
@@ -37,12 +37,10 @@ export class SynchronousCryptoWorkerFactory implements CryptoWorkerFactory {
}
}
-
/**
* Worker implementation that uses node subprocesses.
*/
export class SynchronousCryptoWorker {
-
/**
* Function to be called when we receive a message from the worker thread.
*/
@@ -121,7 +119,7 @@ export class SynchronousCryptoWorker {
return;
}
- this.handleRequest(operation, id, args).catch(e => {
+ this.handleRequest(operation, id, args).catch((e) => {
console.error("Error while handling crypto request:", e);
});
}