@@ -23,10 +23,16 @@ const EXAMPLE_OID_2_BER: &[u8] = &hex!("60864801650304012A");
23
23
const EXAMPLE_OID_2 : ObjectIdentifier = ObjectIdentifier :: new_unwrap ( EXAMPLE_OID_2_STR ) ;
24
24
25
25
/// 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 ) ;
30
36
31
37
/// Create an OID from a string.
32
38
pub fn oid ( s : & str ) -> ObjectIdentifier {
@@ -38,27 +44,37 @@ fn from_bytes() {
38
44
let oid0 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_0_BER ) . unwrap ( ) ;
39
45
assert_eq ! ( oid0. arc( 0 ) . unwrap( ) , 0 ) ;
40
46
assert_eq ! ( oid0. arc( 1 ) . unwrap( ) , 9 ) ;
47
+ assert_eq ! ( oid0. arc( 2 ) . unwrap( ) , 2342 ) ;
41
48
assert_eq ! ( oid0, EXAMPLE_OID_0 ) ;
42
49
43
50
let oid1 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_1_BER ) . unwrap ( ) ;
44
51
assert_eq ! ( oid1. arc( 0 ) . unwrap( ) , 1 ) ;
45
52
assert_eq ! ( oid1. arc( 1 ) . unwrap( ) , 2 ) ;
53
+ assert_eq ! ( oid1. arc( 2 ) . unwrap( ) , 840 ) ;
46
54
assert_eq ! ( oid1, EXAMPLE_OID_1 ) ;
47
55
48
56
let oid2 = ObjectIdentifier :: from_bytes ( EXAMPLE_OID_2_BER ) . unwrap ( ) ;
49
57
assert_eq ! ( oid2. arc( 0 ) . unwrap( ) , 2 ) ;
50
58
assert_eq ! ( oid2. arc( 1 ) . unwrap( ) , 16 ) ;
59
+ assert_eq ! ( oid2. arc( 2 ) . unwrap( ) , 840 ) ;
51
60
assert_eq ! ( oid2, EXAMPLE_OID_2 ) ;
52
61
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 ) ;
62
78
63
79
// Empty
64
80
assert_eq ! ( ObjectIdentifier :: from_bytes( & [ ] ) , Err ( Error :: Empty ) ) ;
@@ -81,17 +97,25 @@ fn from_str() {
81
97
assert_eq ! ( oid2. arc( 1 ) . unwrap( ) , 16 ) ;
82
98
assert_eq ! ( oid2, EXAMPLE_OID_2 ) ;
83
99
84
- let oid3 = EXAMPLE_OID_LARGE_ARC_STR
100
+ let oid_largearc0 = EXAMPLE_OID_LARGE_ARC_0_STR
85
101
. parse :: < ObjectIdentifier > ( )
86
102
. 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 ) ;
95
119
96
120
// Truncated
97
121
assert_eq ! (
@@ -117,7 +141,10 @@ fn display() {
117
141
assert_eq ! ( EXAMPLE_OID_0 . to_string( ) , EXAMPLE_OID_0_STR ) ;
118
142
assert_eq ! ( EXAMPLE_OID_1 . to_string( ) , EXAMPLE_OID_1_STR ) ;
119
143
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
+ ) ;
121
148
}
122
149
123
150
#[ test]
0 commit comments