2021-10-07 15:09:40 +02:00
|
|
|
import {
|
|
|
|
canonicalJson,
|
|
|
|
decodeCrock,
|
|
|
|
encodeCrock,
|
|
|
|
stringToBytes,
|
|
|
|
} from "@gnu-taler/taler-util";
|
2021-10-07 12:01:40 +02:00
|
|
|
import { argon2id } from "hash-wasm";
|
|
|
|
|
2021-10-07 15:09:40 +02:00
|
|
|
export async function userIdentifierDerive(
|
2021-10-07 12:01:40 +02:00
|
|
|
idData: any,
|
|
|
|
serverSalt: string,
|
|
|
|
): Promise<string> {
|
2021-10-07 15:09:40 +02:00
|
|
|
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);
|
2021-10-07 12:01:40 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// interface Keypair {
|
|
|
|
// pub: string;
|
|
|
|
// priv: string;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// async function accountKeypairDerive(): Promise<Keypair> {}
|
|
|
|
|
|
|
|
// async function secureAnswerHash(
|
|
|
|
// answer: string,
|
|
|
|
// truthUuid: string,
|
|
|
|
// questionSalt: string,
|
|
|
|
// ): Promise<string> {}
|