Add RSA ctrl for padding mode, add ctrl support in pkeyutl.
[openssl.git] / crypto / evp / evp.h
index d06904b7ecbb5ace83d17872b970f21e6681b511..07bcb50ad0f8edb2d0e436d7de908bb3e9bf18c5 100644 (file)
@@ -129,6 +129,7 @@ struct evp_pkey_st
        int save_type;
        int references;
        const EVP_PKEY_ASN1_METHOD *ameth;
+       const EVP_PKEY_METHOD *pmeth;
        union   {
                char *ptr;
 #ifndef OPENSSL_NO_RSA
@@ -767,10 +768,10 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
 const EVP_MD *EVP_get_digestbyname(const char *name);
 void EVP_cleanup(void);
 
-int            EVP_PKEY_decrypt(unsigned char *dec_key,
+int            EVP_PKEY_decrypt_old(unsigned char *dec_key,
                        const unsigned char *enc_key,int enc_key_len,
                        EVP_PKEY *private_key);
-int            EVP_PKEY_encrypt(unsigned char *enc_key,
+int            EVP_PKEY_encrypt_old(unsigned char *enc_key,
                        const unsigned char *key,int key_len,
                        EVP_PKEY *pub_key);
 int            EVP_PKEY_type(int type);
@@ -901,6 +902,49 @@ void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
                void (*pkey_ctrl)(EVP_PKEY *pkey, int op,
                                                        long arg1, void *arg2));
 
+
+#define EVP_PKEY_OP_UNDEFINED          0
+#define EVP_PKEY_OP_PARAMGEN           1
+#define EVP_PKEY_OP_KEYGEN             2
+#define EVP_PKEY_OP_SIGN               3
+#define EVP_PKEY_OP_VERIFY             4
+#define EVP_PKEY_OP_VERIFYRECOVER      5
+#define EVP_PKEY_OP_SIGNCTX            6
+#define EVP_PKEY_OP_VERIFYCTX          7
+#define EVP_PKEY_OP_ENCRYPT            8
+#define EVP_PKEY_OP_DECRYPT            9
+
+const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type, ENGINE *e);
+EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey);
+void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
+
+int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
+                               int cmd, int p1, void *p2);
+int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
+                                               const char *value);
+
+
+int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
+int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
+                       unsigned char *sig, int *siglen,
+                       unsigned char *tbs, int tbslen);
+int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
+int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
+                       unsigned char *sig, int siglen,
+                       unsigned char *tbs, int tbslen);
+int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
+int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
+                       unsigned char *rout, int *routlen,
+                       unsigned char *sig, int siglen);
+int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
+int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
+                       unsigned char *out, int *outlen,
+                       unsigned char *in, int inlen);
+int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
+int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
+                       unsigned char *out, int *outlen,
+                       unsigned char *in, int inlen);
+
 /* 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.
@@ -930,14 +974,23 @@ void ERR_load_EVP_strings(void);
 #define EVP_F_EVP_PKCS82PKEY_BROKEN                     136
 #define EVP_F_EVP_PKEY2PKCS8_BROKEN                     113
 #define EVP_F_EVP_PKEY_COPY_PARAMETERS                  103
+#define EVP_F_EVP_PKEY_CTX_CTRL                                 137
 #define EVP_F_EVP_PKEY_DECRYPT                          104
+#define EVP_F_EVP_PKEY_DECRYPT_INIT                     138
 #define EVP_F_EVP_PKEY_ENCRYPT                          105
+#define EVP_F_EVP_PKEY_ENCRYPT_INIT                     139
 #define EVP_F_EVP_PKEY_GET1_DH                          119
 #define EVP_F_EVP_PKEY_GET1_DSA                                 120
 #define EVP_F_EVP_PKEY_GET1_ECDSA                       130
 #define EVP_F_EVP_PKEY_GET1_EC_KEY                      131
 #define EVP_F_EVP_PKEY_GET1_RSA                                 121
 #define EVP_F_EVP_PKEY_NEW                              106
+#define EVP_F_EVP_PKEY_SIGN                             140
+#define EVP_F_EVP_PKEY_SIGN_INIT                        141
+#define EVP_F_EVP_PKEY_VERIFY                           142
+#define EVP_F_EVP_PKEY_VERIFY_INIT                      143
+#define EVP_F_EVP_PKEY_VERIFY_RECOVER                   144
+#define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT              145
 #define EVP_F_EVP_RIJNDAEL                              126
 #define EVP_F_EVP_SIGNFINAL                             107
 #define EVP_F_EVP_VERIFYFINAL                           108
@@ -956,6 +1009,7 @@ void ERR_load_EVP_strings(void);
 #define EVP_R_BN_DECODE_ERROR                           112
 #define EVP_R_BN_PUBKEY_ERROR                           113
 #define EVP_R_CIPHER_PARAMETER_ERROR                    122
+#define EVP_R_COMMAND_NOT_SUPPORTED                     147
 #define EVP_R_CTRL_NOT_IMPLEMENTED                      132
 #define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED            133
 #define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH                 138
@@ -971,6 +1025,7 @@ void ERR_load_EVP_strings(void);
 #define EVP_R_INITIALIZATION_ERROR                      134
 #define EVP_R_INPUT_NOT_INITIALIZED                     111
 #define EVP_R_INVALID_KEY_LENGTH                        130
+#define EVP_R_INVALID_OPERATION                                 148
 #define EVP_R_IV_TOO_LARGE                              102
 #define EVP_R_KEYGEN_FAILURE                            120
 #define EVP_R_METHOD_NOT_SUPPORTED                      144
@@ -978,8 +1033,11 @@ void ERR_load_EVP_strings(void);
 #define EVP_R_NO_CIPHER_SET                             131
 #define EVP_R_NO_DIGEST_SET                             139
 #define EVP_R_NO_DSA_PARAMETERS                                 116
+#define EVP_R_NO_OPERATION_SET                          149
 #define EVP_R_NO_SIGN_FUNCTION_CONFIGURED               104
 #define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED             105
+#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE  150
+#define EVP_R_OPERATON_NOT_INITIALIZED                  151
 #define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE                         117
 #define EVP_R_PRIVATE_KEY_DECODE_ERROR                  145
 #define EVP_R_PRIVATE_KEY_ENCODE_ERROR                  146