diff options
Diffstat (limited to 'src/util/test_crypto_ecdsa.c')
-rw-r--r-- | src/util/test_crypto_ecdsa.c | 100 |
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 | ||
36 | static struct GNUNET_CRYPTO_EcdsaPrivateKey *key; | 36 | static struct GNUNET_CRYPTO_EcdsaPrivateKey key; |
37 | 37 | ||
38 | 38 | ||
39 | static int | 39 | static int |
40 | testSignVerify () | 40 | testSignVerify (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 | ||
93 | static int | 102 | static int |
94 | testDeriveSignVerify () | 103 | testDeriveSignVerify (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 |
148 | static int | 171 | static int |
149 | testSignPerformance () | 172 | testSignPerformance (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 | ||
185 | static void | 208 | static void |
186 | perf_keygen () | 209 | perf_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) |