Re: [RFCv2 13/20] Bluetooth: Add function to derive AMP key using hmac
From: Gustavo Padovan <hidden>
Date: 2012-07-24 21:16:31
Hi Dmitry, * Andrei Emeltchenko [off-list ref] [2012-07-24 16:21:54 +0300]:
quoted hunk ↗ jump to hunk
From: Dmitry Kasatkin <redacted> hmac(sha256) will be used for AMP key generation. Signed-off-by: Dmitry Kasatkin <redacted> Signed-off-by: Andrei Emeltchenko <redacted> --- net/bluetooth/pal.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)diff --git a/net/bluetooth/pal.c b/net/bluetooth/pal.c index 335cbc3..a405e88 100644 --- a/net/bluetooth/pal.c +++ b/net/bluetooth/pal.c@@ -12,6 +12,7 @@ */ #include <net/bluetooth/pal.h> +#include <crypto/hash.h> enum pal_states { DISCONNECTED,@@ -220,3 +221,37 @@ struct phy_link *phylink_lookup(struct amp_mgr *mgr, u8 local_id, u8 remote_id) return found; } + +int hmac_sha256(u8 *key, u8 ksize, char *plaintext, u8 psize, u8 *output) +{ + int ret = 0; + struct crypto_shash *tfm; + + tfm = crypto_alloc_shash("hmac(sha256)", 0, 0); + if (IS_ERR(tfm)) { + BT_DBG("crypto_alloc_ahash failed"); + return PTR_ERR(tfm); + } + + if (ksize) {
can you move the check for ksize to the beginning of the function? This avoid unnecessary calls to crypto_alloc_ahash() in case ksize is zero. Gustavo