/src/p11-kit/common/constants.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (C) 2013, Redhat Inc. |
3 | | * |
4 | | * Redistribution and use in source and binary forms, with or without |
5 | | * modification, are permitted provided that the following conditions |
6 | | * are met: |
7 | | * |
8 | | * * Redistributions of source code must retain the above |
9 | | * copyright notice, this list of conditions and the |
10 | | * following disclaimer. |
11 | | * * Redistributions in binary form must reproduce the |
12 | | * above copyright notice, this list of conditions and |
13 | | * the following disclaimer in the documentation and/or |
14 | | * other materials provided with the distribution. |
15 | | * * The names of contributors to this software may not be |
16 | | * used to endorse or promote products derived from this |
17 | | * software without specific prior written permission. |
18 | | * |
19 | | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
20 | | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
21 | | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
22 | | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
23 | | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
24 | | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
25 | | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS |
26 | | * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
27 | | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
28 | | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF |
29 | | * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
30 | | * DAMAGE. |
31 | | * |
32 | | * Author: Stef Walter <stefw@redhat.com> |
33 | | */ |
34 | | |
35 | | #include "config.h" |
36 | | |
37 | | #include "attrs.h" |
38 | | #include "constants.h" |
39 | | #include "debug.h" |
40 | | #include "pkcs11.h" |
41 | | #include "pkcs11i.h" |
42 | | #include "pkcs11x.h" |
43 | | |
44 | | #include <stdlib.h> |
45 | | |
46 | 0 | #define ELEMS(x) (sizeof (x) / sizeof (x[0])) |
47 | | |
48 | | /* |
49 | | * These are in numeric order of their type for easy lookup |
50 | | * After changing something make sure to run the test-attrs |
51 | | * test to verify everything is in order. |
52 | | */ |
53 | | |
54 | | #define CT(x, n) { x, #x, { n } }, |
55 | | #define CT2(x, n, n2) { x, #x, { n, n2 } }, |
56 | | |
57 | | const p11_constant p11_constant_types[] = { |
58 | | CT (CKA_CLASS, "class") |
59 | | CT (CKA_TOKEN, "token") |
60 | | CT (CKA_PRIVATE, "private") |
61 | | CT (CKA_LABEL, "label") |
62 | | CT (CKA_APPLICATION, "application") |
63 | | CT (CKA_VALUE, "value") |
64 | | CT (CKA_OBJECT_ID, "object-id") |
65 | | CT (CKA_CERTIFICATE_TYPE, "certificate-type") |
66 | | CT (CKA_ISSUER, "issuer") |
67 | | CT (CKA_SERIAL_NUMBER, "serial-number") |
68 | | CT (CKA_AC_ISSUER, "ac-issuer") |
69 | | CT (CKA_OWNER, "owner") |
70 | | CT (CKA_ATTR_TYPES, "attr-types") |
71 | | CT (CKA_TRUSTED, "trusted") |
72 | | CT (CKA_CERTIFICATE_CATEGORY, "certificate-category") |
73 | | CT (CKA_JAVA_MIDP_SECURITY_DOMAIN, "java-midp-security-domain") |
74 | | CT (CKA_URL, "url") |
75 | | CT (CKA_HASH_OF_SUBJECT_PUBLIC_KEY, "hash-of-subject-public-key") |
76 | | CT (CKA_HASH_OF_ISSUER_PUBLIC_KEY, "hash-of-issuer-public-key") |
77 | | CT (CKA_CHECK_VALUE, "check-value") |
78 | | CT (CKA_KEY_TYPE, "key-type") |
79 | | CT (CKA_SUBJECT, "subject") |
80 | | CT (CKA_ID, "id") |
81 | | CT (CKA_SENSITIVE, "sensitive") |
82 | | CT (CKA_ENCRYPT, "encrypt") |
83 | | CT (CKA_DECRYPT, "decrypt") |
84 | | CT (CKA_WRAP, "wrap") |
85 | | CT (CKA_UNWRAP, "unwrap") |
86 | | CT (CKA_SIGN, "sign") |
87 | | CT (CKA_SIGN_RECOVER, "sign-recover") |
88 | | CT (CKA_VERIFY, "verify") |
89 | | CT (CKA_VERIFY_RECOVER, "recover") |
90 | | CT (CKA_DERIVE, "derive") |
91 | | CT (CKA_START_DATE, "start-date") |
92 | | CT (CKA_END_DATE, "end-date") |
93 | | CT (CKA_MODULUS, "modulus") |
94 | | CT (CKA_MODULUS_BITS, "modulus-bits") |
95 | | CT (CKA_PUBLIC_EXPONENT, "public-exponent") |
96 | | CT (CKA_PRIVATE_EXPONENT, "private-exponent") |
97 | | CT (CKA_PRIME_1, "prime-1") |
98 | | CT (CKA_PRIME_2, "prime-2") |
99 | | CT (CKA_EXPONENT_1, "exponent-1") |
100 | | CT (CKA_EXPONENT_2, "exponent-2") |
101 | | CT (CKA_COEFFICIENT, "coefficient") |
102 | | CT2 (CKA_PUBLIC_KEY_INFO, "public-key-info", "x-public-key-info") |
103 | | CT (CKA_PRIME, "prime") |
104 | | CT (CKA_SUBPRIME, "subprime") |
105 | | CT (CKA_BASE, "base") |
106 | | CT (CKA_PRIME_BITS, "prime-bits") |
107 | | /* CT (CKA_SUBPRIME_BITS) */ |
108 | | CT (CKA_SUB_PRIME_BITS, "subprime-bits") |
109 | | CT (CKA_VALUE_BITS, "value-bits") |
110 | | CT (CKA_VALUE_LEN, "value-len") |
111 | | CT (CKA_EXTRACTABLE, "extractable") |
112 | | CT (CKA_LOCAL, "local") |
113 | | CT (CKA_NEVER_EXTRACTABLE, "never-extractable") |
114 | | CT (CKA_ALWAYS_SENSITIVE, "always-sensitive") |
115 | | CT (CKA_KEY_GEN_MECHANISM, "key-gen-mechanism") |
116 | | CT (CKA_MODIFIABLE, "modifiable") |
117 | | CT (CKA_ECDSA_PARAMS, "ecdsa-params") |
118 | | /* CT (CKA_EC_PARAMS) */ |
119 | | CT (CKA_EC_POINT, "ec-point") |
120 | | CT (CKA_SECONDARY_AUTH, "secondary-auth") |
121 | | CT (CKA_AUTH_PIN_FLAGS, "auth-pin-flags") |
122 | | CT (CKA_ALWAYS_AUTHENTICATE, "always-authenticate") |
123 | | CT (CKA_WRAP_WITH_TRUSTED, "wrap-with-trusted") |
124 | | CT (CKA_HW_FEATURE_TYPE, "hw-feature-type") |
125 | | CT (CKA_RESET_ON_INIT, "reset-on-init") |
126 | | CT (CKA_HAS_RESET, "has-reset") |
127 | | CT (CKA_PIXEL_X, "pixel-x") |
128 | | CT (CKA_PIXEL_Y, "pixel-y") |
129 | | CT (CKA_RESOLUTION, "resolution") |
130 | | CT (CKA_CHAR_ROWS, "char-rows") |
131 | | CT (CKA_CHAR_COLUMNS, "char-columns") |
132 | | CT (CKA_COLOR, "color") |
133 | | CT (CKA_BITS_PER_PIXEL, "bits-per-pixel") |
134 | | CT (CKA_CHAR_SETS, "char-sets") |
135 | | CT (CKA_ENCODING_METHODS, "encoding-methods") |
136 | | CT (CKA_MIME_TYPES, "mime-types") |
137 | | CT (CKA_MECHANISM_TYPE, "mechanism-type") |
138 | | CT (CKA_REQUIRED_CMS_ATTRIBUTES, "required-cms-attributes") |
139 | | CT (CKA_DEFAULT_CMS_ATTRIBUTES, "default-cms-attributes") |
140 | | CT (CKA_SUPPORTED_CMS_ATTRIBUTES, "supported-cms-attributes") |
141 | | CT (CKA_PROFILE_ID, "profile-id") |
142 | | CT (CKA_WRAP_TEMPLATE, "wrap-template") |
143 | | CT (CKA_UNWRAP_TEMPLATE, "unwrap-template") |
144 | | CT (CKA_ALLOWED_MECHANISMS, "allowed-mechanisms") |
145 | | CT (CKA_IBM_OPAQUE, "ibm-opaque") |
146 | | CT (CKA_IBM_RESTRICTABLE, "ibm-restrictable") |
147 | | CT (CKA_IBM_NEVER_MODIFIABLE, "ibm-never-modifiable") |
148 | | CT (CKA_IBM_RETAINKEY, "ibm-retainkey") |
149 | | CT (CKA_IBM_ATTRBOUND, "ibm-attrbound") |
150 | | CT (CKA_IBM_KEYTYPE, "ibm-keytype") |
151 | | CT (CKA_IBM_CV, "ibm-cv") |
152 | | CT (CKA_IBM_MACKEY, "ibm-mackey") |
153 | | CT (CKA_IBM_USE_AS_DATA, "ibm-use-as-data") |
154 | | CT (CKA_IBM_STRUCT_PARAMS, "ibm-struct-params") |
155 | | CT (CKA_IBM_STD_COMPLIANCE1, "ibm-std_compliance1") |
156 | | CT (CKA_IBM_PROTKEY_EXTRACTABLE, "ibm-protkey-extractable") |
157 | | CT (CKA_IBM_PROTKEY_NEVER_EXTRACTABLE, "ibm-protkey-never-extractable") |
158 | | CT (CKA_IBM_DILITHIUM_KEYFORM, "ibm-dilithium-keyform") |
159 | | CT (CKA_IBM_DILITHIUM_RHO, "ibm-dilithium-rho") |
160 | | CT (CKA_IBM_DILITHIUM_SEED, "ibm-dilithium-seed") |
161 | | CT (CKA_IBM_DILITHIUM_TR, "ibm-dilithium-tr") |
162 | | CT (CKA_IBM_DILITHIUM_S1, "ibm-dilithium-s1") |
163 | | CT (CKA_IBM_DILITHIUM_S2, "ibm-dilithium-s2") |
164 | | CT (CKA_IBM_DILITHIUM_T0, "ibm-dilithium-t0") |
165 | | CT (CKA_IBM_DILITHIUM_T1, "ibm-dilithium-t1") |
166 | | CT (CKA_IBM_OPAQUE_PKEY, "ibm-opaque-pkey") |
167 | | CT (CKA_NSS_URL, "nss-url") |
168 | | CT (CKA_NSS_EMAIL, "nss-email") |
169 | | CT (CKA_NSS_SMIME_INFO, "nss-smime-constant") |
170 | | CT (CKA_NSS_SMIME_TIMESTAMP, "nss-smime-timestamp") |
171 | | CT (CKA_NSS_PKCS8_SALT, "nss-pkcs8-salt") |
172 | | CT (CKA_NSS_PASSWORD_CHECK, "nss-password-check") |
173 | | CT (CKA_NSS_EXPIRES, "nss-expires") |
174 | | CT (CKA_NSS_KRL, "nss-krl") |
175 | | CT (CKA_NSS_PQG_COUNTER, "nss-pqg-counter") |
176 | | CT (CKA_NSS_PQG_SEED, "nss-pqg-seed") |
177 | | CT (CKA_NSS_PQG_H, "nss-pqg-h") |
178 | | CT (CKA_NSS_PQG_SEED_BITS, "nss-pqg-seed-bits") |
179 | | CT (CKA_NSS_MODULE_SPEC, "nss-module-spec") |
180 | | CT (CKA_NSS_MOZILLA_CA_POLICY, "nss-mozilla-ca-policy") |
181 | | CT (CKA_NSS_SERVER_DISTRUST_AFTER, "nss-server-distrust-after") |
182 | | CT (CKA_NSS_EMAIL_DISTRUST_AFTER, "nss-email-distrust-after") |
183 | | CT (CKA_TRUST_DIGITAL_SIGNATURE, "trust-digital-signature") |
184 | | CT (CKA_TRUST_NON_REPUDIATION, "trust-non-repudiation") |
185 | | CT (CKA_TRUST_KEY_ENCIPHERMENT, "trust-key-encipherment") |
186 | | CT (CKA_TRUST_DATA_ENCIPHERMENT, "trust-data-encipherment") |
187 | | CT (CKA_TRUST_KEY_AGREEMENT, "trust-key-agreement") |
188 | | CT (CKA_TRUST_KEY_CERT_SIGN, "trust-key-cert-sign") |
189 | | CT (CKA_TRUST_CRL_SIGN, "trust-crl-sign") |
190 | | CT (CKA_TRUST_SERVER_AUTH, "trust-server-auth") |
191 | | CT (CKA_TRUST_CLIENT_AUTH, "trust-client-auth") |
192 | | CT (CKA_TRUST_CODE_SIGNING, "trust-code-signing") |
193 | | CT (CKA_TRUST_EMAIL_PROTECTION, "trust-email-protection") |
194 | | CT (CKA_TRUST_IPSEC_END_SYSTEM, "trust-ipsec-end-system") |
195 | | CT (CKA_TRUST_IPSEC_TUNNEL, "trust-ipsec-tunnel") |
196 | | CT (CKA_TRUST_IPSEC_USER, "trust-ipsec-user") |
197 | | CT (CKA_TRUST_TIME_STAMPING, "trust-time-stamping") |
198 | | CT (CKA_TRUST_STEP_UP_APPROVED, "trust-step-up-approved") |
199 | | CT (CKA_CERT_SHA1_HASH, "cert-sha1-hash") |
200 | | CT (CKA_CERT_MD5_HASH, "cert-md5-hash") |
201 | | CT (CKA_X_ASSERTION_TYPE, "x-assertion-type") |
202 | | CT (CKA_X_CERTIFICATE_VALUE, "x-certificate-value") |
203 | | CT (CKA_X_PURPOSE, "x-purpose") |
204 | | CT (CKA_X_PEER, "x-peer") |
205 | | CT (CKA_X_DISTRUSTED, "x-distrusted") |
206 | | CT (CKA_X_CRITICAL, "x-critical") |
207 | | { CKA_INVALID }, |
208 | | }; |
209 | | |
210 | | const p11_constant p11_constant_classes[] = { |
211 | | CT (CKO_DATA, "data") |
212 | | CT (CKO_CERTIFICATE, "certificate") |
213 | | CT (CKO_PUBLIC_KEY, "public-key") |
214 | | CT (CKO_PRIVATE_KEY, "private-key") |
215 | | CT (CKO_SECRET_KEY, "secret-key") |
216 | | CT (CKO_HW_FEATURE, "hw-feature") |
217 | | CT (CKO_DOMAIN_PARAMETERS, "domain-parameters") |
218 | | CT (CKO_MECHANISM, "mechanism") |
219 | | CT (CKO_PROFILE, "profile") |
220 | | CT (CKO_NSS_CRL, "nss-crl") |
221 | | CT (CKO_NSS_SMIME, "nss-smime") |
222 | | CT (CKO_NSS_TRUST, "nss-trust") |
223 | | CT (CKO_NSS_BUILTIN_ROOT_LIST, "nss-builtin-root-list") |
224 | | CT (CKO_NSS_NEWSLOT, "nss-newslot") |
225 | | CT (CKO_NSS_DELSLOT, "nss-delslot") |
226 | | CT (CKO_X_TRUST_ASSERTION, "x-trust-assertion") |
227 | | CT (CKO_X_CERTIFICATE_EXTENSION, "x-certificate-extension") |
228 | | { CKA_INVALID }, |
229 | | }; |
230 | | |
231 | | const p11_constant p11_constant_trusts[] = { |
232 | | CT (CKT_NSS_TRUSTED, "nss-trusted") |
233 | | CT (CKT_NSS_TRUSTED_DELEGATOR, "nss-trusted-delegator") |
234 | | CT (CKT_NSS_MUST_VERIFY_TRUST, "nss-must-verify-trust") |
235 | | CT (CKT_NSS_TRUST_UNKNOWN, "nss-trust-unknown") |
236 | | CT (CKT_NSS_NOT_TRUSTED, "nss-not-trusted") |
237 | | CT (CKT_NSS_VALID_DELEGATOR, "nss-valid-delegator") |
238 | | { CKA_INVALID }, |
239 | | }; |
240 | | |
241 | | const p11_constant p11_constant_certs[] = { |
242 | | CT (CKC_X_509, "x-509") |
243 | | CT (CKC_X_509_ATTR_CERT, "x-509-attr-cert") |
244 | | CT (CKC_WTLS, "wtls") |
245 | | { CKA_INVALID }, |
246 | | }; |
247 | | |
248 | | const p11_constant p11_constant_keys[] = { |
249 | | CT (CKK_RSA, "rsa") |
250 | | CT (CKK_DSA, "dsa") |
251 | | CT (CKK_DH, "dh") |
252 | | /* CT (CKK_ECDSA) */ |
253 | | CT (CKK_EC, "ec") |
254 | | CT (CKK_X9_42_DH, "x9-42-dh") |
255 | | CT (CKK_KEA, "kea") |
256 | | CT (CKK_GENERIC_SECRET, "generic-secret") |
257 | | CT (CKK_RC2, "rc2") |
258 | | CT (CKK_RC4, "rc4") |
259 | | CT (CKK_DES, "des") |
260 | | CT (CKK_DES2, "des2") |
261 | | CT (CKK_DES3, "des3") |
262 | | CT (CKK_CAST, "cast") |
263 | | CT (CKK_CAST3, "cast3") |
264 | | CT (CKK_CAST128, "cast128") |
265 | | CT (CKK_RC5, "rc5") |
266 | | CT (CKK_IDEA, "idea") |
267 | | CT (CKK_SKIPJACK, "skipjack") |
268 | | CT (CKK_BATON, "baton") |
269 | | CT (CKK_JUNIPER, "juniper") |
270 | | CT (CKK_CDMF, "cdmf") |
271 | | CT (CKK_AES, "aes") |
272 | | CT (CKK_BLOWFISH, "blowfish") |
273 | | CT (CKK_TWOFISH, "twofish") |
274 | | CT (CKK_IBM_PQC_DILITHIUM, "ibm-dilithium") |
275 | | CT (CKK_NSS_PKCS8, "nss-pkcs8") |
276 | | { CKA_INVALID }, |
277 | | }; |
278 | | |
279 | | const p11_constant p11_constant_asserts[] = { |
280 | | CT (CKT_X_DISTRUSTED_CERTIFICATE, "x-distrusted-certificate") |
281 | | CT (CKT_X_PINNED_CERTIFICATE, "x-pinned-certificate") |
282 | | CT (CKT_X_ANCHORED_CERTIFICATE, "x-anchored-certificate") |
283 | | { CKA_INVALID }, |
284 | | }; |
285 | | |
286 | | const p11_constant p11_constant_categories[] = { |
287 | | { 0, "unspecified", { "unspecified" } }, |
288 | | { 1, "token-user", { "token-user" } }, |
289 | | { 2, "authority", { "authority" } }, |
290 | | { 3, "other-entry", { "other-entry" } }, |
291 | | { CKA_INVALID }, |
292 | | }; |
293 | | |
294 | | const p11_constant p11_constant_users[] = { |
295 | | CT (CKU_SO, NULL) |
296 | | CT (CKU_USER, NULL) |
297 | | CT (CKU_CONTEXT_SPECIFIC, NULL) |
298 | | { CKA_INVALID }, |
299 | | }; |
300 | | |
301 | | const p11_constant p11_constant_states[] = { |
302 | | CT (CKS_RO_PUBLIC_SESSION, NULL) |
303 | | CT (CKS_RO_USER_FUNCTIONS, NULL) |
304 | | CT (CKS_RW_PUBLIC_SESSION, NULL) |
305 | | CT (CKS_RW_USER_FUNCTIONS, NULL) |
306 | | CT (CKS_RW_SO_FUNCTIONS, NULL) |
307 | | { CKA_INVALID }, |
308 | | }; |
309 | | |
310 | | const p11_constant p11_constant_returns[] = { |
311 | | CT (CKR_OK, NULL) |
312 | | CT (CKR_CANCEL, NULL) |
313 | | CT (CKR_HOST_MEMORY, NULL) |
314 | | CT (CKR_SLOT_ID_INVALID, NULL) |
315 | | CT (CKR_GENERAL_ERROR, NULL) |
316 | | CT (CKR_FUNCTION_FAILED, NULL) |
317 | | CT (CKR_ARGUMENTS_BAD, NULL) |
318 | | CT (CKR_NO_EVENT, NULL) |
319 | | CT (CKR_NEED_TO_CREATE_THREADS, NULL) |
320 | | CT (CKR_CANT_LOCK, NULL) |
321 | | CT (CKR_ATTRIBUTE_READ_ONLY, NULL) |
322 | | CT (CKR_ATTRIBUTE_SENSITIVE, NULL) |
323 | | CT (CKR_ATTRIBUTE_TYPE_INVALID, NULL) |
324 | | CT (CKR_ATTRIBUTE_VALUE_INVALID, NULL) |
325 | | CT (CKR_DATA_INVALID, NULL) |
326 | | CT (CKR_DATA_LEN_RANGE, NULL) |
327 | | CT (CKR_DEVICE_ERROR, NULL) |
328 | | CT (CKR_DEVICE_MEMORY, NULL) |
329 | | CT (CKR_DEVICE_REMOVED, NULL) |
330 | | CT (CKR_ENCRYPTED_DATA_INVALID, NULL) |
331 | | CT (CKR_ENCRYPTED_DATA_LEN_RANGE, NULL) |
332 | | CT (CKR_FUNCTION_CANCELED, NULL) |
333 | | CT (CKR_FUNCTION_NOT_PARALLEL, NULL) |
334 | | CT (CKR_FUNCTION_NOT_SUPPORTED, NULL) |
335 | | CT (CKR_KEY_HANDLE_INVALID, NULL) |
336 | | CT (CKR_KEY_SIZE_RANGE, NULL) |
337 | | CT (CKR_KEY_TYPE_INCONSISTENT, NULL) |
338 | | CT (CKR_KEY_NOT_NEEDED, NULL) |
339 | | CT (CKR_KEY_CHANGED, NULL) |
340 | | CT (CKR_KEY_NEEDED, NULL) |
341 | | CT (CKR_KEY_INDIGESTIBLE, NULL) |
342 | | CT (CKR_KEY_FUNCTION_NOT_PERMITTED, NULL) |
343 | | CT (CKR_KEY_NOT_WRAPPABLE, NULL) |
344 | | CT (CKR_KEY_UNEXTRACTABLE, NULL) |
345 | | CT (CKR_MECHANISM_INVALID, NULL) |
346 | | CT (CKR_MECHANISM_PARAM_INVALID, NULL) |
347 | | CT (CKR_OBJECT_HANDLE_INVALID, NULL) |
348 | | CT (CKR_OPERATION_ACTIVE, NULL) |
349 | | CT (CKR_OPERATION_NOT_INITIALIZED, NULL) |
350 | | CT (CKR_PIN_INCORRECT, NULL) |
351 | | CT (CKR_PIN_INVALID, NULL) |
352 | | CT (CKR_PIN_LEN_RANGE, NULL) |
353 | | CT (CKR_PIN_EXPIRED, NULL) |
354 | | CT (CKR_PIN_LOCKED, NULL) |
355 | | CT (CKR_SESSION_CLOSED, NULL) |
356 | | CT (CKR_SESSION_COUNT, NULL) |
357 | | CT (CKR_SESSION_HANDLE_INVALID, NULL) |
358 | | CT (CKR_SESSION_PARALLEL_NOT_SUPPORTED, NULL) |
359 | | CT (CKR_SESSION_READ_ONLY, NULL) |
360 | | CT (CKR_SESSION_EXISTS, NULL) |
361 | | CT (CKR_SESSION_READ_ONLY_EXISTS, NULL) |
362 | | CT (CKR_SESSION_READ_WRITE_SO_EXISTS, NULL) |
363 | | CT (CKR_SIGNATURE_INVALID, NULL) |
364 | | CT (CKR_SIGNATURE_LEN_RANGE, NULL) |
365 | | CT (CKR_TEMPLATE_INCOMPLETE, NULL) |
366 | | CT (CKR_TEMPLATE_INCONSISTENT, NULL) |
367 | | CT (CKR_TOKEN_NOT_PRESENT, NULL) |
368 | | CT (CKR_TOKEN_NOT_RECOGNIZED, NULL) |
369 | | CT (CKR_TOKEN_WRITE_PROTECTED, NULL) |
370 | | CT (CKR_UNWRAPPING_KEY_HANDLE_INVALID, NULL) |
371 | | CT (CKR_UNWRAPPING_KEY_SIZE_RANGE, NULL) |
372 | | CT (CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT, NULL) |
373 | | CT (CKR_USER_ALREADY_LOGGED_IN, NULL) |
374 | | CT (CKR_USER_NOT_LOGGED_IN, NULL) |
375 | | CT (CKR_USER_PIN_NOT_INITIALIZED, NULL) |
376 | | CT (CKR_USER_TYPE_INVALID, NULL) |
377 | | CT (CKR_USER_ANOTHER_ALREADY_LOGGED_IN, NULL) |
378 | | CT (CKR_USER_TOO_MANY_TYPES, NULL) |
379 | | CT (CKR_WRAPPED_KEY_INVALID, NULL) |
380 | | CT (CKR_WRAPPED_KEY_LEN_RANGE, NULL) |
381 | | CT (CKR_WRAPPING_KEY_HANDLE_INVALID, NULL) |
382 | | CT (CKR_WRAPPING_KEY_SIZE_RANGE, NULL) |
383 | | CT (CKR_WRAPPING_KEY_TYPE_INCONSISTENT, NULL) |
384 | | CT (CKR_RANDOM_SEED_NOT_SUPPORTED, NULL) |
385 | | CT (CKR_RANDOM_NO_RNG, NULL) |
386 | | CT (CKR_DOMAIN_PARAMS_INVALID, NULL) |
387 | | CT (CKR_BUFFER_TOO_SMALL, NULL) |
388 | | CT (CKR_SAVED_STATE_INVALID, NULL) |
389 | | CT (CKR_INFORMATION_SENSITIVE, NULL) |
390 | | CT (CKR_STATE_UNSAVEABLE, NULL) |
391 | | CT (CKR_CRYPTOKI_NOT_INITIALIZED, NULL) |
392 | | CT (CKR_CRYPTOKI_ALREADY_INITIALIZED, NULL) |
393 | | CT (CKR_MUTEX_BAD, NULL) |
394 | | CT (CKR_MUTEX_NOT_LOCKED, NULL) |
395 | | CT (CKR_FUNCTION_REJECTED, NULL) |
396 | | { CKA_INVALID }, |
397 | | }; |
398 | | |
399 | | const p11_constant p11_constant_mechanisms[] = { |
400 | | CT (CKM_RSA_PKCS_KEY_PAIR_GEN, "rsa-pkcs-key-pair-gen") |
401 | | CT (CKM_RSA_PKCS, "rsa-pkcs") |
402 | | CT (CKM_RSA_9796, "rsa-9796") |
403 | | CT (CKM_RSA_X_509, "rsa-x-509") |
404 | | CT (CKM_MD2_RSA_PKCS, "md2-rsa-pkcs") |
405 | | CT (CKM_MD5_RSA_PKCS, "md5-rsa-pkcs") |
406 | | CT (CKM_SHA1_RSA_PKCS, "sha1-rsa-pkcs") |
407 | | CT (CKM_RIPEMD128_RSA_PKCS, "ripemd128-rsa-pkcs") |
408 | | CT (CKM_RIPEMD160_RSA_PKCS, "ripemd160-rsa-pkcs") |
409 | | CT (CKM_RSA_PKCS_OAEP, "rsa-pkcs-oaep") |
410 | | CT (CKM_RSA_X9_31_KEY_PAIR_GEN, "rsa-x9-31-key-pair-gen") |
411 | | CT (CKM_RSA_X9_31, "rsa-x9-31") |
412 | | CT (CKM_SHA1_RSA_X9_31, "sha1-rsa-x9-31") |
413 | | CT (CKM_RSA_PKCS_PSS, "rsa-pkcs-pss") |
414 | | CT (CKM_SHA1_RSA_PKCS_PSS, "sha1-rsa-pkcs-pss") |
415 | | CT (CKM_DSA_KEY_PAIR_GEN, "dsa-key-pair-gen") |
416 | | CT (CKM_DSA, NULL) /* "dsa" */ |
417 | | CT (CKM_DSA_SHA1, "dsa-sha1") |
418 | | CT (CKM_DH_PKCS_KEY_PAIR_GEN, "dh-pkcs-key-pair-gen") |
419 | | CT (CKM_DH_PKCS_DERIVE, "dh-pkcs-derive") |
420 | | CT (CKM_X9_42_DH_KEY_PAIR_GEN, "x9-42-dh-key-pair-gen") |
421 | | CT (CKM_X9_42_DH_DERIVE, "x9-42-dh-derive") |
422 | | CT (CKM_X9_42_DH_HYBRID_DERIVE, "x9-42-dh-hybrid-derive") |
423 | | CT (CKM_X9_42_MQV_DERIVE, "x9-42-mqv-derive") |
424 | | CT (CKM_SHA256_RSA_PKCS, "sha256-rsa-pkcs") |
425 | | CT (CKM_SHA384_RSA_PKCS, "sha384-rsa-pkcs") |
426 | | CT (CKM_SHA512_RSA_PKCS, "sha512-rsa-pkcs") |
427 | | CT (CKM_SHA256_RSA_PKCS_PSS, "sha256-rsa-pkcs-pss") |
428 | | CT (CKM_SHA384_RSA_PKCS_PSS, "sha384-rsa-pkcs-pss") |
429 | | CT (CKM_SHA512_RSA_PKCS_PSS, "sha512-rsa-pkcs-pss") |
430 | | CT (CKM_RC2_KEY_GEN, "rc2-key-gen") |
431 | | CT (CKM_RC2_ECB, "rc2-ecb") |
432 | | CT (CKM_RC2_CBC, "rc2-cbc") |
433 | | CT (CKM_RC2_MAC, "rc2-mac") |
434 | | CT (CKM_RC2_MAC_GENERAL, "rc2-mac-general") |
435 | | CT (CKM_RC2_CBC_PAD, "rc2-cbc-pad") |
436 | | CT (CKM_RC4_KEY_GEN, "rc4-key-gen") |
437 | | CT (CKM_RC4, NULL) /* "rc4" */ |
438 | | CT (CKM_DES_KEY_GEN, "des-key-gen") |
439 | | CT (CKM_DES_ECB, "des-ecb") |
440 | | CT (CKM_DES_CBC, "des-cbc") |
441 | | CT (CKM_DES_MAC, "des-mac") |
442 | | CT (CKM_DES_MAC_GENERAL, "des-mac-general") |
443 | | CT (CKM_DES_CBC_PAD, "des-cbc-pad") |
444 | | CT (CKM_DES2_KEY_GEN, "des2-key-gen") |
445 | | CT (CKM_DES3_KEY_GEN, "des3-key-gen") |
446 | | CT (CKM_DES3_ECB, "des3-ecb") |
447 | | CT (CKM_DES3_CBC, "des3-cbc") |
448 | | CT (CKM_DES3_MAC, "des3-mac") |
449 | | CT (CKM_DES3_MAC_GENERAL, "des3-mac-general") |
450 | | CT (CKM_DES3_CBC_PAD, "des3-cbc-pad") |
451 | | CT (CKM_CDMF_KEY_GEN, "cdmf-key-gen") |
452 | | CT (CKM_CDMF_ECB, "cdmf-ecb") |
453 | | CT (CKM_CDMF_CBC, "cdmf-cbc") |
454 | | CT (CKM_CDMF_MAC, "cdmf-mac") |
455 | | CT (CKM_CDMF_MAC_GENERAL, "cdmf-mac-general") |
456 | | CT (CKM_CDMF_CBC_PAD, "cdmf-cbc-pad") |
457 | | CT (CKM_DES_OFB64, "des-ofb64") |
458 | | CT (CKM_DES_OFB8, "des-ofb8") |
459 | | CT (CKM_DES_CFB64, "des-cfb64") |
460 | | CT (CKM_DES_CFB8, "des-cfb8") |
461 | | CT (CKM_MD2, "md2") |
462 | | CT (CKM_MD2_HMAC, "md2-hmac") |
463 | | CT (CKM_MD2_HMAC_GENERAL, "md2-hmac-general") |
464 | | CT (CKM_MD5, "md5") |
465 | | CT (CKM_MD5_HMAC, "md5-hmac") |
466 | | CT (CKM_MD5_HMAC_GENERAL, "md5-hmac-general") |
467 | | CT (CKM_SHA_1, "sha-1") |
468 | | CT (CKM_SHA_1_HMAC, "sha-1-hmac") |
469 | | CT (CKM_SHA_1_HMAC_GENERAL, "sha-1-hmac-general") |
470 | | CT (CKM_RIPEMD128, "ripemd128") |
471 | | CT (CKM_RIPEMD128_HMAC, "ripemd128-hmac") |
472 | | CT (CKM_RIPEMD128_HMAC_GENERAL, "ripemd128-hmac-general") |
473 | | CT (CKM_RIPEMD160, "ripemd160") |
474 | | CT (CKM_RIPEMD160_HMAC, "ripemd160-hmac") |
475 | | CT (CKM_RIPEMD160_HMAC_GENERAL, "ripemd160-hmac-general") |
476 | | CT (CKM_SHA256, "sha256") |
477 | | CT (CKM_SHA256_HMAC, "sha256-hmac") |
478 | | CT (CKM_SHA256_HMAC_GENERAL, "sha256-hmac-general") |
479 | | CT (CKM_SHA384, "sha384") |
480 | | CT (CKM_SHA384_HMAC, "sha384-hmac") |
481 | | CT (CKM_SHA384_HMAC_GENERAL, "sha384-hmac-general") |
482 | | CT (CKM_SHA512, "sha512") |
483 | | CT (CKM_SHA512_HMAC, "sha512-hmac") |
484 | | CT (CKM_SHA512_HMAC_GENERAL, "sha512-hmac-general") |
485 | | CT (CKM_CAST_KEY_GEN, "cast-key-gen") |
486 | | CT (CKM_CAST_ECB, "cast-ecb") |
487 | | CT (CKM_CAST_CBC, "cast-cbc") |
488 | | CT (CKM_CAST_MAC, "cast-mac") |
489 | | CT (CKM_CAST_MAC_GENERAL, "cast-mac-general") |
490 | | CT (CKM_CAST_CBC_PAD, "cast-cbc-pad") |
491 | | CT (CKM_CAST3_KEY_GEN, "cast3-key-gen") |
492 | | CT (CKM_CAST3_ECB, "cast3-ecb") |
493 | | CT (CKM_CAST3_CBC, "cast3-cbc") |
494 | | CT (CKM_CAST3_MAC, "cast3-mac") |
495 | | CT (CKM_CAST3_MAC_GENERAL, "cast3-mac-general") |
496 | | CT (CKM_CAST3_CBC_PAD, "cast3-cbc-pad") |
497 | | CT (CKM_CAST5_KEY_GEN, "cast5-key-gen") |
498 | | /* CT (CKM_CAST128_KEY_GEN) */ |
499 | | CT (CKM_CAST5_ECB, "cast5-ecb") |
500 | | /* CT (CKM_CAST128_ECB) */ |
501 | | CT (CKM_CAST5_CBC, "cast5-cbc") |
502 | | /* CT (CKM_CAST128_CBC) */ |
503 | | CT (CKM_CAST5_MAC, "cast5-mac") |
504 | | /* CT (CKM_CAST128_MAC) */ |
505 | | CT (CKM_CAST5_MAC_GENERAL, "cast5-mac-general") |
506 | | /* CT (CKM_CAST128_MAC_GENERAL) */ |
507 | | CT (CKM_CAST5_CBC_PAD, "cast5-cbc-pad") |
508 | | /* CT (CKM_CAST128_CBC_PAD) */ |
509 | | CT (CKM_RC5_KEY_GEN, "rc5-key-gen") |
510 | | CT (CKM_RC5_ECB, "rc5-ecb") |
511 | | CT (CKM_RC5_CBC, "rc5-cbc") |
512 | | CT (CKM_RC5_MAC, "rc5-mac") |
513 | | CT (CKM_RC5_MAC_GENERAL, "rc5-mac-general") |
514 | | CT (CKM_RC5_CBC_PAD, "rc5-cbc-pad") |
515 | | CT (CKM_IDEA_KEY_GEN, "idea-key-gen") |
516 | | CT (CKM_IDEA_ECB, "idea-ecb") |
517 | | CT (CKM_IDEA_CBC, "idea-cbc") |
518 | | CT (CKM_IDEA_MAC, "idea-mac") |
519 | | CT (CKM_IDEA_MAC_GENERAL, "idea-mac-general") |
520 | | CT (CKM_IDEA_CBC_PAD, "idea-cbc-pad") |
521 | | CT (CKM_GENERIC_SECRET_KEY_GEN, "generic-secret-key-gen") |
522 | | CT (CKM_CONCATENATE_BASE_AND_KEY, "concatenate-base-and-key") |
523 | | CT (CKM_CONCATENATE_BASE_AND_DATA, "concatenate-base-and-data") |
524 | | CT (CKM_CONCATENATE_DATA_AND_BASE, "concatenate-data-and-base") |
525 | | CT (CKM_XOR_BASE_AND_DATA, "xor-base-and-data") |
526 | | CT (CKM_EXTRACT_KEY_FROM_KEY, "extract-key-from-key") |
527 | | CT (CKM_SSL3_PRE_MASTER_KEY_GEN, "ssl3-pre-master-key-gen") |
528 | | CT (CKM_SSL3_MASTER_KEY_DERIVE, "ssl3-master-key-derive") |
529 | | CT (CKM_SSL3_KEY_AND_MAC_DERIVE, "ssl3-key-and-mac-derive") |
530 | | CT (CKM_SSL3_MASTER_KEY_DERIVE_DH, "ssl3-master-key-derive-dh") |
531 | | CT (CKM_TLS_PRE_MASTER_KEY_GEN, "tls-pre-master-key-gen") |
532 | | CT (CKM_TLS_MASTER_KEY_DERIVE, "tls-master-key-derive") |
533 | | CT (CKM_TLS_KEY_AND_MAC_DERIVE, "tls-key-and-mac-derive") |
534 | | CT (CKM_TLS_MASTER_KEY_DERIVE_DH, "tls-master-key-derive-dh") |
535 | | /* CT (CKM_TLS_PRF) */ |
536 | | CT (CKM_SSL3_MD5_MAC, "ssl3-md5-mac") |
537 | | CT (CKM_SSL3_SHA1_MAC, "ssl3-sha1-mac") |
538 | | CT (CKM_MD5_KEY_DERIVATION, "md5-key-derivation") |
539 | | CT (CKM_MD2_KEY_DERIVATION, "md2-key-derivation") |
540 | | CT (CKM_SHA1_KEY_DERIVATION, "sha1-key-derivation") |
541 | | CT (CKM_SHA256_KEY_DERIVATION, "sha256-key-derivation") |
542 | | CT (CKM_SHA384_KEY_DERIVATION, "sha384-key-derivation") |
543 | | CT (CKM_SHA512_KEY_DERIVATION, "sha512-key-derivation") |
544 | | CT (CKM_PBE_MD2_DES_CBC, "pbe-md2-des-cbc") |
545 | | CT (CKM_PBE_MD5_DES_CBC, "pbe-md5-des-cbc") |
546 | | CT (CKM_PBE_MD5_CAST_CBC, "pbe-md5-cast-cbc") |
547 | | CT (CKM_PBE_MD5_CAST3_CBC, "pbe-md5-cast3-cbc") |
548 | | CT (CKM_PBE_MD5_CAST5_CBC, "pbe-md5-cast5-cbc") |
549 | | /* CT (CKM_PBE_MD5_CAST128_CBC) */ |
550 | | CT (CKM_PBE_SHA1_CAST5_CBC, "pbe-sha1-cast5-cbc") |
551 | | /* CT (CKM_PBE_SHA1_CAST128_CBC) */ |
552 | | CT (CKM_PBE_SHA1_RC4_128, "pbe-sha1-rc4-128") |
553 | | CT (CKM_PBE_SHA1_RC4_40, "pbe-sha1-rc4-40") |
554 | | CT (CKM_PBE_SHA1_DES3_EDE_CBC, "pbe-sha1-des3-ede-cbc") |
555 | | CT (CKM_PBE_SHA1_DES2_EDE_CBC, "pbe-sha1-des2-ede-cbc") |
556 | | CT (CKM_PBE_SHA1_RC2_128_CBC, "pbe-sha1-rc2-128-cbc") |
557 | | CT (CKM_PBE_SHA1_RC2_40_CBC, "pbe-sha1-rc2-40-cbc") |
558 | | CT (CKM_PKCS5_PBKD2, "pkcs5-pbkd2") |
559 | | CT (CKM_PBA_SHA1_WITH_SHA1_HMAC, "pba-sha1-with-sha1-hmac") |
560 | | CT (CKM_WTLS_PRE_MASTER_KEY_GEN, "wtls-pre-master-key-gen") |
561 | | CT (CKM_WTLS_MASTER_KEY_DERIVE, "wtls-master-key-derive") |
562 | | CT (CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC, "wtls-master-key-derive-dh-ecc") |
563 | | CT (CKM_WTLS_PRF, "wtls-prf") |
564 | | CT (CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE, "wtls-server-key-and-mac-derive") |
565 | | CT (CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE, "wtls-client-key-and-mac-derive") |
566 | | CT (CKM_KEY_WRAP_LYNKS, "key-wrap-lynks") |
567 | | CT (CKM_KEY_WRAP_SET_OAEP, "key-wrap-set-oaep") |
568 | | CT (CKM_CMS_SIG, "cms-sig") |
569 | | CT (CKM_SKIPJACK_KEY_GEN, "skipjack-key-gen") |
570 | | CT (CKM_SKIPJACK_ECB64, "skipjack-ecb64") |
571 | | CT (CKM_SKIPJACK_CBC64, "skipjack-cbc64") |
572 | | CT (CKM_SKIPJACK_OFB64, "skipjack-ofb64") |
573 | | CT (CKM_SKIPJACK_CFB64, "skipjack-cfb64") |
574 | | CT (CKM_SKIPJACK_CFB32, "skipjack-cfb32") |
575 | | CT (CKM_SKIPJACK_CFB16, "skipjack-cfb16") |
576 | | CT (CKM_SKIPJACK_CFB8, "skipjack-cfb8") |
577 | | CT (CKM_SKIPJACK_WRAP, "skipjack-wrap") |
578 | | CT (CKM_SKIPJACK_PRIVATE_WRAP, "skipjack-private-wrap") |
579 | | CT (CKM_SKIPJACK_RELAYX, "skipjack-relayx") |
580 | | CT (CKM_KEA_KEY_PAIR_GEN, "kea-key-pair-gen") |
581 | | CT (CKM_KEA_KEY_DERIVE, "kea-key-derive") |
582 | | CT (CKM_FORTEZZA_TIMESTAMP, "fortezza-timestamp") |
583 | | CT (CKM_BATON_KEY_GEN, "baton-key-gen") |
584 | | CT (CKM_BATON_ECB128, "baton-ecb128") |
585 | | CT (CKM_BATON_ECB96, "baton-ecb96") |
586 | | CT (CKM_BATON_CBC128, "baton-cbc128") |
587 | | CT (CKM_BATON_COUNTER, "baton-counter") |
588 | | CT (CKM_BATON_SHUFFLE, "baton-shuffle") |
589 | | CT (CKM_BATON_WRAP, "baton-wrap") |
590 | | CT (CKM_ECDSA_KEY_PAIR_GEN, "ecdsa-key-pair-gen") |
591 | | /* CT (CKM_EC_KEY_PAIR_GEN) */ |
592 | | CT (CKM_ECDSA, "ecdsa") |
593 | | CT (CKM_ECDSA_SHA1, "ecdsa-sha1") |
594 | | CT (CKM_ECDH1_DERIVE, "ecdh1-derive") |
595 | | CT (CKM_ECDH1_COFACTOR_DERIVE, "ecdh1-cofactor-derive") |
596 | | CT (CKM_ECMQV_DERIVE, "ecmqv-derive") |
597 | | CT (CKM_JUNIPER_KEY_GEN, "juniper-key-gen") |
598 | | CT (CKM_JUNIPER_ECB128, "juniper-ecb128") |
599 | | CT (CKM_JUNIPER_CBC128, "juniper-cbc128") |
600 | | CT (CKM_JUNIPER_COUNTER, "juniper-counter") |
601 | | CT (CKM_JUNIPER_SHUFFLE, "juniper-shuffle") |
602 | | CT (CKM_JUNIPER_WRAP, "juniper-wrap") |
603 | | CT (CKM_FASTHASH, "fasthash") |
604 | | CT (CKM_AES_KEY_GEN, "aes-key-gen") |
605 | | CT (CKM_AES_ECB, "aes-ecb") |
606 | | CT (CKM_AES_CBC, "aes-cbc") |
607 | | CT (CKM_AES_MAC, "aes-mac") |
608 | | CT (CKM_AES_MAC_GENERAL, "aes-mac-general") |
609 | | CT (CKM_AES_CBC_PAD, "aes-cbc-pad") |
610 | | CT (CKM_BLOWFISH_KEY_GEN, "blowfish-key-gen") |
611 | | CT (CKM_BLOWFISH_CBC, "blowfish-cbc") |
612 | | CT (CKM_TWOFISH_KEY_GEN, "twofish-key-gen") |
613 | | CT (CKM_TWOFISH_CBC, "twofish-cbc") |
614 | | CT (CKM_DES_ECB_ENCRYPT_DATA, "des-ecb-encrypt-data") |
615 | | CT (CKM_DES_CBC_ENCRYPT_DATA, "des-cbc-encrypt-data") |
616 | | CT (CKM_DES3_ECB_ENCRYPT_DATA, "des3-ecb-encrypt-data") |
617 | | CT (CKM_DES3_CBC_ENCRYPT_DATA, "des3-cbc-encrypt-data") |
618 | | CT (CKM_AES_ECB_ENCRYPT_DATA, "aes-ecb-encrypt-data") |
619 | | CT (CKM_AES_CBC_ENCRYPT_DATA, "aes-cbc-encrypt-data") |
620 | | CT (CKM_DSA_PARAMETER_GEN, "dsa-parameter-gen") |
621 | | CT (CKM_DH_PKCS_PARAMETER_GEN, "dh-pkcs-parameter-gen") |
622 | | CT (CKM_X9_42_DH_PARAMETER_GEN, "x9-42-dh-parameter-gen") |
623 | | CT (CKM_IBM_SHA3_224, "ibm-sha3-224") |
624 | | CT (CKM_IBM_SHA3_256, "ibm-sha3-256") |
625 | | CT (CKM_IBM_SHA3_384, "ibm-sha3-384") |
626 | | CT (CKM_IBM_SHA3_512, "ibm-sha3-512") |
627 | | CT (CKM_IBM_CMAC, "ibm-cmac") |
628 | | CT (CKM_IBM_EC_X25519, "ibm-ec-x25519") |
629 | | CT (CKM_IBM_ED25519_SHA512, "ibm-ed25519-sha512") |
630 | | CT (CKM_IBM_EC_X448, "ibm-ec-x448") |
631 | | CT (CKM_IBM_ED448_SHA3, "ibm-ed448-sha3") |
632 | | CT (CKM_IBM_DILITHIUM, "ibm-dilithium") |
633 | | CT (CKM_IBM_SHA3_224_HMAC, "ibm-sha3-224-hmac") |
634 | | CT (CKM_IBM_SHA3_256_HMAC, "ibm-sha3-256-hmac") |
635 | | CT (CKM_IBM_SHA3_384_HMAC, "ibm-sha3-384-hmac") |
636 | | CT (CKM_IBM_SHA3_512_HMAC, "ibm-sha3-512-hmac") |
637 | | CT (CKM_IBM_ATTRIBUTEBOUND_WRAP, "ibm-attributebound-wrap") |
638 | | { CKA_INVALID }, |
639 | | }; |
640 | | |
641 | | const p11_constant p11_constant_hw_features[] = { |
642 | | CT (CKH_MONOTONIC_COUNTER, "monotonic-counter") |
643 | | CT (CKH_CLOCK, "clock") |
644 | | CT (CKH_USER_INTERFACE, "user-interface") |
645 | | CT (CKH_VENDOR_DEFINED, "vendor-defined") |
646 | | { CKA_INVALID }, |
647 | | }; |
648 | | |
649 | | const p11_constant p11_constant_profiles[] = { |
650 | | CT (CKP_BASELINE_PROVIDER, "baseline-provider") |
651 | | CT (CKP_EXTENDED_PROVIDER, "extended-provider") |
652 | | CT (CKP_AUTHENTICATION_TOKEN, "authentication-token") |
653 | | CT (CKP_PUBLIC_CERTIFICATES_TOKEN, "public-certificates-token") |
654 | | CT (CKP_VENDOR_DEFINED, "vendor-defined") |
655 | | { CKA_INVALID }, |
656 | | }; |
657 | | |
658 | | #undef CT |
659 | | |
660 | | struct { |
661 | | const p11_constant *table; |
662 | | int length; |
663 | | } tables[] = { |
664 | | { p11_constant_types, ELEMS (p11_constant_types) - 1 }, |
665 | | { p11_constant_classes, ELEMS (p11_constant_classes) - 1 }, |
666 | | { p11_constant_trusts, ELEMS (p11_constant_trusts) - 1 }, |
667 | | { p11_constant_certs, ELEMS (p11_constant_certs) - 1 }, |
668 | | { p11_constant_keys, ELEMS (p11_constant_keys) - 1 }, |
669 | | { p11_constant_asserts, ELEMS (p11_constant_asserts) - 1 }, |
670 | | { p11_constant_categories, ELEMS (p11_constant_categories) - 1 }, |
671 | | { p11_constant_mechanisms, ELEMS (p11_constant_mechanisms) - 1 }, |
672 | | { p11_constant_states, ELEMS (p11_constant_states) - 1 }, |
673 | | { p11_constant_users, ELEMS (p11_constant_users) - 1 }, |
674 | | { p11_constant_returns, ELEMS (p11_constant_returns) - 1 }, |
675 | | { p11_constant_hw_features, ELEMS (p11_constant_hw_features) - 1 }, |
676 | | { p11_constant_profiles, ELEMS (p11_constant_profiles) - 1 }, |
677 | | }; |
678 | | |
679 | | static int |
680 | | compar_attr_info (const void *one, |
681 | | const void *two) |
682 | 0 | { |
683 | 0 | const p11_constant *a1 = one; |
684 | 0 | const p11_constant *a2 = two; |
685 | 0 | if (a1->value == a2->value) |
686 | 0 | return 0; |
687 | 0 | if (a1->value < a2->value) |
688 | 0 | return -1; |
689 | 0 | return 1; |
690 | 0 | } |
691 | | |
692 | | static const p11_constant * |
693 | | lookup_info (const p11_constant *table, |
694 | | CK_ATTRIBUTE_TYPE type) |
695 | 0 | { |
696 | 0 | p11_constant match = { type, NULL, { NULL } }; |
697 | 0 | int length = -1; |
698 | 0 | int i; |
699 | |
|
700 | 0 | for (i = 0; i < ELEMS (tables); i++) { |
701 | 0 | if (table == tables[i].table) { |
702 | 0 | length = tables[i].length; |
703 | 0 | break; |
704 | 0 | } |
705 | 0 | } |
706 | |
|
707 | 0 | if (length == -1) |
708 | 0 | return_val_if_reached (NULL); |
709 | | |
710 | 0 | return bsearch (&match, table, length, sizeof (p11_constant), compar_attr_info); |
711 | |
|
712 | 0 | } |
713 | | const char * |
714 | | p11_constant_name (const p11_constant *constants, |
715 | | CK_ULONG type) |
716 | 0 | { |
717 | 0 | const p11_constant *constant = lookup_info (constants, type); |
718 | 0 | return constant ? constant->name : NULL; |
719 | 0 | } |
720 | | |
721 | | const char * |
722 | | p11_constant_nick (const p11_constant *constants, |
723 | | CK_ULONG type) |
724 | 0 | { |
725 | 0 | const p11_constant *constant = lookup_info (constants, type); |
726 | 0 | return constant ? constant->nicks[0] : NULL; |
727 | 0 | } |
728 | | |
729 | | p11_dict * |
730 | | p11_constant_reverse (bool nick) |
731 | 0 | { |
732 | 0 | const p11_constant *table; |
733 | 0 | p11_dict *lookups; |
734 | 0 | int length = -1; |
735 | 0 | int i, j, k; |
736 | |
|
737 | 0 | lookups = p11_dict_new (p11_dict_str_hash, p11_dict_str_equal, NULL, NULL); |
738 | 0 | return_val_if_fail (lookups != NULL, NULL); |
739 | | |
740 | 0 | for (i = 0; i < ELEMS (tables); i++) { |
741 | 0 | table = tables[i].table; |
742 | 0 | length = tables[i].length; |
743 | |
|
744 | 0 | for (j = 0; j < length; j++) { |
745 | 0 | if (nick) { |
746 | 0 | for (k = 0; table[j].nicks[k] != NULL; k++) { |
747 | 0 | if (!p11_dict_set (lookups, (void *)table[j].nicks[k], |
748 | 0 | (void *)&table[j].value)) |
749 | 0 | return_val_if_reached (NULL); |
750 | 0 | } |
751 | 0 | } else { |
752 | 0 | if (!p11_dict_set (lookups, (void *)table[j].name, (void *)&table[j].value)) |
753 | 0 | return_val_if_reached (NULL); |
754 | 0 | } |
755 | 0 | } |
756 | 0 | } |
757 | | |
758 | 0 | return lookups; |
759 | 0 | } |
760 | | |
761 | | CK_ULONG |
762 | | p11_constant_resolve (p11_dict *reversed, |
763 | | const char *string) |
764 | 0 | { |
765 | 0 | CK_ULONG *ptr; |
766 | |
|
767 | 0 | return_val_if_fail (reversed != NULL, CKA_INVALID); |
768 | 0 | return_val_if_fail (string != NULL, CKA_INVALID); |
769 | | |
770 | 0 | ptr = p11_dict_get (reversed, string); |
771 | 0 | return ptr ? *ptr : CKA_INVALID; |
772 | 0 | } |