summaryrefslogtreecommitdiff
path: root/packages/anastasis-core/src/crypto.ts
blob: c20d323a763463e2b32ec84de989a12aed2fbcdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import {
  canonicalJson,
  decodeCrock,
  encodeCrock,
  stringToBytes,
} from "@gnu-taler/taler-util";
import { argon2id } from "hash-wasm";

export async function userIdentifierDerive(
  idData: any,
  serverSalt: string,
): Promise<string> {
  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 {
//   pub: string;
//   priv: string;
// }

// async function accountKeypairDerive(): Promise<Keypair> {}

// async function secureAnswerHash(
//   answer: string,
//   truthUuid: string,
//   questionSalt: string,
// ): Promise<string> {}