signstar_yubihsm2/object/
id.rs1use serde::{Deserialize, Serialize};
4use yubihsm::object::{Handle, Type};
5
6#[derive(Debug, Deserialize, Serialize)]
12#[serde(tag = "object_type", content = "object_id", rename_all = "kebab-case")]
13pub enum ObjectId {
14 AsymmetricKey(u16),
16
17 AuthenticationKey(u16),
19
20 WrappingKey(u16),
22
23 Opaque(u16),
25
26 Hmac(u16),
28
29 Template(u16),
31
32 Otp(u16),
34}
35
36impl ObjectId {
37 pub fn id(&self) -> u16 {
39 match self {
40 ObjectId::AsymmetricKey(id) => *id,
41 ObjectId::AuthenticationKey(id) => *id,
42 ObjectId::WrappingKey(id) => *id,
43 ObjectId::Opaque(id) => *id,
44 ObjectId::Hmac(id) => *id,
45 ObjectId::Template(id) => *id,
46 ObjectId::Otp(id) => *id,
47 }
48 }
49
50 pub fn object_type(&self) -> Type {
52 match self {
53 ObjectId::AsymmetricKey(_) => Type::AsymmetricKey,
54 ObjectId::AuthenticationKey(_) => Type::AuthenticationKey,
55 ObjectId::WrappingKey(_) => Type::WrapKey,
56 ObjectId::Opaque(_) => Type::Opaque,
57 ObjectId::Hmac(_) => Type::HmacKey,
58 ObjectId::Template(_) => Type::Template,
59 ObjectId::Otp(_) => Type::OtpAeadKey,
60 }
61 }
62}
63
64impl From<Handle> for ObjectId {
65 fn from(value: Handle) -> Self {
66 match value.object_type {
67 Type::Opaque => ObjectId::Opaque(value.object_id),
68 Type::AuthenticationKey => ObjectId::AuthenticationKey(value.object_id),
69 Type::AsymmetricKey => ObjectId::AsymmetricKey(value.object_id),
70 Type::WrapKey => ObjectId::WrappingKey(value.object_id),
71 Type::HmacKey => ObjectId::Hmac(value.object_id),
72 Type::Template => ObjectId::Template(value.object_id),
73 Type::OtpAeadKey => ObjectId::Otp(value.object_id),
74 }
75 }
76}