Skip to main content

mvm_core/
signing.rs

1use serde::{Deserialize, Serialize};
2
3/// A signed payload: the raw bytes of the canonical JSON, the Ed25519
4/// signature, and an identifier for which key produced the signature.
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct SignedPayload {
7    pub payload: Vec<u8>,
8    pub signature: Vec<u8>,
9    pub signer_id: String,
10}
11
12#[cfg(test)]
13mod tests {
14    use super::*;
15
16    #[test]
17    fn test_signed_payload_serialization() {
18        let sp = SignedPayload {
19            payload: b"test data".to_vec(),
20            signature: vec![0u8; 64],
21            signer_id: "test-signer".to_string(),
22        };
23        let json = serde_json::to_string(&sp).unwrap();
24        let parsed: SignedPayload = serde_json::from_str(&json).unwrap();
25        assert_eq!(parsed.payload, b"test data");
26        assert_eq!(parsed.signature.len(), 64);
27        assert_eq!(parsed.signer_id, "test-signer");
28    }
29}