-bool digest_open_sha1(digest_t *digest, int maclength) {
- digest->digest = EVP_sha1();
- digest->key = NULL;
+bool digest_set_key(digest_t *digest, const void *key, size_t len) {
+#ifdef HAVE_HMAC_CTX_NEW
+ digest->hmac_ctx = HMAC_CTX_new();
+ HMAC_Init_ex(digest->hmac_ctx, key, len, digest->digest, NULL);
+#else
+ digest->hmac_ctx = xzalloc(sizeof(*digest->hmac_ctx));
+ HMAC_Init(digest->hmac_ctx, key, len, digest->digest);
+#endif
+
+ if(!digest->hmac_ctx) {
+ abort();
+ }