diff --git a/libdroplet/src/utils.c b/libdroplet/src/utils.c
index 6c0738d..b2fac52 100644
--- a/libdroplet/src/utils.c
+++ b/libdroplet/src/utils.c
@@ -475,14 +475,13 @@ dpl_hmac_sha1(const char *key_buf,
               unsigned int data_len,
               char *digest_buf)
 {
-  HMAC_CTX ctx;
+  HMAC_CTX *ctx = HMAC_CTX_new();
   u_int digest_len;
 
-  HMAC_CTX_init(&ctx);
-  HMAC_Init_ex(&ctx, key_buf, key_len, EVP_sha1(), NULL);
-  HMAC_Update(&ctx, (u_char *) data_buf, data_len);
-  HMAC_Final(&ctx, (u_char *) digest_buf, &digest_len);
-  HMAC_CTX_cleanup(&ctx);
+  HMAC_Init_ex(ctx, key_buf, key_len, EVP_sha1(), NULL);
+  HMAC_Update(ctx, (u_char *) data_buf, data_len);
+  HMAC_Final(ctx, (u_char *) digest_buf, &digest_len);
+  HMAC_CTX_free(ctx);
 
   return digest_len;
 }
