Add functions to allow setting and adding external EVP_PKEY_METHOD.
[openssl.git] / crypto / evp / evp.h
index bfffdd562a1070e362d588fd32c290c9d51466fc..c81e1b091981eab0ccefe032bc7d77094dc98972 100644 (file)
@@ -987,6 +987,65 @@ int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
 void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
 int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx);
 
+void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
+       int (*init)(EVP_PKEY_CTX *ctx));
+
+void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,
+       void (*cleanup)(EVP_PKEY_CTX *ctx));
+
+void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth,
+       int (*paramgen_init)(EVP_PKEY_CTX *ctx),
+       int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
+
+void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth,
+       int (*keygen_init)(EVP_PKEY_CTX *ctx),
+       int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
+
+void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth,
+       int (*sign_init)(EVP_PKEY_CTX *ctx),
+       int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, int *siglen,
+                                       const unsigned char *tbs, int tbslen));
+
+void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth,
+       int (*verify_init)(EVP_PKEY_CTX *ctx),
+       int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen,
+                                       const unsigned char *tbs, int tbslen));
+
+void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth,
+       int (*verify_recover_init)(EVP_PKEY_CTX *ctx),
+       int (*verify_recover)(EVP_PKEY_CTX *ctx,
+                                       unsigned char *sig, int *siglen,
+                                       const unsigned char *tbs, int tbslen));
+
+void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
+       int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),
+       int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, int *siglen,
+                                       EVP_MD_CTX *mctx));
+
+void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
+       int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),
+       int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig,int siglen,
+                                       EVP_MD_CTX *mctx));
+
+void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth,
+       int (*encrypt_init)(EVP_PKEY_CTX *ctx),
+       int (*encrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, int *outlen,
+                                       const unsigned char *in, int inlen));
+
+void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth,
+       int (*decrypt_init)(EVP_PKEY_CTX *ctx),
+       int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, int *outlen,
+                                       const unsigned char *in, int inlen));
+
+void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth,
+       int (*derive_init)(EVP_PKEY_CTX *ctx),
+       int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, int *keylen));
+
+void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
+       int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2),
+       int (*ctrl_str)(EVP_PKEY_CTX *ctx,
+                                       const char *type, const char *value));
+
 /* BEGIN ERROR CODES */
 /* The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.