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