|
Lines 16-27
Link Here
|
| 16 |
#include <stdlib.h> |
16 |
#include <stdlib.h> |
| 17 |
#include <string.h> |
17 |
#include <string.h> |
| 18 |
|
18 |
|
| 19 |
#include <openssl/bn.h> |
19 |
#ifdef WITH_OPENSSL |
| 20 |
#include <openssl/rsa.h> |
20 |
# include <openssl/bn.h> |
| 21 |
#include <openssl/dsa.h> |
21 |
# include <openssl/rsa.h> |
| 22 |
#if defined(OPENSSL_HAS_ECC) && defined(OPENSSL_HAS_NISTP256) |
22 |
# include <openssl/dsa.h> |
| 23 |
# include <openssl/ec.h> |
23 |
# if defined(OPENSSL_HAS_ECC) && defined(OPENSSL_HAS_NISTP256) |
| 24 |
#endif |
24 |
# include <openssl/ec.h> |
|
|
25 |
# endif |
| 26 |
#endif /* WITH_OPENSSL */ |
| 25 |
|
27 |
|
| 26 |
#include "../test_helper/test_helper.h" |
28 |
#include "../test_helper/test_helper.h" |
| 27 |
|
29 |
|
|
Lines 193-198
sshkey_tests(void)
Link Here
|
| 193 |
sshkey_free(k1); |
195 |
sshkey_free(k1); |
| 194 |
TEST_DONE(); |
196 |
TEST_DONE(); |
| 195 |
|
197 |
|
|
|
198 |
#ifdef WITH_OPENSSL |
| 196 |
TEST_START("new/free KEY_RSA"); |
199 |
TEST_START("new/free KEY_RSA"); |
| 197 |
k1 = sshkey_new(KEY_RSA); |
200 |
k1 = sshkey_new(KEY_RSA); |
| 198 |
ASSERT_PTR_NE(k1, NULL); |
201 |
ASSERT_PTR_NE(k1, NULL); |
|
Lines 207-220
sshkey_tests(void)
Link Here
|
| 207 |
sshkey_free(k1); |
210 |
sshkey_free(k1); |
| 208 |
TEST_DONE(); |
211 |
TEST_DONE(); |
| 209 |
|
212 |
|
| 210 |
#ifdef OPENSSL_HAS_ECC |
213 |
# ifdef OPENSSL_HAS_ECC |
| 211 |
TEST_START("new/free KEY_ECDSA"); |
214 |
TEST_START("new/free KEY_ECDSA"); |
| 212 |
k1 = sshkey_new(KEY_ECDSA); |
215 |
k1 = sshkey_new(KEY_ECDSA); |
| 213 |
ASSERT_PTR_NE(k1, NULL); |
216 |
ASSERT_PTR_NE(k1, NULL); |
| 214 |
ASSERT_PTR_EQ(k1->ecdsa, NULL); /* Can't allocate without NID */ |
217 |
ASSERT_PTR_EQ(k1->ecdsa, NULL); /* Can't allocate without NID */ |
| 215 |
sshkey_free(k1); |
218 |
sshkey_free(k1); |
| 216 |
TEST_DONE(); |
219 |
TEST_DONE(); |
| 217 |
#endif |
220 |
# endif /* OPENSSL_HAS_ECC */ |
|
|
221 |
#endif /* WITH_OPENSSL */ |
| 218 |
|
222 |
|
| 219 |
TEST_START("new/free KEY_ED25519"); |
223 |
TEST_START("new/free KEY_ED25519"); |
| 220 |
k1 = sshkey_new(KEY_ED25519); |
224 |
k1 = sshkey_new(KEY_ED25519); |
|
Lines 225-230
sshkey_tests(void)
Link Here
|
| 225 |
sshkey_free(k1); |
229 |
sshkey_free(k1); |
| 226 |
TEST_DONE(); |
230 |
TEST_DONE(); |
| 227 |
|
231 |
|
|
|
232 |
#ifdef WITH_OPENSSL |
| 228 |
TEST_START("generate KEY_RSA too small modulus"); |
233 |
TEST_START("generate KEY_RSA too small modulus"); |
| 229 |
ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 128, &k1), |
234 |
ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 128, &k1), |
| 230 |
SSH_ERR_KEY_LENGTH); |
235 |
SSH_ERR_KEY_LENGTH); |
|
Lines 244-257
sshkey_tests(void)
Link Here
|
| 244 |
sshkey_free(k1); |
249 |
sshkey_free(k1); |
| 245 |
TEST_DONE(); |
250 |
TEST_DONE(); |
| 246 |
|
251 |
|
| 247 |
#ifdef OPENSSL_HAS_ECC |
252 |
# ifdef OPENSSL_HAS_ECC |
| 248 |
TEST_START("generate KEY_ECDSA wrong bits"); |
253 |
TEST_START("generate KEY_ECDSA wrong bits"); |
| 249 |
ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 42, &k1), |
254 |
ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 42, &k1), |
| 250 |
SSH_ERR_KEY_LENGTH); |
255 |
SSH_ERR_KEY_LENGTH); |
| 251 |
ASSERT_PTR_EQ(k1, NULL); |
256 |
ASSERT_PTR_EQ(k1, NULL); |
| 252 |
sshkey_free(k1); |
257 |
sshkey_free(k1); |
| 253 |
TEST_DONE(); |
258 |
TEST_DONE(); |
| 254 |
#endif |
259 |
# endif /* OPENSSL_HAS_ECC */ |
| 255 |
|
260 |
|
| 256 |
TEST_START("generate KEY_RSA"); |
261 |
TEST_START("generate KEY_RSA"); |
| 257 |
ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 767, &kr), |
262 |
ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 767, &kr), |
|
Lines 273-279
sshkey_tests(void)
Link Here
|
| 273 |
ASSERT_PTR_NE(dsa_priv_key(kd), NULL); |
278 |
ASSERT_PTR_NE(dsa_priv_key(kd), NULL); |
| 274 |
TEST_DONE(); |
279 |
TEST_DONE(); |
| 275 |
|
280 |
|
| 276 |
#ifdef OPENSSL_HAS_ECC |
281 |
# ifdef OPENSSL_HAS_ECC |
| 277 |
TEST_START("generate KEY_ECDSA"); |
282 |
TEST_START("generate KEY_ECDSA"); |
| 278 |
ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 256, &ke), 0); |
283 |
ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 256, &ke), 0); |
| 279 |
ASSERT_PTR_NE(ke, NULL); |
284 |
ASSERT_PTR_NE(ke, NULL); |
|
Lines 281-287
sshkey_tests(void)
Link Here
|
| 281 |
ASSERT_PTR_NE(EC_KEY_get0_public_key(ke->ecdsa), NULL); |
286 |
ASSERT_PTR_NE(EC_KEY_get0_public_key(ke->ecdsa), NULL); |
| 282 |
ASSERT_PTR_NE(EC_KEY_get0_private_key(ke->ecdsa), NULL); |
287 |
ASSERT_PTR_NE(EC_KEY_get0_private_key(ke->ecdsa), NULL); |
| 283 |
TEST_DONE(); |
288 |
TEST_DONE(); |
| 284 |
#endif |
289 |
# endif /* OPENSSL_HAS_ECC */ |
|
|
290 |
#endif /* WITH_OPENSSL */ |
| 285 |
|
291 |
|
| 286 |
TEST_START("generate KEY_ED25519"); |
292 |
TEST_START("generate KEY_ED25519"); |
| 287 |
ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &kf), 0); |
293 |
ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &kf), 0); |
|
Lines 291-296
sshkey_tests(void)
Link Here
|
| 291 |
ASSERT_PTR_NE(kf->ed25519_sk, NULL); |
297 |
ASSERT_PTR_NE(kf->ed25519_sk, NULL); |
| 292 |
TEST_DONE(); |
298 |
TEST_DONE(); |
| 293 |
|
299 |
|
|
|
300 |
#ifdef WITH_OPENSSL |
| 294 |
TEST_START("demote KEY_RSA"); |
301 |
TEST_START("demote KEY_RSA"); |
| 295 |
ASSERT_INT_EQ(sshkey_from_private(kr, &k1), 0); |
302 |
ASSERT_INT_EQ(sshkey_from_private(kr, &k1), 0); |
| 296 |
ASSERT_PTR_NE(k1, NULL); |
303 |
ASSERT_PTR_NE(k1, NULL); |
|
Lines 322-328
sshkey_tests(void)
Link Here
|
| 322 |
sshkey_free(k1); |
329 |
sshkey_free(k1); |
| 323 |
TEST_DONE(); |
330 |
TEST_DONE(); |
| 324 |
|
331 |
|
| 325 |
#ifdef OPENSSL_HAS_ECC |
332 |
# ifdef OPENSSL_HAS_ECC |
| 326 |
TEST_START("demote KEY_ECDSA"); |
333 |
TEST_START("demote KEY_ECDSA"); |
| 327 |
ASSERT_INT_EQ(sshkey_from_private(ke, &k1), 0); |
334 |
ASSERT_INT_EQ(sshkey_from_private(ke, &k1), 0); |
| 328 |
ASSERT_PTR_NE(k1, NULL); |
335 |
ASSERT_PTR_NE(k1, NULL); |
|
Lines 338-344
sshkey_tests(void)
Link Here
|
| 338 |
ASSERT_INT_EQ(sshkey_equal(ke, k1), 1); |
345 |
ASSERT_INT_EQ(sshkey_equal(ke, k1), 1); |
| 339 |
sshkey_free(k1); |
346 |
sshkey_free(k1); |
| 340 |
TEST_DONE(); |
347 |
TEST_DONE(); |
| 341 |
#endif |
348 |
# endif /* OPENSSL_HAS_ECC */ |
|
|
349 |
#endif /* WITH_OPENSSL */ |
| 342 |
|
350 |
|
| 343 |
TEST_START("demote KEY_ED25519"); |
351 |
TEST_START("demote KEY_ED25519"); |
| 344 |
ASSERT_INT_EQ(sshkey_from_private(kf, &k1), 0); |
352 |
ASSERT_INT_EQ(sshkey_from_private(kf, &k1), 0); |
|
Lines 365-381
sshkey_tests(void)
Link Here
|
| 365 |
TEST_DONE(); |
373 |
TEST_DONE(); |
| 366 |
|
374 |
|
| 367 |
TEST_START("equal different keys"); |
375 |
TEST_START("equal different keys"); |
|
|
376 |
#ifdef WITH_OPENSSL |
| 368 |
ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &k1), 0); |
377 |
ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &k1), 0); |
| 369 |
ASSERT_INT_EQ(sshkey_equal(kr, k1), 0); |
378 |
ASSERT_INT_EQ(sshkey_equal(kr, k1), 0); |
| 370 |
sshkey_free(k1); |
379 |
sshkey_free(k1); |
| 371 |
ASSERT_INT_EQ(sshkey_generate(KEY_DSA, 1024, &k1), 0); |
380 |
ASSERT_INT_EQ(sshkey_generate(KEY_DSA, 1024, &k1), 0); |
| 372 |
ASSERT_INT_EQ(sshkey_equal(kd, k1), 0); |
381 |
ASSERT_INT_EQ(sshkey_equal(kd, k1), 0); |
| 373 |
sshkey_free(k1); |
382 |
sshkey_free(k1); |
| 374 |
#ifdef OPENSSL_HAS_ECC |
383 |
# ifdef OPENSSL_HAS_ECC |
| 375 |
ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 256, &k1), 0); |
384 |
ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 256, &k1), 0); |
| 376 |
ASSERT_INT_EQ(sshkey_equal(ke, k1), 0); |
385 |
ASSERT_INT_EQ(sshkey_equal(ke, k1), 0); |
| 377 |
sshkey_free(k1); |
386 |
sshkey_free(k1); |
| 378 |
#endif |
387 |
# endif /* OPENSSL_HAS_ECC */ |
|
|
388 |
#endif /* WITH_OPENSSL */ |
| 379 |
ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &k1), 0); |
389 |
ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &k1), 0); |
| 380 |
ASSERT_INT_EQ(sshkey_equal(kf, k1), 0); |
390 |
ASSERT_INT_EQ(sshkey_equal(kf, k1), 0); |
| 381 |
sshkey_free(k1); |
391 |
sshkey_free(k1); |
|
Lines 434-439
sshkey_tests(void)
Link Here
|
| 434 |
sshbuf_reset(b); |
444 |
sshbuf_reset(b); |
| 435 |
TEST_DONE(); |
445 |
TEST_DONE(); |
| 436 |
|
446 |
|
|
|
447 |
#ifdef WITH_OPENSSL |
| 437 |
TEST_START("sign and verify RSA"); |
448 |
TEST_START("sign and verify RSA"); |
| 438 |
k1 = get_private("rsa_1"); |
449 |
k1 = get_private("rsa_1"); |
| 439 |
ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_2.pub"), &k2, |
450 |
ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_2.pub"), &k2, |
|
Lines 470-476
sshkey_tests(void)
Link Here
|
| 470 |
sshkey_free(k2); |
481 |
sshkey_free(k2); |
| 471 |
TEST_DONE(); |
482 |
TEST_DONE(); |
| 472 |
|
483 |
|
| 473 |
#ifdef OPENSSL_HAS_ECC |
484 |
# ifdef OPENSSL_HAS_ECC |
| 474 |
TEST_START("sign and verify ECDSA"); |
485 |
TEST_START("sign and verify ECDSA"); |
| 475 |
k1 = get_private("ecdsa_1"); |
486 |
k1 = get_private("ecdsa_1"); |
| 476 |
ASSERT_INT_EQ(sshkey_load_public(test_data_file("ecdsa_2.pub"), &k2, |
487 |
ASSERT_INT_EQ(sshkey_load_public(test_data_file("ecdsa_2.pub"), &k2, |
|
Lines 479-485
sshkey_tests(void)
Link Here
|
| 479 |
sshkey_free(k1); |
490 |
sshkey_free(k1); |
| 480 |
sshkey_free(k2); |
491 |
sshkey_free(k2); |
| 481 |
TEST_DONE(); |
492 |
TEST_DONE(); |
| 482 |
#endif |
493 |
# endif /* OPENSSL_HAS_ECC */ |
|
|
494 |
#endif /* WITH_OPENSSL */ |
| 483 |
|
495 |
|
| 484 |
TEST_START("sign and verify ED25519"); |
496 |
TEST_START("sign and verify ED25519"); |
| 485 |
k1 = get_private("ed25519_1"); |
497 |
k1 = get_private("ed25519_1"); |
|
Lines 490-495
sshkey_tests(void)
Link Here
|
| 490 |
sshkey_free(k2); |
502 |
sshkey_free(k2); |
| 491 |
TEST_DONE(); |
503 |
TEST_DONE(); |
| 492 |
|
504 |
|
|
|
505 |
#ifdef WITH_OPENSSL |
| 493 |
TEST_START("nested certificate"); |
506 |
TEST_START("nested certificate"); |
| 494 |
ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k1), 0); |
507 |
ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k1), 0); |
| 495 |
ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_1.pub"), &k2, |
508 |
ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_1.pub"), &k2, |
|
Lines 504-508
sshkey_tests(void)
Link Here
|
| 504 |
sshkey_free(k3); |
517 |
sshkey_free(k3); |
| 505 |
sshbuf_free(b); |
518 |
sshbuf_free(b); |
| 506 |
TEST_DONE(); |
519 |
TEST_DONE(); |
|
|
520 |
#endif /* WITH_OPENSSL */ |
| 507 |
|
521 |
|
| 508 |
} |
522 |
} |