identity_jose/jwk/
key_operation.rsuse core::fmt::Display;
use core::fmt::Formatter;
use core::fmt::Result;
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub enum JwkOperation {
Sign,
Verify,
Encrypt,
Decrypt,
WrapKey,
UnwrapKey,
DeriveKey,
DeriveBits,
ProofGeneration,
ProofVerification,
}
impl JwkOperation {
pub const fn name(&self) -> &'static str {
match self {
Self::Sign => "sign",
Self::Verify => "verify",
Self::Encrypt => "encrypt",
Self::Decrypt => "decrypt",
Self::WrapKey => "wrapKey",
Self::UnwrapKey => "unwrapKey",
Self::DeriveKey => "deriveKey",
Self::DeriveBits => "deriveBits",
Self::ProofGeneration => "proofGeneration",
Self::ProofVerification => "proofVerification",
}
}
pub const fn invert(&self) -> Self {
match self {
Self::Sign => Self::Verify,
Self::Verify => Self::Sign,
Self::Encrypt => Self::Decrypt,
Self::Decrypt => Self::Encrypt,
Self::WrapKey => Self::UnwrapKey,
Self::UnwrapKey => Self::WrapKey,
Self::DeriveKey => Self::DeriveKey,
Self::DeriveBits => Self::DeriveBits,
Self::ProofGeneration => Self::ProofVerification,
Self::ProofVerification => Self::ProofGeneration,
}
}
}
impl Display for JwkOperation {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
f.write_str(self.name())
}
}