Make RSA_NO_PADDING really use no padding.
Submitted by: Ulf Moeller <ulf@fitug.de>
This commit is contained in:
parent
189b6a6062
commit
0c8a1281d0
3
CHANGES
3
CHANGES
@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
Changes between 0.9.1c and 0.9.2
|
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.
|
*) Generate errors when private/public key check is done.
|
||||||
[Ben Laurie]
|
[Ben Laurie]
|
||||||
|
|
||||||
|
@ -31,13 +31,13 @@
|
|||||||
#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102
|
#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102
|
||||||
#define RSA_R_BAD_PAD_BYTE_COUNT 103
|
#define RSA_R_BAD_PAD_BYTE_COUNT 103
|
||||||
#define RSA_R_BAD_SIGNATURE 104
|
#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_01 106
|
||||||
#define RSA_R_BLOCK_TYPE_IS_NOT_02 107
|
#define RSA_R_BLOCK_TYPE_IS_NOT_02 107
|
||||||
#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108
|
#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108
|
||||||
#define RSA_R_DATA_TOO_LARGE 109
|
#define RSA_R_DATA_TOO_LARGE 109
|
||||||
#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110
|
#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110
|
||||||
#define RSA_R_DATA_TOO_SMALL 111
|
#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_DIGEST_TOO_BIG_FOR_RSA_KEY 112
|
||||||
#define RSA_R_KEY_SIZE_TOO_SMALL 120
|
#define RSA_R_KEY_SIZE_TOO_SMALL 120
|
||||||
#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113
|
#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113
|
||||||
|
@ -338,13 +338,13 @@ char *RSA_get_ex_data();
|
|||||||
#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102
|
#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102
|
||||||
#define RSA_R_BAD_PAD_BYTE_COUNT 103
|
#define RSA_R_BAD_PAD_BYTE_COUNT 103
|
||||||
#define RSA_R_BAD_SIGNATURE 104
|
#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_01 106
|
||||||
#define RSA_R_BLOCK_TYPE_IS_NOT_02 107
|
#define RSA_R_BLOCK_TYPE_IS_NOT_02 107
|
||||||
#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108
|
#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108
|
||||||
#define RSA_R_DATA_TOO_LARGE 109
|
#define RSA_R_DATA_TOO_LARGE 109
|
||||||
#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110
|
#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110
|
||||||
#define RSA_R_DATA_TOO_SMALL 111
|
#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_DIGEST_TOO_BIG_FOR_RSA_KEY 112
|
||||||
#define RSA_R_KEY_SIZE_TOO_SMALL 120
|
#define RSA_R_KEY_SIZE_TOO_SMALL 120
|
||||||
#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113
|
#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113
|
||||||
|
@ -96,13 +96,13 @@ static ERR_STRING_DATA RSA_str_reasons[]=
|
|||||||
{RSA_R_BAD_FIXED_HEADER_DECRYPT ,"bad fixed header decrypt"},
|
{RSA_R_BAD_FIXED_HEADER_DECRYPT ,"bad fixed header decrypt"},
|
||||||
{RSA_R_BAD_PAD_BYTE_COUNT ,"bad pad byte count"},
|
{RSA_R_BAD_PAD_BYTE_COUNT ,"bad pad byte count"},
|
||||||
{RSA_R_BAD_SIGNATURE ,"bad signature"},
|
{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_01 ,"block type is not 01"},
|
||||||
{RSA_R_BLOCK_TYPE_IS_NOT_02 ,"block type is not 02"},
|
{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_GREATER_THAN_MOD_LEN ,"data greater than mod len"},
|
||||||
{RSA_R_DATA_TOO_LARGE ,"data too large"},
|
{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_LARGE_FOR_KEY_SIZE ,"data too large for key size"},
|
||||||
{RSA_R_DATA_TOO_SMALL ,"data too small"},
|
{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_DIGEST_TOO_BIG_FOR_RSA_KEY ,"digest too big for rsa key"},
|
||||||
{RSA_R_KEY_SIZE_TOO_SMALL ,"key size too small"},
|
{RSA_R_KEY_SIZE_TOO_SMALL ,"key size too small"},
|
||||||
{RSA_R_NULL_BEFORE_BLOCK_MISSING ,"null before block missing"},
|
{RSA_R_NULL_BEFORE_BLOCK_MISSING ,"null before block missing"},
|
||||||
|
@ -68,13 +68,18 @@ int tlen;
|
|||||||
unsigned char *from;
|
unsigned char *from;
|
||||||
int flen;
|
int flen;
|
||||||
{
|
{
|
||||||
if (flen >= tlen)
|
if (flen > tlen)
|
||||||
{
|
{
|
||||||
RSAerr(RSA_F_RSA_PADDING_ADD_NONE,RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
|
RSAerr(RSA_F_RSA_PADDING_ADD_NONE,RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (flen < tlen)
|
||||||
|
{
|
||||||
|
RSAerr(RSA_F_RSA_PADDING_ADD_NONE,RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
*(to++)=0;
|
|
||||||
memcpy(to,from,(unsigned int)flen);
|
memcpy(to,from,(unsigned int)flen);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@ -86,25 +91,15 @@ unsigned char *from;
|
|||||||
int flen;
|
int flen;
|
||||||
int num;
|
int num;
|
||||||
{
|
{
|
||||||
int j;
|
|
||||||
|
|
||||||
from++;
|
if (flen > tlen)
|
||||||
if (flen+1 > tlen)
|
|
||||||
{
|
{
|
||||||
RSAerr(RSA_F_RSA_PADDING_CHECK_NONE,RSA_R_DATA_TOO_LARGE);
|
RSAerr(RSA_F_RSA_PADDING_CHECK_NONE,RSA_R_DATA_TOO_LARGE);
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
if (flen+1 >= num)
|
|
||||||
{
|
|
||||||
RSAerr(RSA_F_RSA_PADDING_CHECK_NONE,RSA_R_BAD_ZERO_BYTE);
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* scan over padding data */
|
memset(to,0,tlen-flen);
|
||||||
j=flen-1; /* one for type and one for the prepended 0. */
|
memcpy(to+tlen-flen,from,flen);
|
||||||
memset(to,0,tlen-j);
|
return(tlen);
|
||||||
to+=(tlen-j);
|
|
||||||
memcpy(to,from,j);
|
|
||||||
return(j);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user