@@ -112,7 +112,7 @@ mod choice {
112
112
/// `Choice` with `IMPLICIT` tagging.
113
113
mod implicit {
114
114
use der:: {
115
- Choice , Decode , Encode , SliceWriter ,
115
+ Choice , Decode , Encode , Sequence , SliceWriter ,
116
116
asn1:: { BitStringRef , GeneralizedTime } ,
117
117
} ;
118
118
use hex_literal:: hex;
@@ -179,6 +179,13 @@ mod choice {
179
179
cs_time. encode ( & mut encoder) . unwrap ( ) ;
180
180
assert_eq ! ( TIME_DER , encoder. finish( ) . unwrap( ) ) ;
181
181
}
182
+
183
+ /// Test case for `CHOICE` inside `[0]` `EXPLICIT` tag in `SEQUENCE`.
184
+ #[ derive( Sequence , Debug , Eq , PartialEq ) ]
185
+ pub struct ExplicitChoiceInsideSequence < ' a > {
186
+ #[ asn1( tag_mode = "EXPLICIT" , context_specific = "0" ) ]
187
+ choice_field : ImplicitChoice < ' a > ,
188
+ }
182
189
}
183
190
}
184
191
@@ -709,12 +716,11 @@ mod decode_value {
709
716
/// Custom derive test cases for the `DecodeValue` + `EncodeValue` macro combo.
710
717
mod decode_encode_value {
711
718
use der:: {
712
- Decode , DecodeValue , Encode , EncodeValue , FixedTag , Header , IsConstructed , Length ,
713
- Sequence , SliceReader , SliceWriter , Tag , TagNumber ,
719
+ DecodeValue , EncodeValue , Header , IsConstructed , Length , SliceReader , SliceWriter , Tag ,
720
+ TagNumber ,
714
721
} ;
715
- use hex_literal:: hex;
716
722
717
- /// Example of a structure, that does not have a tag
723
+ /// Example of a structure, that does not have a tag and is not a sequence
718
724
#[ derive( DecodeValue , EncodeValue , Default , Eq , PartialEq , Debug ) ]
719
725
#[ asn1( tag_mode = "IMPLICIT" ) ]
720
726
struct DecodeEncodeCheck < ' a > {
@@ -762,10 +768,9 @@ mod decode_encode_value {
762
768
let mut buf = [ 0u8 ; 100 ] ;
763
769
let mut writer = SliceWriter :: new ( & mut buf) ;
764
770
obj. encode_value ( & mut writer) . unwrap ( ) ;
765
- let len = obj. value_len ( ) . unwrap ( ) ;
766
771
767
- let mut reader = SliceReader :: new ( & mut buf) . unwrap ( ) ;
768
- DecodeEncodeCheck :: decode_value ( & mut reader, header) ;
772
+ let mut reader = SliceReader :: new ( & buf) . unwrap ( ) ;
773
+ let _ = DecodeEncodeCheck :: decode_value ( & mut reader, header) ;
769
774
}
770
775
}
771
776
0 commit comments