diff options
author | tb <> | 2021-05-03 14:48:10 +0000 |
---|---|---|
committer | tb <> | 2021-05-03 14:48:10 +0000 |
commit | d5cfe661a28de69d316d458e294a061d97873010 (patch) | |
tree | f40b30efe8feb24e81c868a2d75b21b1883dac4b | |
parent | cd2367a1bdc3eb74bc0a48a3b281cc13c056dd24 (diff) | |
download | openbsd-d5cfe661a28de69d316d458e294a061d97873010.tar.gz openbsd-d5cfe661a28de69d316d458e294a061d97873010.tar.bz2 openbsd-d5cfe661a28de69d316d458e294a061d97873010.zip |
Exercise the point conversion bit for octet string representations
of points on secp256r1.
-rw-r--r-- | src/regress/lib/libcrypto/ec/ec_point_conversion.c | 280 |
1 files changed, 279 insertions, 1 deletions
diff --git a/src/regress/lib/libcrypto/ec/ec_point_conversion.c b/src/regress/lib/libcrypto/ec/ec_point_conversion.c index 9e58018009..2c15f38135 100644 --- a/src/regress/lib/libcrypto/ec/ec_point_conversion.c +++ b/src/regress/lib/libcrypto/ec/ec_point_conversion.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ec_point_conversion.c,v 1.2 2021/05/03 14:46:18 tb Exp $ */ | 1 | /* $OpenBSD: ec_point_conversion.c,v 1.3 2021/05/03 14:48:10 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2021 Theo Buehler <tb@openbsd.org> | 3 | * Copyright (c) 2021 Theo Buehler <tb@openbsd.org> |
4 | * Copyright (c) 2021 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2021 Joel Sing <jsing@openbsd.org> |
@@ -549,6 +549,284 @@ static const struct point_conversion { | |||
549 | .octets_len = 145, | 549 | .octets_len = 145, |
550 | .valid = 0, | 550 | .valid = 0, |
551 | }, | 551 | }, |
552 | |||
553 | { | ||
554 | .description = "point at infinity on secp256r1", | ||
555 | .nid = NID_X9_62_prime256v1, | ||
556 | .octets = { 0x00 }, | ||
557 | .octets_len = 1, | ||
558 | .valid = 1, | ||
559 | }, | ||
560 | { | ||
561 | .description = "point at infinity on secp256r1 (flipped y_bit)", | ||
562 | .nid = NID_X9_62_prime256v1, | ||
563 | .octets = { 0x01 }, | ||
564 | .octets_len = 1, | ||
565 | .valid = 0, | ||
566 | }, | ||
567 | { | ||
568 | .description = "zero x compressed point on secp256r1", | ||
569 | .nid = NID_X9_62_prime256v1, | ||
570 | .octets = { | ||
571 | 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
572 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
573 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
574 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
575 | 0x00, | ||
576 | }, | ||
577 | .octets_len = 33, | ||
578 | .valid = 1, | ||
579 | }, | ||
580 | { | ||
581 | .description = | ||
582 | "zero x compressed point on secp256r1 (flipped y_bit)", | ||
583 | .nid = NID_X9_62_prime256v1, | ||
584 | .octets = { | ||
585 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
586 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
587 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
588 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
589 | 0x00, | ||
590 | }, | ||
591 | .octets_len = 33, | ||
592 | .valid = 1, | ||
593 | }, | ||
594 | { | ||
595 | .description = "generic compressed point on secp256r1", | ||
596 | .nid = NID_X9_62_prime256v1, | ||
597 | .octets = { | ||
598 | 0x03, 0xa3, 0x96, 0xa0, 0x42, 0x73, 0x1a, 0x8b, | ||
599 | 0x90, 0xd8, 0xcb, 0xae, 0xda, 0x1b, 0x23, 0x11, | ||
600 | 0x77, 0x5f, 0x6a, 0x4c, 0xb4, 0x57, 0xbf, 0xe0, | ||
601 | 0x65, 0xd4, 0x09, 0x11, 0x5f, 0x54, 0xe4, 0xee, | ||
602 | 0xdd, | ||
603 | }, | ||
604 | .octets_len = 33, | ||
605 | .valid = 1, | ||
606 | }, | ||
607 | { | ||
608 | .description = | ||
609 | "generic compressed point on secp256r1 (flipped y_bit)", | ||
610 | .nid = NID_X9_62_prime256v1, | ||
611 | .octets = { | ||
612 | 0x02, 0xa3, 0x96, 0xa0, 0x42, 0x73, 0x1a, 0x8b, | ||
613 | 0x90, 0xd8, 0xcb, 0xae, 0xda, 0x1b, 0x23, 0x11, | ||
614 | 0x77, 0x5f, 0x6a, 0x4c, 0xb4, 0x57, 0xbf, 0xe0, | ||
615 | 0x65, 0xd4, 0x09, 0x11, 0x5f, 0x54, 0xe4, 0xee, | ||
616 | 0xdd, | ||
617 | }, | ||
618 | .octets_len = 33, | ||
619 | .valid = 1, | ||
620 | }, | ||
621 | { | ||
622 | .description = "zero x uncompressed point #1 on secp256r1", | ||
623 | .nid = NID_X9_62_prime256v1, | ||
624 | .octets = { | ||
625 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
626 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
627 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
628 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
629 | 0x00, 0x66, 0x48, 0x5c, 0x78, 0x0e, 0x2f, 0x83, | ||
630 | 0xd7, 0x24, 0x33, 0xbd, 0x5d, 0x84, 0xa0, 0x6b, | ||
631 | 0xb6, 0x54, 0x1c, 0x2a, 0xf3, 0x1d, 0xae, 0x87, | ||
632 | 0x17, 0x28, 0xbf, 0x85, 0x6a, 0x17, 0x4f, 0x93, | ||
633 | 0xf4, | ||
634 | }, | ||
635 | .octets_len = 65, | ||
636 | .valid = 1, | ||
637 | }, | ||
638 | { | ||
639 | .description = | ||
640 | "zero x uncompressed point #1 on secp256r1 (flipped y_bit)", | ||
641 | .nid = NID_X9_62_prime256v1, | ||
642 | .octets = { | ||
643 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
644 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
645 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
646 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
647 | 0x00, 0x66, 0x48, 0x5c, 0x78, 0x0e, 0x2f, 0x83, | ||
648 | 0xd7, 0x24, 0x33, 0xbd, 0x5d, 0x84, 0xa0, 0x6b, | ||
649 | 0xb6, 0x54, 0x1c, 0x2a, 0xf3, 0x1d, 0xae, 0x87, | ||
650 | 0x17, 0x28, 0xbf, 0x85, 0x6a, 0x17, 0x4f, 0x93, | ||
651 | 0xf4, | ||
652 | }, | ||
653 | .octets_len = 65, | ||
654 | .valid = 0, | ||
655 | }, | ||
656 | { | ||
657 | .description = "zero x uncompressed point #2 on secp256r1", | ||
658 | .nid = NID_X9_62_prime256v1, | ||
659 | .octets = { | ||
660 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
661 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
662 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
663 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
664 | 0x00, 0x99, 0xb7, 0xa3, 0x86, 0xf1, 0xd0, 0x7c, | ||
665 | 0x29, 0xdb, 0xcc, 0x42, 0xa2, 0x7b, 0x5f, 0x94, | ||
666 | 0x49, 0xab, 0xe3, 0xd5, 0x0d, 0xe2, 0x51, 0x78, | ||
667 | 0xe8, 0xd7, 0x40, 0x7a, 0x95, 0xe8, 0xb0, 0x6c, | ||
668 | 0x0b, | ||
669 | }, | ||
670 | .octets_len = 65, | ||
671 | .valid = 1, | ||
672 | }, | ||
673 | { | ||
674 | .description = | ||
675 | "zero x uncompressed point #2 on secp256r1 (flipped y_bit)", | ||
676 | .nid = NID_X9_62_prime256v1, | ||
677 | .octets = { | ||
678 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
679 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
680 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
681 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
682 | 0x00, 0x99, 0xb7, 0xa3, 0x86, 0xf1, 0xd0, 0x7c, | ||
683 | 0x29, 0xdb, 0xcc, 0x42, 0xa2, 0x7b, 0x5f, 0x94, | ||
684 | 0x49, 0xab, 0xe3, 0xd5, 0x0d, 0xe2, 0x51, 0x78, | ||
685 | 0xe8, 0xd7, 0x40, 0x7a, 0x95, 0xe8, 0xb0, 0x6c, | ||
686 | 0x0b, | ||
687 | }, | ||
688 | .octets_len = 65, | ||
689 | .valid = 0, | ||
690 | }, | ||
691 | { | ||
692 | .description = "generic uncompressed point on secp256r1", | ||
693 | .nid = NID_X9_62_prime256v1, | ||
694 | .octets = { | ||
695 | 0x04, 0x23, 0xe5, 0x85, 0xa5, 0x4b, 0xda, 0x34, | ||
696 | 0x7e, 0xe5, 0x65, 0x53, 0x7f, 0x3b, 0xce, 0xe4, | ||
697 | 0x54, 0xd8, 0xa4, 0x5a, 0x53, 0x4b, 0xb0, 0x4c, | ||
698 | 0xb9, 0x31, 0x09, 0x29, 0xa2, 0x03, 0x4c, 0x73, | ||
699 | 0x20, 0xd2, 0xc6, 0x17, 0xca, 0xe3, 0xcf, 0xc2, | ||
700 | 0xd8, 0x31, 0xfe, 0xf1, 0x7c, 0x6f, 0x9d, 0x7a, | ||
701 | 0x01, 0x7c, 0x34, 0x65, 0x42, 0x05, 0xaf, 0xcc, | ||
702 | 0x04, 0xa3, 0x2f, 0x44, 0x14, 0xbe, 0xd8, 0xc2, | ||
703 | 0x03, | ||
704 | }, | ||
705 | .octets_len = 65, | ||
706 | .valid = 1, | ||
707 | }, | ||
708 | { | ||
709 | .description = | ||
710 | "generic uncompressed point on secp256r1 (flipped y_bit)", | ||
711 | .nid = NID_X9_62_prime256v1, | ||
712 | .octets = { | ||
713 | 0x05, 0x23, 0xe5, 0x85, 0xa5, 0x4b, 0xda, 0x34, | ||
714 | 0x7e, 0xe5, 0x65, 0x53, 0x7f, 0x3b, 0xce, 0xe4, | ||
715 | 0x54, 0xd8, 0xa4, 0x5a, 0x53, 0x4b, 0xb0, 0x4c, | ||
716 | 0xb9, 0x31, 0x09, 0x29, 0xa2, 0x03, 0x4c, 0x73, | ||
717 | 0x20, 0xd2, 0xc6, 0x17, 0xca, 0xe3, 0xcf, 0xc2, | ||
718 | 0xd8, 0x31, 0xfe, 0xf1, 0x7c, 0x6f, 0x9d, 0x7a, | ||
719 | 0x01, 0x7c, 0x34, 0x65, 0x42, 0x05, 0xaf, 0xcc, | ||
720 | 0x04, 0xa3, 0x2f, 0x44, 0x14, 0xbe, 0xd8, 0xc2, | ||
721 | 0x03, | ||
722 | }, | ||
723 | .octets_len = 65, | ||
724 | .valid = 0, | ||
725 | }, | ||
726 | { | ||
727 | .description = "zero x hybrid point #1 on secp256r1", | ||
728 | .nid = NID_X9_62_prime256v1, | ||
729 | .octets = { | ||
730 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
731 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
732 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
733 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
734 | 0x00, 0x66, 0x48, 0x5c, 0x78, 0x0e, 0x2f, 0x83, | ||
735 | 0xd7, 0x24, 0x33, 0xbd, 0x5d, 0x84, 0xa0, 0x6b, | ||
736 | 0xb6, 0x54, 0x1c, 0x2a, 0xf3, 0x1d, 0xae, 0x87, | ||
737 | 0x17, 0x28, 0xbf, 0x85, 0x6a, 0x17, 0x4f, 0x93, | ||
738 | 0xf4, | ||
739 | }, | ||
740 | .octets_len = 65, | ||
741 | .valid = 1, | ||
742 | }, | ||
743 | { | ||
744 | .description = | ||
745 | "zero x hybrid point #1 on secp256r1 (flipped y_bit)", | ||
746 | .nid = NID_X9_62_prime256v1, | ||
747 | .octets = { | ||
748 | 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
749 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
750 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
751 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
752 | 0x00, 0x66, 0x48, 0x5c, 0x78, 0x0e, 0x2f, 0x83, | ||
753 | 0xd7, 0x24, 0x33, 0xbd, 0x5d, 0x84, 0xa0, 0x6b, | ||
754 | 0xb6, 0x54, 0x1c, 0x2a, 0xf3, 0x1d, 0xae, 0x87, | ||
755 | 0x17, 0x28, 0xbf, 0x85, 0x6a, 0x17, 0x4f, 0x93, | ||
756 | 0xf4, | ||
757 | }, | ||
758 | .octets_len = 65, | ||
759 | .valid = 0, | ||
760 | }, | ||
761 | { | ||
762 | .description = "zero x hybrid point #2 on secp256r1", | ||
763 | .nid = NID_X9_62_prime256v1, | ||
764 | .octets = { | ||
765 | 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
766 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
767 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
768 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
769 | 0x00, 0x99, 0xb7, 0xa3, 0x86, 0xf1, 0xd0, 0x7c, | ||
770 | 0x29, 0xdb, 0xcc, 0x42, 0xa2, 0x7b, 0x5f, 0x94, | ||
771 | 0x49, 0xab, 0xe3, 0xd5, 0x0d, 0xe2, 0x51, 0x78, | ||
772 | 0xe8, 0xd7, 0x40, 0x7a, 0x95, 0xe8, 0xb0, 0x6c, | ||
773 | 0x0b, | ||
774 | }, | ||
775 | .octets_len = 65, | ||
776 | .valid = 1, | ||
777 | }, | ||
778 | { | ||
779 | .description = | ||
780 | "zero x hybrid point #2 on secp256r1 (flipped y_bit)", | ||
781 | .nid = NID_X9_62_prime256v1, | ||
782 | .octets = { | ||
783 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
784 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
785 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
786 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
787 | 0x00, 0x99, 0xb7, 0xa3, 0x86, 0xf1, 0xd0, 0x7c, | ||
788 | 0x29, 0xdb, 0xcc, 0x42, 0xa2, 0x7b, 0x5f, 0x94, | ||
789 | 0x49, 0xab, 0xe3, 0xd5, 0x0d, 0xe2, 0x51, 0x78, | ||
790 | 0xe8, 0xd7, 0x40, 0x7a, 0x95, 0xe8, 0xb0, 0x6c, | ||
791 | 0x0b, | ||
792 | }, | ||
793 | .octets_len = 65, | ||
794 | .valid = 0, | ||
795 | }, | ||
796 | { | ||
797 | .description = "generic hybrid point on secp256r1", | ||
798 | .nid = NID_X9_62_prime256v1, | ||
799 | .octets = { | ||
800 | 0x07, 0x38, 0xb2, 0x98, 0x38, 0x21, 0x6b, 0xec, | ||
801 | 0x87, 0xcf, 0x50, 0xbb, 0x65, 0x11, 0x96, 0x63, | ||
802 | 0xf3, 0x90, 0x64, 0xc3, 0x5c, 0x59, 0xa5, 0x6f, | ||
803 | 0xaf, 0x56, 0x2a, 0x0c, 0xc0, 0x3a, 0x9b, 0x92, | ||
804 | 0x85, 0x95, 0x54, 0xf3, 0x08, 0x0f, 0x78, 0x59, | ||
805 | 0xa2, 0x44, 0x2f, 0x19, 0x5d, 0xd5, 0xcd, 0xf6, | ||
806 | 0xa5, 0xbe, 0x2f, 0x83, 0x70, 0x94, 0xf5, 0xcd, | ||
807 | 0x8c, 0x40, 0x7f, 0xd8, 0x97, 0x92, 0x14, 0xf7, | ||
808 | 0xc5, | ||
809 | }, | ||
810 | .octets_len = 65, | ||
811 | .valid = 1, | ||
812 | }, | ||
813 | { | ||
814 | .description = "generic hybrid point on secp256r1", | ||
815 | .nid = NID_X9_62_prime256v1, | ||
816 | .octets = { | ||
817 | 0x06, 0x38, 0xb2, 0x98, 0x38, 0x21, 0x6b, 0xec, | ||
818 | 0x87, 0xcf, 0x50, 0xbb, 0x65, 0x11, 0x96, 0x63, | ||
819 | 0xf3, 0x90, 0x64, 0xc3, 0x5c, 0x59, 0xa5, 0x6f, | ||
820 | 0xaf, 0x56, 0x2a, 0x0c, 0xc0, 0x3a, 0x9b, 0x92, | ||
821 | 0x85, 0x95, 0x54, 0xf3, 0x08, 0x0f, 0x78, 0x59, | ||
822 | 0xa2, 0x44, 0x2f, 0x19, 0x5d, 0xd5, 0xcd, 0xf6, | ||
823 | 0xa5, 0xbe, 0x2f, 0x83, 0x70, 0x94, 0xf5, 0xcd, | ||
824 | 0x8c, 0x40, 0x7f, 0xd8, 0x97, 0x92, 0x14, 0xf7, | ||
825 | 0xc5, | ||
826 | }, | ||
827 | .octets_len = 65, | ||
828 | .valid = 0, | ||
829 | }, | ||
552 | }; | 830 | }; |
553 | 831 | ||
554 | static const size_t N_POINT_CONVERSIONS = | 832 | static const size_t N_POINT_CONVERSIONS = |