9a80c96719ec865086d9b57edf98a72964042256
[platform/upstream/nettle.git] / testsuite / dsa-test.c
1 #include "testutils.h"
2
3 void
4 test_main(void)
5 {
6   struct dsa_public_key pub;
7   struct dsa_private_key key;
8   struct dsa_signature signature;
9   struct dsa_params *params = (struct dsa_params *) &pub;
10
11   dsa_public_key_init(&pub);
12   dsa_private_key_init(&key);
13   dsa_signature_init(&signature);
14
15   mpz_set_str(pub.p,
16               "83d9a7c2ce2a9179f43cdb3bffe7de0f0eef26dd5dfae44d"
17               "531bc0de45634d2c07cb929b0dbe10da580070e6abfbb841"
18               "5c44bff570b8ad779df653aad97dc7bdeb815d7e88103e61"
19               "606ed3d8a295fbfd340d2d49e220833ebace5511e22c4f02"
20               "97ed351e9948fa848e9c8fadb7b47bcc47def4255b5e1d5e"
21               "10215b3b55a0b85f", 16);
22   mpz_set_str(pub.q,
23               "8266e0deaf46020ba48d410ca580f3a978629b5d", 16);
24   mpz_set_str(pub.g,
25               "30d34bb9f376bec947154afe4076bc7d359c9d32f5471ddb"
26               "be8d6a941c47fa9dc4f32573151dbb4aa59eb989b74ac36b"
27               "b6310a5e8b580501655d91f393daa193ae1303049b87febb"
28               "093dc0404b53b4c5da2463300f9c5b156d788c4ace8ecbb9"
29               "dd00c18d99537f255ac025d074d894a607cbe3023a1276ef"
30               "556916a33f7de543", 16);
31   mpz_set_str(pub.y,
32               "64402048b27f39f404a546a84909c9c0e9e2dd153a849946"
33               "1062892598d30af27ae3cefc2b700fb6d077390a83bdcad7"
34               "8a1299487c9623bb62af0c85a3df9ef1ee2c0d66658e1fd3"
35               "283b5407f6cd30ee7e6154fad41a6a8b0f5c86c5accc1127"
36               "bf7c9a5d6badcb012180cb62a55c5e17d6d3528cdbe002cc"
37               "ee131c1b86867f7a", 16);
38   mpz_set_str(key.x,
39               "56c6efaf878d06eef21dc070fab71da6ec1e30a6", 16);
40
41   test_dsa_key(params, pub.y, key.x, 160);
42
43   mpz_set_str(signature.r, "180342f8d4fb5bd0311ebf205bdee6e556014eaf", 16);
44   mpz_set_str(signature.s, "392dc6566b2735531a8460966171464ef7ddfe12", 16);
45
46   test_dsa160(&pub, &key, &signature);
47
48   mpz_set_str(pub.p,
49               "fda45d8f1df8f2b84fb3cf9ae69f93b087d98bea282f643e"
50               "23472c5b57605952010e4c846d711f2783e8ad4e1447698e"
51               "2e328fdb1d411ccb0f3caef5b8fc0b9dcecfadf022ecc7de"
52               "5c153c8f10fe88d63abf7d296ad485dfd6eead595fc1c36b"
53               "8bd42e8668b55b2bb0f1a6aecbe678df504880de2481a5e4"
54               "97d1b7d92ee48ffeb083a1833094a0418ec0d914409c720c"
55               "87ea63c164ec448c471b574a8f88073ebeb44dc6d6b98260"
56               "46126f03022ff04dcb6a2381a09b0a227d3c57cfbfd48e4a"
57               "19cbb0a35242c9e234ebe105ae26cab01ede40aa2869fad8"
58               "6bff57a19ec87b8de294ca03269c268c10813f18169beac5"
59               "ac97c0e748ccb244282c50c670e1bccb", 16);
60   mpz_set_str(pub.q,
61               "bd612630da4d930779a32546dc413efd299111b443c7355d"
62               "65d991163cc3cd9d", 16);
63   mpz_set_str(pub.g,
64               "050c56e14adb03e47d3902852f5b21c96c28a2aa89619c8b"
65               "78a98aa5083700994f99184588d2cefaf2a3ea213dd2d084"
66               "0e682a52357d5fefaef44520622f021855744d638e792f21"
67               "89543f9770aa1960da4d7b325a37a2922b035c8da3d71543"
68               "5d7a6ddefc62e84fe76fecbbf9667c6a1781a84aa434548b"
69               "bdc315f2fb0a420d65c1f72911845b148e994660138052a1"
70               "fce1c6f933be155b2af8c0177277cd3b75d9477ddbcb77bc"
71               "f5cccea915a2f3750ba41f337edd44f768cb3d24b17e299d"
72               "5cebe5e78cbaf5ad41e815edfc71df3131bd5359c653a224"
73               "bd3ac6a27bad7efff11b24fad0109ee26e4df76fc99e150d"
74               "666a9294bab8a03f113d228bfad349f4", 16);
75   mpz_set_str(pub.y,
76               "da7f9abb0b554afaa926c9cffa897239bfdbc58ed9981748"
77               "edb1e38f42dea0560a407a48b509a5cb460bf31dee9057a0"
78               "b41d468698fa82ff03c47e8f3f6564c74d6f1daa5f84ad25"
79               "b937317f861fa68c19e20d6b855e85cd94d5af95b968416e"
80               "6d43711f24d5497f018b7627d2bed25dc793ddb897fdcc34"
81               "5d183e43a80205483dea7a12185be3b185a7d84d3385b962"
82               "4485882722d177ccd8f49c5b519fb96b9b59fcfc63422f25"
83               "88fb8ff00bce46acb7c80d105c31414ecf5be0a0dad975bd"
84               "dcd83d6f063f9bce562fdd5b68e18fc2159dbb2457adc7a7"
85               "ee5bc0796eff370908f866a41b9a8873f89e1904925141f8"
86               "e574df25bd869f43a184a804e8ce5fcc", 16);
87   mpz_set_str(key.x,
88               "39f84f88569da55c6bee7e18175b539ea9b7ee24fabd85a7"
89               "1fa8c93b7181545b", 16);
90
91   test_dsa_key(params, pub.y, key.x, 256);
92
93   mpz_set_str(signature.r,
94               "03fe95c9dbbe1be019d7914e45c37c70"
95               "0f499f559312a59f3bc5037f51d3f74c", 16);
96   mpz_set_str(signature.s,
97               "839dbee8d30e6b0cc349528f900f30ee"
98               "6d4ce9864332d07c87b5a98bd75dbdbb", 16);
99
100   test_dsa256(&pub, &key, &signature);
101
102   /* Some of the test vectors from
103      http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3dsatestvectors.zip
104   */
105   /* L=1024, N=160, SHA-1 */
106   mpz_set_str(pub.p,
107               "a8f9cd201e5e35d892f85f80e4db2599a5676a3b1d4f1903"
108               "30ed3256b26d0e80a0e49a8fffaaad2a24f472d2573241d4"
109               "d6d6c7480c80b4c67bb4479c15ada7ea8424d2502fa01472"
110               "e760241713dab025ae1b02e1703a1435f62ddf4ee4c1b664"
111               "066eb22f2e3bf28bb70a2a76e4fd5ebe2d1229681b5b0643"
112               "9ac9c7e9d8bde283", 16);
113   mpz_set_str(pub.q, "f85f0f83ac4df7ea0cdf8f469bfeeaea14156495", 16);
114   mpz_set_str(pub.g,
115               "2b3152ff6c62f14622b8f48e59f8af46883b38e79b8c74de"
116               "eae9df131f8b856e3ad6c8455dab87cc0da8ac973417ce4f"
117               "7878557d6cdf40b35b4a0ca3eb310c6a95d68ce284ad4e25"
118               "ea28591611ee08b8444bd64b25f3f7c572410ddfb39cc728"
119               "b9c936f85f419129869929cdb909a6a3a99bbe0892163681"
120               "71bd0ba81de4fe33", 16);
121   mpz_set_str(pub.y,
122               "313fd9ebca91574e1c2eebe1517c57e0c21b0209872140c5"
123               "328761bbb2450b33f1b18b409ce9ab7c4cd8fda3391e8e34"
124               "868357c199e16a6b2eba06d6749def791d79e95d3a4d09b2"
125               "4c392ad89dbf100995ae19c01062056bb14bce005e8731ef"
126               "de175f95b975089bdcdaea562b32786d96f5a31aedf75364"
127               "008ad4fffebb970b", 16);
128   mpz_set_str(signature.r, "50ed0e810e3f1c7cb6ac62332058448bd8b284c0", 16);
129   mpz_set_str(signature.s, "c6aded17216b46b7e4b6f2a97c1ad7cc3da83fde", 16);
130
131   test_dsa_verify(params, pub.y, &nettle_sha1,
132                   SHEX("3b46736d559bd4e0c2c1b2553a33ad3c6cf23cac998d3d0c"
133                        "0e8fa4b19bca06f2f386db2dcff9dca4f40ad8f561ffc308"
134                        "b46c5f31a7735b5fa7e0f9e6cb512e63d7eea05538d66a75"
135                        "cd0d4234b5ccf6c1715ccaaf9cdc0a2228135f716ee9bdee"
136                        "7fc13ec27a03a6d11c5c5b3685f51900b1337153bc6c4e8f"
137                        "52920c33fa37f4e7"),
138                   &signature);
139
140   mpz_set_str(pub.y,
141               "29bdd759aaa62d4bf16b4861c81cf42eac2e1637b9ecba51"
142               "2bdbc13ac12a80ae8de2526b899ae5e4a231aef884197c94"
143               "4c732693a634d7659abc6975a773f8d3cd5a361fe2492386"
144               "a3c09aaef12e4a7e73ad7dfc3637f7b093f2c40d6223a195"
145               "c136adf2ea3fbf8704a675aa7817aa7ec7f9adfb2854d4e0"
146               "5c3ce7f76560313b", 16);
147   mpz_set_str(signature.r, "a26c00b5750a2d27fe7435b93476b35438b4d8ab", 16);
148   mpz_set_str(signature.s, "61c9bfcb2938755afa7dad1d1e07c6288617bf70", 16);
149
150   test_dsa_verify(params, pub.y, &nettle_sha1,
151                   SHEX("d2bcb53b044b3e2e4b61ba2f91c0995fb83a6a97525e6644"
152                        "1a3b489d9594238bc740bdeea0f718a769c977e2de003877"
153                        "b5d7dc25b182ae533db33e78f2c3ff0645f2137abc137d4e"
154                        "7d93ccf24f60b18a820bc07c7b4b5fe08b4f9e7d21b256c1"
155                        "8f3b9d49acc4f93e2ce6f3754c7807757d2e1176042612cb"
156                        "32fc3f4f70700e25"),
157                   &signature);
158
159   /* L=1024, N=160, SHA-224 */
160   mpz_set_str(pub.p,
161               "8b9b32f5ba38faad5e0d506eb555540d0d7963195558ca30"
162               "8b7466228d92a17b3b14b8e0ab77a9f3b2959a09848aa69f"
163               "8df92cd9e9edef0adf792ce77bfceccadd9352700ca5faec"
164               "f181fa0c326db1d6e5d352458011e51bd3248f4e3bd7c820"
165               "d7e0a81932aca1eba390175e53eada197223674e3900263e"
166               "90f72d94e7447bff", 16);
167   mpz_set_str(pub.q, "bc550e965647fb3a20f245ec8475624abbb26edd", 16);
168   mpz_set_str(pub.g,
169               "11333a931fba503487777376859fdc12f7c687b0948ae889"
170               "d287f1b7a712ad220ae4f1ce379d0dbb5c9abf419621f005"
171               "fc123c327e5055d1850634c36d397e689e111d598c1c3636"
172               "b940c84f42f436846e8e7fcad9012ceda398720f32fffd1a"
173               "45ab6136ce417069207ac140675b8f86dd063915ae6f62b0"
174               "cec729fbd509ac17", 16);
175   mpz_set_str(pub.y,
176               "7e339f3757450390160e02291559f30bed0b2d758c5ccc2d"
177               "8d456232bb435ae49de7e7957e3aad9bfdcf6fd5d9b6ee3b"
178               "521bc2229a8421dc2aa59b9952345a8fc1de49b348003a9b"
179               "18da642d7f6f56e3bc665131ae9762088a93786f7b4b72a4"
180               "bcc308c67e2532a3a5bf09652055cc26bf3b18833598cffd"
181               "7011f2285f794557", 16);
182   mpz_set_str(signature.r, "afee719e7f848b54349ccc3b4fb26065833a4d8e", 16);
183   mpz_set_str(signature.s, "734efe992256f31325e749bc32a24a1f957b3a1b", 16);
184   test_dsa_verify(params, pub.y, &nettle_sha224,
185                   SHEX("fb2128052509488cad0745ed3e6312850dd96ddaf791f1e6"
186                        "24e22a6b9beaa65319c325c78ef59cacba0ccfa722259f24"
187                        "f92c17b77a8f6d8e97c93d880d2d8dbbbedcf6acefa06b0e"
188                        "476ca2013d0394bd90d56c10626ef43cea79d1ef0bc7ac45"
189                        "2bf9b9acaef70325e055ac006d34024b32204abea4be5faa"
190                        "e0a6d46d365ed0d9"),
191                   &signature);
192
193   /* L=1024, N=160, SHA-256 */
194   mpz_set_str(pub.p,
195               "cba13e533637c37c0e80d9fcd052c1e41a88ac325c4ebe13"
196               "b7170088d54eef4881f3d35eae47c210385a8485d2423a64"
197               "da3ffda63a26f92cf5a304f39260384a9b7759d8ac1adc81"
198               "d3f8bfc5e6cb10efb4e0f75867f4e848d1a338586dd0648f"
199               "eeb163647ffe7176174370540ee8a8f588da8cc143d939f7"
200               "0b114a7f981b8483", 16);
201   mpz_set_str(pub.q, "95031b8aa71f29d525b773ef8b7c6701ad8a5d99", 16);
202   mpz_set_str(pub.g,
203               "45bcaa443d4cd1602d27aaf84126edc73bd773de6ece15e9"
204               "7e7fef46f13072b7adcaf7b0053cf4706944df8c4568f26c"
205               "997ee7753000fbe477a37766a4e970ff40008eb900b9de4b"
206               "5f9ae06e06db6106e78711f3a67feca74dd5bddcdf675ae4"
207               "014ee9489a42917fbee3bb9f2a24df67512c1c35c97bfbf2"
208               "308eaacd28368c5c", 16);
209   mpz_set_str(pub.y,
210               "4cd6178637d0f0de1488515c3b12e203a3c0ca652f2fe30d"
211               "088dc7278a87affa634a727a721932d671994a958a0f8922"
212               "3c286c3a9b10a96560542e2626b72e0cd28e5133fb57dc23"
213               "8b7fab2de2a49863ecf998751861ae668bf7cad136e6933f"
214               "57dfdba544e3147ce0e7370fa6e8ff1de690c51b4aeedf04"
215               "85183889205591e8", 16);
216   mpz_set_str(signature.r, "76683a085d6742eadf95a61af75f881276cfd26a", 16);
217   mpz_set_str(signature.s, "3b9da7f9926eaaad0bebd4845c67fcdb64d12453", 16);
218   test_dsa_verify(params, pub.y, &nettle_sha256,
219                   SHEX("812172f09cbae62517804885754125fc6066e9a902f9db20"
220                        "41eeddd7e8da67e4a2e65d0029c45ecacea6002f9540eb10"
221                        "04c883a8f900fd84a98b5c449ac49c56f3a91d8bed3f08f4"
222                        "27935fbe437ce46f75cd666a0707265c61a096698dc2f36b"
223                        "28c65ec7b6e475c8b67ddfb444b2ee6a984e9d6d15233e25"
224                        "e44bd8d7924d129d"),
225                   &signature);
226
227   /* L=2048, N=224, SHA-1 */
228   mpz_set_str(pub.p,
229               "f2d39ed3062b13c916273600a0f2a029e86d7a4b9217b4f1"
230               "815bf2b24d9710a57ab33f997294b014585b8d0198dfdccb"
231               "cd75314da5ff85aa344b45adaeaa979b51a312a7bfa94472"
232               "fb633f1a6f156bb4458867dfd38403f06b851f00fe2d3484"
233               "077bded71ab7513d04a140220575fb693395480e4c8402b7"
234               "a46cec2d37a778c305accd1f13e9f62e865315f4b22cc467"
235               "c8986ec8e4961ddf810566b0c4ee369ac6aa15e43f474400"
236               "5826f5bde8071a19e30b6909aac4b3d174237270dad02799"
237               "d09b8a2cc5f22e66894b5422228b2c234f11f5a771c5b89c"
238               "f465a2acecbbeeaa1725fe8f9b59422be8991052cb556ddf"
239               "2c8ce8fa9206dbf39feadc194e00f8e5", 16);
240   mpz_set_str(pub.q,
241               "8000000000000000c118f49835e4ef733c4d15800fcf059e884d31b1", 16);
242   mpz_set_str(pub.g,
243               "e3a93c09da6f560e4d483a382a4c546f2335c36a4c35ac14"
244               "63c08a3e6dd415df56fdc537f25fd5372be63e4f5300780b"
245               "782f1acd01c8b4eb33414615fd0ea82573acba7ef83f5a94"
246               "3854151afc2d7dfe121fb8cd03335b065b549c5dcc606be9"
247               "052483bc284e12ac3c8dba09b426e08402030e70bc1cc2bf"
248               "8957c4ba0630f3f32ad689389ac47443176063f247d9e229"
249               "6b3ea5b5bc2335828ea1a080ed35918dee212fd031279d1b"
250               "894f01afec523833669eac031a420e540ba1320a59c424a3"
251               "e5849a460a56bcb001647885b1433c4f992971746bfe2977"
252               "ce7259c550b551a6c35761e4a41af764e8d92132fcc0a59d"
253               "1684eab90d863f29f41cf7578faa908c", 16);
254   mpz_set_str(pub.y,
255               "289ff18c32a56bb0b8839370647683a38a5a7e291410b932"
256               "07212adc8088d30f93e9e4abc523f3d46936e7d5c90d8874"
257               "2b36afd37563408f15c8c1a4f7ac24bf05f01008ffee70c8"
258               "825d57c3a9308bad8a095af2b53b2dda3cbed846d95e301e"
259               "b9b84766415d11f6c33209a0d28571096ab04a79aa0dc465"
260               "997529686b68e887cd8a205c2dc8195aef0422eba9979f54"
261               "9ac85548e419413643b7244361153ada1480d238cd00dc16"
262               "527938955548dd5d027ded1029eeeb8ed6c61b4cd59341d8"
263               "b15466e9da890a989996f4d7691e6072de136af28b5874bf"
264               "08bd1f8a60cfb1c00888132909f515e04bce81b02951aa41"
265               "baac68ffdb8c5dc77a1d32d8f2c10dd7", 16);
266   mpz_set_str(signature.r,
267               "45df2f423e94bf155dd4e1d9e63f315ea606dd38527d4cf6328738c8", 16);
268   mpz_set_str(signature.s,
269               "59b3e8efa5bc0ccbf4a3cbb6515c4b9bf784cfacdcc101dc9f81d31f", 16);
270   test_dsa_verify(params, pub.y, &nettle_sha1,
271                   SHEX("edc6fd9b6c6e8a59f283016f7f29ee16deeaa609b5737927"
272                        "162aef34fed985d0bcb550275637ba67831a2d4efccb3529"
273                        "6dfe730f4a0b4f4728d1d7d1bb8f4a36238a5c94311fa113"
274                        "4a93a6b4de39c085e9f60ae4e237c0416d58042bb36baa38"
275                        "cba8c896295b745d5376fd8ce42eb6ee5a1b38f87716b265"
276                        "b76e58cfb24a9170"),
277                   &signature);
278   /* L=2048, N=224, SHA-224 */
279   mpz_set_str(pub.p,
280               "aa815c9db1c4d3d2773c7d0d4d1da75ecfc4a39e97d5fa19"
281               "1ffec8b1490a290ce335e5ce87ea620a8a17de0bb64714e2"
282               "ec840bf00e6ebdb4ffb4e324ca07c3c8717309af1410362a"
283               "772c9add838b2b0cae1e90ab448adabdacd2e5df59c4187a"
284               "32a23719d6c57e9400885383bf8f066f23b941920d54c35b"
285               "4f7cc5044f3b40f17046956307b748e840732844d00a9ce6"
286               "ec5714293b6265147f15c67f4be38b082b55fdeadb612468"
287               "9fb76f9d25cc28b8eaa98b562d5c1011e0dcf9b39923240d"
288               "332d89dc9603b7bddd0c70b83caa2905631b1c83cabbae6c"
289               "0c0c2efe8f58131ed8351bf93e875f6a73a93cbad470141a"
290               "2687fbacf2d71c8ddee971ad660729ad", 16);
291   mpz_set_str(pub.q,
292               "ea347e90be7c2875d1fe1db622b4763837c5e27a6037310348c1aa11", 16);
293   mpz_set_str(pub.g,
294               "2042094ccbc8b8723fc928c12fda671b83295e99c743576f"
295               "44504be1186323319b5002d24f173df909ea241d6ea52899"
296               "04ee4636204b2fbe94b068fe093f7962579549551d3af219"
297               "ad8ed19939eff86bcec834de2f2f78596e89e7cb52c524e1"
298               "77098a56c232eb1f563aa84bc6b026deee6ff51cb441e080"
299               "f2dafaea1ced86427d1c346be55c66803d4b76d133cd445b"
300               "4c3482fa415023463c9bf30f2f784223e26057d3aa0d7fbb"
301               "660630c52e49d4a0325c7389e072aa349f13c966e159752f"
302               "bb71e9336890f93243fa6e72d299365ee5b3fe266ebf1110"
303               "568fee4425c847b50210bd484b97431a42856adca3e7d1a9"
304               "c9c675c7e266918320dd5a78a48c48a9", 16);
305   mpz_set_str(pub.y,
306               "1ae10c786ad0902c5c685dae5c7121418a377b888b5f2f2b"
307               "c76623570fd62bcb190b471ad5359c5f062f8819289e956d"
308               "8aa6f90d1f8cf1ee72d3a1bdfd56c478dc29a19c4569b5a6"
309               "0e3a8f34f60656eac5b25dde5514a5c67b675423204f6cca"
310               "f0990617cc7355b9d3ed868978a252020a769ed59a6edaa6"
311               "efe3377eef45f3f6f3e64179cc7db8b143fb835c5d71bfcf"
312               "a1e2a9049bccf7fe9ab57546220fe3f4b7521c861739d138"
313               "507e81a46a6993605441dcb90d6ee4afbc42cabe90a25444"
314               "4968109d7edd9694a023239f1d56175dd1fac115915e24fa"
315               "b563f4fc3f269bed2f300832d112596485a711417aa73bb4"
316               "ac72a651a1fa5baed3636c720d397008", 16);
317   mpz_set_str(signature.r,
318               "65102e8f64ecb11f06017b1a0c0def3c29897c277c4a948b1f4da6b9", 16);
319   mpz_set_str(signature.s,
320               "21ad0abb27bd3c21166cb96aef70c0dbd5f3079cab0dd543d4125bd1", 16);
321   test_dsa_verify(params, pub.y, &nettle_sha224,
322                   SHEX("e920fc1610718f2b0213d301c0092a51f3c6b0107bbbd824"
323                        "3a9689c044e2d142f202d9d195a5faef4be5acadc9ff6f7d"
324                        "2261e58b517139bcb9489b110423c2e59eb181294ffdae8a"
325                        "ad0e624fab974c97f9f5e7dc19d678a9cb3429cf05ec5090"
326                        "72856f5adfec6e29bafe8e5ba95593e612843e343111d88a"
327                        "1eaff7dc0a2e277f"),
328                   &signature);
329
330   /* mod = L=2048, N=224, SHA-256 */
331   mpz_set_str(pub.p,
332               "a4c7eaab42c4c73b757770916489f17cd50725cd0a4bc4e1"
333               "cf67f763b8c1de2d6dab9856baafb008f365b18a42e14dc5"
334               "1f350b88eca0209c5aa4fd71a7a96c765f5901c21e720570"
335               "d7837bec7c76d2e49344731ca39405d0a879b9e0dcd1a812"
336               "5fd130ec1e783e654b94e3002e6b629e904ab3877867720c"
337               "bd54b4270a9e15cd028c7cc796f06c272a660951928fdbeb"
338               "2dca061b41e932257305742ff16e2f429191d5e5f1a6ddf6"
339               "e78c5d7722cff80a9c0bd5c8d7aeba8c04438992b075e307"
340               "c1534c49ad380f477f5f7987dc172c161dca38dcaf3fb384"
341               "6c72c9119a5299adc748951b3dce0d00d4a9013800b20082"
342               "03b72465bc6a84ae059a30c4522dea57", 16);
343   mpz_set_str(pub.q,
344               "ce89fe332b8e4eb3d1e8ddcea5d163a5bc13b63f16993755427aef43", 16);
345   mpz_set_str(pub.g,
346               "8c465edf5a180730291e080dfc5385397a5006450dba2efe"
347               "0129264fbd897bb5579ca0eab19aa278220424724b4f2a6f"
348               "6ee6328432abf661380646097233505339c5519d357d7112"
349               "b6eec938b85d5aa75cc2e38092f0a530acb54e50fe82c4d5"
350               "62fb0f3036b80b30334023ebbe6637a0010b00c7db863711"
351               "68563671e1e0f028aedbd45d2d572621a609982a073e51aa"
352               "e27707afbeef29e2ecee84d7a6d5da382be3a35f42b6c668"
353               "49202ab19d025b869d08776476d1ab981475ad2ad2f3e6fd"
354               "07e30696d90a626816df60d6ca7afd7b482f942f83b45cc8"
355               "2933731f87faee320900f2aa3e70b1867e1430e40be67c07"
356               "f9290299ef067b8b24a7515b3f992c07", 16);
357   mpz_set_str(pub.y,
358               "748a40237211a2d9852596e7a891f43d4eb0ee48826c9cfb"
359               "336bbb68dbe5a5e16b2e1271d4d13de03644bb85ef6be523"
360               "a4d4d88415bcd596ba8e0a3c4f6439e981ed013d7d9c7033"
361               "6febf7d420cfed02c267457bb3f3e7c82145d2af54830b94"
362               "2ec74a5d503e4226cd25dd75decd3f50f0a858155d7be799"
363               "410836ddc559ce99e1ae513808fdaeac34843dd7258f16f6"
364               "7f19205f6f139251a4186da8496d5e90d3fecf8ed10be6c2"
365               "5ff5eb33d960c9a8f4c581c8c724ca43b761e9fdb5af66bf"
366               "fb9d2ebb11a6b504a1fbe4f834ecb6ac254cab513e943b9a"
367               "953a7084b3305c661bfad434f6a835503c9ade7f4a57f5c9"
368               "65ec301ecde938ee31b4deb038af97b3", 16);
369   mpz_set_str(signature.r,
370               "9c5fa46879ddaf5c14f07dfb5320715f67a6fec179e3ad53342fb6d1", 16);
371   mpz_set_str(signature.s,
372               "c3e17e7b3c4d0ac8d49f4dd0f04c16a094f42da0afcc6c90f5f1bbc8", 16);
373   test_dsa_verify(params, pub.y, &nettle_sha256,
374                   SHEX("cec8d2843dee7cb5f9119b75562585e05c5ce2f4e6457e9b"
375                        "cc3c1c781ccd2c0442b6282aea610f7161dcede176e77486"
376                        "1f7d2691be6c894ac3ebf80c0fab21e52a3e63ae0b350257"
377                        "62ccd6c9e1fecc7f9fe00aa55c0c3ae33ae88f66187f9598"
378                        "eba9f863171f3f56484625bf39d883427349b8671d9bb7d3"
379                        "96180694e5b546ae"),
380                   &signature);
381   
382   /* L=2048, N=256, SHA-1 */
383   mpz_set_str(pub.p,
384               "c1a59d215573949e0b20a974c2edf2e3137ff2463062f75f"
385               "1d13df12aba1076bb2d013402b60af6c187fb0fa362167c9"
386               "76c2617c726f9077f09e18c11b60f65008825bd6c02a1f57"
387               "d3eb0ad41cd547de43d87f2525f971d42b306506e7ca03be"
388               "63b35f4ada172d0a06924440a14250d7822ac2d5aeafed46"
389               "19e79d4158a7d5eb2d9f023db181a8f094b2c6cb87cb8535"
390               "416ac19813f07144660c557745f44a01c6b1029092c129b0"
391               "d27183e82c5a21a80177ee7476eb95c466fb472bd3d2dc28"
392               "6ce25847e93cbfa9ad39cc57035d0c7b64b926a9c7f5a7b2"
393               "bc5abcbfbdc0b0e3fede3c1e02c44afc8aefc7957da07a0e"
394               "5fd12339db8667616f62286df80d58ab", 16);
395   mpz_set_str(pub.q,
396               "8000000000000000000000001bd62c65e8b87c89797f8f0c"
397               "bfa55e4a6810e2c7", 16);
398   mpz_set_str(pub.g,
399               "aea5878740f1424d3c6ea9c6b4799615d2749298a17e2620"
400               "7f76cef340ddd390e1b1ad6b6c0010ad015a103342ddd452"
401               "cac024b36e42d9b8ed52fafae7a1d3ce9e4b21f910d1356e"
402               "b163a3e5a8184c781bf14492afa2e4b0a56d8884fd01a628"
403               "b9662739c42e5c5795ade2f5f27e6de1d963917ce8806fc4"
404               "0d021cd87aa3aa3a9e4f0c2c4c45d2959b2578b2fb1a2229"
405               "c37e181059b9d5e7b7862fa82e2377a49ed0f9dca820a581"
406               "4079dd6610714efaf8b0cc683d8e72e4c884e6f9d4946b3e"
407               "8d4cbb92adbbe7d4c47cc30be7f8c37ca81883a1aac68600"
408               "59ff4640a29ccae73de20b12e63b00a88b2ee9ba94b75eb4"
409               "0a656e15d9ec83731c85d0effcb9ef9f", 16);
410   mpz_set_str(pub.y,
411               "880e17c4ae8141750609d8251c0bbd7acf6d0b460ed3688e"
412               "9a5f990e6c4b5b00875da750e0228a04102a35f57e74b8d2"
413               "f9b6950f0d1db8d302c5c90a5b8786a82c68ff5b17a57a75"
414               "8496c5f8053e4484a253d9942204d9a1109f4bd2a3ec311a"
415               "60cf69c685b586d986f565d33dbf5aab7091e31aa4102c4f"
416               "4b53fbf872d700156465b6c075e7f778471a23502dc0fee4"
417               "1b271c837a1c26691699f3550d060a331099f64837cddec6"
418               "9caebf51bf4ec9f36f2a220fe773cb4d3c02d0446ddd4613"
419               "3532ef1c3c69d432e303502bd05a75279a7809a742ac4a78"
420               "72b07f1908654049419350e37a95f2ef33361d8d8736d408"
421               "3dc14c0bb972e14d4c7b97f3ddfccaef", 16);
422   mpz_set_str(signature.r,
423               "363e01c564f380a27d7d23b207af3f961d48fc0995487f60"
424               "052775d724ab3d10", 16);
425   mpz_set_str(signature.s,
426               "4916d91b2927294e429d537c06dd2463d1845018cca2873e"
427               "90a6c837b445fdde", 16);
428   test_dsa_verify(params, pub.y, &nettle_sha1,
429                   SHEX("de3605dbefde353cbe05e0d6098647b6d041460dfd4c0003"
430                        "12be1afe7551fd3b93fed76a9763c34e004564b8f7dcacbd"
431                        "99e85030632c94e9b0a032046523b7aacdf934a2dbbdcfce"
432                        "efe66b4e3d1cb29e994ff3a4648a8edd9d58ed71f12399d9"
433                        "0624789c4e0eebb0fbd5080f7d730f875a1f290749334cb4"
434                        "05e9fd2ae1b4ed65"),
435                   &signature);
436
437   /* L=2048, N=256, SHA-224 */
438   mpz_set_str(pub.p,
439               "d02276ebf3c22ffd666983183a47ae94c9bccbcbf95ddcb4"
440               "91d1f7ce643549199992d37c79e7b032d26ed031b6ba4489"
441               "f3125826fafb2726a98333ebd9abdde592d8693d9859536d"
442               "9cc3841a1d24e044d35aced6136256fc6d6b615cf4f4163a"
443               "a381eb2b4c480825a8eccc56d8ddcf5fe637e38ad9b2974b"
444               "d2cf68bf271e0d067d2465a8b6b660524f0082598945ada5"
445               "8ea649b9804eb4753408c2c59768c46abb82e3295f3d9ca4"
446               "69f84cc187f572dc4b5a3b39346ec839dfad6f07d6d1f0e2"
447               "15209bb0ecc05c767cf2e7943ac9cfb02eee1e9ef5946e8c"
448               "e88316b5e15fdcf95a132ef2e4bb0817136528cfa5dd9653"
449               "2f9c3abe5c421620edb6bcbd52234ca9", 16);
450   mpz_set_str(pub.q,
451               "8000000012997e8285e4089708f528070c6d7af8a0bd0140"
452               "9e7a079cdb6fc5bb", 16);
453   mpz_set_str(pub.g,
454               "778453049ef262147fed7b59b0ee6764607c51e7b5b5fc6f"
455               "ea7a7a7b1dd6bb283f4a9ae98efd3964b1556758cb15b2a5"
456               "3af8619e74d85898bec77d3b3f382494ae5961a13ffc745d"
457               "a386182291519800f99dd710e00aeb15adee088e2798ee2e"
458               "46f598526cf0f4667055d1ba009750041dc5cdd2725ff1d9"
459               "7dd340c8518af7671b87d39d67aeced84b66f84e0701efc8"
460               "2a5c9ef954ee576d24c385b14d63037f0d866fd424b4975b"
461               "dd5485ed740cb932e843f906683f7c7b2c74775d901c361b"
462               "847b519c0da699638da40bd736b783d2710b2c2cc26ef912"
463               "71bf4e2c1929f876e902e2057164223bc78d6a2b9f6c0c7a"
464               "7cb85922f7d6c4287ae23861f8128848", 16);
465   mpz_set_str(pub.y,
466               "7bb31e98c7a0437f978a73d5dcfbdfbb09cc2499dfaf1eb5"
467               "256bccd6358cabb5f67d04a42823463b7e957f2b9213f1fa"
468               "8e5a98d614484701abb8c7d67641fe6ed06fa4527b493dda"
469               "b2e74640fde3de70da693f1db2b8e26417040af0eea6cab4"
470               "51a795a52e187d2ee241b93f65c86c6d66f45834cce165ac"
471               "5eb670d4f0095c23ce9757e3bdc636f991ee0073d90a0920"
472               "2edb35cc3ea1cf9adca1617fa0bffd9c126229a604a1d3bf"
473               "4931ddf0b9942dfc8a2f8c09fcc97032564a79ae1ebe1e2c"
474               "e49ff57839e7c43fa60b1603d15a450898aa4e4a1ee80657"
475               "94126d64f013367096a83686b9f158c33b10f5f3b36cf1f6"
476               "358b3f34f84b101dc26d3db68bcc95c8", 16);
477   mpz_set_str(signature.r,
478               "059bee9e708b7f20c3f791a640edee964e0aa672893c4847"
479               "99715817b3a8f6d4", 16);
480   mpz_set_str(signature.s,
481               "4bd41c84a724cc86e4f0194ec0fbf379e654d0d7f6a1f08b"
482               "d468139422a5c353", 16);
483   test_dsa_verify(params, pub.y, &nettle_sha224,
484                   SHEX("39f2d8d503aae8cd17854456ecfad49a18900d4375412bc6"
485                        "89181ed9c2ccafea98dca689a72dc75e5367d3d3abfc2169"
486                        "700d5891cff70f69d9aca093b061b9f5057f94636bc27831"
487                        "15254344fb12e33b167272e198838a8728e7744ea9a2e824"
488                        "8e34d5906e298302472637b879de91c1a6f9f331a5cf98a5"
489                        "af29132990d27416"),
490                   &signature);
491   
492   /* L=2048, N=256, SHA-256 */
493   mpz_set_str(pub.p,
494               "a8adb6c0b4cf9588012e5deff1a871d383e0e2a85b5e8e03"
495               "d814fe13a059705e663230a377bf7323a8fa117100200bfd"
496               "5adf857393b0bbd67906c081e585410e38480ead51684dac"
497               "3a38f7b64c9eb109f19739a4517cd7d5d6291e8af20a3fbf"
498               "17336c7bf80ee718ee087e322ee41047dabefbcc34d10b66"
499               "b644ddb3160a28c0639563d71993a26543eadb7718f317bf"
500               "5d9577a6156561b082a10029cd44012b18de6844509fe058"
501               "ba87980792285f2750969fe89c2cd6498db3545638d5379d"
502               "125dccf64e06c1af33a6190841d223da1513333a7c9d7846"
503               "2abaab31b9f96d5f34445ceb6309f2f6d2c8dde06441e879"
504               "80d303ef9a1ff007e8be2f0be06cc15f", 16);
505   mpz_set_str(pub.q,
506               "e71f8567447f42e75f5ef85ca20fe557ab0343d37ed09edc"
507               "3f6e68604d6b9dfb", 16);
508   mpz_set_str(pub.g,
509               "5ba24de9607b8998e66ce6c4f812a314c6935842f7ab54cd"
510               "82b19fa104abfb5d84579a623b2574b37d22ccae9b3e415e"
511               "48f5c0f9bcbdff8071d63b9bb956e547af3a8df99e5d3061"
512               "979652ff96b765cb3ee493643544c75dbe5bb39834531952"
513               "a0fb4b0378b3fcbb4c8b5800a5330392a2a04e700bb6ed7e"
514               "0b85795ea38b1b962741b3f33b9dde2f4ec1354f09e2eb78"
515               "e95f037a5804b6171659f88715ce1a9b0cc90c27f35ef2f1"
516               "0ff0c7c7a2bb0154d9b8ebe76a3d764aa879af372f4240de"
517               "8347937e5a90cec9f41ff2f26b8da9a94a225d1a913717d7"
518               "3f10397d2183f1ba3b7b45a68f1ff1893caf69a827802f7b"
519               "6a48d51da6fbefb64fd9a6c5b75c4561", 16);
520   mpz_set_str(pub.y,
521               "5a55dceddd1134ee5f11ed85deb4d634a3643f5f36dc3a70"
522               "689256469a0b651ad22880f14ab85719434f9c0e407e60ea"
523               "420e2a0cd29422c4899c416359dbb1e592456f2b3cce2332"
524               "59c117542fd05f31ea25b015d9121c890b90e0bad033be13"
525               "68d229985aac7226d1c8c2eab325ef3b2cd59d3b9f7de7db"
526               "c94af1a9339eb430ca36c26c46ecfa6c5481711496f624e1"
527               "88ad7540ef5df26f8efacb820bd17a1f618acb50c9bc197d"
528               "4cb7ccac45d824a3bf795c234b556b06aeb9291734532520"
529               "84003f69fe98045fe74002ba658f93475622f76791d9b262"
530               "3d1b5fff2cc16844746efd2d30a6a8134bfc4c8cc80a4610"
531               "7901fb973c28fc553130f3286c1489da", 16);
532   mpz_set_str(signature.r,
533               "633055e055f237c38999d81c397848c38cce80a55b649d9e"
534               "7905c298e2a51447", 16);
535   mpz_set_str(signature.s,
536               "2bbf68317660ec1e4b154915027b0bc00ee19cfc0bf75d01"
537               "930504f2ce10a8b0", 16);
538   test_dsa_verify(params, pub.y, &nettle_sha256,
539                   SHEX("4e3a28bcf90d1d2e75f075d9fbe55b36c5529b17bc3a9cca"
540                        "ba6935c9e20548255b3dfae0f91db030c12f2c344b3a29c4"
541                        "151c5b209f5e319fdf1c23b190f64f1fe5b330cb7c8fa952"
542                        "f9d90f13aff1cb11d63181da9efc6f7e15bfed4862d1a62c"
543                        "7dcf3ba8bf1ff304b102b1ec3f1497dddf09712cf323f561"
544                        "0a9d10c3d9132659"),
545                   &signature);
546   
547   /* L=2048, N=256, SHA-384 */
548   mpz_set_str(pub.p,
549               "a6167c16fff74e29342b8586aed3cd896f7b1635a2286ff1"
550               "6fdff41a06317ca6b05ca2ba7c060ad6db1561621ccb0c40"
551               "b86a03619bfff32e204cbd90b79dcb5f86ebb493e3bd1988"
552               "d8097fa23fa4d78fb3cddcb00c466423d8fa719873c37645"
553               "fe4eecc57171bbedfe56fa9474c96385b8ba378c79972d7a"
554               "aae69a2ba64cde8e5654f0f7b74550cd3447e7a472a33b40"
555               "37db468dde31c348aa25e82b7fc41b837f7fc226a6103966"
556               "ecd8f9d14c2d3149556d43829f137451b8d20f8520b0ce8e"
557               "3d705f74d0a57ea872c2bdee9714e0b63906cddfdc28b677"
558               "7d19325000f8ed5278ec5d912d102109319cba3b6469d467"
559               "2909b4f0dbeec0bbb634b551ba0cf213", 16);
560   mpz_set_str(pub.q,
561               "8427529044d214c07574f7b359c2e01c23fd97701b328ac8"
562               "c1385b81c5373895", 16);
563   mpz_set_str(pub.g,
564               "6fc232415c31200cf523af3483f8e26ace808d2f1c6a8b86"
565               "3ab042cc7f6b7144b2d39472c3cb4c7681d0732843503d8f"
566               "858cbe476e6740324aaa295950105978c335069b919ff9a6"
567               "ff4b410581b80712fe5d3e04ddb4dfd26d5e7fbca2b0c52d"
568               "8d404343d57b2f9b2a26daa7ece30ceab9e1789f9751aaa9"
569               "387049965af32650c6ca5b374a5ae70b3f98e053f51857d6"
570               "bbb17a670e6eaaf89844d641e1e13d5a1b24d053dc6b8fd1"
571               "01c624786951927e426310aba9498a0042b3dc7bbc59d705"
572               "f80d9b807de415f7e94c5cf9d789992d3bb8336d1d808cb8"
573               "6b56dde09d934bb527033922de14bf307376ab7d22fbcd61"
574               "6f9eda479ab214a17850bdd0802a871c", 16);
575   mpz_set_str(pub.y,
576               "5ca7151bca0e457bbc46f59f71d81ab16688dc0eb7e4d17b"
577               "166c3326c5b12c5bdebb3613224d1a754023c50b83cb5ecc"
578               "139096cef28933b3b12ca31038e4089383597c59cc27b902"
579               "be5da62cae7da5f4af90e9410ed1604082e2e38e25eb0b78"
580               "dfac0aeb2ad3b19dc23539d2bcd755db1cc6c9805a7dd109"
581               "e1c98667a5b9d52b21c2772121b8d0d2b246e5fd3da80728"
582               "e85bbf0d7067d1c6baa64394a29e7fcbf80842bd4ab02b35"
583               "d83f59805a104e0bd69d0079a065f59e3e6f21573a00da99"
584               "0b72ea537fa98caaa0a58800a7e7a0623e263d4fca65ebb8"
585               "eded46efdfe7db92c9ebd38062d8f12534f015b186186ee2"
586               "361d62c24e4f22b3e95da0f9062ce04d", 16);
587   mpz_set_str(signature.r,
588               "4fd8f25c059030027381d4167c3174b6be0088c15f0a573d"
589               "7ebd05960f5a1eb2", 16);
590   mpz_set_str(signature.s,
591               "5f56869cee7bf64fec5d5d6ea15bb1fa1169003a87eccc16"
592               "21b90a1b892226f2", 16);
593   test_dsa_verify(params, pub.y, &nettle_sha384,
594                   SHEX("8c78cffdcf25d8230b835b30512684c9b252115870b603d1"
595                        "b4ba2eb5d35b33f26d96b684126ec34fff67dfe5c8c856ac"
596                        "fe3a9ff45ae11d415f30449bcdc3bf9a9fb5a7e48afeaba6"
597                        "d0b0fc9bce0197eb2bf7a840249d4e550c5a25dc1c71370e"
598                        "67933edad2362fae6fad1efba5c08dc1931ca2841b44b78c"
599                        "0c63a1665ffac860"),
600                   &signature);
601
602   /* L=3072, N=256, SHA-1 */
603   mpz_set_str(pub.p,
604               "fd5a6c56dd290f7dd84a29de17126eb4e4487b3eff0a44ab"
605               "e5c59792d2e1200b9c3db44d528b9f7d2248032e4ba0f7bf"
606               "c4fafc706be511db2276c0b7ecffd38da2e1c2f237a75390"
607               "c1e4d3239cba8e20e55840ecb05df5f01a1b6977ad1906f2"
608               "cb544ccfb93b901ad0966b1832ad2dab526244a3156c905c"
609               "01ac51cb73b9dcd9860d56175a425d846485d9b1f44a8a0c"
610               "2578e6cf61947bc1a1392fdd320b16a9d70455fe436f2d47"
611               "ded8e8e605f7486eb578ea7fc4ffd13c07f9996af159fd41"
612               "1e9451403278dd1141a8c926b35c96384bbd6bee09c46f44"
613               "c36b1ffc7197f5e925dbe0544a68e6ab8c18e426a466b392"
614               "f9c27dd79fefa9ca163cc5a375539a8559f277f657a535d1"
615               "964c6a5e91683ef5698ebaa01ef818dbf72cb04c3ff092d1"
616               "88866f25cd405108f566b087f73d2d5beb51fac6de84ae51"
617               "61a66af9602c7e4bfc146f4820bdfc092faeac69133e4a08"
618               "a5b202a12498a22e57bad54674ed4b510109d52b5f74e70e"
619               "1f6f82161718cd4cf00cc9f1958acc8bddcdfbd1fbe46cd1", 16);
620   mpz_set_str(pub.q,
621               "800000000000000000000000334a26dd8f49c6811ce81bb1"
622               "342b06e980f64b75", 16);
623   mpz_set_str(pub.g,
624               "99ab030a21a5c9818174872167641c81c1e03c9b274cfbc2"
625               "7bc472542927766de5fa0539b3b73f3f16ac866a9aec8b44"
626               "5ded97fbff08834ed98c77e7fc89e5dc657bef766ff7fbf8"
627               "e76873e17bee412762d56fe1141760ab4d25bafd4b6ef25b"
628               "49a3506632d1f8e10770930760ec1325932c5a4baf9e9015"
629               "4264ddf442ec5c41fed95d11525151dbcfb3758149bad81c"
630               "62b9cff7816b8f953b8b7c022590d1584e921dc955f5328a"
631               "c72983ed5cf0d04056fe0d531e62f8f6c9ab3c0fcd44e148"
632               "60b7311d2561c77c1d32f6c69dc8f77968c9d881ad9db5e0"
633               "c114fda8628bca0335eb7fb9e15e625aabab58fc01194c81"
634               "bf6fb2ce54077b82250e57c6a7b25deb6ee39d4b686a5c30"
635               "7a7612b2d85ee92512413dea297e44f317be7ceb70a3328a"
636               "f0b401001a418562b8ffe4e9771b4b4a8e0b40c791349d5d"
637               "4e459fe620a1a2fc72e2f6ca28567d4c2632bbde1b49864c"
638               "06bb12619f132c1da8f571ef613eac739f66ab3914cb3fa1"
639               "ab86e05e5082ebaa24ebeea4cf51beefc27df512fe3fee7d", 16);
640   mpz_set_str(pub.y,
641               "e7c2ee18c3aa362c0182c6a56c2584628083c73e045beda8"
642               "d653690c9c2f6544edf9702c57c455273905336a5f517110"
643               "7a313cd7d0b0f50f8d3342c60219f22a9023394059d05f46"
644               "4c4496d55dab6eb0898527ff4cf5678e7b5bfb5e18d92c4a"
645               "9d73288cce14530fc4702f6d0397ec39a880c4a72d358730"
646               "c56633386ede028023c1791f3164d1574e7823c79b8a3ca1"
647               "343ea166ba6f02b7ff7e9ef2198db107f7cc159f3b6a1c00"
648               "a78c355c566deb0ac6fde3f633cb9177a1fbc6c1766ca021"
649               "d5fec470101abb440d2f06982181a8c92b7cdd765336b9a1"
650               "e1ab70283d6db0a963fb648c37c4e29a74c37577291049ab"
651               "47cdbc104c04db966681ea8ebb9f00cf4c4a546211737957"
652               "5fbda4b801979451fa94b19b4e93656705c0f734f3e0914b"
653               "b96c1e2b8a0fb68faf14296efdf3300ad95bcde8b67cc4b2"
654               "6e6488eef925cfaeac6f0d6567e8b41355f89d1c2b8fe687"
655               "bfa2df5e287e1305b89b8c388c26196090ac0351abc561aa"
656               "dc797da8ccea4146c3e96095ebce353e0da4c55019052caa", 16);
657   mpz_set_str(signature.r,
658               "21ca148cdf44be4ae93b2f353b8e512d03ad96dafa80623f"
659               "de4922a95f032732", 16);
660   mpz_set_str(signature.s,
661               "73e48b77a3aa44307483c2dd895cb51db2112177c185c59c"
662               "b1dcff32fda02a4f", 16);
663   test_dsa_verify(params, pub.y, &nettle_sha1,
664                   SHEX("ca84af5c9adbc0044db00d7acfb1b493aab0388ffbad47b3"
665                        "8cd3e9e3111cfe2cda2a45f751c46862f05bdcec4b698adf"
666                        "d2e1606e484c3be4ac0c379d4fbc7c2cda43e922811d7f6c"
667                        "33040e8e65d5f317684b90e26387cf931fe7c2f515058d75"
668                        "3b08137ff2c6b79c910de8283149e6872cb66f7e02e66f23"
669                        "71785129569362f1"),
670                   &signature);
671
672   /* L=3072, N=256, SHA-256 */
673   mpz_set_str(pub.p,
674               "c7b86d7044218e367453d210e76433e4e27a983db1c560bb"
675               "9755a8fb7d819912c56cfe002ab1ff3f72165b943c0b28ed"
676               "46039a07de507d7a29f738603decd1270380a41f971f2592"
677               "661a64ba2f351d9a69e51a888a05156b7fe1563c4b77ee93"
678               "a44949138438a2ab8bdcfc49b4e78d1cde766e5498476005"
679               "7d76cd740c94a4dd25a46aa77b18e9d707d6738497d4eac3"
680               "64f4792d9766a16a0e234807e96b8c64d404bbdb876e39b5"
681               "799ef53fe6cb9bab62ef19fdcc2bdd905beda13b9ef7ac35"
682               "f1f557cb0dc458c019e2bc19a9f5dfc1e4eca9e6d4665641"
683               "24304a31f038605a3e342da01be1c2b545610edd2c1397a3"
684               "c8396588c6329efeb4e165af5b368a39a88e4888e39f40bb"
685               "3de4eb1416672f999fead37aef1ca9643ff32cdbc0fcebe6"
686               "28d7e46d281a989d43dd21432151af68be3f6d56acfbdb6c"
687               "97d87fcb5e6291bf8b4ee1275ae0eb4383cc753903c8d29f"
688               "4adb6a547e405decdff288c5f6c7aa30dcb12f84d392493a"
689               "70933317c0f5e6552601fae18f17e6e5bb6bf396d32d8ab9", 16);
690   mpz_set_str(pub.q,
691               "876fa09e1dc62b236ce1c3155ba48b0ccfda29f3ac5a97f7"
692               "ffa1bd87b68d2a4b", 16);
693   mpz_set_str(pub.g,
694               "110afebb12c7f862b6de03d47fdbc3326e0d4d31b12a8ca9"
695               "5b2dee2123bcc667d4f72c1e7209767d2721f95fbd9a4d03"
696               "236d54174fbfaff2c4ff7deae4738b20d9f37bf0a1134c28"
697               "8b420af0b5792e47a92513c0413f346a4edbab2c45bdca13"
698               "f5341c2b55b8ba54932b9217b5a859e553f14bb8c120fbb9"
699               "d99909dff5ea68e14b379964fd3f3861e5ba5cc970c4a180"
700               "eef54428703961021e7bd68cb637927b8cbee6805fa27285"
701               "bfee4d1ef70e02c1a18a7cd78bef1dd9cdad45dde9cd6907"
702               "55050fc4662937ee1d6f4db12807ccc95bc435f11b71e708"
703               "6048b1dab5913c6055012de82e43a4e50cf93feff5dcab81"
704               "4abc224c5e0025bd868c3fc592041bba04747c10af513fc3"
705               "6e4d91c63ee5253422cf4063398d77c52fcb011427cbfcfa"
706               "67b1b2c2d1aa4a3da72645cb1c767036054e2f31f88665a5"
707               "4461c885fb3219d5ad8748a01158f6c7c0df5a8c908ba8c3"
708               "e536822428886c7b500bbc15b49df746b9de5a78fe3b4f69"
709               "91d0110c3cbff458039dc36261cf46af4bc2515368f4abb7", 16);
710   mpz_set_str(pub.y,
711               "456a105c713566234838bc070b8a751a0b57767cb75e9911"
712               "4a1a46641e11da1fa9f22914d808ad7148612c1ea55d2530"
713               "1781e9ae0c9ae36a69d87ba039ec7cd864c3ad094873e6e5"
714               "6709fd10d966853d611b1cff15d37fdee424506c184d62c7"
715               "033358be78c2250943b6f6d043d63b317de56e5ad8d1fd97"
716               "dd355abe96452f8e435485fb3b907b51900aa3f24418df50"
717               "b4fcdafbf6137548c39373b8bc4ba3dabb4746ebd17b87fc"
718               "d6a2f197c107b18ec5b465e6e4cb430d9c0ce78da5988441"
719               "054a370792b730da9aba41a3169af26176f74e6f7c0c9c9b"
720               "55b62bbe7ce38d4695d48157e660c2acb63f482f55418150"
721               "e5fee43ace84c540c3ba7662ae80835c1a2d51890ea96ba2"
722               "06427c41ef8c38aa07d2a365e7e58380d8f4782e22ac2101"
723               "af732ee22758337b253637838e16f50f56d313d07981880d"
724               "685557f7d79a6db823c61f1bb3dbc5d50421a4843a6f2969"
725               "0e78aa0f0cff304231818b81fc4a243fc00f09a54c466d6a"
726               "8c73d32a55e1abd5ec8b4e1afa32a79b01df85a81f3f5cfe", 16);
727   mpz_set_str(signature.r,
728               "53bae6c6f336e2eb311c1e92d95fc449a929444ef81ec427"
729               "9660b200d59433de", 16);
730   mpz_set_str(signature.s,
731               "49f3a74e953e77a7941af3aefeef4ed499be209976a0edb3"
732               "fa5e7cb961b0c112", 16);
733   test_dsa_verify(params, pub.y, &nettle_sha256,
734                   SHEX("cb06e02234263c22b80e832d6dc5a1bee5ea8af3bc2da752"
735                        "441c04027f176158bfe68372bd67f84d489c0d49b07d4025"
736                        "962976be60437be1a2d01d3be0992afa5abe0980e26a9da4"
737                        "ae72f827b423665195cc4eed6fe85c335b32d9c03c945a86"
738                        "e7fa99373f0a30c6eca938b3afb6dff67adb8bece6f8cfec"
739                        "4b6a12ea281e2323"),
740                   &signature);
741
742   /* L=3072, N=256, SHA-384 */
743   mpz_set_str(pub.p,
744               "a410d23ed9ad9964d3e401cb9317a25213f75712acbc5c12"
745               "191abf3f1c0e723e2333b49eb1f95b0f9748d952f04a5ae3"
746               "58859d384403ce364aa3f58dd9769909b45048548c55872a"
747               "6afbb3b15c54882f96c20df1b2df164f0bac849ca17ad2df"
748               "63abd75c881922e79a5009f00b7d631622e90e7fa4e98061"
749               "8575e1d6bd1a72d5b6a50f4f6a68b793937c4af95fc11541"
750               "759a1736577d9448b87792dff07232415512e933755e1225"
751               "0d466e9cc8df150727d747e51fea7964158326b1365d580c"
752               "b190f4518291598221fdf36c6305c8b8a8ed05663dd7b006"
753               "e945f592abbecae460f77c71b6ec649d3fd5394202ed7bbb"
754               "d040f7b8fd57cb06a99be254fa25d71a3760734046c2a0db"
755               "383e02397913ae67ce65870d9f6c6f67a9d00497be1d763b"
756               "21937cf9cbf9a24ef97bbcaa07916f8894e5b7fb03258821"
757               "ac46140965b23c5409ca49026efb2bf95bce025c4183a5f6"
758               "59bf6aaeef56d7933bb29697d7d541348c871fa01f869678"
759               "b2e34506f6dc0a4c132b689a0ed27dc3c8d53702aa584877", 16);
760   mpz_set_str(pub.q,
761               "abc67417725cf28fc7640d5de43825f416ebfa80e191c42e"
762               "e886303338f56045", 16);
763   mpz_set_str(pub.g,
764               "867d5fb72f5936d1a14ed3b60499662f3124686ef108c5b3"
765               "da6663a0e86197ec2cc4c9460193a74ff16028ac9441b0c7"
766               "d27c2272d483ac7cd794d598416c4ff9099a61679d417d47"
767               "8ce5dd974bf349a14575afe74a88b12dd5f6d1cbd3f91ddd"
768               "597ed68e79eba402613130c224b94ac28714a1f1c552475a"
769               "5d29cfcdd8e08a6b1d65661e28ef313514d1408f5abd3e06"
770               "ebe3a7d814d1ede316bf495273ca1d574f42b482eea30db5"
771               "3466f454b51a175a0b89b3c05dda006e719a2e6371669080"
772               "d768cc038cdfb8098e9aad9b8d83d4b759f43ac9d22b353e"
773               "d88a33723550150de0361b7a376f37b45d437f71cb711f28"
774               "47de671ad1059516a1d45755224a15d37b4aeada3f58c69a"
775               "136daef0636fe38e3752064afe598433e80089fda24b144a"
776               "462734bef8f77638845b00e59ce7fa4f1daf487a2cada11e"
777               "aba72bb23e1df6b66a183edd226c440272dd9b06bec0e57f"
778               "1a0822d2e00212064b6dba64562085f5a75929afa5fe509e"
779               "0b78e630aaf12f91e4980c9b0d6f7e059a2ea3e23479d930", 16);
780   mpz_set_str(pub.y,
781               "1f0a5c75e7985d6e70e4fbfda51a10b925f6accb600d7c65"
782               "10db90ec367b93bb069bd286e8f979b22ef0702f717a8755"
783               "c18309c87dae3fe82cc3dc8f4b7aa3d5f3876f4d4b3eb68b"
784               "fe910c43076d6cd0d39fc88dde78f09480db55234e6c8ca5"
785               "9fe2700efec04feee6b4e8ee2413721858be7190dbe905f4"
786               "56edcab55b2dc2916dc1e8731988d9ef8b619abcf8955aa9"
787               "60ef02b3f02a8dc649369222af50f1338ed28d667f3f10ca"
788               "e2a3c28a3c1d08df639c81ada13c8fd198c6dae3d62a3fe9"
789               "f04c985c65f610c06cb8faea68edb80de6cf07a8e89c0021"
790               "8185a952b23572e34df07ce5b4261e5de427eb503ee1baf5"
791               "992db6d438b47434c40c22657bc163e7953fa33eff39dc27"
792               "34607039aadd6ac27e4367131041f845ffa1a13f556bfba2"
793               "307a5c78f2ccf11298c762e08871968e48dc3d1569d09965"
794               "cd09da43cf0309a16af1e20fee7da3dc21b364c4615cd512"
795               "3fa5f9b23cfc4ffd9cfdcea670623840b062d4648d2eba78"
796               "6ad3f7ae337a4284324ace236f9f7174fbf442b99043002f", 16);
797   mpz_set_str(signature.r,
798               "7695698a14755db4206e850b4f5f19c540b07d07e08aac59"
799               "1e20081646e6eedc", 16);
800   mpz_set_str(signature.s,
801               "3dae01154ecff7b19007a953f185f0663ef7f2537f0b15e0"
802               "4fb343c961f36de2", 16);
803   test_dsa_verify(params, pub.y, &nettle_sha384,
804                   SHEX("ed9a64d3109ef8a9292956b946873ca4bd887ce624b81be8"
805                        "1b82c69c67aaddf5655f70fe4768114db2834c71787f858e"
806                        "5165da1a7fa961d855ad7e5bc4b7be31b97dbe770798ef79"
807                        "66152b14b86ae35625a28aee5663b9ef3067cbdfbabd8719"
808                        "7e5c842d3092eb88dca57c6c8ad4c00a19ddf2e1967b59bd"
809                        "06ccaef933bc28e7"),
810                   &signature);
811
812   /* L=3072, N=256, SHA-512 */
813   mpz_set_str(pub.p,
814               "c1d0a6d0b5ed615dee76ac5a60dd35ecb000a202063018b1"
815               "ba0a06fe7a00f765db1c59a680cecfe3ad41475badb5ad50"
816               "b6147e2596b88d34656052aca79486ea6f6ec90b23e363f3"
817               "ab8cdc8b93b62a070e02688ea877843a4685c2ba6db111e9"
818               "addbd7ca4bce65bb10c9ceb69bf806e2ebd7e54edeb7f996"
819               "a65c907b50efdf8e575bae462a219c302fef2ae81d73cee7"
820               "5274625b5fc29c6d60c057ed9e7b0d46ad2f57fe01f82323"
821               "0f31422722319ce0abf1f141f326c00fbc2be4cdb8944b6f"
822               "d050bd300bdb1c5f4da72537e553e01d51239c4d461860f1"
823               "fb4fd8fa79f5d5263ff62fed7008e2e0a2d36bf7b9062d0d"
824               "75db226c3464b67ba24101b085f2c670c0f87ae530d98ee6"
825               "0c5472f4aa15fb25041e19106354da06bc2b1d322d40ed97"
826               "b21fd1cdad3025c69da6ce9c7ddf3dcf1ea4d56577bfdec2"
827               "3071c1f05ee4077b5391e9a404eaffe12d1ea62d06acd6bf"
828               "19e91a158d2066b4cd20e4c4e52ffb1d5204cd022bc7108f"
829               "2c799fb468866ef1cb09bce09dfd49e4740ff8140497be61", 16);
830   mpz_set_str(pub.q,
831               "bf65441c987b7737385eadec158dd01614da6f15386248e59f3cddbefc8e9dd1", 16);
832   mpz_set_str(pub.g,
833               "c02ac85375fab80ba2a784b94e4d145b3be0f92090eba17b"
834               "d12358cf3e03f4379584f8742252f76b1ede3fc37281420e"
835               "74a963e4c088796ff2bab8db6e9a4530fc67d51f88b905ab"
836               "43995aab46364cb40c1256f0466f3dbce36203ef228b35e9"
837               "0247e95e5115e831b126b628ee984f349911d30ffb9d613b"
838               "50a84dfa1f042ba536b82d5101e711c629f9f2096dc834de"
839               "ec63b70f2a2315a6d27323b995aa20d3d0737075186f5049"
840               "af6f512a0c38a9da06817f4b619b94520edfac85c4a6e2e1"
841               "86225c95a04ec3c3422b8deb284e98d24b31465802008a09"
842               "7c25969e826c2baa59d2cba33d6c1d9f3962330c1fcda7cf"
843               "b18508fea7d0555e3a169daed353f3ee6f4bb30244319161"
844               "dff6438a37ca793b24bbb1b1bc2194fc6e6ef60278157899"
845               "cb03c5dd6fc91a836eb20a25c09945643d95f7bd50d20668"
846               "4d6ffc14d16d82d5f781225bff908392a5793b803f9b70b4"
847               "dfcb394f9ed81c18e391a09eb3f93a032d81ba670cabfd6f"
848               "64aa5e3374cb7c2029f45200e4f0bfd820c8bd58dc5eeb34", 16);
849   mpz_set_str(pub.y,
850               "6da54f2b0ddb4dcce2da1edfa16ba84953d8429ce60cd111"
851               "a5c65edcf7ba5b8d9387ab6881c24880b2afbdb437e9ed7f"
852               "fb8e96beca7ea80d1d90f24d546112629df5c9e9661742cc"
853               "872fdb3d409bc77b75b17c7e6cfff86261071c4b5c9f9898"
854               "be1e9e27349b933c34fb345685f8fc6c12470d124cecf51b"
855               "5d5adbf5e7a2490f8d67aac53a82ed6a2110686cf631c348"
856               "bcbc4cf156f3a6980163e2feca72a45f6b3d68c10e5a2283"
857               "b470b7292674490383f75fa26ccf93c0e1c8d0628ca35f2f"
858               "3d9b6876505d118988957237a2fc8051cb47b410e8b7a619"
859               "e73b1350a9f6a260c5f16841e7c4db53d8eaa0b4708d62f9"
860               "5b2a72e2f04ca14647bca6b5e3ee707fcdf758b925eb8d4e"
861               "6ace4fc7443c9bc5819ff9e555be098aa055066828e21b81"
862               "8fedc3aac517a0ee8f9060bd86e0d4cce212ab6a3a243c5e"
863               "c0274563353ca7103af085e8f41be524fbb75cda88903907"
864               "df94bfd69373e288949bd0626d85c1398b3073a139d5c747"
865               "d24afdae7a3e745437335d0ee993eef36a3041c912f7eb58", 16);
866   mpz_set_str(signature.r,
867               "a40a6c905654c55fc58e99c7d1a3feea2c5be64823d4086c"
868               "e811f334cfdc448d", 16);
869   mpz_set_str(signature.s,
870               "6478050977ec585980454e0a2f26a03037b921ca588a78a4"
871               "daff7e84d49a8a6c", 16);
872   test_dsa_verify(params, pub.y, &nettle_sha512,
873                   SHEX("494180eed0951371bbaf0a850ef13679df49c1f13fe3770b"
874                        "6c13285bf3ad93dc4ab018aab9139d74200808e9c55bf883"
875                        "00324cc697efeaa641d37f3acf72d8c97bff0182a35b9401"
876                        "50c98a03ef41a3e1487440c923a988e53ca3ce883a2fb532"
877                        "bb7441c122f1dc2f9d0b0bc07f26ba29a35cdf0da846a9d8"
878                        "eab405cbf8c8e77f"),
879                   &signature);
880   
881   dsa_public_key_clear(&pub);
882   dsa_private_key_clear(&key);
883   dsa_signature_clear(&signature);
884 }