crypto: kdf - add SP800-108 counter key derivation function
authorStephan Müller <smueller@chronox.de>
Fri, 19 Nov 2021 06:55:58 +0000 (07:55 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 26 Nov 2021 05:25:17 +0000 (16:25 +1100)
commit026a733e66592e743a0905c7fd6b5d3bf89b2d7e
tree017fa67b601ebc24efc2c9bd8ccf4b6d074d2747
parentb808f32023dd8127b0fa27f60fa69a959fd70388
crypto: kdf - add SP800-108 counter key derivation function

SP800-108 defines three KDFs - this patch provides the counter KDF
implementation.

The KDF is implemented as a service function where the caller has to
maintain the hash / HMAC state. Apart from this hash/HMAC state, no
additional state is required to be maintained by either the caller or
the KDF implementation.

The key for the KDF is set with the crypto_kdf108_setkey function which
is intended to be invoked before the caller requests a key derivation
operation via crypto_kdf108_ctr_generate.

SP800-108 allows the use of either a HMAC or a hash as crypto primitive
for the KDF. When a HMAC primtive is intended to be used,
crypto_kdf108_setkey must be used to set the HMAC key. Otherwise, for a
hash crypto primitve crypto_kdf108_ctr_generate can be used immediately
after allocating the hash handle.

Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/Kconfig
crypto/Makefile
crypto/kdf_sp800108.c [new file with mode: 0644]
include/crypto/kdf_sp800108.h [new file with mode: 0644]