@@ -34,9 +34,9 @@ const EXAMPLE_OID_LARGE_ARC_1_BER: &[u8] = &hex!("0992268993F22C640101");
34
34
const EXAMPLE_OID_LARGE_ARC_1 : ObjectIdentifier =
35
35
ObjectIdentifier :: new_unwrap ( EXAMPLE_OID_LARGE_ARC_1_STR ) ;
36
36
37
- /// Example OID value with a large arc
38
- const EXAMPLE_OID_LARGE_ARC_2_STR : & str = "1.2.840.10045.4.3.4.1111111111 " ;
39
- const EXAMPLE_OID_LARGE_ARC_2_BER : & [ u8 ] = & hex ! ( "2A8648CE3D0403048491E8EB47 " ) ;
37
+ /// Example OID value with a large arc (namely `u32::MAX`, the edge case)
38
+ const EXAMPLE_OID_LARGE_ARC_2_STR : & str = "1.2.4294967295 " ;
39
+ const EXAMPLE_OID_LARGE_ARC_2_BER : & [ u8 ] = & hex ! ( "2A8FFFFFFF7F " ) ;
40
40
const EXAMPLE_OID_LARGE_ARC_2 : ObjectIdentifier =
41
41
ObjectIdentifier :: new_unwrap ( crate :: EXAMPLE_OID_LARGE_ARC_2_STR ) ;
42
42
@@ -87,16 +87,11 @@ fn from_bytes() {
87
87
assert_eq ! ( oid_largearc1. arc( 6 ) . unwrap( ) , 1 ) ;
88
88
assert_eq ! ( oid_largearc1, EXAMPLE_OID_LARGE_ARC_1 ) ;
89
89
90
- // 1.2.840.10045.4.3.4.1111111111
90
+ // 1.2.4294967295
91
91
let oid_largearc2 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_LARGE_ARC_2_BER ) . unwrap ( ) ;
92
92
assert_eq ! ( oid_largearc2. arc( 0 ) . unwrap( ) , 1 ) ;
93
93
assert_eq ! ( oid_largearc2. arc( 1 ) . unwrap( ) , 2 ) ;
94
- assert_eq ! ( oid_largearc2. arc( 2 ) . unwrap( ) , 840 ) ;
95
- assert_eq ! ( oid_largearc2. arc( 3 ) . unwrap( ) , 10045 ) ;
96
- assert_eq ! ( oid_largearc2. arc( 4 ) . unwrap( ) , 4 ) ;
97
- assert_eq ! ( oid_largearc2. arc( 5 ) . unwrap( ) , 3 ) ;
98
- assert_eq ! ( oid_largearc2. arc( 6 ) . unwrap( ) , 4 ) ;
99
- assert_eq ! ( oid_largearc2. arc( 7 ) . unwrap( ) , 1111111111 ) ;
94
+ assert_eq ! ( oid_largearc2. arc( 2 ) . unwrap( ) , 4294967295 ) ;
100
95
assert_eq ! ( oid_largearc2, EXAMPLE_OID_LARGE_ARC_2 ) ;
101
96
102
97
// Empty
@@ -140,6 +135,14 @@ fn from_str() {
140
135
assert_eq ! ( oid_largearc1. arc( 6 ) . unwrap( ) , 1 ) ;
141
136
assert_eq ! ( oid_largearc1, EXAMPLE_OID_LARGE_ARC_1 ) ;
142
137
138
+ let oid_largearc2 = EXAMPLE_OID_LARGE_ARC_2_STR
139
+ . parse :: < ObjectIdentifier > ( )
140
+ . unwrap ( ) ;
141
+ assert_eq ! ( oid_largearc2. arc( 0 ) . unwrap( ) , 1 ) ;
142
+ assert_eq ! ( oid_largearc2. arc( 1 ) . unwrap( ) , 2 ) ;
143
+ assert_eq ! ( oid_largearc2. arc( 2 ) . unwrap( ) , 4294967295 ) ;
144
+ assert_eq ! ( oid_largearc2, EXAMPLE_OID_LARGE_ARC_2 ) ;
145
+
143
146
// Truncated
144
147
assert_eq ! (
145
148
"1.2.840.10045.2." . parse:: <ObjectIdentifier >( ) ,
@@ -164,10 +167,18 @@ fn display() {
164
167
assert_eq ! ( EXAMPLE_OID_0 . to_string( ) , EXAMPLE_OID_0_STR ) ;
165
168
assert_eq ! ( EXAMPLE_OID_1 . to_string( ) , EXAMPLE_OID_1_STR ) ;
166
169
assert_eq ! ( EXAMPLE_OID_2 . to_string( ) , EXAMPLE_OID_2_STR ) ;
170
+ assert_eq ! (
171
+ EXAMPLE_OID_LARGE_ARC_0 . to_string( ) ,
172
+ EXAMPLE_OID_LARGE_ARC_0_STR
173
+ ) ;
167
174
assert_eq ! (
168
175
EXAMPLE_OID_LARGE_ARC_1 . to_string( ) ,
169
176
EXAMPLE_OID_LARGE_ARC_1_STR
170
177
) ;
178
+ assert_eq ! (
179
+ EXAMPLE_OID_LARGE_ARC_2 . to_string( ) ,
180
+ EXAMPLE_OID_LARGE_ARC_2_STR
181
+ ) ;
171
182
}
172
183
173
184
#[ test]
0 commit comments