X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilccrypt%2Fpkcs1.c;h=9b596d9b93203616280a11db6a26dfd85eceb209;hp=6e5a6a4a560b181774b0ab82364fb5e5503458dd;hb=ecb19b3983b3e74bc4aaa82277abd125c53c3623;hpb=382d15d447b7a95390decfa783836ae4fe255b3d diff --git a/lib/silccrypt/pkcs1.c b/lib/silccrypt/pkcs1.c index 6e5a6a4a..9b596d9b 100644 --- a/lib/silccrypt/pkcs1.c +++ b/lib/silccrypt/pkcs1.c @@ -317,7 +317,7 @@ SILC_PKCS_API_ENCRYPT(pkcs1) SilcMPInt mp_tmp; SilcMPInt mp_dst; unsigned char *padded; - SilcUInt32 padded_len, len = key->bits / 8; + SilcUInt32 padded_len, len = (key->bits + 7) / 8; /* Pad data */ if (!RSA_FormatBlock(&padded, &padded_len, len, @@ -326,8 +326,6 @@ SILC_PKCS_API_ENCRYPT(pkcs1) silc_mp_init(&mp_tmp); silc_mp_init(&mp_dst); - silc_mp_set_ui(&mp_tmp, 0); - silc_mp_set_ui(&mp_dst, 0); /* Data to MP */ silc_mp_bin2mp(padded, padded_len, &mp_tmp); @@ -357,8 +355,6 @@ SILC_PKCS_API_DECRYPT(pkcs1) silc_mp_init(&mp_tmp); silc_mp_init(&mp_dst); - silc_mp_set_ui(&mp_tmp, 0); - silc_mp_set_ui(&mp_dst, 0); /* Data to MP */ silc_mp_bin2mp(src, src_len, &mp_tmp); @@ -367,7 +363,7 @@ SILC_PKCS_API_DECRYPT(pkcs1) rsa_en_de_crypt(&mp_dst, &mp_tmp, &key->d, &key->n); /* MP to data */ - padded = silc_mp_mp2bin(&mp_dst, key->bits / 8, &padded_len); + padded = silc_mp_mp2bin(&mp_dst, (key->bits + 7) / 8, &padded_len); /* Unpad data */ unpadded = RSA_DecodeOneBlock(padded, padded_len, 0, @@ -401,7 +397,7 @@ SILC_PKCS_API_SIGN(pkcs1) SilcMPInt mp_dst; unsigned char *padded; SilcUInt32 padded_len; - SilcUInt32 len = key->bits / 8; + SilcUInt32 len = (key->bits + 7) / 8; /* Pad data */ if (!RSA_FormatBlock(&padded, &padded_len, len, RSA_BlockPrivate, @@ -410,8 +406,6 @@ SILC_PKCS_API_SIGN(pkcs1) silc_mp_init(&mp_tmp); silc_mp_init(&mp_dst); - silc_mp_set_ui(&mp_tmp, 0); - silc_mp_set_ui(&mp_dst, 0); /* Data to MP */ silc_mp_bin2mp(padded, len, &mp_tmp); @@ -438,12 +432,10 @@ SILC_PKCS_API_VERIFY(pkcs1) SilcMPInt mp_tmp2; SilcMPInt mp_dst; unsigned char *verify, *unpadded; - SilcUInt32 verify_len, len = key->bits / 8; + SilcUInt32 verify_len, len = (key->bits + 7) / 8; silc_mp_init(&mp_tmp2); silc_mp_init(&mp_dst); - silc_mp_set_ui(&mp_tmp2, 0); - silc_mp_set_ui(&mp_dst, 0); /* Format the signature into MP int */ silc_mp_bin2mp(signature, signature_len, &mp_tmp2);