1use crate::{artifacts::SigningKeyExt, identity::Attribute};
4use alloc::string::String;
5use alloc::vec::Vec;
6use irma::{ProofStatus, SessionStatus};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct Parameters<T> {
13 pub format_version: u8,
15
16 pub public_key: T,
18}
19
20#[derive(Debug, Serialize, Deserialize, Clone)]
27pub struct DisclosureAttribute {
28 #[serde(rename = "t")]
30 pub atype: String,
31
32 #[serde(rename = "v")]
34 pub value: Option<String>,
35
36 #[serde(default, skip_serializing_if = "crate::util::is_false")]
38 pub optional: bool,
39}
40
41#[derive(Debug, Serialize, Deserialize)]
43pub struct IrmaAuthRequest {
44 pub con: Vec<DisclosureAttribute>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub validity: Option<u64>,
49}
50
51#[derive(Debug, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct KeyResponse<T> {
55 pub status: SessionStatus,
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub proof_status: Option<ProofStatus>,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub key: Option<T>,
65}
66
67#[derive(Debug, Serialize, Deserialize)]
69#[serde(rename_all = "camelCase")]
70pub struct SigningKeyRequest {
71 pub pub_sign_id: Vec<Attribute>,
73
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub priv_sign_id: Option<Vec<Attribute>>,
77}
78
79#[derive(Debug, Serialize, Deserialize)]
81#[serde(rename_all = "camelCase")]
82pub struct SigningKeyResponse {
83 pub status: SessionStatus,
85
86 #[serde(skip_serializing_if = "Option::is_none")]
88 pub proof_status: Option<ProofStatus>,
89
90 #[serde(skip_serializing_if = "Option::is_none")]
93 pub pub_sign_key: Option<SigningKeyExt>,
94
95 #[serde(skip_serializing_if = "Option::is_none")]
97 pub priv_sign_key: Option<SigningKeyExt>,
98}