unsigned char tmpdata[len];
if(digest->key) {
- HMAC(digest->digest, digest->key, digest->keylength, indata, inlen, tmpdata, NULL);
+ if(!HMAC(digest->digest, digest->key, digest->keylength, indata, inlen, tmpdata, NULL)) {
+ logger(DEBUG_ALWAYS, LOG_DEBUG, "Error creating digest: %s", ERR_error_string(ERR_get_error(), NULL));
+ return false;
+ }
} else {
EVP_MD_CTX ctx;
}
int digest_get_nid(const digest_t *digest) {
- return digest->digest ? digest->digest->type : 0;
+ if(!digest || !digest->digest)
+ return 0;
+
+ return digest->digest->type;
}
size_t digest_keylength(const digest_t *digest) {
+ if(!digest || !digest->digest)
+ return 0;
+
return digest->digest->md_size;
}
size_t digest_length(const digest_t *digest) {
+ if(!digest)
+ return 0;
+
return digest->maclength;
}