Replace pointers to cipher_t/digest_t in connection_t with structs.
[tinc] / src / openssl / prf.c
index 6277085..5d597d9 100644 (file)
  */
 
 static bool prf_xor(int nid, const uint8_t *secret, size_t secretlen, uint8_t *seed, size_t seedlen, uint8_t *out, size_t outlen) {
-       digest_t *digest = digest_open_by_nid(nid, DIGEST_ALGO_SIZE);
+       digest_t digest = {0};
 
-       if(!digest) {
+       if(!digest_open_by_nid(&digest, nid, DIGEST_ALGO_SIZE)) {
+               digest_close(&digest);
                return false;
        }
 
-       if(!digest_set_key(digest, secret, secretlen)) {
-               digest_close(digest);
+       if(!digest_set_key(&digest, secret, secretlen)) {
+               digest_close(&digest);
                return false;
        }
 
-       size_t len = digest_length(digest);
+       size_t len = digest_length(&digest);
 
        /* Data is what the "inner" HMAC function processes.
           It consists of the previous HMAC result plus the seed.
@@ -55,14 +56,14 @@ static bool prf_xor(int nid, const uint8_t *secret, size_t secretlen, uint8_t *s
 
        while(outlen > 0) {
                /* Inner HMAC */
-               if(!digest_create(digest, data, len + seedlen, data)) {
-                       digest_close(digest);
+               if(!digest_create(&digest, data, len + seedlen, data)) {
+                       digest_close(&digest);
                        return false;
                }
 
                /* Outer HMAC */
-               if(!digest_create(digest, data, len + seedlen, hash)) {
-                       digest_close(digest);
+               if(!digest_create(&digest, data, len + seedlen, hash)) {
+                       digest_close(&digest);
                        return false;
                }
 
@@ -76,7 +77,7 @@ static bool prf_xor(int nid, const uint8_t *secret, size_t secretlen, uint8_t *s
                outlen -= i;
        }
 
-       digest_close(digest);
+       digest_close(&digest);
        return true;
 }