Restore libgcrypt support.
[tinc] / src / gcrypt / digest.c
index 3333f5f..c8d4b31 100644 (file)
@@ -120,7 +120,7 @@ void digest_close(digest_t *digest) {
                gcry_md_close(digest->hmac);
        }
 
-       digest->hmac = NULL;
+       memset(digest, 0, sizeof(*digest));
 }
 
 bool digest_set_key(digest_t *digest, const void *key, size_t len) {
@@ -166,13 +166,21 @@ bool digest_verify(digest_t *digest, const void *indata, size_t inlen, const voi
 }
 
 int digest_get_nid(const digest_t *digest) {
+       if(!digest || !digest->nid) {
+               return 0;
+       }
+
        return digest->nid;
 }
 
 size_t digest_length(const digest_t *digest) {
+       if(!digest) {
+               return 0;
+       }
+
        return digest->maclength;
 }
 
 bool digest_active(const digest_t *digest) {
-       return digest->algo != GCRY_MD_NONE;
+       return digest && digest->algo != GCRY_MD_NONE;
 }