qemu-devel
[Top][All Lists]
Advanced

[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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]