ockam_identity/models/
purpose_key_attestation.rs1use ockam_core::compat::vec::Vec;
2
3use crate::models::{ChangeHash, Identifier, TimestampInSeconds};
4
5use minicbor::{CborLen, Decode, Encode};
6use ockam_vault::{
7 ECDSASHA256CurveP256PublicKey, ECDSASHA256CurveP256Signature, EdDSACurve25519PublicKey,
8 EdDSACurve25519Signature, X25519PublicKey,
9};
10
11pub const PURPOSE_KEY_ATTESTATION_DATA_TYPE: u8 = 2;
13
14#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, CborLen)]
17#[rustfmt::skip]
18pub struct PurposeKeyAttestation {
19 #[cbor(with = "minicbor::bytes")]
23 #[n(0)] pub data: Vec<u8>,
24 #[n(1)] pub signature: PurposeKeyAttestationSignature,
26}
27
28#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, CborLen)]
30#[rustfmt::skip]
31pub enum PurposeKeyAttestationSignature {
32 #[n(0)] EdDSACurve25519(#[n(0)] EdDSACurve25519Signature),
34 #[n(1)] ECDSASHA256CurveP256(#[n(0)] ECDSASHA256CurveP256Signature),
36}
37
38#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, CborLen)]
40#[rustfmt::skip]
41pub struct PurposeKeyAttestationData {
42 #[n(0)] pub subject: Identifier,
44 #[n(1)] pub subject_latest_change_hash: ChangeHash,
47 #[n(2)] pub public_key: PurposePublicKey,
49 #[n(3)] pub created_at: TimestampInSeconds,
51 #[n(4)] pub expires_at: TimestampInSeconds,
53}
54
55#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, CborLen)]
57#[rustfmt::skip]
58pub enum PurposePublicKey {
59 #[n(0)] SecureChannelStatic(#[n(0)] X25519PublicKey),
62 #[n(1)] CredentialSigning(#[n(0)] CredentialVerifyingKey),
64}
65
66#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, CborLen)]
68#[rustfmt::skip]
69pub enum CredentialVerifyingKey {
70 #[n(0)] EdDSACurve25519(#[n(0)] EdDSACurve25519PublicKey),
72 #[n(1)] ECDSASHA256CurveP256(#[n(0)] ECDSASHA256CurveP256PublicKey),
74}