diff options
author | Alejandro Zeise <alejandro.zeise@seagate.com> | 2024-10-08 09:57:08 +0200 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2024-10-10 12:32:59 +0100 |
commit | 190feb488473ca07df17dfa6fbc073a407258923 (patch) | |
tree | b0d8ec7d45da04340e1eca5bdae7ed465f76c0b2 /crypto | |
parent | 838fc0a8769d7cc6edfe50451ba4e3368395f5c1 (diff) | |
download | qemu-190feb488473ca07df17dfa6fbc073a407258923.zip qemu-190feb488473ca07df17dfa6fbc073a407258923.tar.gz qemu-190feb488473ca07df17dfa6fbc073a407258923.tar.bz2 |
crypto: accumulative hashing API
Changes the hash API to support accumulative hashing.
Hash objects are created with "qcrypto_hash_new",
updated with data with "qcrypto_hash_update", and
the hash obtained with "qcrypto_hash_finalize".
These changes bring the hashing API more in line with the
hmac API.
Signed-off-by: Alejandro Zeise <alejandro.zeise@seagate.com>
[ clg: - Changed documentation "non-zero on error" -> "-1 on error" ]
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/hashpriv.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crypto/hashpriv.h b/crypto/hashpriv.h index 47daec3..dcb3ba6 100644 --- a/crypto/hashpriv.h +++ b/crypto/hashpriv.h @@ -1,6 +1,7 @@ /* * QEMU Crypto hash driver supports * + * Copyright (c) 2024 Seagate Technology LLC and/or its Affiliates * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD. * * Authors: @@ -15,6 +16,8 @@ #ifndef QCRYPTO_HASHPRIV_H #define QCRYPTO_HASHPRIV_H +#include "crypto/hash.h" + typedef struct QCryptoHashDriver QCryptoHashDriver; struct QCryptoHashDriver { @@ -24,6 +27,16 @@ struct QCryptoHashDriver { uint8_t **result, size_t *resultlen, Error **errp); + QCryptoHash *(*hash_new)(QCryptoHashAlgo alg, Error **errp); + int (*hash_update)(QCryptoHash *hash, + const struct iovec *iov, + size_t niov, + Error **errp); + int (*hash_finalize)(QCryptoHash *hash, + uint8_t **result, + size_t *resultlen, + Error **errp); + void (*hash_free)(QCryptoHash *hash); }; extern QCryptoHashDriver qcrypto_hash_lib_driver; |