diff options
author | Niels Möller <nisse@lysator.liu.se> | 2003-08-26 08:44:51 +0200 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2003-08-26 08:44:51 +0200 |
commit | fd60bffee98713ca47b5c736b1f6557768fe1bea (patch) | |
tree | b48a9cbcd8ab3ca18999fb42397fbb6cc7a2a495 /testsuite/rsa-encrypt-test.c | |
parent | 151799f908bd33e0f5550d55324807d170571899 (diff) | |
download | nettle-fd60bffee98713ca47b5c736b1f6557768fe1bea.tar.gz |
New test cases.
Rev: src/nettle/testsuite/md2-test.c:1.1
Rev: src/nettle/testsuite/md4-test.c:1.1
Rev: src/nettle/testsuite/rsa-encrypt-test.c:1.1
Diffstat (limited to 'testsuite/rsa-encrypt-test.c')
-rw-r--r-- | testsuite/rsa-encrypt-test.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/testsuite/rsa-encrypt-test.c b/testsuite/rsa-encrypt-test.c new file mode 100644 index 00000000..c1e901be --- /dev/null +++ b/testsuite/rsa-encrypt-test.c @@ -0,0 +1,68 @@ +#include "testutils.h" + +#include "rsa.h" +#include "knuth-lfib.h" + +int +test_main(void) +{ +#if WITH_PUBLIC_KEY + struct rsa_public_key pub; + struct rsa_private_key key; + struct knuth_lfib_ctx lfib; + + /* FIXME: How is this spelled? */ + const uint8_t *msg = "Squemish ossifrage"; + unsigned msg_length; + + uint8_t *decrypted; + unsigned decrypted_length; + + mpz_t gibberish; + + rsa_private_key_init(&key); + rsa_public_key_init(&pub); + mpz_init(gibberish); + + knuth_lfib_init(&lfib, 17); + + test_rsa_set_key_1(&pub, &key); + msg_length = strlen(msg); + + if (verbose) + fprintf(stderr, "msg: `%s', length = %d\n", msg, msg_length); + + ASSERT(rsa_encrypt(&pub, + &lfib, (nettle_random_func) knuth_lfib_random, + msg_length, msg, + gibberish)); + + if (verbose) + gmp_fprintf(stderr, "encrypted: %Zd\n", gibberish); + + decrypted = alloca(msg_length + 1); + + decrypted_length = msg_length - 1; + ASSERT(!rsa_decrypt(&key, &decrypted_length, decrypted, gibberish)); + + decrypted_length = msg_length; + ASSERT(rsa_decrypt(&key, &decrypted_length, decrypted, gibberish)); + ASSERT(decrypted_length == msg_length); + ASSERT(MEMEQ(msg_length, msg, decrypted)); + + decrypted_length = key.size; + ASSERT(rsa_decrypt(&key, &decrypted_length, decrypted, gibberish)); + ASSERT(decrypted_length == msg_length); + ASSERT(MEMEQ(msg_length, msg, decrypted)); + + rsa_private_key_clear(&key); + rsa_public_key_clear(&pub); + mpz_clear(gibberish); + + SUCCESS(); + +#else /* !WITH_PUBLIC_KEY */ + SKIP(); +#endif /* !WITH_PUBLIC_KEY */ +} + |