New -mac and -macopt options to dgst utility. Reimplement -hmac option in
[openssl.git] / crypto / evp / pmeth_gn.c
index eb81d521348e9bd3aec28eb29194054fc399ec7f..17e0d5473a561545e8bdf493b35a3f713eac725e 100644 (file)
@@ -196,3 +196,24 @@ int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx)
                return 0;
        return ctx->keygen_info[idx];
        }
+
+EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e,
+                               unsigned char *key, int keylen)
+       {
+       EVP_PKEY_CTX *mac_ctx = NULL;
+       EVP_PKEY *mac_key = NULL;
+       mac_ctx = EVP_PKEY_CTX_new_id(type, e);
+       if (!mac_ctx)
+               return NULL;
+       if (EVP_PKEY_keygen_init(mac_ctx) <= 0)
+               goto merr;
+       if (EVP_PKEY_CTX_ctrl(mac_ctx, -1, EVP_PKEY_OP_KEYGEN,
+                               EVP_PKEY_CTRL_SET_MAC_KEY, keylen, key) <= 0)
+               goto merr;
+       if (EVP_PKEY_keygen(mac_ctx, &mac_key) <= 0)
+               goto merr;
+       merr:
+       if (mac_ctx)
+               EVP_PKEY_CTX_free(mac_ctx);
+       return mac_key;
+       }