diff options
Diffstat (limited to 'src/util/test_crypto_eddsa.c')
-rw-r--r-- | src/util/test_crypto_eddsa.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/util/test_crypto_eddsa.c b/src/util/test_crypto_eddsa.c index 5baf696b1..10d6a4e91 100644 --- a/src/util/test_crypto_eddsa.c +++ b/src/util/test_crypto_eddsa.c | |||
@@ -100,6 +100,73 @@ testSignVerify (void) | |||
100 | } | 100 | } |
101 | 101 | ||
102 | 102 | ||
103 | static int | ||
104 | testDeriveSignVerify (void) | ||
105 | { | ||
106 | struct GNUNET_CRYPTO_EddsaSignature sig; | ||
107 | struct GNUNET_CRYPTO_EccSignaturePurpose purp; | ||
108 | struct GNUNET_CRYPTO_EddsaPrivateScalar dpriv; | ||
109 | struct GNUNET_CRYPTO_EddsaPublicKey pkey; | ||
110 | struct GNUNET_CRYPTO_EddsaPublicKey dpub; | ||
111 | struct GNUNET_CRYPTO_EddsaPublicKey dpub2; | ||
112 | |||
113 | GNUNET_CRYPTO_eddsa_private_key_derive (&key, | ||
114 | "test-derive", | ||
115 | "test-CTX", | ||
116 | &dpriv); | ||
117 | GNUNET_CRYPTO_eddsa_key_get_public (&key, | ||
118 | &pkey); | ||
119 | GNUNET_CRYPTO_eddsa_public_key_derive (&pkey, | ||
120 | "test-derive", | ||
121 | "test-CTX", | ||
122 | &dpub); | ||
123 | GNUNET_CRYPTO_eddsa_key_get_public_from_scalar (&dpriv, &dpub2); | ||
124 | purp.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)); | ||
125 | purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); | ||
126 | |||
127 | if (0 != GNUNET_memcmp (&dpub.q_y, &dpub2.q_y)) | ||
128 | { | ||
129 | fprintf (stderr, "%s", "key derivation failed\n"); | ||
130 | return GNUNET_SYSERR; | ||
131 | } | ||
132 | |||
133 | GNUNET_CRYPTO_eddsa_sign_with_scalar (&dpriv, | ||
134 | &purp, | ||
135 | &sig); | ||
136 | if (GNUNET_SYSERR == | ||
137 | GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, | ||
138 | &purp, | ||
139 | &sig, | ||
140 | &dpub)) | ||
141 | { | ||
142 | fprintf (stderr, | ||
143 | "GNUNET_CRYPTO_eddsa_verify failed!\n"); | ||
144 | return GNUNET_SYSERR; | ||
145 | } | ||
146 | if (GNUNET_SYSERR != | ||
147 | GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, | ||
148 | &purp, | ||
149 | &sig, | ||
150 | &pkey)) | ||
151 | { | ||
152 | fprintf (stderr, | ||
153 | "GNUNET_CRYPTO_eddsa_verify failed to fail!\n"); | ||
154 | return GNUNET_SYSERR; | ||
155 | } | ||
156 | if (GNUNET_SYSERR != | ||
157 | GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, | ||
158 | &purp, | ||
159 | &sig, | ||
160 | &dpub)) | ||
161 | { | ||
162 | fprintf (stderr, | ||
163 | "GNUNET_CRYPTO_eddsa_verify failed to fail!\n"); | ||
164 | return GNUNET_SYSERR; | ||
165 | } | ||
166 | return GNUNET_OK; | ||
167 | } | ||
168 | |||
169 | |||
103 | #if PERF | 170 | #if PERF |
104 | static int | 171 | static int |
105 | testSignPerformance () | 172 | testSignPerformance () |
@@ -217,6 +284,13 @@ main (int argc, char *argv[]) | |||
217 | "WARNING", | 284 | "WARNING", |
218 | NULL); | 285 | NULL); |
219 | GNUNET_CRYPTO_eddsa_key_create (&key); | 286 | GNUNET_CRYPTO_eddsa_key_create (&key); |
287 | if (GNUNET_OK != testDeriveSignVerify ()) | ||
288 | { | ||
289 | failure_count++; | ||
290 | fprintf (stderr, | ||
291 | "\n\n%d TESTS FAILED!\n\n", failure_count); | ||
292 | return -1; | ||
293 | } | ||
220 | #if PERF | 294 | #if PERF |
221 | if (GNUNET_OK != testSignPerformance ()) | 295 | if (GNUNET_OK != testSignPerformance ()) |
222 | failure_count++; | 296 | failure_count++; |