summaryrefslogtreecommitdiff
path: root/packages/anastasis-core/src/crypto.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/anastasis-core/src/crypto.ts')
-rw-r--r--packages/anastasis-core/src/crypto.ts21
1 files changed, 19 insertions, 2 deletions
diff --git a/packages/anastasis-core/src/crypto.ts b/packages/anastasis-core/src/crypto.ts
index 54f27b646..c20d323a7 100644
--- a/packages/anastasis-core/src/crypto.ts
+++ b/packages/anastasis-core/src/crypto.ts
@@ -1,10 +1,27 @@
+import {
+ canonicalJson,
+ decodeCrock,
+ encodeCrock,
+ stringToBytes,
+} from "@gnu-taler/taler-util";
import { argon2id } from "hash-wasm";
-async function userIdentifierDerive(
+export async function userIdentifierDerive(
idData: any,
serverSalt: string,
): Promise<string> {
- throw Error("not implemented");
+ const canonIdData = canonicalJson(idData);
+ const hashInput = stringToBytes(canonIdData);
+ const result = await argon2id({
+ hashLength: 64,
+ iterations: 3,
+ memorySize: 1024 /* kibibytes */,
+ parallelism: 1,
+ password: hashInput,
+ salt: decodeCrock(serverSalt),
+ outputType: "binary",
+ });
+ return encodeCrock(result);
}
// interface Keypair {