@@ -673,6 +673,34 @@ static void der_set_test(void)
673673
674674*/
675675
676+ static void _der_oid_test (void )
677+ {
678+ static const unsigned char oid_x690_8_19_5_example [] = { 0x06 , 0x03 , 0x88 , 0x37 , 0x03 };
679+ unsigned long len , oid [3 ];
680+ unsigned char buf [64 ];
681+
682+ ltc_asn1_list * decoded_list , static_list [1 ];
683+
684+ len = sizeof (oid_x690_8_19_5_example );
685+ DO (der_decode_sequence_flexi (oid_x690_8_19_5_example , & len , & decoded_list ));
686+
687+ LTC_SET_ASN1 (static_list , 0 , LTC_ASN1_OBJECT_IDENTIFIER , (void * )decoded_list -> data , decoded_list -> size );
688+ len = sizeof (buf );
689+ DO (der_encode_object_identifier (decoded_list -> data , decoded_list -> size , buf , & len ));
690+ der_sequence_free (decoded_list );
691+
692+ DO (do_compare_testvector (buf , len , oid_x690_8_19_5_example , sizeof (oid_x690_8_19_5_example ), "OID X6.90 Ch. 8.19.5 Example" , 0 ));
693+
694+ oid [0 ] = 3 ;
695+ oid [1 ] = 4 ;
696+ oid [2 ] = 5 ;
697+
698+ len = sizeof (buf );
699+ SHOULD_FAIL (der_encode_object_identifier (oid , 3 , buf , & len ));
700+ len = sizeof (buf );
701+ SHOULD_FAIL (der_length_object_identifier (oid , 3 , & len ));
702+ }
703+
676704static void der_flexi_test (void )
677705{
678706 static const char printable_str [] = "printable" ;
@@ -1589,6 +1617,8 @@ int der_test(void)
15891617
15901618 der_cacert_test ();
15911619
1620+ _der_oid_test ();
1621+
15921622 y = 0xffffff00 ;
15931623#if ULONG_MAX == ULLONG_MAX
15941624 y <<= 32 ;
0 commit comments