@@ -23,10 +23,16 @@ const EXAMPLE_OID_2_BER: &[u8] = &hex!("60864801650304012A");
2323const EXAMPLE_OID_2 : ObjectIdentifier = ObjectIdentifier :: new_unwrap ( EXAMPLE_OID_2_STR ) ;
2424
2525/// Example OID value with a large arc
26- const EXAMPLE_OID_LARGE_ARC_STR : & str = "0.9.2342.19200300.100.1.1" ;
27- const EXAMPLE_OID_LARGE_ARC_BER : & [ u8 ] = & hex ! ( "0992268993F22C640101" ) ;
28- const EXAMPLE_OID_LARGE_ARC : ObjectIdentifier =
29- ObjectIdentifier :: new_unwrap ( "0.9.2342.19200300.100.1.1" ) ;
26+ const EXAMPLE_OID_LARGE_ARC_0_STR : & str = "1.2.16384" ;
27+ const EXAMPLE_OID_LARGE_ARC_0_BER : & [ u8 ] = & hex ! ( "2A818000" ) ;
28+ const EXAMPLE_OID_LARGE_ARC_0 : ObjectIdentifier =
29+ ObjectIdentifier :: new_unwrap ( crate :: EXAMPLE_OID_LARGE_ARC_0_STR ) ;
30+
31+ /// Example OID value with a large arc
32+ const EXAMPLE_OID_LARGE_ARC_1_STR : & str = "0.9.2342.19200300.100.1.1" ;
33+ const EXAMPLE_OID_LARGE_ARC_1_BER : & [ u8 ] = & hex ! ( "0992268993F22C640101" ) ;
34+ const EXAMPLE_OID_LARGE_ARC_1 : ObjectIdentifier =
35+ ObjectIdentifier :: new_unwrap ( EXAMPLE_OID_LARGE_ARC_1_STR ) ;
3036
3137/// Create an OID from a string.
3238pub fn oid ( s : & str ) -> ObjectIdentifier {
@@ -38,27 +44,37 @@ fn from_bytes() {
3844 let oid0 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_0_BER ) . unwrap ( ) ;
3945 assert_eq ! ( oid0. arc( 0 ) . unwrap( ) , 0 ) ;
4046 assert_eq ! ( oid0. arc( 1 ) . unwrap( ) , 9 ) ;
47+ assert_eq ! ( oid0. arc( 2 ) . unwrap( ) , 2342 ) ;
4148 assert_eq ! ( oid0, EXAMPLE_OID_0 ) ;
4249
4350 let oid1 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_1_BER ) . unwrap ( ) ;
4451 assert_eq ! ( oid1. arc( 0 ) . unwrap( ) , 1 ) ;
4552 assert_eq ! ( oid1. arc( 1 ) . unwrap( ) , 2 ) ;
53+ assert_eq ! ( oid1. arc( 2 ) . unwrap( ) , 840 ) ;
4654 assert_eq ! ( oid1, EXAMPLE_OID_1 ) ;
4755
4856 let oid2 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_2_BER ) . unwrap ( ) ;
4957 assert_eq ! ( oid2. arc( 0 ) . unwrap( ) , 2 ) ;
5058 assert_eq ! ( oid2. arc( 1 ) . unwrap( ) , 16 ) ;
59+ assert_eq ! ( oid2. arc( 2 ) . unwrap( ) , 840 ) ;
5160 assert_eq ! ( oid2, EXAMPLE_OID_2 ) ;
5261
53- let oid3 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_LARGE_ARC_BER ) . unwrap ( ) ;
54- assert_eq ! ( oid3. arc( 0 ) . unwrap( ) , 0 ) ;
55- assert_eq ! ( oid3. arc( 1 ) . unwrap( ) , 9 ) ;
56- assert_eq ! ( oid3. arc( 2 ) . unwrap( ) , 2342 ) ;
57- assert_eq ! ( oid3. arc( 3 ) . unwrap( ) , 19200300 ) ;
58- assert_eq ! ( oid3. arc( 4 ) . unwrap( ) , 100 ) ;
59- assert_eq ! ( oid3. arc( 5 ) . unwrap( ) , 1 ) ;
60- assert_eq ! ( oid3. arc( 6 ) . unwrap( ) , 1 ) ;
61- assert_eq ! ( oid3, EXAMPLE_OID_LARGE_ARC ) ;
62+ let oid_largearc0 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_LARGE_ARC_0_BER ) . unwrap ( ) ;
63+ assert_eq ! ( oid_largearc0. arc( 0 ) . unwrap( ) , 1 ) ;
64+ assert_eq ! ( oid_largearc0. arc( 1 ) . unwrap( ) , 2 ) ;
65+ assert_eq ! ( oid_largearc0. arc( 2 ) . unwrap( ) , 16384 ) ;
66+ assert_eq ! ( oid_largearc0. arc( 3 ) , None ) ;
67+ assert_eq ! ( oid_largearc0, EXAMPLE_OID_LARGE_ARC_0 ) ;
68+
69+ let oid_largearc1 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_LARGE_ARC_1_BER ) . unwrap ( ) ;
70+ assert_eq ! ( oid_largearc1. arc( 0 ) . unwrap( ) , 0 ) ;
71+ assert_eq ! ( oid_largearc1. arc( 1 ) . unwrap( ) , 9 ) ;
72+ assert_eq ! ( oid_largearc1. arc( 2 ) . unwrap( ) , 2342 ) ;
73+ assert_eq ! ( oid_largearc1. arc( 3 ) . unwrap( ) , 19200300 ) ;
74+ assert_eq ! ( oid_largearc1. arc( 4 ) . unwrap( ) , 100 ) ;
75+ assert_eq ! ( oid_largearc1. arc( 5 ) . unwrap( ) , 1 ) ;
76+ assert_eq ! ( oid_largearc1. arc( 6 ) . unwrap( ) , 1 ) ;
77+ assert_eq ! ( oid_largearc1, EXAMPLE_OID_LARGE_ARC_1 ) ;
6278
6379 // Empty
6480 assert_eq ! ( ObjectIdentifier :: from_bytes( & [ ] ) , Err ( Error :: Empty ) ) ;
@@ -81,17 +97,25 @@ fn from_str() {
8197 assert_eq ! ( oid2. arc( 1 ) . unwrap( ) , 16 ) ;
8298 assert_eq ! ( oid2, EXAMPLE_OID_2 ) ;
8399
84- let oid3 = EXAMPLE_OID_LARGE_ARC_STR
100+ let oid_largearc0 = EXAMPLE_OID_LARGE_ARC_0_STR
85101 . parse :: < ObjectIdentifier > ( )
86102 . unwrap ( ) ;
87- assert_eq ! ( oid3. arc( 0 ) . unwrap( ) , 0 ) ;
88- assert_eq ! ( oid3. arc( 1 ) . unwrap( ) , 9 ) ;
89- assert_eq ! ( oid3. arc( 2 ) . unwrap( ) , 2342 ) ;
90- assert_eq ! ( oid3. arc( 3 ) . unwrap( ) , 19200300 ) ;
91- assert_eq ! ( oid3. arc( 4 ) . unwrap( ) , 100 ) ;
92- assert_eq ! ( oid3. arc( 5 ) . unwrap( ) , 1 ) ;
93- assert_eq ! ( oid3. arc( 6 ) . unwrap( ) , 1 ) ;
94- assert_eq ! ( oid3, EXAMPLE_OID_LARGE_ARC ) ;
103+ assert_eq ! ( oid_largearc0. arc( 0 ) . unwrap( ) , 1 ) ;
104+ assert_eq ! ( oid_largearc0. arc( 1 ) . unwrap( ) , 2 ) ;
105+ assert_eq ! ( oid_largearc0. arc( 2 ) . unwrap( ) , 16384 ) ;
106+ assert_eq ! ( oid_largearc0, EXAMPLE_OID_LARGE_ARC_0 ) ;
107+
108+ let oid_largearc1 = EXAMPLE_OID_LARGE_ARC_1_STR
109+ . parse :: < ObjectIdentifier > ( )
110+ . unwrap ( ) ;
111+ assert_eq ! ( oid_largearc1. arc( 0 ) . unwrap( ) , 0 ) ;
112+ assert_eq ! ( oid_largearc1. arc( 1 ) . unwrap( ) , 9 ) ;
113+ assert_eq ! ( oid_largearc1. arc( 2 ) . unwrap( ) , 2342 ) ;
114+ assert_eq ! ( oid_largearc1. arc( 3 ) . unwrap( ) , 19200300 ) ;
115+ assert_eq ! ( oid_largearc1. arc( 4 ) . unwrap( ) , 100 ) ;
116+ assert_eq ! ( oid_largearc1. arc( 5 ) . unwrap( ) , 1 ) ;
117+ assert_eq ! ( oid_largearc1. arc( 6 ) . unwrap( ) , 1 ) ;
118+ assert_eq ! ( oid_largearc1, EXAMPLE_OID_LARGE_ARC_1 ) ;
95119
96120 // Truncated
97121 assert_eq ! (
@@ -117,7 +141,10 @@ fn display() {
117141 assert_eq ! ( EXAMPLE_OID_0 . to_string( ) , EXAMPLE_OID_0_STR ) ;
118142 assert_eq ! ( EXAMPLE_OID_1 . to_string( ) , EXAMPLE_OID_1_STR ) ;
119143 assert_eq ! ( EXAMPLE_OID_2 . to_string( ) , EXAMPLE_OID_2_STR ) ;
120- assert_eq ! ( EXAMPLE_OID_LARGE_ARC . to_string( ) , EXAMPLE_OID_LARGE_ARC_STR ) ;
144+ assert_eq ! (
145+ EXAMPLE_OID_LARGE_ARC_1 . to_string( ) ,
146+ EXAMPLE_OID_LARGE_ARC_1_STR
147+ ) ;
121148}
122149
123150#[ test]
0 commit comments