diff options
Diffstat (limited to 'regress/unittests/sshkey/test_file.c')
-rw-r--r-- | regress/unittests/sshkey/test_file.c | 133 |
1 files changed, 132 insertions, 1 deletions
diff --git a/regress/unittests/sshkey/test_file.c b/regress/unittests/sshkey/test_file.c index 55627bc12..7d767336e 100644 --- a/regress/unittests/sshkey/test_file.c +++ b/regress/unittests/sshkey/test_file.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: test_file.c,v 1.8 2018/09/13 09:03:20 djm Exp $ */ | 1 | /* $OpenBSD: test_file.c,v 1.9 2020/06/19 03:48:49 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Regress test for sshkey.h key management API | 3 | * Regress test for sshkey.h key management API |
4 | * | 4 | * |
@@ -422,6 +422,137 @@ sshkey_file_tests(void) | |||
422 | 422 | ||
423 | sshkey_free(k1); | 423 | sshkey_free(k1); |
424 | 424 | ||
425 | #if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC) | ||
426 | TEST_START("parse ECDSA-SK from private"); | ||
427 | buf = load_file("ecdsa_sk1"); | ||
428 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0); | ||
429 | sshbuf_free(buf); | ||
430 | ASSERT_PTR_NE(k1, NULL); | ||
431 | ASSERT_INT_EQ(k1->type, KEY_ECDSA_SK); | ||
432 | TEST_DONE(); | ||
433 | |||
434 | TEST_START("parse ECDSA-SK from private w/ passphrase"); | ||
435 | buf = load_file("ecdsa_sk1_pw"); | ||
436 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
437 | (const char *)sshbuf_ptr(pw), &k2, NULL), 0); | ||
438 | sshbuf_free(buf); | ||
439 | ASSERT_PTR_NE(k2, NULL); | ||
440 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
441 | sshkey_free(k2); | ||
442 | TEST_DONE(); | ||
443 | |||
444 | TEST_START("load ECDSA-SK from public"); | ||
445 | ASSERT_INT_EQ(sshkey_load_public(test_data_file("ecdsa_sk1.pub"), &k2, | ||
446 | NULL), 0); | ||
447 | ASSERT_PTR_NE(k2, NULL); | ||
448 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
449 | sshkey_free(k2); | ||
450 | TEST_DONE(); | ||
451 | |||
452 | TEST_START("load ECDSA-SK cert"); | ||
453 | ASSERT_INT_EQ(sshkey_load_cert(test_data_file("ecdsa_sk1"), &k2), 0); | ||
454 | ASSERT_PTR_NE(k2, NULL); | ||
455 | ASSERT_INT_EQ(k2->type, KEY_ECDSA_SK_CERT); | ||
456 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 0); | ||
457 | ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1); | ||
458 | TEST_DONE(); | ||
459 | |||
460 | TEST_START("ECDSA-SK key hex fingerprint"); | ||
461 | buf = load_text_file("ecdsa_sk1.fp"); | ||
462 | cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA256, SSH_FP_BASE64); | ||
463 | ASSERT_PTR_NE(cp, NULL); | ||
464 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
465 | sshbuf_free(buf); | ||
466 | free(cp); | ||
467 | TEST_DONE(); | ||
468 | |||
469 | TEST_START("ECDSA-SK cert hex fingerprint"); | ||
470 | buf = load_text_file("ecdsa_sk1-cert.fp"); | ||
471 | cp = sshkey_fingerprint(k2, SSH_DIGEST_SHA256, SSH_FP_BASE64); | ||
472 | ASSERT_PTR_NE(cp, NULL); | ||
473 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
474 | sshbuf_free(buf); | ||
475 | free(cp); | ||
476 | sshkey_free(k2); | ||
477 | TEST_DONE(); | ||
478 | |||
479 | TEST_START("ECDSA-SK key bubblebabble fingerprint"); | ||
480 | buf = load_text_file("ecdsa_sk1.fp.bb"); | ||
481 | cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA1, SSH_FP_BUBBLEBABBLE); | ||
482 | ASSERT_PTR_NE(cp, NULL); | ||
483 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
484 | sshbuf_free(buf); | ||
485 | free(cp); | ||
486 | TEST_DONE(); | ||
487 | |||
488 | sshkey_free(k1); | ||
489 | #endif | ||
490 | |||
491 | TEST_START("parse Ed25519-SK from private"); | ||
492 | buf = load_file("ed25519_sk1"); | ||
493 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0); | ||
494 | sshbuf_free(buf); | ||
495 | ASSERT_PTR_NE(k1, NULL); | ||
496 | ASSERT_INT_EQ(k1->type, KEY_ED25519_SK); | ||
497 | /* XXX check key contents */ | ||
498 | TEST_DONE(); | ||
499 | |||
500 | TEST_START("parse Ed25519-SK from private w/ passphrase"); | ||
501 | buf = load_file("ed25519_sk1_pw"); | ||
502 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
503 | (const char *)sshbuf_ptr(pw), &k2, NULL), 0); | ||
504 | sshbuf_free(buf); | ||
505 | ASSERT_PTR_NE(k2, NULL); | ||
506 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
507 | sshkey_free(k2); | ||
508 | TEST_DONE(); | ||
509 | |||
510 | TEST_START("load Ed25519-SK from public"); | ||
511 | ASSERT_INT_EQ(sshkey_load_public(test_data_file("ed25519_sk1.pub"), | ||
512 | &k2, NULL), 0); | ||
513 | ASSERT_PTR_NE(k2, NULL); | ||
514 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
515 | sshkey_free(k2); | ||
516 | TEST_DONE(); | ||
517 | |||
518 | TEST_START("load Ed25519-SK cert"); | ||
519 | ASSERT_INT_EQ(sshkey_load_cert(test_data_file("ed25519_sk1"), &k2), 0); | ||
520 | ASSERT_PTR_NE(k2, NULL); | ||
521 | ASSERT_INT_EQ(k2->type, KEY_ED25519_SK_CERT); | ||
522 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 0); | ||
523 | ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1); | ||
524 | TEST_DONE(); | ||
525 | |||
526 | TEST_START("Ed25519-SK key hex fingerprint"); | ||
527 | buf = load_text_file("ed25519_sk1.fp"); | ||
528 | cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA256, SSH_FP_BASE64); | ||
529 | ASSERT_PTR_NE(cp, NULL); | ||
530 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
531 | sshbuf_free(buf); | ||
532 | free(cp); | ||
533 | TEST_DONE(); | ||
534 | |||
535 | TEST_START("Ed25519-SK cert hex fingerprint"); | ||
536 | buf = load_text_file("ed25519_sk1-cert.fp"); | ||
537 | cp = sshkey_fingerprint(k2, SSH_DIGEST_SHA256, SSH_FP_BASE64); | ||
538 | ASSERT_PTR_NE(cp, NULL); | ||
539 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
540 | sshbuf_free(buf); | ||
541 | free(cp); | ||
542 | sshkey_free(k2); | ||
543 | TEST_DONE(); | ||
544 | |||
545 | TEST_START("Ed25519-SK key bubblebabble fingerprint"); | ||
546 | buf = load_text_file("ed25519_sk1.fp.bb"); | ||
547 | cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA1, SSH_FP_BUBBLEBABBLE); | ||
548 | ASSERT_PTR_NE(cp, NULL); | ||
549 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
550 | sshbuf_free(buf); | ||
551 | free(cp); | ||
552 | TEST_DONE(); | ||
553 | |||
554 | sshkey_free(k1); | ||
555 | |||
425 | sshbuf_free(pw); | 556 | sshbuf_free(pw); |
426 | 557 | ||
427 | } | 558 | } |