@@ -9,15 +9,15 @@ pub const PKCS7_SIGNED_DATA_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840,
99pub const PKCS7_ENVELOPED_DATA_OID : asn1:: ObjectIdentifier = asn1:: oid!( 1 , 2 , 840 , 113549 , 1 , 7 , 3 ) ;
1010pub const PKCS7_ENCRYPTED_DATA_OID : asn1:: ObjectIdentifier = asn1:: oid!( 1 , 2 , 840 , 113549 , 1 , 7 , 6 ) ;
1111
12- #[ derive( asn1:: Asn1Write ) ]
12+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
1313pub struct ContentInfo < ' a > {
1414 pub _content_type : asn1:: DefinedByMarker < asn1:: ObjectIdentifier > ,
1515
1616 #[ defined_by( _content_type) ]
1717 pub content : Content < ' a > ,
1818}
1919
20- #[ derive( asn1:: Asn1DefinedByWrite ) ]
20+ #[ derive( asn1:: Asn1DefinedByWrite , asn1 :: Asn1DefinedByRead ) ]
2121pub enum Content < ' a > {
2222 #[ defined_by( PKCS7_ENVELOPED_DATA_OID ) ]
2323 EnvelopedData ( asn1:: Explicit < Box < EnvelopedData < ' a > > , 0 > ) ,
@@ -29,22 +29,38 @@ pub enum Content<'a> {
2929 EncryptedData ( asn1:: Explicit < EncryptedData < ' a > , 0 > ) ,
3030}
3131
32- #[ derive( asn1:: Asn1Write ) ]
32+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
3333pub struct SignedData < ' a > {
3434 pub version : u8 ,
35- pub digest_algorithms : asn1:: SetOfWriter < ' a , common:: AlgorithmIdentifier < ' a > > ,
35+ pub digest_algorithms : common:: Asn1ReadableOrWritable <
36+ asn1:: SetOf < ' a , common:: AlgorithmIdentifier < ' a > > ,
37+ asn1:: SetOfWriter < ' a , common:: AlgorithmIdentifier < ' a > > ,
38+ > ,
3639 pub content_info : ContentInfo < ' a > ,
3740 #[ implicit( 0 ) ]
38- pub certificates : Option < asn1:: SetOfWriter < ' a , & ' a certificate:: Certificate < ' a > > > ,
41+ pub certificates : Option <
42+ common:: Asn1ReadableOrWritable <
43+ asn1:: SetOf < ' a , certificate:: Certificate < ' a > > ,
44+ asn1:: SetOfWriter < ' a , & ' a certificate:: Certificate < ' a > > ,
45+ > ,
46+ > ,
3947
4048 // We don't ever supply any of these, so for now, don't fill out the fields.
4149 #[ implicit( 1 ) ]
42- pub crls : Option < asn1:: SetOfWriter < ' a , asn1:: Sequence < ' a > > > ,
43-
44- pub signer_infos : asn1:: SetOfWriter < ' a , SignerInfo < ' a > > ,
50+ pub crls : Option <
51+ common:: Asn1ReadableOrWritable <
52+ asn1:: SetOf < ' a , asn1:: Sequence < ' a > > ,
53+ asn1:: SetOfWriter < ' a , asn1:: Sequence < ' a > > ,
54+ > ,
55+ > ,
56+
57+ pub signer_infos : common:: Asn1ReadableOrWritable <
58+ asn1:: SetOf < ' a , SignerInfo < ' a > > ,
59+ asn1:: SetOfWriter < ' a , SignerInfo < ' a > > ,
60+ > ,
4561}
4662
47- #[ derive( asn1:: Asn1Write ) ]
63+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
4864pub struct SignerInfo < ' a > {
4965 pub version : u8 ,
5066 pub issuer_and_serial_number : IssuerAndSerialNumber < ' a > ,
@@ -59,42 +75,45 @@ pub struct SignerInfo<'a> {
5975 pub unauthenticated_attributes : Option < csr:: Attributes < ' a > > ,
6076}
6177
62- #[ derive( asn1:: Asn1Write ) ]
78+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
6379pub struct EnvelopedData < ' a > {
6480 pub version : u8 ,
65- pub recipient_infos : asn1:: SetOfWriter < ' a , RecipientInfo < ' a > > ,
81+ pub recipient_infos : common:: Asn1ReadableOrWritable <
82+ asn1:: SetOf < ' a , RecipientInfo < ' a > > ,
83+ asn1:: SetOfWriter < ' a , RecipientInfo < ' a > > ,
84+ > ,
6685 pub encrypted_content_info : EncryptedContentInfo < ' a > ,
6786}
6887
69- #[ derive( asn1:: Asn1Write ) ]
88+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
7089pub struct RecipientInfo < ' a > {
7190 pub version : u8 ,
7291 pub issuer_and_serial_number : IssuerAndSerialNumber < ' a > ,
7392 pub key_encryption_algorithm : common:: AlgorithmIdentifier < ' a > ,
7493 pub encrypted_key : & ' a [ u8 ] ,
7594}
7695
77- #[ derive( asn1:: Asn1Write ) ]
96+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
7897pub struct IssuerAndSerialNumber < ' a > {
7998 pub issuer : name:: Name < ' a > ,
8099 pub serial_number : asn1:: BigInt < ' a > ,
81100}
82101
83- #[ derive( asn1:: Asn1Write ) ]
102+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
84103pub struct EncryptedData < ' a > {
85104 pub version : u8 ,
86105 pub encrypted_content_info : EncryptedContentInfo < ' a > ,
87106}
88107
89- #[ derive( asn1:: Asn1Write ) ]
108+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
90109pub struct EncryptedContentInfo < ' a > {
91110 pub content_type : asn1:: ObjectIdentifier ,
92111 pub content_encryption_algorithm : common:: AlgorithmIdentifier < ' a > ,
93112 #[ implicit( 0 ) ]
94113 pub encrypted_content : Option < & ' a [ u8 ] > ,
95114}
96115
97- #[ derive( asn1:: Asn1Write ) ]
116+ #[ derive( asn1:: Asn1Write , asn1 :: Asn1Read ) ]
98117pub struct DigestInfo < ' a > {
99118 pub algorithm : common:: AlgorithmIdentifier < ' a > ,
100119 pub digest : & ' a [ u8 ] ,
0 commit comments