identity_jose/jwk/
key_operation.rs1use core::fmt::Display;
5use core::fmt::Formatter;
6use core::fmt::Result;
7
8#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, serde::Deserialize, serde::Serialize)]
12#[serde(rename_all = "camelCase")]
13pub enum JwkOperation {
14 Sign,
16 Verify,
18 Encrypt,
20 Decrypt,
22 WrapKey,
24 UnwrapKey,
26 DeriveKey,
28 DeriveBits,
30 ProofGeneration,
32 ProofVerification,
34}
35
36impl JwkOperation {
37 pub const fn name(&self) -> &'static str {
39 match self {
40 Self::Sign => "sign",
41 Self::Verify => "verify",
42 Self::Encrypt => "encrypt",
43 Self::Decrypt => "decrypt",
44 Self::WrapKey => "wrapKey",
45 Self::UnwrapKey => "unwrapKey",
46 Self::DeriveKey => "deriveKey",
47 Self::DeriveBits => "deriveBits",
48 Self::ProofGeneration => "proofGeneration",
49 Self::ProofVerification => "proofVerification",
50 }
51 }
52
53 pub const fn invert(&self) -> Self {
55 match self {
56 Self::Sign => Self::Verify,
57 Self::Verify => Self::Sign,
58 Self::Encrypt => Self::Decrypt,
59 Self::Decrypt => Self::Encrypt,
60 Self::WrapKey => Self::UnwrapKey,
61 Self::UnwrapKey => Self::WrapKey,
62 Self::DeriveKey => Self::DeriveKey,
63 Self::DeriveBits => Self::DeriveBits,
64 Self::ProofGeneration => Self::ProofVerification,
65 Self::ProofVerification => Self::ProofGeneration,
66 }
67 }
68}
69
70impl Display for JwkOperation {
71 fn fmt(&self, f: &mut Formatter<'_>) -> Result {
72 f.write_str(self.name())
73 }
74}