summaryrefslogtreecommitdiff
path: root/testsuite/rsa-encrypt-test.c
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2003-08-26 08:44:51 +0200
committerNiels Möller <nisse@lysator.liu.se>2003-08-26 08:44:51 +0200
commitfd60bffee98713ca47b5c736b1f6557768fe1bea (patch)
treeb48a9cbcd8ab3ca18999fb42397fbb6cc7a2a495 /testsuite/rsa-encrypt-test.c
parent151799f908bd33e0f5550d55324807d170571899 (diff)
downloadnettle-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.c68
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 */
+}
+