Commit b2a97be7 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Support for digest signing and X931 in rsa_pkey_meth.

parent 6471c9f4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -914,6 +914,10 @@ void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
#define EVP_PKEY_OP_ENCRYPT		8
#define EVP_PKEY_OP_DECRYPT		9

#define EVP_PKEY_CTRL_MD_NID		1

#define EVP_PKEY_ALG_CTRL		0x1000

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);
@@ -1024,6 +1028,7 @@ void ERR_load_EVP_strings(void);
#define EVP_R_EXPECTING_A_EC_KEY			 142
#define EVP_R_INITIALIZATION_ERROR			 134
#define EVP_R_INPUT_NOT_INITIALIZED			 111
#define EVP_R_INVALID_DIGEST				 152
#define EVP_R_INVALID_KEY_LENGTH			 130
#define EVP_R_INVALID_OPERATION				 148
#define EVP_R_IV_TOO_LARGE				 102
+1 −0
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ static ERR_STRING_DATA EVP_str_reasons[]=
{ERR_REASON(EVP_R_EXPECTING_A_EC_KEY)    ,"expecting a ec key"},
{ERR_REASON(EVP_R_INITIALIZATION_ERROR)  ,"initialization error"},
{ERR_REASON(EVP_R_INPUT_NOT_INITIALIZED) ,"input not initialized"},
{ERR_REASON(EVP_R_INVALID_DIGEST)        ,"invalid digest"},
{ERR_REASON(EVP_R_INVALID_KEY_LENGTH)    ,"invalid key length"},
{ERR_REASON(EVP_R_INVALID_OPERATION)     ,"invalid operation"},
{ERR_REASON(EVP_R_IV_TOO_LARGE)          ,"iv too large"},
+11 −0
Original line number Diff line number Diff line
@@ -179,5 +179,16 @@ int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx,
		EVPerr(EVP_F_EVP_PKEY_CTX_CTRL, EVP_R_COMMAND_NOT_SUPPORTED);
		return -2;
		}
	if (!strcmp(name, "digest"))
		{
		const EVP_MD *md;
		if (!value || !(md = EVP_get_digestbyname(value)))
			{
			EVPerr(EVP_F_EVP_PKEY_CTX_CTRL, EVP_R_INVALID_DIGEST);
			return 0;
			}
		return EVP_PKEY_CTX_ctrl(ctx, -1, -1, EVP_PKEY_CTRL_MD_NID,
					EVP_MD_type(md), NULL);
		}
	return ctx->pmeth->ctrl_str(ctx, name, value);
	}
+6 −1
Original line number Diff line number Diff line
@@ -196,7 +196,7 @@ struct rsa_st
	EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, EVP_PKEY_CTRL_RSA_PADDING, \
				pad, NULL)

#define EVP_PKEY_CTRL_RSA_PADDING	1
#define EVP_PKEY_CTRL_RSA_PADDING	(EVP_PKEY_ALG_CTRL + 1)

#define RSA_PKCS1_PADDING	1
#define RSA_SSLV23_PADDING	2
@@ -349,7 +349,9 @@ void ERR_load_RSA_strings(void);
/* Error codes for the RSA functions. */

/* Function codes. */
#define RSA_F_CHECK_PADDING_NID				 140
#define RSA_F_MEMORY_LOCK				 100
#define RSA_F_PKEY_RSA_VERIFYRECOVER			 141
#define RSA_F_RSA_BUILTIN_KEYGEN			 129
#define RSA_F_RSA_CHECK_KEY				 123
#define RSA_F_RSA_EAY_PRIVATE_DECRYPT			 101
@@ -409,10 +411,13 @@ void ERR_load_RSA_strings(void);
#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D			 125
#define RSA_R_D_E_NOT_CONGRUENT_TO_1			 123
#define RSA_R_FIRST_OCTET_INVALID			 133
#define RSA_R_INVALID_DIGEST				 105
#define RSA_R_INVALID_HEADER				 137
#define RSA_R_INVALID_MESSAGE_LENGTH			 131
#define RSA_R_INVALID_PADDING				 138
#define RSA_R_INVALID_PADDING_MODE			 141
#define RSA_R_INVALID_TRAILER				 139
#define RSA_R_INVALID_X931_DIGEST			 142
#define RSA_R_IQMP_NOT_INVERSE_OF_Q			 126
#define RSA_R_KEY_SIZE_TOO_SMALL			 120
#define RSA_R_LAST_OCTET_INVALID			 134
+6 −1
Original line number Diff line number Diff line
@@ -70,7 +70,9 @@

