dwn_core/message/
mod.rs

1use jose_jwa::Signing;
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4
5pub use mime;
6pub use semver::Version;
7pub use time::OffsetDateTime;
8use xdid::core::did_url::DidUrl;
9
10pub mod cid;
11pub mod data;
12pub mod descriptor;
13
14#[skip_serializing_none]
15#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
16#[serde(rename_all = "camelCase")]
17pub struct Message {
18    pub record_id: String,
19    pub data: Option<data::Data>,
20    pub descriptor: descriptor::Descriptor,
21    pub attestation: Option<Jws>,
22    pub authorization: Option<Jws>,
23}
24
25#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
26pub struct Jws {
27    /// Base64 encoded payload.
28    pub payload: String,
29    pub signatures: Vec<Signature>,
30}
31
32#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
33pub struct Signature {
34    pub header: Header,
35    /// Base64 encoded signature.
36    pub signature: String,
37}
38
39#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
40pub struct Header {
41    pub alg: Signing,
42    pub kid: DidUrl,
43}
44
45#[skip_serializing_none]
46#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
47#[serde(rename_all = "camelCase")]
48pub struct AuthPayload {
49    pub descriptor_cid: String,
50    pub permissions_grant_cid: Option<String>,
51    pub attestation_cid: Option<String>,
52}