test RSA_generate_key_ex
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19698 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -65,7 +65,7 @@ check_rsa(const unsigned char *in, size_t len, RSA *rsa, int padding)
|
|||||||
|
|
||||||
keylen = RSA_private_encrypt(len, in, res, rsa, padding);
|
keylen = RSA_private_encrypt(len, in, res, rsa, padding);
|
||||||
if (keylen <= 0)
|
if (keylen <= 0)
|
||||||
errx(1, "failed to private encrypt: %d", (int)len, (int)keylen);
|
errx(1, "failed to private encrypt: %d %d", (int)len, (int)keylen);
|
||||||
|
|
||||||
if (keylen > RSA_size(rsa))
|
if (keylen > RSA_size(rsa))
|
||||||
errx(1, "keylen > RSA_size(rsa)");
|
errx(1, "keylen > RSA_size(rsa)");
|
||||||
@@ -103,6 +103,12 @@ check_rsa(const unsigned char *in, size_t len, RSA *rsa, int padding)
|
|||||||
free(res2);
|
free(res2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
cb_func(int a, int b, BN_GENCB *c)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -173,10 +179,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
printf("rsa %s\n", ENGINE_get_RSA(engine)->name);
|
printf("rsa %s\n", ENGINE_get_RSA(engine)->name);
|
||||||
|
|
||||||
if (rsa_key == NULL)
|
if (rsa_key) {
|
||||||
errx(1, "missing rsa key flag!");
|
|
||||||
|
|
||||||
{
|
|
||||||
unsigned char buf[1024 * 4];
|
unsigned char buf[1024 * 4];
|
||||||
const unsigned char *p;
|
const unsigned char *p;
|
||||||
size_t size;
|
size_t size;
|
||||||
@@ -199,45 +202,70 @@ main(int argc, char **argv)
|
|||||||
err(1, "failed to parse key in file %s", rsa_key);
|
err(1, "failed to parse key in file %s", rsa_key);
|
||||||
|
|
||||||
RSA_set_method(rsa, ENGINE_get_RSA(engine));
|
RSA_set_method(rsa, ENGINE_get_RSA(engine));
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Assuming that you use the RSA key in the distribution, this
|
||||||
|
* test will generate a signature have a starting zero and thus
|
||||||
|
* will generate a checksum that is 127 byte instead of the
|
||||||
|
* checksum that is 128 byte (like the key).
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
const unsigned char sha1[20] = {
|
||||||
|
0x6d, 0x33, 0xf9, 0x40, 0x75, 0x5b, 0x4e, 0xc5, 0x90, 0x35,
|
||||||
|
0x48, 0xab, 0x75, 0x02, 0x09, 0x76, 0x9a, 0xb4, 0x7d, 0x6b
|
||||||
|
};
|
||||||
|
|
||||||
|
check_rsa(sha1, sizeof(sha1), rsa, RSA_PKCS1_PADDING);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 128; i++) {
|
||||||
|
unsigned char sha1[20];
|
||||||
|
|
||||||
|
RAND_bytes(sha1, sizeof(sha1));
|
||||||
|
check_rsa(sha1, sizeof(sha1), rsa, RSA_PKCS1_PADDING);
|
||||||
|
}
|
||||||
|
for (i = 0; i < 128; i++) {
|
||||||
|
unsigned char des3[21];
|
||||||
|
|
||||||
|
RAND_bytes(des3, sizeof(des3));
|
||||||
|
check_rsa(des3, sizeof(des3), rsa, RSA_PKCS1_PADDING);
|
||||||
|
}
|
||||||
|
for (i = 0; i < 128; i++) {
|
||||||
|
unsigned char aes[32];
|
||||||
|
|
||||||
|
RAND_bytes(aes, sizeof(aes));
|
||||||
|
check_rsa(aes, sizeof(aes), rsa, RSA_PKCS1_PADDING);
|
||||||
|
}
|
||||||
|
|
||||||
|
RSA_free(rsa);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Assuming that you use the RSA key in the distribution, this
|
|
||||||
* test will generate a signature have a starting zero and thus
|
|
||||||
* will generate a checksum that is 127 byte instead of the
|
|
||||||
* checksum that is 128 byte (like the key).
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
const unsigned char sha1[20] = {
|
BN_GENCB cb;
|
||||||
0x6d, 0x33, 0xf9, 0x40, 0x75, 0x5b, 0x4e, 0xc5, 0x90, 0x35,
|
BIGNUM *e;
|
||||||
0x48, 0xab, 0x75, 0x02, 0x09, 0x76, 0x9a, 0xb4, 0x7d, 0x6b
|
|
||||||
};
|
|
||||||
|
|
||||||
check_rsa(sha1, sizeof(sha1), rsa, RSA_PKCS1_PADDING);
|
rsa = RSA_new_method(engine);
|
||||||
|
|
||||||
|
e = BN_new();
|
||||||
|
BN_set_word(e, 0x10001);
|
||||||
|
|
||||||
|
BN_GENCB_set(&cb, cb_func, NULL);
|
||||||
|
|
||||||
|
if (RSA_generate_key_ex(rsa, 1024, e, &cb) != 1)
|
||||||
|
errx(1, "RSA_generate_key_ex");
|
||||||
|
|
||||||
|
BN_free(e);
|
||||||
|
|
||||||
|
{
|
||||||
|
unsigned char sha1[20];
|
||||||
|
RAND_bytes(sha1, sizeof(sha1));
|
||||||
|
check_rsa(sha1, sizeof(sha1), rsa, RSA_PKCS1_PADDING);
|
||||||
|
}
|
||||||
|
|
||||||
|
RSA_free(rsa);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 128; i++) {
|
|
||||||
unsigned char sha1[20];
|
|
||||||
|
|
||||||
RAND_bytes(sha1, sizeof(sha1));
|
|
||||||
check_rsa(sha1, sizeof(sha1), rsa, RSA_PKCS1_PADDING);
|
|
||||||
}
|
|
||||||
for (i = 0; i < 128; i++) {
|
|
||||||
unsigned char des3[21];
|
|
||||||
|
|
||||||
RAND_bytes(des3, sizeof(des3));
|
|
||||||
check_rsa(des3, sizeof(des3), rsa, RSA_PKCS1_PADDING);
|
|
||||||
}
|
|
||||||
for (i = 0; i < 128; i++) {
|
|
||||||
unsigned char aes[32];
|
|
||||||
|
|
||||||
RAND_bytes(aes, sizeof(aes));
|
|
||||||
check_rsa(aes, sizeof(aes), rsa, RSA_PKCS1_PADDING);
|
|
||||||
}
|
|
||||||
|
|
||||||
RSA_free(rsa);
|
|
||||||
|
|
||||||
ENGINE_finish(engine);
|
ENGINE_finish(engine);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user