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

Make RSA_NO_PADDING really use no padding.

Submitted by: Ulf Moeller <ulf@fitug.de>
parent 189b6a60
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@

 Changes between 0.9.1c and 0.9.2

  *) Make RSA_NO_PADDING really use no padding.
     [Ulf Moeller <ulf@fitug.de>]

  *) Generate errors when private/public key check is done.
     [Ben Laurie]

+1 −1
Original line number Diff line number Diff line
@@ -31,13 +31,13 @@
#define RSA_R_BAD_FIXED_HEADER_DECRYPT			 102
#define RSA_R_BAD_PAD_BYTE_COUNT			 103
#define RSA_R_BAD_SIGNATURE				 104
#define RSA_R_BAD_ZERO_BYTE				 105
#define RSA_R_BLOCK_TYPE_IS_NOT_01			 106
#define RSA_R_BLOCK_TYPE_IS_NOT_02			 107
#define RSA_R_DATA_GREATER_THAN_MOD_LEN			 108
#define RSA_R_DATA_TOO_LARGE				 109
#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE		 110
#define RSA_R_DATA_TOO_SMALL				 111
#define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE		 122
#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY		 112
#define RSA_R_KEY_SIZE_TOO_SMALL			 120
#define RSA_R_NULL_BEFORE_BLOCK_MISSING			 113
+1 −1
Original line number Diff line number Diff line
@@ -338,13 +338,13 @@ char *RSA_get_ex_data();
#define RSA_R_BAD_FIXED_HEADER_DECRYPT			 102
#define RSA_R_BAD_PAD_BYTE_COUNT			 103
#define RSA_R_BAD_SIGNATURE				 104
#define RSA_R_BAD_ZERO_BYTE				 105
#define RSA_R_BLOCK_TYPE_IS_NOT_01			 106
#define RSA_R_BLOCK_TYPE_IS_NOT_02			 107
#define RSA_R_DATA_GREATER_THAN_MOD_LEN			 108
#define RSA_R_DATA_TOO_LARGE				 109
#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE		 110
#define RSA_R_DATA_TOO_SMALL				 111
#define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE		 122
#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY		 112
#define RSA_R_KEY_SIZE_TOO_SMALL			 120
#define RSA_R_NULL_BEFORE_BLOCK_MISSING			 113
+1 −1
Original line number Diff line number Diff line
@@ -96,13 +96,13 @@ static ERR_STRING_DATA RSA_str_reasons[]=
{RSA_R_BAD_FIXED_HEADER_DECRYPT          ,"bad fixed header decrypt"},
{RSA_R_BAD_PAD_BYTE_COUNT                ,"bad pad byte count"},
{RSA_R_BAD_SIGNATURE                     ,"bad signature"},
{RSA_R_BAD_ZERO_BYTE                     ,"bad zero byte"},
{RSA_R_BLOCK_TYPE_IS_NOT_01              ,"block type is not 01"},
{RSA_R_BLOCK_TYPE_IS_NOT_02              ,"block type is not 02"},
{RSA_R_DATA_GREATER_THAN_MOD_LEN         ,"data greater than mod len"},
{RSA_R_DATA_TOO_LARGE                    ,"data too large"},
{RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE       ,"data too large for key size"},
{RSA_R_DATA_TOO_SMALL                    ,"data too small"},
{RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE       ,"data too small for key size"},
{RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY        ,"digest too big for rsa key"},
{RSA_R_KEY_SIZE_TOO_SMALL                ,"key size too small"},
{RSA_R_NULL_BEFORE_BLOCK_MISSING         ,"null before block missing"},
+11 −16
Original line number Diff line number Diff line
@@ -68,13 +68,18 @@ int tlen;
unsigned char *from;
int flen;
	{
	if (flen >= tlen)
	if (flen > tlen)
		{
		RSAerr(RSA_F_RSA_PADDING_ADD_NONE,RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
		return(0);
		}

	*(to++)=0;
	if (flen < tlen)
		{
		RSAerr(RSA_F_RSA_PADDING_ADD_NONE,RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE);
		return(0);
		}
	
	memcpy(to,from,(unsigned int)flen);
	return(1);
	}
@@ -86,25 +91,15 @@ unsigned char *from;
int flen;
int num;
	{
	int j;

	from++;
	if (flen+1 > tlen)
	if (flen > tlen)
		{
		RSAerr(RSA_F_RSA_PADDING_CHECK_NONE,RSA_R_DATA_TOO_LARGE);
		return(-1);
		}
	if (flen+1 >= num)
		{
		RSAerr(RSA_F_RSA_PADDING_CHECK_NONE,RSA_R_BAD_ZERO_BYTE);
		return(-1);
		}

	/* scan over padding data */
	j=flen-1; /* one for type and one for the prepended 0. */
	memset(to,0,tlen-j);
	to+=(tlen-j);
	memcpy(to,from,j);
	return(j);
	memset(to,0,tlen-flen);
	memcpy(to+tlen-flen,from,flen);
	return(tlen);
	}