Skip to content
File

Blob: src/workerd/api/crypto/kdf.h

cpp44 lines
1// Copyright (c) 2017-2022 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4#pragma once
5 
6#include <workerd/jsg/jsg.h>
7#include <workerd/jsg/jsvalue.h>
8 
9#include <kj/common.h>
10 
11#include <cstdint>
12 
13using EVP_MD = struct env_md_st;
14 
15namespace workerd::api {
16 
17// Perform HKDF key derivation.
18kj::Maybe<jsg::JsArrayBuffer> hkdf(jsg::Lock& js,
19 size_t length,
20 const EVP_MD* digest,
21 kj::ArrayPtr<const kj::byte> key,
22 kj::ArrayPtr<const kj::byte> salt,
23 kj::ArrayPtr<const kj::byte> info);
24 
25// Perform PBKDF2 key derivation.
26kj::Maybe<jsg::JsArrayBuffer> pbkdf2(jsg::Lock& js,
27 size_t length,
28 size_t iterations,
29 const EVP_MD* digest,
30 kj::ArrayPtr<const kj::byte> password,
31 kj::ArrayPtr<const kj::byte> salt);
32 
33// Perform Scrypt key derivation.
34kj::Maybe<jsg::JsArrayBuffer> scrypt(jsg::Lock& js,
35 size_t length,
36 uint32_t N,
37 uint32_t r,
38 uint32_t p,
39 uint32_t maxmem,
40 kj::ArrayPtr<const kj::byte> pass,
41 kj::ArrayPtr<const kj::byte> salt);
42 
43} // namespace workerd::api