aboutsummaryrefslogtreecommitdiff
path: root/src/util/test_crypto_ecdsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/test_crypto_ecdsa.c')
-rw-r--r--src/util/test_crypto_ecdsa.c266
1 files changed, 133 insertions, 133 deletions
diff --git a/src/util/test_crypto_ecdsa.c b/src/util/test_crypto_ecdsa.c
index 00cc72af4..797d61285 100644
--- a/src/util/test_crypto_ecdsa.c
+++ b/src/util/test_crypto_ecdsa.c
@@ -11,13 +11,13 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
18 SPDX-License-Identifier: AGPL3.0-or-later 18 SPDX-License-Identifier: AGPL3.0-or-later
19 19
20*/ 20 */
21/** 21/**
22 * @file util/test_crypto_ecdsa.c 22 * @file util/test_crypto_ecdsa.c
23 * @brief testcase for ECC ECDSA public key crypto 23 * @brief testcase for ECC ECDSA public key crypto
@@ -37,7 +37,7 @@ static struct GNUNET_CRYPTO_EcdsaPrivateKey *key;
37 37
38 38
39static int 39static int
40testSignVerify () 40testSignVerify()
41{ 41{
42 struct GNUNET_CRYPTO_EcdsaSignature sig; 42 struct GNUNET_CRYPTO_EcdsaSignature sig;
43 struct GNUNET_CRYPTO_EccSignaturePurpose purp; 43 struct GNUNET_CRYPTO_EccSignaturePurpose purp;
@@ -46,48 +46,48 @@ testSignVerify ()
46 struct GNUNET_TIME_Absolute start; 46 struct GNUNET_TIME_Absolute start;
47 int ok = GNUNET_OK; 47 int ok = GNUNET_OK;
48 48
49 fprintf (stderr, "%s", "W"); 49 fprintf(stderr, "%s", "W");
50 GNUNET_CRYPTO_ecdsa_key_get_public (key, &pkey); 50 GNUNET_CRYPTO_ecdsa_key_get_public(key, &pkey);
51 start = GNUNET_TIME_absolute_get (); 51 start = GNUNET_TIME_absolute_get();
52 purp.size = htonl (sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose)); 52 purp.size = htonl(sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose));
53 purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); 53 purp.purpose = htonl(GNUNET_SIGNATURE_PURPOSE_TEST);
54 54
55 for (i = 0; i < ITER; i++) 55 for (i = 0; i < ITER; i++)
56 {
57 fprintf (stderr, "%s", "."); fflush (stderr);
58 if (GNUNET_SYSERR == GNUNET_CRYPTO_ecdsa_sign (key, &purp, &sig))
59 {
60 fprintf (stderr,
61 "%s",
62 "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n");
63 ok = GNUNET_SYSERR;
64 continue;
65 }
66 if (GNUNET_SYSERR ==
67 GNUNET_CRYPTO_ecdsa_verify (GNUNET_SIGNATURE_PURPOSE_TEST, &purp, &sig,
68 &pkey))
69 {
70 printf ("GNUNET_CRYPTO_ecdsa_verify failed!\n");
71 ok = GNUNET_SYSERR;
72 continue;
73 }
74 if (GNUNET_SYSERR !=
75 GNUNET_CRYPTO_ecdsa_verify (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN,
76 &purp, &sig, &pkey))
77 { 56 {
78 printf ("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n"); 57 fprintf(stderr, "%s", "."); fflush(stderr);
79 ok = GNUNET_SYSERR; 58 if (GNUNET_SYSERR == GNUNET_CRYPTO_ecdsa_sign(key, &purp, &sig))
80 continue; 59 {
60 fprintf(stderr,
61 "%s",
62 "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n");
63 ok = GNUNET_SYSERR;
64 continue;
65 }
66 if (GNUNET_SYSERR ==
67 GNUNET_CRYPTO_ecdsa_verify(GNUNET_SIGNATURE_PURPOSE_TEST, &purp, &sig,
68 &pkey))
69 {
70 printf("GNUNET_CRYPTO_ecdsa_verify failed!\n");
71 ok = GNUNET_SYSERR;
72 continue;
73 }
74 if (GNUNET_SYSERR !=
75 GNUNET_CRYPTO_ecdsa_verify(GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN,
76 &purp, &sig, &pkey))
77 {
78 printf("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n");
79 ok = GNUNET_SYSERR;
80 continue;
81 }
81 } 82 }
82 } 83 printf("%d ECDSA sign/verify operations %s\n", ITER,
83 printf ("%d ECDSA sign/verify operations %s\n", ITER, 84 GNUNET_STRINGS_relative_time_to_string(GNUNET_TIME_absolute_get_duration(start), GNUNET_YES));
84 GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (start), GNUNET_YES));
85 return ok; 85 return ok;
86} 86}
87 87
88 88
89static int 89static int
90testDeriveSignVerify () 90testDeriveSignVerify()
91{ 91{
92 struct GNUNET_CRYPTO_EcdsaSignature sig; 92 struct GNUNET_CRYPTO_EcdsaSignature sig;
93 struct GNUNET_CRYPTO_EccSignaturePurpose purp; 93 struct GNUNET_CRYPTO_EccSignaturePurpose purp;
@@ -95,52 +95,52 @@ testDeriveSignVerify ()
95 struct GNUNET_CRYPTO_EcdsaPublicKey pkey; 95 struct GNUNET_CRYPTO_EcdsaPublicKey pkey;
96 struct GNUNET_CRYPTO_EcdsaPublicKey dpub; 96 struct GNUNET_CRYPTO_EcdsaPublicKey dpub;
97 97
98 dpriv = GNUNET_CRYPTO_ecdsa_private_key_derive (key, "test-derive", "test-CTX"); 98 dpriv = GNUNET_CRYPTO_ecdsa_private_key_derive(key, "test-derive", "test-CTX");
99 GNUNET_CRYPTO_ecdsa_key_get_public (key, &pkey); 99 GNUNET_CRYPTO_ecdsa_key_get_public(key, &pkey);
100 GNUNET_CRYPTO_ecdsa_public_key_derive (&pkey, "test-derive", "test-CTX", &dpub); 100 GNUNET_CRYPTO_ecdsa_public_key_derive(&pkey, "test-derive", "test-CTX", &dpub);
101 purp.size = htonl (sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose)); 101 purp.size = htonl(sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose));
102 purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); 102 purp.purpose = htonl(GNUNET_SIGNATURE_PURPOSE_TEST);
103 103
104 if (GNUNET_SYSERR == GNUNET_CRYPTO_ecdsa_sign (dpriv, &purp, &sig)) 104 if (GNUNET_SYSERR == GNUNET_CRYPTO_ecdsa_sign(dpriv, &purp, &sig))
105 { 105 {
106 fprintf (stderr, "%s", "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n"); 106 fprintf(stderr, "%s", "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n");
107 GNUNET_free (dpriv); 107 GNUNET_free(dpriv);
108 return GNUNET_SYSERR; 108 return GNUNET_SYSERR;
109 } 109 }
110 if (GNUNET_SYSERR == 110 if (GNUNET_SYSERR ==
111 GNUNET_CRYPTO_ecdsa_verify (GNUNET_SIGNATURE_PURPOSE_TEST, 111 GNUNET_CRYPTO_ecdsa_verify(GNUNET_SIGNATURE_PURPOSE_TEST,
112 &purp, &sig, 112 &purp, &sig,
113 &dpub)) 113 &dpub))
114 { 114 {
115 printf ("GNUNET_CRYPTO_ecdsa_verify failed!\n"); 115 printf("GNUNET_CRYPTO_ecdsa_verify failed!\n");
116 GNUNET_free (dpriv); 116 GNUNET_free(dpriv);
117 return GNUNET_SYSERR; 117 return GNUNET_SYSERR;
118 } 118 }
119 if (GNUNET_SYSERR != 119 if (GNUNET_SYSERR !=
120 GNUNET_CRYPTO_ecdsa_verify (GNUNET_SIGNATURE_PURPOSE_TEST, 120 GNUNET_CRYPTO_ecdsa_verify(GNUNET_SIGNATURE_PURPOSE_TEST,
121 &purp, &sig, 121 &purp, &sig,
122 &pkey)) 122 &pkey))
123 { 123 {
124 printf ("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n"); 124 printf("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n");
125 GNUNET_free (dpriv); 125 GNUNET_free(dpriv);
126 return GNUNET_SYSERR; 126 return GNUNET_SYSERR;
127 } 127 }
128 if (GNUNET_SYSERR != 128 if (GNUNET_SYSERR !=
129 GNUNET_CRYPTO_ecdsa_verify (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, 129 GNUNET_CRYPTO_ecdsa_verify(GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN,
130 &purp, &sig, &dpub)) 130 &purp, &sig, &dpub))
131 { 131 {
132 printf ("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n"); 132 printf("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n");
133 GNUNET_free (dpriv); 133 GNUNET_free(dpriv);
134 return GNUNET_SYSERR; 134 return GNUNET_SYSERR;
135 } 135 }
136 GNUNET_free (dpriv); 136 GNUNET_free(dpriv);
137 return GNUNET_OK; 137 return GNUNET_OK;
138} 138}
139 139
140 140
141#if PERF 141#if PERF
142static int 142static int
143testSignPerformance () 143testSignPerformance()
144{ 144{
145 struct GNUNET_CRYPTO_EccSignaturePurpose purp; 145 struct GNUNET_CRYPTO_EccSignaturePurpose purp;
146 struct GNUNET_CRYPTO_EcdsaSignature sig; 146 struct GNUNET_CRYPTO_EcdsaSignature sig;
@@ -149,93 +149,93 @@ testSignPerformance ()
149 struct GNUNET_TIME_Absolute start; 149 struct GNUNET_TIME_Absolute start;
150 int ok = GNUNET_OK; 150 int ok = GNUNET_OK;
151 151
152 purp.size = htonl (sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose)); 152 purp.size = htonl(sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose));
153 purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); 153 purp.purpose = htonl(GNUNET_SIGNATURE_PURPOSE_TEST);
154 fprintf (stderr, "%s", "W"); 154 fprintf(stderr, "%s", "W");
155 GNUNET_CRYPTO_ecdsa_key_get_public (key, &pkey); 155 GNUNET_CRYPTO_ecdsa_key_get_public(key, &pkey);
156 start = GNUNET_TIME_absolute_get (); 156 start = GNUNET_TIME_absolute_get();
157 for (i = 0; i < ITER; i++) 157 for (i = 0; i < ITER; i++)
158 {
159 fprintf (stderr, "%s", "."); fflush (stderr);
160 if (GNUNET_SYSERR == GNUNET_CRYPTO_ecdsa_sign (key, &purp, &sig))
161 { 158 {
162 fprintf (stderr, "%s", 159 fprintf(stderr, "%s", "."); fflush(stderr);
163 "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n"); 160 if (GNUNET_SYSERR == GNUNET_CRYPTO_ecdsa_sign(key, &purp, &sig))
164 ok = GNUNET_SYSERR; 161 {
165 continue; 162 fprintf(stderr, "%s",
163 "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n");
164 ok = GNUNET_SYSERR;
165 continue;
166 }
166 } 167 }
167 } 168 printf("%d ECC sign operations %s\n", ITER,
168 printf ("%d ECC sign operations %s\n", ITER, 169 GNUNET_STRINGS_relative_time_to_string(GNUNET_TIME_absolute_get_duration(start),
169 GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (start), 170 GNUNET_YES));
170 GNUNET_YES));
171 return ok; 171 return ok;
172} 172}
173#endif 173#endif
174 174
175 175
176static void 176static void
177perf_keygen () 177perf_keygen()
178{ 178{
179 struct GNUNET_TIME_Absolute start; 179 struct GNUNET_TIME_Absolute start;
180 struct GNUNET_CRYPTO_EcdsaPrivateKey *pk; 180 struct GNUNET_CRYPTO_EcdsaPrivateKey *pk;
181 int i; 181 int i;
182 182
183 fprintf (stderr, "%s", "W"); 183 fprintf(stderr, "%s", "W");
184 start = GNUNET_TIME_absolute_get (); 184 start = GNUNET_TIME_absolute_get();
185 for (i=0;i<10;i++) 185 for (i = 0; i < 10; i++)
186 { 186 {
187 fprintf (stderr, "."); fflush (stderr); 187 fprintf(stderr, "."); fflush(stderr);
188 pk = GNUNET_CRYPTO_ecdsa_key_create (); 188 pk = GNUNET_CRYPTO_ecdsa_key_create();
189 GNUNET_free (pk); 189 GNUNET_free(pk);
190 } 190 }
191 for (;i<25;i++) 191 for (; i < 25; i++)
192 fprintf (stderr, "."); 192 fprintf(stderr, ".");
193 fflush (stderr); 193 fflush(stderr);
194 printf ("10 ECDSA keys created in %s\n", 194 printf("10 ECDSA keys created in %s\n",
195 GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (start), GNUNET_YES)); 195 GNUNET_STRINGS_relative_time_to_string(GNUNET_TIME_absolute_get_duration(start), GNUNET_YES));
196} 196}
197 197
198 198
199int 199int
200main (int argc, char *argv[]) 200main(int argc, char *argv[])
201{ 201{
202 int failure_count = 0; 202 int failure_count = 0;
203 203
204 if (! gcry_check_version ("1.6.0")) 204 if (!gcry_check_version("1.6.0"))
205 { 205 {
206 fprintf (stderr, 206 fprintf(stderr,
207 _ 207 _
208 ("libgcrypt has not the expected version (version %s is required).\n"), 208 ("libgcrypt has not the expected version (version %s is required).\n"),
209 "1.6.0"); 209 "1.6.0");
210 return 0; 210 return 0;
211 } 211 }
212 if (getenv ("GNUNET_GCRYPT_DEBUG")) 212 if (getenv("GNUNET_GCRYPT_DEBUG"))
213 gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u , 0); 213 gcry_control(GCRYCTL_SET_DEBUG_FLAGS, 1u, 0);
214 GNUNET_log_setup ("test-crypto-ecc", "WARNING", NULL); 214 GNUNET_log_setup("test-crypto-ecc", "WARNING", NULL);
215 key = GNUNET_CRYPTO_ecdsa_key_create (); 215 key = GNUNET_CRYPTO_ecdsa_key_create();
216 if (GNUNET_OK != testDeriveSignVerify ()) 216 if (GNUNET_OK != testDeriveSignVerify())
217 { 217 {
218 failure_count++; 218 failure_count++;
219 fprintf (stderr, 219 fprintf(stderr,
220 "\n\n%d TESTS FAILED!\n\n", failure_count); 220 "\n\n%d TESTS FAILED!\n\n", failure_count);
221 return -1; 221 return -1;
222 } 222 }
223#if PERF 223#if PERF
224 if (GNUNET_OK != testSignPerformance ()) 224 if (GNUNET_OK != testSignPerformance())
225 failure_count++; 225 failure_count++;
226#endif 226#endif
227 if (GNUNET_OK != testSignVerify ()) 227 if (GNUNET_OK != testSignVerify())
228 failure_count++; 228 failure_count++;
229 GNUNET_free (key); 229 GNUNET_free(key);
230 perf_keygen (); 230 perf_keygen();
231 231
232 if (0 != failure_count) 232 if (0 != failure_count)
233 { 233 {
234 fprintf (stderr, 234 fprintf(stderr,
235 "\n\n%d TESTS FAILED!\n\n", 235 "\n\n%d TESTS FAILED!\n\n",
236 failure_count); 236 failure_count);
237 return -1; 237 return -1;
238 } 238 }
239 return 0; 239 return 0;
240} 240}
241 241