[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 for-2.10 11/18] crypto: hmac: add hmac driver
From: |
Longpeng (Mike) |
Subject: |
Re: [Qemu-devel] [PATCH v2 for-2.10 11/18] crypto: hmac: add hmac driver framework |
Date: |
Sat, 22 Apr 2017 09:26:58 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120327 Thunderbird/11.0.1 |
On 2017/4/21 20:25, Gonglei (Arei) wrote:
>
>
>> -----Original Message-----
>> From: longpeng
>> Sent: Monday, April 17, 2017 9:33 AM
>> To: address@hidden
>> Cc: Gonglei (Arei); Huangweidong (C); address@hidden;
>> address@hidden; address@hidden; address@hidden; longpeng
>> Subject: [PATCH v2 for-2.10 11/18] crypto: hmac: add hmac driver framework
>>
>> 1) makes the public APIs in hmac-nettle/gcrypt/glib static,
>> and rename them with "nettle/gcrypt/glib" prefix.
>>
>> 2) introduces hmac framework, including QCryptoHmacDriver
>> and new public APIs.
>>
>> Signed-off-by: Longpeng(Mike) <address@hidden>
>> ---
>> crypto/hmac-gcrypt.c | 51 ++++++++++++-----------------------
>> crypto/hmac-glib.c | 75
>> +++++++++++++++++++++------------------------------
>> crypto/hmac-nettle.c | 52 ++++++++++++-----------------------
>> crypto/hmac.c | 44 ++++++++++++++++++++++++++++++
>> crypto/hmacpriv.h | 36 +++++++++++++++++++++++++
>> include/crypto/hmac.h | 1 +
>> 6 files changed, 145 insertions(+), 114 deletions(-)
>> create mode 100644 crypto/hmacpriv.h
>>
>> diff --git a/crypto/hmac-gcrypt.c b/crypto/hmac-gcrypt.c
>> index 42489f3..76ca61b 100644
>> --- a/crypto/hmac-gcrypt.c
>> +++ b/crypto/hmac-gcrypt.c
>> @@ -15,6 +15,7 @@
>> #include "qemu/osdep.h"
>> #include "qapi/error.h"
>> #include "crypto/hmac.h"
>> +#include "hmacpriv.h"
>> #include <gcrypt.h>
>>
>> static int qcrypto_hmac_alg_map[QCRYPTO_HASH_ALG__MAX] = {
>> @@ -42,10 +43,9 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm
>> alg)
>> return false;
>> }
>>
>> -static QCryptoHmacGcrypt *
>> -qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg,
>> - const uint8_t *key, size_t nkey,
>> - Error **errp)
>> +void *qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg,
>> + const uint8_t *key, size_t nkey,
>> + Error **errp)
>
> Why do this change?
>
pls see below :)
>> {
>> QCryptoHmacGcrypt *ctx;
>> +
>> +struct QCryptoHmacDriver {
>> + int (*hmac_bytesv)(QCryptoHmac *hmac,
>> + const struct iovec *iov,
>> + size_t niov,
>> + uint8_t **result,
>> + size_t *resultlen,
>> + Error **errp);
>> +
>> + void (*hmac_free)(QCryptoHmac *hmac);
>> +};
>> +
>> +extern void *qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg,
>> + const uint8_t *key, size_t nkey,
>> + Error **errp);
>
> I think the method of cipher is fine.
>
In cipher.c, we can see this:
#ifdef CONFIG_GCRYPT
#include "crypto/cipher-gcrypt.c"
#elif defined CONFIG_NETTLE
#include "crypto/cipher-nettle.c"
#else
#include "crypto/cipher-builtin.c"
#endif
it included cipher-*.c, so cipher.c can access the static methods in cipher-*.c
directly.
But in hmac.c, it just included hmac.h, it cannot access the static methods in
hmac-*.c, so we must change qcrypto_hmac_ctx_new from 'static
qcrypto_hmac_ctx_new *' to 'void *', and declare it in hmac.h.
>
>> +extern QCryptoHmacDriver qcrypto_hmac_lib_driver;
>> +
>> +#endif
>> diff --git a/include/crypto/hmac.h b/include/crypto/hmac.h
>> index 0d3acd7..5e88905 100644
>> --- a/include/crypto/hmac.h
>> +++ b/include/crypto/hmac.h
>> @@ -18,6 +18,7 @@ typedef struct QCryptoHmac QCryptoHmac;
>> struct QCryptoHmac {
>> QCryptoHashAlgorithm alg;
>> void *opaque;
>> + void *driver;
>> };
>>
>> /**
>> --
>> 1.8.3.1
>>
>
> .
>
--
Regards,
Longpeng(Mike)
- Re: [Qemu-devel] [PATCH v2 for-2.10 12/18] crypto: introduce some common functions for af_alg backend, (continued)
- [Qemu-devel] [PATCH v2 for-2.10 03/18] crypto: cipher: introduce qcrypto_cipher_ctx_new for nettle-backend, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 06/18] crypto: hash: add hash driver framework, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 09/18] crypto: hmac: introduce qcrypto_hmac_ctx_new for nettle-backend, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 17/18] tests: crypto: add hash speed benchmark support, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 11/18] crypto: hmac: add hmac driver framework, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 16/18] tests: crypto: add cipher speed benchmark support, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 15/18] crypto: hmac: add af_alg hmac support, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 07/18] crypto: hmac: move crypto/hmac.h into include/crypto/, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 05/18] crypto: cipher: add cipher driver framework, Longpeng(Mike), 2017/04/16
- [Qemu-devel] [PATCH v2 for-2.10 14/18] crypto: hash: add afalg-backend hash support, Longpeng(Mike), 2017/04/16