[Title] Add packaging/nettle.spec to build nettle on OBS system
[external/nettle.git] / testsuite / rsa-keygen-test.c
1 #include "testutils.h"
2
3 #include "knuth-lfib.h"
4
5 static void
6 progress(void *ctx UNUSED, int c)
7 {
8   fputc(c, stderr);
9 }
10
11 int
12 test_main(void)
13 {
14   struct rsa_public_key pub;
15   struct rsa_private_key key;
16   
17   struct knuth_lfib_ctx lfib;
18
19   mpz_t expected;
20   
21   mpz_init(expected);
22   
23   rsa_private_key_init(&key);
24   rsa_public_key_init(&pub);
25
26   /* Generate a 1024 bit key with random e */
27   knuth_lfib_init(&lfib, 13);
28
29   if (!rsa_generate_keypair(&pub, &key,
30                             &lfib, (nettle_random_func *) knuth_lfib_random,
31                             NULL, verbose ? progress : NULL,
32                             1024, 50))
33     FAIL();
34
35   test_rsa_key(&pub, &key);
36   
37   mpz_set_str(expected,
38               "2554579b857a9da3" "409dbd65c994b701" "aabf7347a78bd730"
39               "1525b5f511f326dd" "c05e1fd6c282faed" "6c79a4eb30539f10"
40               "46db024fe33174f5" "441da5fa175bf781" "8f7117c86cdacf9a"
41               "4589c048cc013eca" "7536d0868aca610a" "c20718e3fec3e835"
42               "f6c2fd920cba1be9" "e94a6c7238d9b2ee" "67ecc9f3d4a9a487"
43               "042190b66582b36a", 16);
44
45   test_rsa_md5(&pub, &key, expected);
46
47   /* Generate a 2000 bit key with fixed e */
48   knuth_lfib_init(&lfib, 17);
49
50   mpz_set_ui(pub.e, 17);
51   if (!rsa_generate_keypair(&pub, &key,
52                             &lfib, (nettle_random_func *) knuth_lfib_random,
53                             NULL, verbose ? progress : NULL,
54                             2000, 0))
55     FAIL();
56
57   test_rsa_key(&pub, &key);
58
59   mpz_set_str(expected,
60               "8c57dfb754270179" "600aced45b45490a" "56715da51f8d029d"
61               "057b58187670f9e4" "1a2da64cd3435483" "16b26c860ca97aed"
62               "fd3ebf5e3dd97226" "1d1b5536da483863" "f9ad5f47437e7a2a"
63               "0119bb0045c64f5a" "cb634d7aff7051b4" "3d01b1c8bc13cc93"
64               "0799d57ada86394f" "1286b5ae9480d167" "8f48e9e78bf3ea4f"
65               "1ed9a9e381c8f046" "3a25bf30238e7c59" "1c9998255141f628"
66               "68e8a01871587152" "38df08281894a5b9" "e9026b55337f9f29"
67               "240793935b05162b" "8fa8d2390d7cb407" "52413dd5f7bccdad"
68               "232e1c27bae30548" "09797991e13dee5d" "c688985433e63050"
69               "6d9a171e144ef442" "eb001166bd95bcdd" "92b3c2e0bd4012a2"
70               "2dd05cb032f6ab6b" "dd7c", 16);
71
72   test_rsa_sha1(&pub, &key, expected);
73   
74   rsa_private_key_clear(&key);
75   rsa_public_key_clear(&pub);
76   mpz_clear(expected);
77
78   SUCCESS();
79 }