Revert preious, something fishy is going on.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19204 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -123,9 +123,9 @@ imath_rsa_public_encrypt(int flen, const unsigned char* from,
|
|||||||
mp_int_clear(&n);
|
mp_int_clear(&n);
|
||||||
{
|
{
|
||||||
size_t ssize;
|
size_t ssize;
|
||||||
ssize = mp_int_binary_len(&enc);
|
ssize = mp_int_unsigned_len(&enc);
|
||||||
assert(size >= ssize);
|
assert(size >= ssize);
|
||||||
mp_int_to_binary(&enc, to, ssize);
|
mp_int_to_unsigned(&enc, to, ssize);
|
||||||
size = ssize;
|
size = ssize;
|
||||||
}
|
}
|
||||||
mp_int_clear(&enc);
|
mp_int_clear(&enc);
|
||||||
@@ -180,23 +180,23 @@ imath_rsa_public_decrypt(int flen, const unsigned char* from,
|
|||||||
p = to;
|
p = to;
|
||||||
|
|
||||||
|
|
||||||
size = mp_int_binary_len(&us);
|
size = mp_int_unsigned_len(&us);
|
||||||
assert(size <= RSA_size(rsa));
|
assert(size <= RSA_size(rsa));
|
||||||
mp_int_to_binary(&us, p, size);
|
mp_int_to_unsigned(&us, p, size);
|
||||||
|
|
||||||
mp_int_clear(&us);
|
mp_int_clear(&us);
|
||||||
|
|
||||||
if (size == 0 || *p != 0)
|
/* head zero was skipped by mp_int_to_unsigned */
|
||||||
return -6;
|
if (*p == 0)
|
||||||
size--; p++;
|
|
||||||
if (size == 0 || *p != 1)
|
|
||||||
return -7;
|
return -7;
|
||||||
|
if (*p != 1)
|
||||||
|
return -6;
|
||||||
size--; p++;
|
size--; p++;
|
||||||
while (size && *p == 0xff) {
|
while (size && *p == 0xff) {
|
||||||
size--; p++;
|
size--; p++;
|
||||||
}
|
}
|
||||||
if (size == 0 || *p != 0)
|
if (size == 0 || *p != 0)
|
||||||
return -8;
|
return -7;
|
||||||
size--; p++;
|
size--; p++;
|
||||||
|
|
||||||
memmove(to, p, size);
|
memmove(to, p, size);
|
||||||
@@ -250,10 +250,9 @@ imath_rsa_private_encrypt(int flen, const unsigned char* from,
|
|||||||
mp_int_clear(&us);
|
mp_int_clear(&us);
|
||||||
{
|
{
|
||||||
size_t ssize;
|
size_t ssize;
|
||||||
ssize = mp_int_binary_len(&s);
|
ssize = mp_int_unsigned_len(&s);
|
||||||
assert(size >= ssize);
|
assert(size >= ssize);
|
||||||
mp_int_to_binary(&s, to, size);
|
mp_int_to_unsigned(&s, to, size);
|
||||||
size = ssize;
|
|
||||||
}
|
}
|
||||||
mp_int_clear(&s);
|
mp_int_clear(&s);
|
||||||
|
|
||||||
@@ -297,23 +296,22 @@ imath_rsa_private_decrypt(int flen, const unsigned char* from,
|
|||||||
p = to;
|
p = to;
|
||||||
{
|
{
|
||||||
size_t ssize;
|
size_t ssize;
|
||||||
ssize = mp_int_binary_len(&dec);
|
ssize = mp_int_unsigned_len(&dec);
|
||||||
assert(size >= ssize);
|
assert(size >= ssize);
|
||||||
mp_int_to_binary(&dec, p, ssize);
|
mp_int_to_unsigned(&dec, p, ssize);
|
||||||
size = ssize;
|
size = ssize;
|
||||||
}
|
}
|
||||||
mp_int_clear(&dec);
|
mp_int_clear(&dec);
|
||||||
|
|
||||||
if (size == 0 || *p != 0)
|
/* head zero was skipped by mp_int_to_unsigned */
|
||||||
|
if (*p != 2)
|
||||||
return -3;
|
return -3;
|
||||||
if (size == 0 || *p != 2)
|
|
||||||
return -4;
|
|
||||||
size--; p++;
|
size--; p++;
|
||||||
while (size && *p != 0) {
|
while (size && *p != 0) {
|
||||||
size--; p++;
|
size--; p++;
|
||||||
}
|
}
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
return -5;
|
return -4;
|
||||||
size--; p++;
|
size--; p++;
|
||||||
|
|
||||||
memmove(to, p, size);
|
memmove(to, p, size);
|
||||||
|
Reference in New Issue
Block a user