@@ -646,6 +646,242 @@ CERTIFICATE ( bad_path_len_crt,
646646 0x53 , 0x5a , 0xc8 , 0x99 , 0xe5 , 0xdf , 0x79 , 0x07 ,
647647 0x00 , 0x2c , 0x9f , 0x49 , 0x91 , 0x21 , 0xeb , 0xfc ) );
648648
649+ /*
650+ * subject iPXE self-test EC intermediate CA
651+ * issuer iPXE self-test root CA
652+ */
653+ CERTIFICATE ( ecintermediate_crt ,
654+ DATA ( 0x30 , 0x82 , 0x03 , 0x3a , 0x30 , 0x82 , 0x02 , 0xa3 , 0xa0 , 0x03 ,
655+ 0x02 , 0x01 , 0x02 , 0x02 , 0x01 , 0x04 , 0x30 , 0x0d , 0x06 , 0x09 ,
656+ 0x2a , 0x86 , 0x48 , 0x86 , 0xf7 , 0x0d , 0x01 , 0x01 , 0x0b , 0x05 ,
657+ 0x00 , 0x30 , 0x81 , 0x88 , 0x31 , 0x0b , 0x30 , 0x09 , 0x06 , 0x03 ,
658+ 0x55 , 0x04 , 0x06 , 0x13 , 0x02 , 0x47 , 0x42 , 0x31 , 0x17 , 0x30 ,
659+ 0x15 , 0x06 , 0x03 , 0x55 , 0x04 , 0x08 , 0x0c , 0x0e , 0x43 , 0x61 ,
660+ 0x6d , 0x62 , 0x72 , 0x69 , 0x64 , 0x67 , 0x65 , 0x73 , 0x68 , 0x69 ,
661+ 0x72 , 0x65 , 0x31 , 0x12 , 0x30 , 0x10 , 0x06 , 0x03 , 0x55 , 0x04 ,
662+ 0x07 , 0x0c , 0x09 , 0x43 , 0x61 , 0x6d , 0x62 , 0x72 , 0x69 , 0x64 ,
663+ 0x67 , 0x65 , 0x31 , 0x18 , 0x30 , 0x16 , 0x06 , 0x03 , 0x55 , 0x04 ,
664+ 0x0a , 0x0c , 0x0f , 0x46 , 0x65 , 0x6e , 0x20 , 0x53 , 0x79 , 0x73 ,
665+ 0x74 , 0x65 , 0x6d , 0x73 , 0x20 , 0x4c , 0x74 , 0x64 , 0x31 , 0x11 ,
666+ 0x30 , 0x0f , 0x06 , 0x03 , 0x55 , 0x04 , 0x0b , 0x0c , 0x08 , 0x69 ,
667+ 0x70 , 0x78 , 0x65 , 0x2e , 0x6f , 0x72 , 0x67 , 0x31 , 0x1f , 0x30 ,
668+ 0x1d , 0x06 , 0x03 , 0x55 , 0x04 , 0x03 , 0x0c , 0x16 , 0x69 , 0x50 ,
669+ 0x58 , 0x45 , 0x20 , 0x73 , 0x65 , 0x6c , 0x66 , 0x2d , 0x74 , 0x65 ,
670+ 0x73 , 0x74 , 0x20 , 0x72 , 0x6f , 0x6f , 0x74 , 0x20 , 0x43 , 0x41 ,
671+ 0x30 , 0x1e , 0x17 , 0x0d , 0x32 , 0x35 , 0x31 , 0x32 , 0x31 , 0x39 ,
672+ 0x31 , 0x34 , 0x33 , 0x32 , 0x35 , 0x39 , 0x5a , 0x17 , 0x0d , 0x32 ,
673+ 0x38 , 0x30 , 0x39 , 0x31 , 0x34 , 0x31 , 0x34 , 0x33 , 0x32 , 0x35 ,
674+ 0x39 , 0x5a , 0x30 , 0x81 , 0x93 , 0x31 , 0x0b , 0x30 , 0x09 , 0x06 ,
675+ 0x03 , 0x55 , 0x04 , 0x06 , 0x13 , 0x02 , 0x47 , 0x42 , 0x31 , 0x17 ,
676+ 0x30 , 0x15 , 0x06 , 0x03 , 0x55 , 0x04 , 0x08 , 0x0c , 0x0e , 0x43 ,
677+ 0x61 , 0x6d , 0x62 , 0x72 , 0x69 , 0x64 , 0x67 , 0x65 , 0x73 , 0x68 ,
678+ 0x69 , 0x72 , 0x65 , 0x31 , 0x12 , 0x30 , 0x10 , 0x06 , 0x03 , 0x55 ,
679+ 0x04 , 0x07 , 0x0c , 0x09 , 0x43 , 0x61 , 0x6d , 0x62 , 0x72 , 0x69 ,
680+ 0x64 , 0x67 , 0x65 , 0x31 , 0x18 , 0x30 , 0x16 , 0x06 , 0x03 , 0x55 ,
681+ 0x04 , 0x0a , 0x0c , 0x0f , 0x46 , 0x65 , 0x6e , 0x20 , 0x53 , 0x79 ,
682+ 0x73 , 0x74 , 0x65 , 0x6d , 0x73 , 0x20 , 0x4c , 0x74 , 0x64 , 0x31 ,
683+ 0x11 , 0x30 , 0x0f , 0x06 , 0x03 , 0x55 , 0x04 , 0x0b , 0x0c , 0x08 ,
684+ 0x69 , 0x70 , 0x78 , 0x65 , 0x2e , 0x6f , 0x72 , 0x67 , 0x31 , 0x2a ,
685+ 0x30 , 0x28 , 0x06 , 0x03 , 0x55 , 0x04 , 0x03 , 0x0c , 0x21 , 0x69 ,
686+ 0x50 , 0x58 , 0x45 , 0x20 , 0x73 , 0x65 , 0x6c , 0x66 , 0x2d , 0x74 ,
687+ 0x65 , 0x73 , 0x74 , 0x20 , 0x45 , 0x43 , 0x20 , 0x69 , 0x6e , 0x74 ,
688+ 0x65 , 0x72 , 0x6d , 0x65 , 0x64 , 0x69 , 0x61 , 0x74 , 0x65 , 0x20 ,
689+ 0x43 , 0x41 , 0x30 , 0x59 , 0x30 , 0x13 , 0x06 , 0x07 , 0x2a , 0x86 ,
690+ 0x48 , 0xce , 0x3d , 0x02 , 0x01 , 0x06 , 0x08 , 0x2a , 0x86 , 0x48 ,
691+ 0xce , 0x3d , 0x03 , 0x01 , 0x07 , 0x03 , 0x42 , 0x00 , 0x04 , 0xf8 ,
692+ 0xb9 , 0xac , 0x83 , 0x58 , 0xf1 , 0xa9 , 0x6f , 0x85 , 0x22 , 0xf7 ,
693+ 0x04 , 0x8d , 0x52 , 0xff , 0xef , 0x85 , 0xd1 , 0x43 , 0xfa , 0xdb ,
694+ 0x1a , 0xa1 , 0x8d , 0x8b , 0x40 , 0x6f , 0x85 , 0x2f , 0x38 , 0x4c ,
695+ 0x19 , 0x79 , 0xe0 , 0x6a , 0x52 , 0x1f , 0x6c , 0x78 , 0x3e , 0x2e ,
696+ 0x06 , 0x40 , 0x35 , 0x8b , 0x93 , 0xe8 , 0xe1 , 0xef , 0x37 , 0x93 ,
697+ 0xe6 , 0x70 , 0x37 , 0xf3 , 0x12 , 0x05 , 0x82 , 0x46 , 0xdd , 0xf2 ,
698+ 0x8a , 0x26 , 0x70 , 0xa3 , 0x81 , 0xed , 0x30 , 0x81 , 0xea , 0x30 ,
699+ 0x0f , 0x06 , 0x03 , 0x55 , 0x1d , 0x13 , 0x01 , 0x01 , 0xff , 0x04 ,
700+ 0x05 , 0x30 , 0x03 , 0x01 , 0x01 , 0xff , 0x30 , 0x0e , 0x06 , 0x03 ,
701+ 0x55 , 0x1d , 0x0f , 0x01 , 0x01 , 0xff , 0x04 , 0x04 , 0x03 , 0x02 ,
702+ 0x02 , 0x04 , 0x30 , 0x1d , 0x06 , 0x03 , 0x55 , 0x1d , 0x0e , 0x04 ,
703+ 0x16 , 0x04 , 0x14 , 0x15 , 0x30 , 0x20 , 0x14 , 0x09 , 0xba , 0x24 ,
704+ 0x27 , 0x38 , 0x39 , 0x28 , 0xc9 , 0x02 , 0x62 , 0x4e , 0x76 , 0x79 ,
705+ 0x91 , 0x89 , 0x9b , 0x30 , 0x81 , 0xa7 , 0x06 , 0x03 , 0x55 , 0x1d ,
706+ 0x23 , 0x04 , 0x81 , 0x9f , 0x30 , 0x81 , 0x9c , 0xa1 , 0x81 , 0x8e ,
707+ 0xa4 , 0x81 , 0x8b , 0x30 , 0x81 , 0x88 , 0x31 , 0x0b , 0x30 , 0x09 ,
708+ 0x06 , 0x03 , 0x55 , 0x04 , 0x06 , 0x13 , 0x02 , 0x47 , 0x42 , 0x31 ,
709+ 0x17 , 0x30 , 0x15 , 0x06 , 0x03 , 0x55 , 0x04 , 0x08 , 0x0c , 0x0e ,
710+ 0x43 , 0x61 , 0x6d , 0x62 , 0x72 , 0x69 , 0x64 , 0x67 , 0x65 , 0x73 ,
711+ 0x68 , 0x69 , 0x72 , 0x65 , 0x31 , 0x12 , 0x30 , 0x10 , 0x06 , 0x03 ,
712+ 0x55 , 0x04 , 0x07 , 0x0c , 0x09 , 0x43 , 0x61 , 0x6d , 0x62 , 0x72 ,
713+ 0x69 , 0x64 , 0x67 , 0x65 , 0x31 , 0x18 , 0x30 , 0x16 , 0x06 , 0x03 ,
714+ 0x55 , 0x04 , 0x0a , 0x0c , 0x0f , 0x46 , 0x65 , 0x6e , 0x20 , 0x53 ,
715+ 0x79 , 0x73 , 0x74 , 0x65 , 0x6d , 0x73 , 0x20 , 0x4c , 0x74 , 0x64 ,
716+ 0x31 , 0x11 , 0x30 , 0x0f , 0x06 , 0x03 , 0x55 , 0x04 , 0x0b , 0x0c ,
717+ 0x08 , 0x69 , 0x70 , 0x78 , 0x65 , 0x2e , 0x6f , 0x72 , 0x67 , 0x31 ,
718+ 0x1f , 0x30 , 0x1d , 0x06 , 0x03 , 0x55 , 0x04 , 0x03 , 0x0c , 0x16 ,
719+ 0x69 , 0x50 , 0x58 , 0x45 , 0x20 , 0x73 , 0x65 , 0x6c , 0x66 , 0x2d ,
720+ 0x74 , 0x65 , 0x73 , 0x74 , 0x20 , 0x72 , 0x6f , 0x6f , 0x74 , 0x20 ,
721+ 0x43 , 0x41 , 0x82 , 0x09 , 0x00 , 0xc6 , 0xb8 , 0x9c , 0x58 , 0xd2 ,
722+ 0xdc , 0xc9 , 0x5d , 0x30 , 0x0d , 0x06 , 0x09 , 0x2a , 0x86 , 0x48 ,
723+ 0x86 , 0xf7 , 0x0d , 0x01 , 0x01 , 0x0b , 0x05 , 0x00 , 0x03 , 0x81 ,
724+ 0x81 , 0x00 , 0x19 , 0x30 , 0x56 , 0x0d , 0x5d , 0x6c , 0x4d , 0x7c ,
725+ 0x68 , 0x47 , 0x59 , 0xf1 , 0xde , 0xd6 , 0x6b , 0xdc , 0xa4 , 0x43 ,
726+ 0x01 , 0x1b , 0xff , 0xb3 , 0xfc , 0x78 , 0xda , 0x31 , 0xe0 , 0x36 ,
727+ 0xd8 , 0x0c , 0x5d , 0x4e , 0xb7 , 0x33 , 0xd2 , 0xb3 , 0x2c , 0x41 ,
728+ 0xb0 , 0xc6 , 0x8a , 0xba , 0x64 , 0xe8 , 0x85 , 0x46 , 0x81 , 0x3a ,
729+ 0x8f , 0xef , 0x17 , 0x66 , 0x68 , 0x91 , 0xbd , 0x54 , 0xea , 0x03 ,
730+ 0xa4 , 0xf9 , 0x15 , 0x47 , 0x2a , 0xde , 0xeb , 0xe0 , 0x2c , 0xd8 ,
731+ 0x49 , 0x1a , 0x10 , 0xed , 0x72 , 0x78 , 0x77 , 0x94 , 0xed , 0xf9 ,
732+ 0x68 , 0xe6 , 0x93 , 0x93 , 0xb5 , 0x99 , 0x1b , 0xd7 , 0x07 , 0x1d ,
733+ 0xe3 , 0x94 , 0xa6 , 0xd3 , 0x48 , 0xcc , 0x7a , 0x1f , 0x59 , 0xba ,
734+ 0x31 , 0x23 , 0xf9 , 0x09 , 0xe5 , 0x2f , 0xda , 0xea , 0xf3 , 0xd8 ,
735+ 0xc8 , 0xa8 , 0x71 , 0xb9 , 0x69 , 0xf3 , 0x17 , 0x4c , 0xc2 , 0xf1 ,
736+ 0x67 , 0xbb , 0xf5 , 0x8c , 0x4e , 0x46 , 0x63 , 0x58 , 0x54 , 0x8e ),
737+ FINGERPRINT ( 0x21 , 0x7b , 0x48 , 0x59 , 0xf1 , 0x5e , 0x8a , 0x75 ,
738+ 0xd1 , 0xee , 0x60 , 0x4a , 0x7d , 0x8f , 0xa8 , 0xe2 ,
739+ 0x6c , 0x25 , 0xc4 , 0x05 , 0x13 , 0x46 , 0x65 , 0x63 ,
740+ 0x0b , 0x8d , 0x46 , 0x52 , 0x6e , 0x3c , 0x4e , 0x10 ) );
741+
742+ /*
743+ * subject iPXE self-test EC leaf CA
744+ * issuer iPXE self-test EC intermediate CA
745+ */
746+ CERTIFICATE ( ecleaf_crt ,
747+ DATA ( 0x30 , 0x82 , 0x02 , 0x74 , 0x30 , 0x82 , 0x02 , 0x1b , 0xa0 , 0x03 ,
748+ 0x02 , 0x01 , 0x02 , 0x02 , 0x01 , 0x02 , 0x30 , 0x0a , 0x06 , 0x08 ,
749+ 0x2a , 0x86 , 0x48 , 0xce , 0x3d , 0x04 , 0x03 , 0x02 , 0x30 , 0x81 ,
750+ 0x93 , 0x31 , 0x0b , 0x30 , 0x09 , 0x06 , 0x03 , 0x55 , 0x04 , 0x06 ,
751+ 0x13 , 0x02 , 0x47 , 0x42 , 0x31 , 0x17 , 0x30 , 0x15 , 0x06 , 0x03 ,
752+ 0x55 , 0x04 , 0x08 , 0x0c , 0x0e , 0x43 , 0x61 , 0x6d , 0x62 , 0x72 ,
753+ 0x69 , 0x64 , 0x67 , 0x65 , 0x73 , 0x68 , 0x69 , 0x72 , 0x65 , 0x31 ,
754+ 0x12 , 0x30 , 0x10 , 0x06 , 0x03 , 0x55 , 0x04 , 0x07 , 0x0c , 0x09 ,
755+ 0x43 , 0x61 , 0x6d , 0x62 , 0x72 , 0x69 , 0x64 , 0x67 , 0x65 , 0x31 ,
756+ 0x18 , 0x30 , 0x16 , 0x06 , 0x03 , 0x55 , 0x04 , 0x0a , 0x0c , 0x0f ,
757+ 0x46 , 0x65 , 0x6e , 0x20 , 0x53 , 0x79 , 0x73 , 0x74 , 0x65 , 0x6d ,
758+ 0x73 , 0x20 , 0x4c , 0x74 , 0x64 , 0x31 , 0x11 , 0x30 , 0x0f , 0x06 ,
759+ 0x03 , 0x55 , 0x04 , 0x0b , 0x0c , 0x08 , 0x69 , 0x70 , 0x78 , 0x65 ,
760+ 0x2e , 0x6f , 0x72 , 0x67 , 0x31 , 0x2a , 0x30 , 0x28 , 0x06 , 0x03 ,
761+ 0x55 , 0x04 , 0x03 , 0x0c , 0x21 , 0x69 , 0x50 , 0x58 , 0x45 , 0x20 ,
762+ 0x73 , 0x65 , 0x6c , 0x66 , 0x2d , 0x74 , 0x65 , 0x73 , 0x74 , 0x20 ,
763+ 0x45 , 0x43 , 0x20 , 0x69 , 0x6e , 0x74 , 0x65 , 0x72 , 0x6d , 0x65 ,
764+ 0x64 , 0x69 , 0x61 , 0x74 , 0x65 , 0x20 , 0x43 , 0x41 , 0x30 , 0x1e ,
765+ 0x17 , 0x0d , 0x32 , 0x35 , 0x31 , 0x32 , 0x31 , 0x39 , 0x31 , 0x34 ,
766+ 0x33 , 0x32 , 0x35 , 0x39 , 0x5a , 0x17 , 0x0d , 0x32 , 0x38 , 0x30 ,
767+ 0x39 , 0x31 , 0x34 , 0x31 , 0x34 , 0x33 , 0x32 , 0x35 , 0x39 , 0x5a ,
768+ 0x30 , 0x81 , 0x8b , 0x31 , 0x0b , 0x30 , 0x09 , 0x06 , 0x03 , 0x55 ,
769+ 0x04 , 0x06 , 0x13 , 0x02 , 0x47 , 0x42 , 0x31 , 0x17 , 0x30 , 0x15 ,
770+ 0x06 , 0x03 , 0x55 , 0x04 , 0x08 , 0x0c , 0x0e , 0x43 , 0x61 , 0x6d ,
771+ 0x62 , 0x72 , 0x69 , 0x64 , 0x67 , 0x65 , 0x73 , 0x68 , 0x69 , 0x72 ,
772+ 0x65 , 0x31 , 0x12 , 0x30 , 0x10 , 0x06 , 0x03 , 0x55 , 0x04 , 0x07 ,
773+ 0x0c , 0x09 , 0x43 , 0x61 , 0x6d , 0x62 , 0x72 , 0x69 , 0x64 , 0x67 ,
774+ 0x65 , 0x31 , 0x18 , 0x30 , 0x16 , 0x06 , 0x03 , 0x55 , 0x04 , 0x0a ,
775+ 0x0c , 0x0f , 0x46 , 0x65 , 0x6e , 0x20 , 0x53 , 0x79 , 0x73 , 0x74 ,
776+ 0x65 , 0x6d , 0x73 , 0x20 , 0x4c , 0x74 , 0x64 , 0x31 , 0x11 , 0x30 ,
777+ 0x0f , 0x06 , 0x03 , 0x55 , 0x04 , 0x0b , 0x0c , 0x08 , 0x69 , 0x70 ,
778+ 0x78 , 0x65 , 0x2e , 0x6f , 0x72 , 0x67 , 0x31 , 0x22 , 0x30 , 0x20 ,
779+ 0x06 , 0x03 , 0x55 , 0x04 , 0x03 , 0x0c , 0x19 , 0x69 , 0x50 , 0x58 ,
780+ 0x45 , 0x20 , 0x73 , 0x65 , 0x6c , 0x66 , 0x2d , 0x74 , 0x65 , 0x73 ,
781+ 0x74 , 0x20 , 0x45 , 0x43 , 0x20 , 0x6c , 0x65 , 0x61 , 0x66 , 0x20 ,
782+ 0x43 , 0x41 , 0x30 , 0x59 , 0x30 , 0x13 , 0x06 , 0x07 , 0x2a , 0x86 ,
783+ 0x48 , 0xce , 0x3d , 0x02 , 0x01 , 0x06 , 0x08 , 0x2a , 0x86 , 0x48 ,
784+ 0xce , 0x3d , 0x03 , 0x01 , 0x07 , 0x03 , 0x42 , 0x00 , 0x04 , 0xa4 ,
785+ 0x10 , 0x14 , 0x39 , 0xde , 0x28 , 0x87 , 0x52 , 0xb0 , 0xe3 , 0x87 ,
786+ 0x1b , 0x0f , 0xeb , 0xdf , 0x9b , 0x78 , 0x47 , 0xeb , 0x76 , 0xbb ,
787+ 0xf6 , 0x6d , 0x26 , 0x0e , 0x2b , 0xec , 0xd2 , 0x8e , 0x78 , 0xac ,
788+ 0x35 , 0x44 , 0xd7 , 0x79 , 0x3f , 0x97 , 0x01 , 0x8e , 0x8f , 0x08 ,
789+ 0xcb , 0x87 , 0x1e , 0xd2 , 0xba , 0x1b , 0x4b , 0xd2 , 0x93 , 0x99 ,
790+ 0x62 , 0x05 , 0xeb , 0x75 , 0x2a , 0x8f , 0xf9 , 0xdb , 0x9c , 0xf4 ,
791+ 0xbb , 0x60 , 0x8d , 0xa3 , 0x66 , 0x30 , 0x64 , 0x30 , 0x12 , 0x06 ,
792+ 0x03 , 0x55 , 0x1d , 0x13 , 0x01 , 0x01 , 0xff , 0x04 , 0x08 , 0x30 ,
793+ 0x06 , 0x01 , 0x01 , 0xff , 0x02 , 0x01 , 0x00 , 0x30 , 0x0e , 0x06 ,
794+ 0x03 , 0x55 , 0x1d , 0x0f , 0x01 , 0x01 , 0xff , 0x04 , 0x04 , 0x03 ,
795+ 0x02 , 0x02 , 0x04 , 0x30 , 0x1d , 0x06 , 0x03 , 0x55 , 0x1d , 0x0e ,
796+ 0x04 , 0x16 , 0x04 , 0x14 , 0xbc , 0xca , 0xd5 , 0xfb , 0x11 , 0x6d ,
797+ 0xf4 , 0xa8 , 0x43 , 0x12 , 0x5f , 0x72 , 0xe8 , 0x28 , 0xe1 , 0x9a ,
798+ 0xe8 , 0xd5 , 0xc7 , 0x7f , 0x30 , 0x1f , 0x06 , 0x03 , 0x55 , 0x1d ,
799+ 0x23 , 0x04 , 0x18 , 0x30 , 0x16 , 0x80 , 0x14 , 0x15 , 0x30 , 0x20 ,
800+ 0x14 , 0x09 , 0xba , 0x24 , 0x27 , 0x38 , 0x39 , 0x28 , 0xc9 , 0x02 ,
801+ 0x62 , 0x4e , 0x76 , 0x79 , 0x91 , 0x89 , 0x9b , 0x30 , 0x0a , 0x06 ,
802+ 0x08 , 0x2a , 0x86 , 0x48 , 0xce , 0x3d , 0x04 , 0x03 , 0x02 , 0x03 ,
803+ 0x47 , 0x00 , 0x30 , 0x44 , 0x02 , 0x20 , 0x22 , 0x73 , 0x07 , 0xe2 ,
804+ 0x21 , 0xaa , 0xc5 , 0x0a , 0x88 , 0x51 , 0xd6 , 0x8e , 0x51 , 0xf7 ,
805+ 0x67 , 0x88 , 0x6e , 0xe4 , 0xe4 , 0x14 , 0xb7 , 0x5b , 0x4d , 0xd1 ,
806+ 0xfc , 0x21 , 0xc8 , 0xd8 , 0x94 , 0xf6 , 0x7e , 0x54 , 0x02 , 0x20 ,
807+ 0x33 , 0x2a , 0x0c , 0x58 , 0xfd , 0x0f , 0xd5 , 0x89 , 0x79 , 0x60 ,
808+ 0x81 , 0xeb , 0x23 , 0x4f , 0x49 , 0x92 , 0x09 , 0xa5 , 0x0f , 0xb6 ,
809+ 0xf3 , 0x52 , 0xa3 , 0x2e , 0xf6 , 0x37 , 0xbf , 0x9f , 0x9d , 0x7a ,
810+ 0xbf , 0x15 ),
811+ FINGERPRINT ( 0xe3 , 0x46 , 0x2e , 0x10 , 0x43 , 0x1b , 0xca , 0xb8 ,
812+ 0x7c , 0x2e , 0xa0 , 0xd5 , 0x60 , 0x09 , 0xb6 , 0xef ,
813+ 0x5d , 0x62 , 0x23 , 0xe1 , 0xcd , 0xbb , 0x71 , 0x28 ,
814+ 0xf0 , 0x93 , 0xd7 , 0xf3 , 0x6e , 0x1e , 0x71 , 0xe5 ) );
815+
816+ /*
817+ * subject boot.test.ipxe.org
818+ * issuer iPXE self-test EC leaf CA
819+ */
820+ CERTIFICATE ( ecserver_crt ,
821+ DATA ( 0x30 , 0x82 , 0x02 , 0x43 , 0x30 , 0x82 , 0x01 , 0xe8 , 0xa0 , 0x03 ,
822+ 0x02 , 0x01 , 0x02 , 0x02 , 0x01 , 0x03 , 0x30 , 0x0a , 0x06 , 0x08 ,
823+ 0x2a , 0x86 , 0x48 , 0xce , 0x3d , 0x04 , 0x03 , 0x02 , 0x30 , 0x81 ,
824+ 0x8b , 0x31 , 0x0b , 0x30 , 0x09 , 0x06 , 0x03 , 0x55 , 0x04 , 0x06 ,
825+ 0x13 , 0x02 , 0x47 , 0x42 , 0x31 , 0x17 , 0x30 , 0x15 , 0x06 , 0x03 ,
826+ 0x55 , 0x04 , 0x08 , 0x0c , 0x0e , 0x43 , 0x61 , 0x6d , 0x62 , 0x72 ,
827+ 0x69 , 0x64 , 0x67 , 0x65 , 0x73 , 0x68 , 0x69 , 0x72 , 0x65 , 0x31 ,
828+ 0x12 , 0x30 , 0x10 , 0x06 , 0x03 , 0x55 , 0x04 , 0x07 , 0x0c , 0x09 ,
829+ 0x43 , 0x61 , 0x6d , 0x62 , 0x72 , 0x69 , 0x64 , 0x67 , 0x65 , 0x31 ,
830+ 0x18 , 0x30 , 0x16 , 0x06 , 0x03 , 0x55 , 0x04 , 0x0a , 0x0c , 0x0f ,
831+ 0x46 , 0x65 , 0x6e , 0x20 , 0x53 , 0x79 , 0x73 , 0x74 , 0x65 , 0x6d ,
832+ 0x73 , 0x20 , 0x4c , 0x74 , 0x64 , 0x31 , 0x11 , 0x30 , 0x0f , 0x06 ,
833+ 0x03 , 0x55 , 0x04 , 0x0b , 0x0c , 0x08 , 0x69 , 0x70 , 0x78 , 0x65 ,
834+ 0x2e , 0x6f , 0x72 , 0x67 , 0x31 , 0x22 , 0x30 , 0x20 , 0x06 , 0x03 ,
835+ 0x55 , 0x04 , 0x03 , 0x0c , 0x19 , 0x69 , 0x50 , 0x58 , 0x45 , 0x20 ,
836+ 0x73 , 0x65 , 0x6c , 0x66 , 0x2d , 0x74 , 0x65 , 0x73 , 0x74 , 0x20 ,
837+ 0x45 , 0x43 , 0x20 , 0x6c , 0x65 , 0x61 , 0x66 , 0x20 , 0x43 , 0x41 ,
838+ 0x30 , 0x1e , 0x17 , 0x0d , 0x32 , 0x35 , 0x31 , 0x32 , 0x31 , 0x39 ,
839+ 0x31 , 0x34 , 0x33 , 0x32 , 0x35 , 0x39 , 0x5a , 0x17 , 0x0d , 0x32 ,
840+ 0x36 , 0x31 , 0x32 , 0x31 , 0x39 , 0x31 , 0x34 , 0x33 , 0x32 , 0x35 ,
841+ 0x39 , 0x5a , 0x30 , 0x81 , 0x84 , 0x31 , 0x0b , 0x30 , 0x09 , 0x06 ,
842+ 0x03 , 0x55 , 0x04 , 0x06 , 0x13 , 0x02 , 0x47 , 0x42 , 0x31 , 0x17 ,
843+ 0x30 , 0x15 , 0x06 , 0x03 , 0x55 , 0x04 , 0x08 , 0x0c , 0x0e , 0x43 ,
844+ 0x61 , 0x6d , 0x62 , 0x72 , 0x69 , 0x64 , 0x67 , 0x65 , 0x73 , 0x68 ,
845+ 0x69 , 0x72 , 0x65 , 0x31 , 0x12 , 0x30 , 0x10 , 0x06 , 0x03 , 0x55 ,
846+ 0x04 , 0x07 , 0x0c , 0x09 , 0x43 , 0x61 , 0x6d , 0x62 , 0x72 , 0x69 ,
847+ 0x64 , 0x67 , 0x65 , 0x31 , 0x18 , 0x30 , 0x16 , 0x06 , 0x03 , 0x55 ,
848+ 0x04 , 0x0a , 0x0c , 0x0f , 0x46 , 0x65 , 0x6e , 0x20 , 0x53 , 0x79 ,
849+ 0x73 , 0x74 , 0x65 , 0x6d , 0x73 , 0x20 , 0x4c , 0x74 , 0x64 , 0x31 ,
850+ 0x11 , 0x30 , 0x0f , 0x06 , 0x03 , 0x55 , 0x04 , 0x0b , 0x0c , 0x08 ,
851+ 0x69 , 0x70 , 0x78 , 0x65 , 0x2e , 0x6f , 0x72 , 0x67 , 0x31 , 0x1b ,
852+ 0x30 , 0x19 , 0x06 , 0x03 , 0x55 , 0x04 , 0x03 , 0x0c , 0x12 , 0x62 ,
853+ 0x6f , 0x6f , 0x74 , 0x2e , 0x74 , 0x65 , 0x73 , 0x74 , 0x2e , 0x69 ,
854+ 0x70 , 0x78 , 0x65 , 0x2e , 0x6f , 0x72 , 0x67 , 0x30 , 0x59 , 0x30 ,
855+ 0x13 , 0x06 , 0x07 , 0x2a , 0x86 , 0x48 , 0xce , 0x3d , 0x02 , 0x01 ,
856+ 0x06 , 0x08 , 0x2a , 0x86 , 0x48 , 0xce , 0x3d , 0x03 , 0x01 , 0x07 ,
857+ 0x03 , 0x42 , 0x00 , 0x04 , 0x81 , 0xac , 0xb9 , 0xde , 0x2e , 0xf9 ,
858+ 0xae , 0x5c , 0x33 , 0xba , 0x43 , 0x54 , 0xeb , 0xc6 , 0x08 , 0xa1 ,
859+ 0xed , 0xf7 , 0x6a , 0x78 , 0x77 , 0x8b , 0x2c , 0x59 , 0x61 , 0x6d ,
860+ 0x25 , 0xaf , 0x2c , 0xe4 , 0x3e , 0x22 , 0x65 , 0x85 , 0xa4 , 0x9a ,
861+ 0x7f , 0xe3 , 0xbe , 0x6c , 0x65 , 0xa1 , 0x4f , 0x74 , 0x60 , 0x06 ,
862+ 0x8b , 0xf2 , 0x5f , 0xe3 , 0xdf , 0x8b , 0xc2 , 0xb9 , 0x67 , 0x0e ,
863+ 0xcc , 0x4e , 0x87 , 0x53 , 0x2e , 0xad , 0x71 , 0xbb , 0xa3 , 0x42 ,
864+ 0x30 , 0x40 , 0x30 , 0x1d , 0x06 , 0x03 , 0x55 , 0x1d , 0x0e , 0x04 ,
865+ 0x16 , 0x04 , 0x14 , 0x4f , 0xe2 , 0x6c , 0x54 , 0xd0 , 0x6c , 0x66 ,
866+ 0x39 , 0xb8 , 0x2a , 0x3f , 0x30 , 0x6e , 0x56 , 0x84 , 0x3b , 0xb2 ,
867+ 0x6b , 0xef , 0x89 , 0x30 , 0x1f , 0x06 , 0x03 , 0x55 , 0x1d , 0x23 ,
868+ 0x04 , 0x18 , 0x30 , 0x16 , 0x80 , 0x14 , 0xbc , 0xca , 0xd5 , 0xfb ,
869+ 0x11 , 0x6d , 0xf4 , 0xa8 , 0x43 , 0x12 , 0x5f , 0x72 , 0xe8 , 0x28 ,
870+ 0xe1 , 0x9a , 0xe8 , 0xd5 , 0xc7 , 0x7f , 0x30 , 0x0a , 0x06 , 0x08 ,
871+ 0x2a , 0x86 , 0x48 , 0xce , 0x3d , 0x04 , 0x03 , 0x02 , 0x03 , 0x49 ,
872+ 0x00 , 0x30 , 0x46 , 0x02 , 0x21 , 0x00 , 0x8d , 0x22 , 0x2a , 0x92 ,
873+ 0xcf , 0x39 , 0xc6 , 0xbe , 0x01 , 0x09 , 0x82 , 0x75 , 0x2b , 0xe2 ,
874+ 0xd7 , 0xf0 , 0x78 , 0x2e , 0xde , 0x95 , 0x0a , 0xbf , 0xbe , 0x2e ,
875+ 0xb4 , 0x17 , 0x0f , 0x44 , 0x22 , 0xa4 , 0x27 , 0x27 , 0x02 , 0x21 ,
876+ 0x00 , 0x80 , 0xa8 , 0x37 , 0xab , 0xd6 , 0xf4 , 0x38 , 0x73 , 0xe0 ,
877+ 0x48 , 0x69 , 0x67 , 0xbc , 0xbb , 0xfd , 0x3e , 0x2a , 0xb4 , 0xe7 ,
878+ 0xd0 , 0x93 , 0xb3 , 0xff , 0xc8 , 0xd0 , 0x9a , 0x8b , 0xc6 , 0x06 ,
879+ 0xfa , 0xe3 , 0x8d ),
880+ FINGERPRINT ( 0xcf , 0x32 , 0x56 , 0xb9 , 0x9c , 0x0c , 0x4a , 0xf5 ,
881+ 0x92 , 0x59 , 0x90 , 0x11 , 0x87 , 0x17 , 0x85 , 0xea ,
882+ 0xc8 , 0x8c , 0x5e , 0x13 , 0xe2 , 0x09 , 0xb6 , 0xe9 ,
883+ 0x15 , 0xa8 , 0xf5 , 0x57 , 0x93 , 0x47 , 0x46 , 0xc2 ) );
884+
649885/** Valid certificate chain up to boot.test.ipxe.org */
650886CHAIN ( server_chain , & server_crt , & leaf_crt , & intermediate_crt , & root_crt );
651887
@@ -666,6 +902,13 @@ CHAIN ( useless_chain, &useless_crt, &leaf_crt, &intermediate_crt, &root_crt );
666902CHAIN ( bad_path_len_chain , & bad_path_len_crt , & useless_crt , & leaf_crt ,
667903 & intermediate_crt , & root_crt );
668904
905+ /** Valid certificate chain up to ECDSA boot.test.ipxe.org */
906+ CHAIN ( ecserver_chain ,
907+ & ecserver_crt , & ecleaf_crt , & ecintermediate_crt , & root_crt );
908+
909+ /** Broken certificate chain up to ECDSA boot.test.ipxe.org */
910+ CHAIN ( broken_ecserver_chain , & ecserver_crt , & ecintermediate_crt , & root_crt );
911+
669912/** Empty certificate store */
670913static struct x509_chain empty_store = {
671914 .refcnt = REF_INIT ( ref_no_free ),
@@ -706,6 +949,9 @@ static struct x509_root dummy_root = {
706949/** Time at which all test certificates are valid */
707950static time_t test_time = 1332374737ULL ; /* Thu Mar 22 00:05:37 2012 */
708951
952+ /** Time at which all ECDSA test certificates are valid */
953+ static time_t ectest_time = 1766154603ULL ; /* Fri 19 Dec 14:30:03 GMT 2025 */
954+
709955/** Time at which end-entity test certificates are invalid */
710956static time_t test_expired = 1375573111ULL ; /* Sat Aug 3 23:38:31 2013 */
711957
@@ -994,6 +1240,9 @@ static void x509_test_exec ( void ) {
9941240 x509_certificate_ok ( & server_crt );
9951241 x509_certificate_ok ( & not_ca_crt );
9961242 x509_certificate_ok ( & bad_path_len_crt );
1243+ x509_certificate_ok ( & ecintermediate_crt );
1244+ x509_certificate_ok ( & ecleaf_crt );
1245+ x509_certificate_ok ( & ecserver_crt );
9971246
9981247 /* Check cache functionality */
9991248 x509_cached_ok ( & root_crt );
@@ -1003,6 +1252,9 @@ static void x509_test_exec ( void ) {
10031252 x509_cached_ok ( & server_crt );
10041253 x509_cached_ok ( & not_ca_crt );
10051254 x509_cached_ok ( & bad_path_len_crt );
1255+ x509_cached_ok ( & ecintermediate_crt );
1256+ x509_cached_ok ( & ecleaf_crt );
1257+ x509_cached_ok ( & ecserver_crt );
10061258
10071259 /* Check all certificate fingerprints */
10081260 x509_fingerprint_ok ( & root_crt );
@@ -1012,6 +1264,9 @@ static void x509_test_exec ( void ) {
10121264 x509_fingerprint_ok ( & server_crt );
10131265 x509_fingerprint_ok ( & not_ca_crt );
10141266 x509_fingerprint_ok ( & bad_path_len_crt );
1267+ x509_fingerprint_ok ( & ecintermediate_crt );
1268+ x509_fingerprint_ok ( & ecleaf_crt );
1269+ x509_fingerprint_ok ( & ecserver_crt );
10151270
10161271 /* Check pairwise issuing */
10171272 x509_check_issuer_ok ( & intermediate_crt , & root_crt );
@@ -1020,6 +1275,9 @@ static void x509_test_exec ( void ) {
10201275 x509_check_issuer_ok ( & server_crt , & leaf_crt );
10211276 x509_check_issuer_fail_ok ( & not_ca_crt , & server_crt );
10221277 x509_check_issuer_ok ( & bad_path_len_crt , & useless_crt );
1278+ x509_check_issuer_ok ( & ecintermediate_crt , & root_crt );
1279+ x509_check_issuer_ok ( & ecleaf_crt , & ecintermediate_crt );
1280+ x509_check_issuer_ok ( & ecserver_crt , & ecleaf_crt );
10231281
10241282 /* Check root certificate stores */
10251283 x509_check_root_ok ( & root_crt , & test_root );
@@ -1061,6 +1319,8 @@ static void x509_test_exec ( void ) {
10611319 x509_chain_ok ( & not_ca_chain );
10621320 x509_chain_ok ( & useless_chain );
10631321 x509_chain_ok ( & bad_path_len_chain );
1322+ x509_chain_ok ( & ecserver_chain );
1323+ x509_chain_ok ( & broken_ecserver_chain );
10641324
10651325 /* Check certificate chains */
10661326 x509_validate_chain_ok ( & server_chain , test_time ,
@@ -1081,6 +1341,10 @@ static void x509_test_exec ( void ) {
10811341 & empty_store , & test_root );
10821342 x509_validate_chain_fail_ok ( & bad_path_len_chain , test_time ,
10831343 & empty_store , & test_root );
1344+ x509_validate_chain_ok ( & ecserver_chain , ectest_time , & empty_store ,
1345+ & test_root );
1346+ x509_validate_chain_fail_ok ( & broken_ecserver_chain , ectest_time ,
1347+ & empty_store , & test_root );
10841348
10851349 /* Check certificate chain expiry times */
10861350 x509_validate_chain_fail_ok ( & server_chain , test_expired ,
@@ -1110,6 +1374,8 @@ static void x509_test_exec ( void ) {
11101374 assert ( list_empty ( & empty_store .links ) );
11111375
11121376 /* Drop chain references */
1377+ x509_chain_put ( broken_ecserver_chain .chain );
1378+ x509_chain_put ( ecserver_chain .chain );
11131379 x509_chain_put ( bad_path_len_chain .chain );
11141380 x509_chain_put ( useless_chain .chain );
11151381 x509_chain_put ( not_ca_chain .chain );
@@ -1118,6 +1384,9 @@ static void x509_test_exec ( void ) {
11181384 x509_chain_put ( server_chain .chain );
11191385
11201386 /* Drop certificate references */
1387+ x509_put ( ecserver_crt .cert );
1388+ x509_put ( ecintermediate_crt .cert );
1389+ x509_put ( ecleaf_crt .cert );
11211390 x509_put ( bad_path_len_crt .cert );
11221391 x509_put ( not_ca_crt .cert );
11231392 x509_put ( server_crt .cert );
@@ -1137,5 +1406,7 @@ struct self_test x509_test __self_test = {
11371406REQUIRING_SYMBOL ( x509_test );
11381407REQUIRE_OBJECT ( rsa_sha1 );
11391408REQUIRE_OBJECT ( rsa_sha256 );
1409+ REQUIRE_OBJECT ( ecdsa_sha256 );
1410+ REQUIRE_OBJECT ( oid_p256 );
11401411REQUIRE_OBJECT ( ipv4 );
11411412REQUIRE_OBJECT ( ipv6 );
0 commit comments