aboutsummaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorAlejandro Zeise <alejandro.zeise@seagate.com>2024-10-08 09:57:08 +0200
committerDaniel P. Berrangé <berrange@redhat.com>2024-10-10 12:32:59 +0100
commit190feb488473ca07df17dfa6fbc073a407258923 (patch)
treeb0d8ec7d45da04340e1eca5bdae7ed465f76c0b2 /crypto
parent838fc0a8769d7cc6edfe50451ba4e3368395f5c1 (diff)
downloadqemu-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.h13
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;