lean_ctx_protocol/
evidence.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
5pub struct EvidenceRefV1 {
6 pub kind: EvidenceKind,
7 pub uri: String,
8 pub digest: String,
9 pub signature_status: SignatureStatus,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13pub enum EvidenceKind {
14 ProviderReceipt,
15 RuntimeLog,
16 SignedBatch,
17 QualityMeasurement,
18 ExperimentOutcome,
19}
20
21#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
22pub enum SignatureStatus {
23 Verified,
24 Unverified,
25 NotSigned,
26}
27
28#[cfg(test)]
29mod tests {
30 use crate::{EvidenceKind, EvidenceRefV1, SignatureStatus};
31
32 #[test]
33 fn serialization_round_trip() {
34 let evidence = EvidenceRefV1 {
35 kind: EvidenceKind::ProviderReceipt,
36 uri: "urn:receipt:1".to_owned(),
37 digest: "sha256:abc".to_owned(),
38 signature_status: SignatureStatus::Verified,
39 };
40 let json = serde_json::to_string(&evidence).expect("evidence should serialize");
41 let decoded = serde_json::from_str(&json).expect("evidence should deserialize");
42 assert_eq!(evidence, decoded);
43 }
44}