/* MAC stuff */
+# define EVP_MAC_CMAC NID_cmac
+# define EVP_MAC_GMAC NID_gmac
+# define EVP_MAC_HMAC NID_hmac
+# define EVP_MAC_SIPHASH NID_siphash
+# define EVP_MAC_POLY1305 NID_poly1305
+
EVP_MAC_CTX *EVP_MAC_CTX_new(const EVP_MAC *mac);
EVP_MAC_CTX *EVP_MAC_CTX_new_id(int nid);
void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx);
# define EVP_MAC_CTRL_SET_MD 0x04 /* EVP_MD * */
# define EVP_MAC_CTRL_SET_CIPHER 0x04 /* EVP_CIPHER * */
# define EVP_MAC_CTRL_SET_SIZE 0x05 /* size_t */
+# define EVP_MAC_CTRL_SET_IV 0x06 /* unsigned char *, size_t */
/* PKEY stuff */
int EVP_PKEY_decrypt_old(unsigned char *dec_key,
EVP_MD_CTX *mctx));
void EVP_add_alg_module(void);
+/*
+ * Convenient helper functions to transfer string based controls.
+ * The callback gets called with the parsed value.
+ */
+int EVP_str2ctrl(int (*cb)(void *ctx, int cmd, void *buf, size_t buflen),
+ void *ctx, int cmd, const char *value);
+int EVP_hex2ctrl(int (*cb)(void *ctx, int cmd, void *buf, size_t buflen),
+ void *ctx, int cmd, const char *hex);
# ifdef __cplusplus
}