static ERR_STRING_DATA RSA_str_functs[]=
	{
{ERR_FUNC(RSA_F_CHECK_PADDING_NID),	"CHECK_PADDING_NID"},
{ERR_FUNC(RSA_F_MEMORY_LOCK),	"MEMORY_LOCK"},
{ERR_FUNC(RSA_F_PKEY_RSA_VERIFYRECOVER),	"PKEY_RSA_VERIFYRECOVER"},
{ERR_FUNC(RSA_F_RSA_BUILTIN_KEYGEN),	"RSA_BUILTIN_KEYGEN"},
{ERR_FUNC(RSA_F_RSA_CHECK_KEY),	"RSA_check_key"},
{ERR_FUNC(RSA_F_RSA_EAY_PRIVATE_DECRYPT),	"RSA_EAY_PRIVATE_DECRYPT"},
@@ -100,7 +102,7 @@ static ERR_STRING_DATA RSA_str_functs[]=
{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_SSLV23),	"RSA_padding_check_SSLv23"},
{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_X931),	"RSA_padding_check_X931"},
{ERR_FUNC(RSA_F_RSA_PRINT),	"RSA_print"},
{ERR_FUNC(RSA_F_RSA_PRINT_FP),	"RSA_print_fp"},
{ERR_FUNC(RSA_F_RSA_PRINT_FP),	"RSA_PRINT_FP"},
{ERR_FUNC(RSA_F_RSA_PRIV_DECODE),	"RSA_PRIV_DECODE"},
{ERR_FUNC(RSA_F_RSA_PRIV_ENCODE),	"RSA_PRIV_ENCODE"},
{ERR_FUNC(RSA_F_RSA_PUB_DECODE),	"RSA_PUB_DECODE"},
@@ -133,10 +135,13 @@ static ERR_STRING_DATA RSA_str_reasons[]=
{ERR_REASON(RSA_R_DMQ1_NOT_CONGRUENT_TO_D),"dmq1 not congruent to d"},
{ERR_REASON(RSA_R_D_E_NOT_CONGRUENT_TO_1),"d e not congruent to 1"},
{ERR_REASON(RSA_R_FIRST_OCTET_INVALID)   ,"first octet invalid"},
{ERR_REASON(RSA_R_INVALID_DIGEST)        ,"invalid digest"},
{ERR_REASON(RSA_R_INVALID_HEADER)        ,"invalid header"},
{ERR_REASON(RSA_R_INVALID_MESSAGE_LENGTH),"invalid message length"},
{ERR_REASON(RSA_R_INVALID_PADDING)       ,"invalid padding"},
{ERR_REASON(RSA_R_INVALID_PADDING_MODE)  ,"invalid padding mode"},
{ERR_REASON(RSA_R_INVALID_TRAILER)       ,"invalid trailer"},
{ERR_REASON(RSA_R_INVALID_X931_DIGEST)   ,"invalid x931 digest"},
{ERR_REASON(RSA_R_IQMP_NOT_INVERSE_OF_Q) ,"iqmp not inverse of q"},
{ERR_REASON(RSA_R_KEY_SIZE_TOO_SMALL)    ,"key size too small"},
{ERR_REASON(RSA_R_LAST_OCTET_INVALID)    ,"last octet invalid"},
Loading