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>
This commit is contained in:
committed by
Daniel P. Berrangé
parent
838fc0a876
commit
190feb4884
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user