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;
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,