diff options
author | Florian Dold <florian@dold.me> | 2021-10-07 15:09:40 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-10-07 15:09:40 +0200 |
commit | 0bbaafcd36ce68f95faee0b91738a169848c7a90 (patch) | |
tree | 4349fc7b31f9355c88ef10a029779966d7203e74 /packages/anastasis-core/src/crypto.ts | |
parent | e2fe2d6db16b422ee6d69ef03f1393e1f0f42749 (diff) |
anastasis: implement user id derivation
Diffstat (limited to 'packages/anastasis-core/src/crypto.ts')
-rw-r--r-- | packages/anastasis-core/src/crypto.ts | 21 |
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 { |