[PATCH 2/5] Introduce virCryptoHashBuf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A function that keeps the hash in binary form instead of converting
it to human-readable hexadecimal form.

Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx>
---
 src/util/vircrypto.c | 31 +++++++++++++++++++++----------
 src/util/vircrypto.h |  7 +++++++
 2 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/src/util/vircrypto.c b/src/util/vircrypto.c
index 48b04fc8ce..1a2dcc28b7 100644
--- a/src/util/vircrypto.c
+++ b/src/util/vircrypto.c
@@ -54,28 +54,39 @@ struct virHashInfo {
 verify(ARRAY_CARDINALITY(hashinfo) == VIR_CRYPTO_HASH_LAST);
 
 int
-virCryptoHashString(virCryptoHash hash,
-                    const char *input,
-                    char **output)
+virCryptoHashBuf(virCryptoHash hash,
+                 const char *input,
+                 unsigned char *output)
 {
-    unsigned char buf[VIR_CRYPTO_LARGEST_DIGEST_SIZE];
-    size_t hashstrlen;
-    size_t i;
-
     if (hash >= VIR_CRYPTO_HASH_LAST) {
         virReportError(VIR_ERR_INVALID_ARG,
                        _("Unknown crypto hash %d"), hash);
         return -1;
     }
 
-    hashstrlen = (hashinfo[hash].hashlen * 2) + 1;
-
-    if (!(hashinfo[hash].func(input, strlen(input), buf))) {
+    if (!(hashinfo[hash].func(input, strlen(input), output))) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("Unable to compute hash of data"));
         return -1;
     }
 
+    return 0;
+}
+
+int
+virCryptoHashString(virCryptoHash hash,
+                    const char *input,
+                    char **output)
+{
+    unsigned char buf[VIR_CRYPTO_LARGEST_DIGEST_SIZE];
+    size_t hashstrlen;
+    size_t i;
+
+    if (virCryptoHashBuf(hash, input, buf) < 0)
+        return -1;
+
+    hashstrlen = (hashinfo[hash].hashlen * 2) + 1;
+
     if (VIR_ALLOC_N(*output, hashstrlen) < 0)
         return -1;
 
diff --git a/src/util/vircrypto.h b/src/util/vircrypto.h
index 81743d2f74..64984006be 100644
--- a/src/util/vircrypto.h
+++ b/src/util/vircrypto.h
@@ -41,6 +41,13 @@ typedef enum {
     VIR_CRYPTO_CIPHER_LAST
 } virCryptoCipher;
 
+int
+virCryptoHashBuf(virCryptoHash hash,
+                 const char *input,
+                 unsigned char *output)
+    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
+    ATTRIBUTE_RETURN_CHECK;
+
 int
 virCryptoHashString(virCryptoHash hash,
                     const char *input,
-- 
2.16.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux