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 context_id: Option<String>,
20    pub data: Option<data::Data>,
21    pub descriptor: descriptor::Descriptor,
22    pub attestation: Option<Jws>,
23    pub authorization: Option<Jws>,
24}
25
26#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
27pub struct Jws {
28    /// Base64 encoded payload.
29    pub payload: String,
30    pub signatures: Vec<Signature>,
31}
32
33#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
34pub struct Signature {
35    pub header: Header,
36    /// Base64 encoded signature.
37    pub signature: String,
38}
39
40#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
41pub struct Header {
42    pub alg: Signing,
43    pub kid: DidUrl,
44}
45
46#[skip_serializing_none]
47#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
48#[serde(rename_all = "camelCase")]
49pub struct AuthPayload {
50    pub descriptor_cid: String,
51    pub permissions_grant_cid: Option<String>,
52    pub attestation_cid: Option<String>,
53}