1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! Certificates, read into a model that keeps what a decision needs.
//!
//! A certificate is read once and kept as it arrived: every field borrows the
//! document, and the bytes a signature is computed over are handed back as the
//! range they occupy rather than re-encoded from what was understood. A parser
//! that re-encodes has decided that its own understanding is the document, and
//! a signature checked over that says nothing about the file somebody was sent.
//!
//! Two kinds of fault are kept apart, because they lead to different answers.
//!
//! What cannot be represented honestly is refused: an unreadable encoding, a
//! field the certificate's own version says is not there, two copies of one
//! extension with no way to say which applies, or an algorithm named outside
//! the signed bytes that differs from the one named inside them.
//!
//! What can be represented is reported rather than refused, even when it is
//! wrong: a negative serial number, a validity interval that ends before it
//! starts, a critical extension nobody here knows. Refusing those would leave
//! the product unable to explain a document a person is holding, and
//! explaining is the product.
extern crate alloc;
pub use AlgorithmIdentifier;
pub use ;
pub use ;
pub use ;
pub use PublicKeyInfo;
pub use ;
pub use Time;