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]
#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
#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
{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"},
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);
}
+
+ 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);
return(1);
}
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);
}