pub struct Proof {
pub type_: String,
pub cryptosuite: String,
pub created: DateTime<FixedOffset>,
pub verification_method: Url,
pub proof_purpose: String,
pub proof_value: String,
pub domain: Option<String>,
pub challenge: Option<String>,
pub previous_proof: Option<Url>,
pub extra: BTreeMap<String, Value>,
}Expand description
FEP-8b32 / W3C Data Integrity Proof block.
The mandatory fields per FEP-8b32 §3.2 are
type_, cryptosuite,
created,
verification_method,
proof_purpose and
proof_value. The remaining fields appear in
specialised use cases (challenge–response auth, proof chaining).
Fields§
§type_: StringDiscriminator for the proof scheme. MUST be
Proof::DATA_INTEGRITY_PROOF when the proof is a Data
Integrity / FEP-8b32 proof.
cryptosuite: StringCryptosuite identifier (e.g. "eddsa-jcs-2022",
"eddsa-rdfc-2022", "ecdsa-jcs-2019"). FEP-8b32 currently
mandates eddsa-jcs-2022 for Fediverse interoperability.
created: DateTime<FixedOffset>Wall-clock time at which the signer produced the proof. RFC 3339
/ xsd:dateTime form on the wire.
verification_method: UrlURL identifying the verification method (key) used to produce
the signature. MUST resolve via the actor’s assertionMethod
or authentication list.
proof_purpose: StringReason the signature was generated. Per FEP-8b32 §3.2 always
"assertionMethod" for content-signing in the Fediverse;
"authentication" is reserved for challenge–response flows.
proof_value: StringOpaque cryptosuite-specific signature value, multibase-encoded.
domain: Option<String>Optional domain to which this proof is bound (e.g. for preventing cross-domain replay).
challenge: Option<String>Optional challenge nonce for interactive authentication proofs.
previous_proof: Option<Url>Optional URL of a previous proof in a proof chain (e.g. used by
FEP-1b12 group Announce re-signing).
extra: BTreeMap<String, Value>Forward-compatible bag for proof parameters that future cryptosuites may add.
Implementations§
Source§impl Proof
impl Proof
Sourcepub const DATA_INTEGRITY_PROOF: &'static str = "DataIntegrityProof"
pub const DATA_INTEGRITY_PROOF: &'static str = "DataIntegrityProof"
The mandatory type discriminator value for Data Integrity /
FEP-8b32 proofs.
Sourcepub const CRYPTOSUITE_EDDSA_JCS_2022: &'static str = "eddsa-jcs-2022"
pub const CRYPTOSUITE_EDDSA_JCS_2022: &'static str = "eddsa-jcs-2022"
The eddsa-jcs-2022 cryptosuite identifier — the Fediverse
baseline per FEP-8b32 §3.1.
Sourcepub const PURPOSE_ASSERTION_METHOD: &'static str = "assertionMethod"
pub const PURPOSE_ASSERTION_METHOD: &'static str = "assertionMethod"
The proofPurpose value used by FEP-8b32 to attest that the
signed document is asserted by the signer.
Sourcepub const PURPOSE_AUTHENTICATION: &'static str = "authentication"
pub const PURPOSE_AUTHENTICATION: &'static str = "authentication"
The proofPurpose value used by FEP-8b32 challenge-response
authentication.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Proof
impl<'de> Deserialize<'de> for Proof
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Proof
impl StructuralPartialEq for Proof
Auto Trait Implementations§
impl Freeze for Proof
impl RefUnwindSafe for Proof
impl Send for Proof
impl Sync for Proof
impl Unpin for Proof
impl UnsafeUnpin for Proof
impl UnwindSafe for Proof
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.