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.c100
1 files changed, 59 insertions, 41 deletions
diff --git a/src/util/test_crypto_ecdsa.c b/src/util/test_crypto_ecdsa.c
index 190c58d7d..cfa236d6d 100644
--- a/src/util/test_crypto_ecdsa.c
+++ b/src/util/test_crypto_ecdsa.c
@@ -33,65 +33,74 @@
33#define PERF GNUNET_YES 33#define PERF GNUNET_YES
34 34
35 35
36static struct GNUNET_CRYPTO_EcdsaPrivateKey *key; 36static struct GNUNET_CRYPTO_EcdsaPrivateKey key;
37 37
38 38
39static int 39static int
40testSignVerify () 40testSignVerify (void)
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;
44 struct GNUNET_CRYPTO_EcdsaPublicKey pkey; 44 struct GNUNET_CRYPTO_EcdsaPublicKey pkey;
45 int i;
46 struct GNUNET_TIME_Absolute start; 45 struct GNUNET_TIME_Absolute start;
47 int ok = GNUNET_OK; 46 int ok = GNUNET_OK;
48 47
49 fprintf (stderr, "%s", "W"); 48 fprintf (stderr, "%s", "W");
50 GNUNET_CRYPTO_ecdsa_key_get_public (key, &pkey); 49 GNUNET_CRYPTO_ecdsa_key_get_public (&key,
50 &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 (unsigned int i = 0; i < ITER; i++)
56 { 56 {
57 fprintf (stderr, "%s", "."); fflush (stderr); 57 fprintf (stderr, "%s", ".");
58 fflush (stderr);
58 if (GNUNET_SYSERR == 59 if (GNUNET_SYSERR ==
59 GNUNET_CRYPTO_ecdsa_sign_ (key, &purp, &sig)) 60 GNUNET_CRYPTO_ecdsa_sign_ (&key,
61 &purp,
62 &sig))
60 { 63 {
61 fprintf (stderr, 64 fprintf (stderr,
62 "%s",
63 "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n"); 65 "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n");
64 ok = GNUNET_SYSERR; 66 ok = GNUNET_SYSERR;
65 continue; 67 continue;
66 } 68 }
67 if (GNUNET_SYSERR == 69 if (GNUNET_SYSERR ==
68 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, 70 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST,
69 &purp, &sig, 71 &purp,
72 &sig,
70 &pkey)) 73 &pkey))
71 { 74 {
72 printf ("GNUNET_CRYPTO_ecdsa_verify failed!\n"); 75 fprintf (stderr,
76 "GNUNET_CRYPTO_ecdsa_verify failed!\n");
73 ok = GNUNET_SYSERR; 77 ok = GNUNET_SYSERR;
74 continue; 78 continue;
75 } 79 }
76 if (GNUNET_SYSERR != 80 if (GNUNET_SYSERR !=
77 GNUNET_CRYPTO_ecdsa_verify_ ( 81 GNUNET_CRYPTO_ecdsa_verify_ (
78 GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, 82 GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN,
79 &purp, &sig, &pkey)) 83 &purp,
84 &sig,
85 &pkey))
80 { 86 {
81 printf ("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n"); 87 fprintf (stderr,
88 "GNUNET_CRYPTO_ecdsa_verify failed to fail!\n");
82 ok = GNUNET_SYSERR; 89 ok = GNUNET_SYSERR;
83 continue; 90 continue;
84 } 91 }
85 } 92 }
86 printf ("%d ECDSA sign/verify operations %s\n", ITER, 93 printf ("%d ECDSA sign/verify operations %s\n",
94 ITER,
87 GNUNET_STRINGS_relative_time_to_string ( 95 GNUNET_STRINGS_relative_time_to_string (
88 GNUNET_TIME_absolute_get_duration (start), GNUNET_YES)); 96 GNUNET_TIME_absolute_get_duration (start),
97 GNUNET_YES));
89 return ok; 98 return ok;
90} 99}
91 100
92 101
93static int 102static int
94testDeriveSignVerify () 103testDeriveSignVerify (void)
95{ 104{
96 struct GNUNET_CRYPTO_EcdsaSignature sig; 105 struct GNUNET_CRYPTO_EcdsaSignature sig;
97 struct GNUNET_CRYPTO_EccSignaturePurpose purp; 106 struct GNUNET_CRYPTO_EccSignaturePurpose purp;
@@ -99,15 +108,22 @@ testDeriveSignVerify ()
99 struct GNUNET_CRYPTO_EcdsaPublicKey pkey; 108 struct GNUNET_CRYPTO_EcdsaPublicKey pkey;
100 struct GNUNET_CRYPTO_EcdsaPublicKey dpub; 109 struct GNUNET_CRYPTO_EcdsaPublicKey dpub;
101 110
102 dpriv = GNUNET_CRYPTO_ecdsa_private_key_derive (key, "test-derive", 111 dpriv = GNUNET_CRYPTO_ecdsa_private_key_derive (&key,
112 "test-derive",
103 "test-CTX"); 113 "test-CTX");
104 GNUNET_CRYPTO_ecdsa_key_get_public (key, &pkey); 114 GNUNET_CRYPTO_ecdsa_key_get_public (&key,
105 GNUNET_CRYPTO_ecdsa_public_key_derive (&pkey, "test-derive", "test-CTX", 115 &pkey);
116 GNUNET_CRYPTO_ecdsa_public_key_derive (&pkey,
117 "test-derive",
118 "test-CTX",
106 &dpub); 119 &dpub);
107 purp.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)); 120 purp.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose));
108 purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); 121 purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST);
109 122
110 if (GNUNET_SYSERR == GNUNET_CRYPTO_ecdsa_sign_ (dpriv, &purp, &sig)) 123 if (GNUNET_SYSERR ==
124 GNUNET_CRYPTO_ecdsa_sign_ (dpriv,
125 &purp,
126 &sig))
111 { 127 {
112 fprintf (stderr, "%s", "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n"); 128 fprintf (stderr, "%s", "GNUNET_CRYPTO_ecdsa_sign returned SYSERR\n");
113 GNUNET_free (dpriv); 129 GNUNET_free (dpriv);
@@ -115,27 +131,34 @@ testDeriveSignVerify ()
115 } 131 }
116 if (GNUNET_SYSERR == 132 if (GNUNET_SYSERR ==
117 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, 133 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST,
118 &purp, &sig, 134 &purp,
135 &sig,
119 &dpub)) 136 &dpub))
120 { 137 {
121 printf ("GNUNET_CRYPTO_ecdsa_verify failed!\n"); 138 fprintf (stderr,
139 "GNUNET_CRYPTO_ecdsa_verify failed!\n");
122 GNUNET_free (dpriv); 140 GNUNET_free (dpriv);
123 return GNUNET_SYSERR; 141 return GNUNET_SYSERR;
124 } 142 }
125 if (GNUNET_SYSERR != 143 if (GNUNET_SYSERR !=
126 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, 144 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST,
127 &purp, &sig, 145 &purp,
146 &sig,
128 &pkey)) 147 &pkey))
129 { 148 {
130 printf ("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n"); 149 fprintf (stderr,
150 "GNUNET_CRYPTO_ecdsa_verify failed to fail!\n");
131 GNUNET_free (dpriv); 151 GNUNET_free (dpriv);
132 return GNUNET_SYSERR; 152 return GNUNET_SYSERR;
133 } 153 }
134 if (GNUNET_SYSERR != 154 if (GNUNET_SYSERR !=
135 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, 155 GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN,
136 &purp, &sig, &dpub)) 156 &purp,
157 &sig,
158 &dpub))
137 { 159 {
138 printf ("GNUNET_CRYPTO_ecdsa_verify failed to fail!\n"); 160 fprintf (stderr,
161 "GNUNET_CRYPTO_ecdsa_verify failed to fail!\n");
139 GNUNET_free (dpriv); 162 GNUNET_free (dpriv);
140 return GNUNET_SYSERR; 163 return GNUNET_SYSERR;
141 } 164 }
@@ -146,7 +169,7 @@ testDeriveSignVerify ()
146 169
147#if PERF 170#if PERF
148static int 171static int
149testSignPerformance () 172testSignPerformance (void)
150{ 173{
151 struct GNUNET_CRYPTO_EccSignaturePurpose purp; 174 struct GNUNET_CRYPTO_EccSignaturePurpose purp;
152 struct GNUNET_CRYPTO_EcdsaSignature sig; 175 struct GNUNET_CRYPTO_EcdsaSignature sig;
@@ -183,26 +206,24 @@ testSignPerformance ()
183 206
184 207
185static void 208static void
186perf_keygen () 209perf_keygen (void)
187{ 210{
188 struct GNUNET_TIME_Absolute start; 211 struct GNUNET_TIME_Absolute start;
189 struct GNUNET_CRYPTO_EcdsaPrivateKey *pk; 212 struct GNUNET_CRYPTO_EcdsaPrivateKey pk;
190 int i;
191 213
192 fprintf (stderr, "%s", "W"); 214 fprintf (stderr, "%s", "W");
193 start = GNUNET_TIME_absolute_get (); 215 start = GNUNET_TIME_absolute_get ();
194 for (i = 0; i < 10; i++) 216 for (unsigned int i = 0; i < 10; i++)
195 { 217 {
196 fprintf (stderr, "."); fflush (stderr);
197 pk = GNUNET_CRYPTO_ecdsa_key_create ();
198 GNUNET_free (pk);
199 }
200 for (; i < 25; i++)
201 fprintf (stderr, "."); 218 fprintf (stderr, ".");
219 fflush (stderr);
220 GNUNET_CRYPTO_ecdsa_key_create (&pk);
221 }
202 fflush (stderr); 222 fflush (stderr);
203 printf ("10 ECDSA keys created in %s\n", 223 printf ("10 ECDSA keys created in %s\n",
204 GNUNET_STRINGS_relative_time_to_string ( 224 GNUNET_STRINGS_relative_time_to_string (
205 GNUNET_TIME_absolute_get_duration (start), GNUNET_YES)); 225 GNUNET_TIME_absolute_get_duration (start),
226 GNUNET_YES));
206} 227}
207 228
208 229
@@ -214,16 +235,14 @@ main (int argc, char *argv[])
214 if (! gcry_check_version ("1.6.0")) 235 if (! gcry_check_version ("1.6.0"))
215 { 236 {
216 fprintf (stderr, 237 fprintf (stderr,
217 _ 238 "libgcrypt has not the expected version (version %s is required).\n",
218 (
219 "libgcrypt has not the expected version (version %s is required).\n"),
220 "1.6.0"); 239 "1.6.0");
221 return 0; 240 return 0;
222 } 241 }
223 if (getenv ("GNUNET_GCRYPT_DEBUG")) 242 if (getenv ("GNUNET_GCRYPT_DEBUG"))
224 gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0); 243 gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0);
225 GNUNET_log_setup ("test-crypto-ecc", "WARNING", NULL); 244 GNUNET_log_setup ("test-crypto-ecc", "WARNING", NULL);
226 key = GNUNET_CRYPTO_ecdsa_key_create (); 245 GNUNET_CRYPTO_ecdsa_key_create (&key);
227 if (GNUNET_OK != testDeriveSignVerify ()) 246 if (GNUNET_OK != testDeriveSignVerify ())
228 { 247 {
229 failure_count++; 248 failure_count++;
@@ -237,7 +256,6 @@ main (int argc, char *argv[])
237#endif 256#endif
238 if (GNUNET_OK != testSignVerify ()) 257 if (GNUNET_OK != testSignVerify ())
239 failure_count++; 258 failure_count++;
240 GNUNET_free (key);
241 perf_keygen (); 259 perf_keygen ();
242 260
243 if (0 != failure_count) 261 if (0 != failure_count)