From 269022a526b670d602ca146f4df02850983bb72e Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 18 Oct 2021 21:48:22 +0200 Subject: move some more crypto to taler-util package --- packages/taler-util/src/kdf.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'packages/taler-util/src/kdf.ts') diff --git a/packages/taler-util/src/kdf.ts b/packages/taler-util/src/kdf.ts index af4d05035..7710de90c 100644 --- a/packages/taler-util/src/kdf.ts +++ b/packages/taler-util/src/kdf.ts @@ -59,15 +59,30 @@ export function hmacSha256(key: Uint8Array, message: Uint8Array): Uint8Array { return hmac(sha256, 64, key, message); } +/** + * HMAC-SHA512-SHA256 (see RFC 5869). + */ +export function kdfKw(args: { + outputLength: number; + ikm: Uint8Array; + salt?: Uint8Array; + info?: Uint8Array; +}) { + return kdf(args.outputLength, args.ikm, args.salt, args.info); +} + export function kdf( outputLength: number, ikm: Uint8Array, - salt: Uint8Array, - info: Uint8Array, + salt?: Uint8Array, + info?: Uint8Array, ): Uint8Array { + salt = salt ?? new Uint8Array(64); // extract const prk = hmacSha512(salt, ikm); + info = info ?? new Uint8Array(0); + // expand const N = Math.ceil(outputLength / 32); const output = new Uint8Array(N * 32); -- cgit v1.2.3