hsmtool/home/runner/.cache/bazel/_bazel_runner/847d6b60020b9cb038b853068e4c7b18/sandbox/linux-sandbox/844/execroot/_main/bazel-out/k8-fastbuild/bin/sw/host/hsmtool/
key_type.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
// Copyright lowRISC contributors (OpenTitan project).
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

// This file was autogenerated by `//sw/host/hsmtool/scripts/pkcs11_consts.py`.
// Do not edit.'

use std::convert::TryFrom;
use cryptoki_sys::*;

use crate::util::attribute::{AttrData, AttributeError};

#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, strum::Display, strum::EnumString, strum::EnumIter, strum::FromRepr)]
#[repr(u64)]
pub enum KeyType {
    #[serde(rename="CKK_RSA")]
    #[strum(serialize="CKK_RSA", serialize="Rsa", serialize="rsa")]
    Rsa = CKK_RSA,
    #[serde(rename="CKK_DSA")]
    #[strum(serialize="CKK_DSA", serialize="Dsa", serialize="dsa")]
    Dsa = CKK_DSA,
    #[serde(rename="CKK_DH")]
    #[strum(serialize="CKK_DH", serialize="Dh", serialize="dh")]
    Dh = CKK_DH,
    #[serde(rename="CKK_EC")]
    #[strum(serialize="CKK_EC", serialize="Ec", serialize="ec")]
    Ec = CKK_EC,
    #[serde(rename="CKK_X9_42_DH")]
    #[strum(serialize="CKK_X9_42_DH", serialize="X942Dh", serialize="x9_42_dh")]
    X942Dh = CKK_X9_42_DH,
    #[serde(rename="CKK_KEA")]
    #[strum(serialize="CKK_KEA", serialize="Kea", serialize="kea")]
    Kea = CKK_KEA,
    #[serde(rename="CKK_GENERIC_SECRET")]
    #[strum(serialize="CKK_GENERIC_SECRET", serialize="GenericSecret", serialize="generic_secret")]
    GenericSecret = CKK_GENERIC_SECRET,
    #[serde(rename="CKK_RC2")]
    #[strum(serialize="CKK_RC2", serialize="Rc2", serialize="rc2")]
    Rc2 = CKK_RC2,
    #[serde(rename="CKK_RC4")]
    #[strum(serialize="CKK_RC4", serialize="Rc4", serialize="rc4")]
    Rc4 = CKK_RC4,
    #[serde(rename="CKK_DES")]
    #[strum(serialize="CKK_DES", serialize="Des", serialize="des")]
    Des = CKK_DES,
    #[serde(rename="CKK_DES2")]
    #[strum(serialize="CKK_DES2", serialize="Des2", serialize="des2")]
    Des2 = CKK_DES2,
    #[serde(rename="CKK_DES3")]
    #[strum(serialize="CKK_DES3", serialize="Des3", serialize="des3")]
    Des3 = CKK_DES3,
    #[serde(rename="CKK_CAST")]
    #[strum(serialize="CKK_CAST", serialize="Cast", serialize="cast")]
    Cast = CKK_CAST,
    #[serde(rename="CKK_CAST3")]
    #[strum(serialize="CKK_CAST3", serialize="Cast3", serialize="cast3")]
    Cast3 = CKK_CAST3,
    #[serde(rename="CKK_CAST128")]
    #[strum(serialize="CKK_CAST128", serialize="Cast128", serialize="cast128")]
    Cast128 = CKK_CAST128,
    #[serde(rename="CKK_RC5")]
    #[strum(serialize="CKK_RC5", serialize="Rc5", serialize="rc5")]
    Rc5 = CKK_RC5,
    #[serde(rename="CKK_IDEA")]
    #[strum(serialize="CKK_IDEA", serialize="Idea", serialize="idea")]
    Idea = CKK_IDEA,
    #[serde(rename="CKK_SKIPJACK")]
    #[strum(serialize="CKK_SKIPJACK", serialize="Skipjack", serialize="skipjack")]
    Skipjack = CKK_SKIPJACK,
    #[serde(rename="CKK_BATON")]
    #[strum(serialize="CKK_BATON", serialize="Baton", serialize="baton")]
    Baton = CKK_BATON,
    #[serde(rename="CKK_JUNIPER")]
    #[strum(serialize="CKK_JUNIPER", serialize="Juniper", serialize="juniper")]
    Juniper = CKK_JUNIPER,
    #[serde(rename="CKK_CDMF")]
    #[strum(serialize="CKK_CDMF", serialize="Cdmf", serialize="cdmf")]
    Cdmf = CKK_CDMF,
    #[serde(rename="CKK_AES")]
    #[strum(serialize="CKK_AES", serialize="Aes", serialize="aes")]
    Aes = CKK_AES,
    #[serde(rename="CKK_BLOWFISH")]
    #[strum(serialize="CKK_BLOWFISH", serialize="Blowfish", serialize="blowfish")]
    Blowfish = CKK_BLOWFISH,
    #[serde(rename="CKK_TWOFISH")]
    #[strum(serialize="CKK_TWOFISH", serialize="Twofish", serialize="twofish")]
    Twofish = CKK_TWOFISH,
    #[serde(rename="CKK_SECURID")]
    #[strum(serialize="CKK_SECURID", serialize="Securid", serialize="securid")]
    Securid = CKK_SECURID,
    #[serde(rename="CKK_HOTP")]
    #[strum(serialize="CKK_HOTP", serialize="Hotp", serialize="hotp")]
    Hotp = CKK_HOTP,
    #[serde(rename="CKK_ACTI")]
    #[strum(serialize="CKK_ACTI", serialize="Acti", serialize="acti")]
    Acti = CKK_ACTI,
    #[serde(rename="CKK_CAMELLIA")]
    #[strum(serialize="CKK_CAMELLIA", serialize="Camellia", serialize="camellia")]
    Camellia = CKK_CAMELLIA,
    #[serde(rename="CKK_ARIA")]
    #[strum(serialize="CKK_ARIA", serialize="Aria", serialize="aria")]
    Aria = CKK_ARIA,
    #[serde(rename="CKK_MD5_HMAC")]
    #[strum(serialize="CKK_MD5_HMAC", serialize="Md5Hmac", serialize="md5_hmac")]
    Md5Hmac = CKK_MD5_HMAC,
    #[serde(rename="CKK_SHA_1_HMAC")]
    #[strum(serialize="CKK_SHA_1_HMAC", serialize="Sha1Hmac", serialize="sha_1_hmac")]
    Sha1Hmac = CKK_SHA_1_HMAC,
    #[serde(rename="CKK_RIPEMD128_HMAC")]
    #[strum(serialize="CKK_RIPEMD128_HMAC", serialize="Ripemd128Hmac", serialize="ripemd128_hmac")]
    Ripemd128Hmac = CKK_RIPEMD128_HMAC,
    #[serde(rename="CKK_RIPEMD160_HMAC")]
    #[strum(serialize="CKK_RIPEMD160_HMAC", serialize="Ripemd160Hmac", serialize="ripemd160_hmac")]
    Ripemd160Hmac = CKK_RIPEMD160_HMAC,
    #[serde(rename="CKK_SHA256_HMAC")]
    #[strum(serialize="CKK_SHA256_HMAC", serialize="Sha256Hmac", serialize="sha256_hmac")]
    Sha256Hmac = CKK_SHA256_HMAC,
    #[serde(rename="CKK_SHA384_HMAC")]
    #[strum(serialize="CKK_SHA384_HMAC", serialize="Sha384Hmac", serialize="sha384_hmac")]
    Sha384Hmac = CKK_SHA384_HMAC,
    #[serde(rename="CKK_SHA512_HMAC")]
    #[strum(serialize="CKK_SHA512_HMAC", serialize="Sha512Hmac", serialize="sha512_hmac")]
    Sha512Hmac = CKK_SHA512_HMAC,
    #[serde(rename="CKK_SHA224_HMAC")]
    #[strum(serialize="CKK_SHA224_HMAC", serialize="Sha224Hmac", serialize="sha224_hmac")]
    Sha224Hmac = CKK_SHA224_HMAC,
    #[serde(rename="CKK_SEED")]
    #[strum(serialize="CKK_SEED", serialize="Seed", serialize="seed")]
    Seed = CKK_SEED,
    #[serde(rename="CKK_GOSTR3410")]
    #[strum(serialize="CKK_GOSTR3410", serialize="Gostr3410", serialize="gostr3410")]
    Gostr3410 = CKK_GOSTR3410,
    #[serde(rename="CKK_GOSTR3411")]
    #[strum(serialize="CKK_GOSTR3411", serialize="Gostr3411", serialize="gostr3411")]
    Gostr3411 = CKK_GOSTR3411,
    #[serde(rename="CKK_GOST28147")]
    #[strum(serialize="CKK_GOST28147", serialize="Gost28147", serialize="gost28147")]
    Gost28147 = CKK_GOST28147,
    #[serde(rename="CKK_CHACHA20")]
    #[strum(serialize="CKK_CHACHA20", serialize="Chacha20", serialize="chacha20")]
    Chacha20 = CKK_CHACHA20,
    #[serde(rename="CKK_POLY1305")]
    #[strum(serialize="CKK_POLY1305", serialize="Poly1305", serialize="poly1305")]
    Poly1305 = CKK_POLY1305,
    #[serde(rename="CKK_AES_XTS")]
    #[strum(serialize="CKK_AES_XTS", serialize="AesXts", serialize="aes_xts")]
    AesXts = CKK_AES_XTS,
    #[serde(rename="CKK_SHA3_224_HMAC")]
    #[strum(serialize="CKK_SHA3_224_HMAC", serialize="Sha3224Hmac", serialize="sha3_224_hmac")]
    Sha3224Hmac = CKK_SHA3_224_HMAC,
    #[serde(rename="CKK_SHA3_256_HMAC")]
    #[strum(serialize="CKK_SHA3_256_HMAC", serialize="Sha3256Hmac", serialize="sha3_256_hmac")]
    Sha3256Hmac = CKK_SHA3_256_HMAC,
    #[serde(rename="CKK_SHA3_384_HMAC")]
    #[strum(serialize="CKK_SHA3_384_HMAC", serialize="Sha3384Hmac", serialize="sha3_384_hmac")]
    Sha3384Hmac = CKK_SHA3_384_HMAC,
    #[serde(rename="CKK_SHA3_512_HMAC")]
    #[strum(serialize="CKK_SHA3_512_HMAC", serialize="Sha3512Hmac", serialize="sha3_512_hmac")]
    Sha3512Hmac = CKK_SHA3_512_HMAC,
    #[serde(rename="CKK_BLAKE2B_160_HMAC")]
    #[strum(serialize="CKK_BLAKE2B_160_HMAC", serialize="Blake2b160Hmac", serialize="blake2b_160_hmac")]
    Blake2b160Hmac = CKK_BLAKE2B_160_HMAC,
    #[serde(rename="CKK_BLAKE2B_256_HMAC")]
    #[strum(serialize="CKK_BLAKE2B_256_HMAC", serialize="Blake2b256Hmac", serialize="blake2b_256_hmac")]
    Blake2b256Hmac = CKK_BLAKE2B_256_HMAC,
    #[serde(rename="CKK_BLAKE2B_384_HMAC")]
    #[strum(serialize="CKK_BLAKE2B_384_HMAC", serialize="Blake2b384Hmac", serialize="blake2b_384_hmac")]
    Blake2b384Hmac = CKK_BLAKE2B_384_HMAC,
    #[serde(rename="CKK_BLAKE2B_512_HMAC")]
    #[strum(serialize="CKK_BLAKE2B_512_HMAC", serialize="Blake2b512Hmac", serialize="blake2b_512_hmac")]
    Blake2b512Hmac = CKK_BLAKE2B_512_HMAC,
    #[serde(rename="CKK_SALSA20")]
    #[strum(serialize="CKK_SALSA20", serialize="Salsa20", serialize="salsa20")]
    Salsa20 = CKK_SALSA20,
    #[serde(rename="CKK_X2RATCHET")]
    #[strum(serialize="CKK_X2RATCHET", serialize="X2ratchet", serialize="x2ratchet")]
    X2ratchet = CKK_X2RATCHET,
    #[serde(rename="CKK_EC_EDWARDS")]
    #[strum(serialize="CKK_EC_EDWARDS", serialize="EcEdwards", serialize="ec_edwards")]
    EcEdwards = CKK_EC_EDWARDS,
    #[serde(rename="CKK_EC_MONTGOMERY")]
    #[strum(serialize="CKK_EC_MONTGOMERY", serialize="EcMontgomery", serialize="ec_montgomery")]
    EcMontgomery = CKK_EC_MONTGOMERY,
    #[serde(rename="CKK_HKDF")]
    #[strum(serialize="CKK_HKDF", serialize="Hkdf", serialize="hkdf")]
    Hkdf = CKK_HKDF,
    #[serde(rename="CKK_SHA512_224_HMAC")]
    #[strum(serialize="CKK_SHA512_224_HMAC", serialize="Sha512224Hmac", serialize="sha512_224_hmac")]
    Sha512224Hmac = CKK_SHA512_224_HMAC,
    #[serde(rename="CKK_SHA512_256_HMAC")]
    #[strum(serialize="CKK_SHA512_256_HMAC", serialize="Sha512256Hmac", serialize="sha512_256_hmac")]
    Sha512256Hmac = CKK_SHA512_256_HMAC,
    #[serde(rename="CKK_SHA512_T_HMAC")]
    #[strum(serialize="CKK_SHA512_T_HMAC", serialize="Sha512THmac", serialize="sha512_t_hmac")]
    Sha512THmac = CKK_SHA512_T_HMAC,
    #[serde(rename="CKK_VENDOR_DEFINED")]
    #[strum(serialize="CKK_VENDOR_DEFINED", serialize="VendorDefined", serialize="vendor_defined")]
    VendorDefined = CKK_VENDOR_DEFINED,
    UnknownKeyType = u64::MAX,
}

impl From<u64> for KeyType {
    fn from(val: u64) -> Self {
        KeyType::from_repr(val)
            .unwrap_or(KeyType::UnknownKeyType)
    }
}

impl From<KeyType> for u64 {
    fn from(val: KeyType) -> u64 {
        val as u64
    }
}


impl From<cryptoki::object::KeyType> for KeyType {
    fn from(val: cryptoki::object::KeyType) -> Self {
        let val = CK_KEY_TYPE::from(val);
        Self::from(val)
    }
}

impl TryFrom<KeyType> for cryptoki::object::KeyType {
    type Error = cryptoki::error::Error;
    fn try_from(val: KeyType) -> Result<Self, Self::Error> {
        let val = CK_KEY_TYPE::from(val);
        cryptoki::object::KeyType::try_from(val)
    }
}


impl TryFrom<&AttrData> for KeyType {
    type Error = AttributeError;
    fn try_from(val: &AttrData) -> Result<Self, Self::Error> {
        match val {
            AttrData::KeyType(x) => Ok(*x),
            _ => Err(AttributeError::EncodingError),
        }
    }
}

impl From<KeyType> for AttrData {
    fn from(val: KeyType) -> Self {
        AttrData::KeyType(val)
    }
}