use super::{
CurveName, DeletionRecoveryLevel, EncryptionAlgorithm, KeyEncryptionAlgorithm, KeyOperation,
KeyRotationPolicyAction, KeyType, SignatureAlgorithm,
};
use azure_core::{base64, fmt::SafeDebug};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use time::OffsetDateTime;
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct BackupKeyResult {
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub value: Option<Vec<u8>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct CreateKeyParameters {
#[serde(rename = "crv", skip_serializing_if = "Option::is_none")]
pub curve: Option<CurveName>,
#[serde(rename = "attributes", skip_serializing_if = "Option::is_none")]
pub key_attributes: Option<KeyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_ops: Option<Vec<KeyOperation>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kty: Option<KeyType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub public_exponent: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub release_policy: Option<KeyReleasePolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<HashMap<String, String>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct DeletedKey {
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<KeyAttributes>,
#[serde(
default,
rename = "deletedDate",
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub deleted_date: Option<OffsetDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<JsonWebKey>,
#[serde(skip_serializing_if = "Option::is_none")]
pub managed: Option<bool>,
#[serde(rename = "recoveryId", skip_serializing_if = "Option::is_none")]
pub recovery_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub release_policy: Option<KeyReleasePolicy>,
#[serde(
default,
rename = "scheduledPurgeDate",
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub scheduled_purge_date: Option<OffsetDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<HashMap<String, String>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct DeletedKeyProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<KeyAttributes>,
#[serde(
default,
rename = "deletedDate",
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub deleted_date: Option<OffsetDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub managed: Option<bool>,
#[serde(rename = "recoveryId", skip_serializing_if = "Option::is_none")]
pub recovery_id: Option<String>,
#[serde(
default,
rename = "scheduledPurgeDate",
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub scheduled_purge_date: Option<OffsetDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<HashMap<String, String>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct GetRandomBytesParameters {
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i32>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct ImportKeyParameters {
#[serde(rename = "Hsm", skip_serializing_if = "Option::is_none")]
pub hsm: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<JsonWebKey>,
#[serde(rename = "attributes", skip_serializing_if = "Option::is_none")]
pub key_attributes: Option<KeyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub release_policy: Option<KeyReleasePolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<HashMap<String, String>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct JsonWebKey {
#[serde(skip_serializing_if = "Option::is_none")]
pub crv: Option<CurveName>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub d: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub dp: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub dq: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub e: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub k: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_ops: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kty: Option<KeyType>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub n: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub p: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub q: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub qi: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "key_hsm",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub t: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub x: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub y: Option<Vec<u8>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct Key {
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<KeyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<JsonWebKey>,
#[serde(skip_serializing_if = "Option::is_none")]
pub managed: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub release_policy: Option<KeyReleasePolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<HashMap<String, String>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct KeyAttestation {
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "certificatePemFile",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub certificate_pem_file: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "privateKeyAttestation",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub private_key_attestation: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "publicKeyAttestation",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub public_key_attestation: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct KeyAttributes {
#[serde(skip_serializing_if = "Option::is_none")]
pub attestation: Option<KeyAttestation>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub created: Option<OffsetDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(
default,
rename = "exp",
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub expires: Option<OffsetDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exportable: Option<bool>,
#[serde(rename = "hsmPlatform", skip_serializing_if = "Option::is_none")]
pub hsm_platform: Option<String>,
#[serde(
default,
rename = "nbf",
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub not_before: Option<OffsetDateTime>,
#[serde(rename = "recoverableDays", skip_serializing_if = "Option::is_none")]
pub recoverable_days: Option<i32>,
#[serde(rename = "recoveryLevel", skip_serializing_if = "Option::is_none")]
pub recovery_level: Option<DeletionRecoveryLevel>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub updated: Option<OffsetDateTime>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct KeyOperationParameters {
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "aad",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub additional_authenticated_data: Option<Vec<u8>>,
#[serde(rename = "alg", skip_serializing_if = "Option::is_none")]
pub algorithm: Option<EncryptionAlgorithm>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "tag",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub authentication_tag: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub iv: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub value: Option<Vec<u8>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct KeyOperationResult {
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "aad",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub additional_authenticated_data: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "tag",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub authentication_tag: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub iv: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kid: Option<String>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "value",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub result: Option<Vec<u8>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct KeyProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<KeyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub managed: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<HashMap<String, String>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct KeyReleasePolicy {
#[serde(rename = "contentType", skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "data",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub encoded_policy: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub immutable: Option<bool>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct KeyReleaseResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct KeyRotationPolicy {
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<KeyRotationPolicyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "lifetimeActions", skip_serializing_if = "Option::is_none")]
pub lifetime_actions: Option<Vec<LifetimeAction>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct KeyRotationPolicyAttributes {
#[serde(
default,
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub created: Option<OffsetDateTime>,
#[serde(rename = "expiryTime", skip_serializing_if = "Option::is_none")]
pub expiry_time: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
with = "azure_core::date::unix_time::option"
)]
pub updated: Option<OffsetDateTime>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct KeyVerifyResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<bool>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct LifetimeAction {
#[serde(skip_serializing_if = "Option::is_none")]
pub action: Option<LifetimeActionType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trigger: Option<LifetimeActionTrigger>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct LifetimeActionTrigger {
#[serde(rename = "timeAfterCreate", skip_serializing_if = "Option::is_none")]
pub time_after_create: Option<String>,
#[serde(rename = "timeBeforeExpiry", skip_serializing_if = "Option::is_none")]
pub time_before_expiry: Option<String>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct LifetimeActionType {
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub type_prop: Option<KeyRotationPolicyAction>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct ListDeletedKeyPropertiesResult {
#[serde(rename = "nextLink", skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
#[serde(default)]
pub value: Vec<DeletedKeyProperties>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct ListKeyPropertiesResult {
#[serde(rename = "nextLink", skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
#[serde(default)]
pub value: Vec<KeyProperties>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
#[non_exhaustive]
pub struct RandomBytes {
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub value: Option<Vec<u8>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct ReleaseParameters {
#[serde(rename = "enc", skip_serializing_if = "Option::is_none")]
pub algorithm: Option<KeyEncryptionAlgorithm>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
#[serde(rename = "target", skip_serializing_if = "Option::is_none")]
pub target_attestation_token: Option<String>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct RestoreKeyParameters {
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "value",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub key_backup: Option<Vec<u8>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct SignParameters {
#[serde(rename = "alg", skip_serializing_if = "Option::is_none")]
pub algorithm: Option<SignatureAlgorithm>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub value: Option<Vec<u8>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct UpdateKeyPropertiesParameters {
#[serde(rename = "attributes", skip_serializing_if = "Option::is_none")]
pub key_attributes: Option<KeyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_ops: Option<Vec<KeyOperation>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub release_policy: Option<KeyReleasePolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<HashMap<String, String>>,
}
#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
pub struct VerifyParameters {
#[serde(rename = "alg", skip_serializing_if = "Option::is_none")]
pub algorithm: Option<SignatureAlgorithm>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub digest: Option<Vec<u8>>,
#[serde(
default,
deserialize_with = "base64::deserialize_url_safe",
rename = "value",
serialize_with = "base64::serialize_url_safe",
skip_serializing_if = "Option::is_none"
)]
pub signature: Option<Vec<u8>>,
}