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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//! Data structures for OpenPGP Web of Trust calculations.
//!
//! These data structures model the bare minimum level of detail for Web of Trust calculations.
//!
//! See <https://codeberg.org/openpgp/wot/> for more context.
//!
//! A [Network] (the top level WoT object) models a set of [Certification] and [Delegation] edges,
//! which represent relationships between [Certificate] and [Identity] objects.
//!
//! The goal of the representation in this crate is to model an absolutely minimal view of a WoT
//! network. This minimalism keeps the task of correctly *forming* a WoT [Network] graph cleanly
//! separated from the WoT algorithm that performs searches in the graph:
//!
//! All OpenPGP semantics considerations (such as validity, e.g. regarding expiration and
//! revocation) are normalized out of the `wot-network` representation.
//! Invalid objects (Certificates, Identities or Certifications) are simply not rendered in a
//! [Network] view.
//!
//! It is the task of a separate "network formation" subsystem to interpret the semantics of
//! OpenPGP certificates and transform them into a normalized [Network] graph.
//!
//! In particular, there is no notion of the passage of time in this WoT [Network] graph
//! representation. A [Network] represents a snapshot of the Web of Trust relations within a set
//! of Certificates at a given reference time.
//!
//! Searches in a Network are modeled with the [search::WotSearchTrait] and
//! [search::ResidualNetworkTrait] traits.
pub
use fmt;
pub use ;
pub use ;
pub use ;
pub use TrustDepth;
/// A relationship between a [Certificate] and an [Identity]
// TODO: The term binding in OpenPGP is very ambiguous.
// A certificate may hold multiple bindings, so maybe `IdentityBinding` is more fitting?
/// A regular expression that can be used to limit the applicability of [Delegation]s
///
/// See <https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.22> for the regex syntax that
/// applies and what it applies to.
;