4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _META_ATTRMASTERS_H
27 #define _META_ATTRMASTERS_H
29 #pragma ident "%Z%%M% %I% %E% SMI"
36 * Master object templates
38 * [This file should only be included by a single source file. This is a
39 * non-traditional header file in that it simply contains a bunch of large,
40 * preinitialized static const structures. They're stored here to keep them
43 * In PKCS#11, each object is well-defined... Each object type has an exact
44 * set of attributes, and each attribute always has some value. Some
45 * attribute values must be specificed when the object is created, others
46 * are optional (ie, a default value exisits). Thus, the template an
47 * application provides when creating a new object may be a subset of the
48 * allowed attributes. The "master" templates presented here, however,
54 * Aliases for some field values in generic_attr_t, so that the initialization
55 * below isn't just a confusing mess of B_TRUE and B_FALSE. Lint
56 * complaints about using "!Foo" in const initializers,
57 * so we #define each value.
61 #define Mallocd B_TRUE
63 #define EmptyValue B_TRUE
64 #define NotMallocd B_FALSE
65 #define NotClone B_FALSE
66 #define NotEmptyValue B_FALSE
67 #define EMPTYDATE ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '
71 * A note regarding CKA_CLASS and sub-type (eg CKA_KEY_TYPE)
73 * These two attributes have been moved to the top of the master template
74 * definitions. All the metaslot code assumes that CKA_CLASS resides in index=0,
75 * and the sub-type resides in index=1.
80 * Common storage object attributes, Table 19 (p81) of PKCS#11 2.11r1 spec.
82 #define COMMON_STORAGE_ATTRIBUTES \
83 { { CKA_TOKEN, NULL, sizeof (CK_BBOOL) }, \
84 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
85 CK_FALSE, unused, { unused } }, \
86 { { CKA_PRIVATE, NULL, sizeof (CK_BBOOL) }, \
87 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
88 CK_FALSE, unused, { unused } }, \
89 { { CKA_MODIFIABLE, NULL, sizeof (CK_BBOOL) }, \
90 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
91 CK_TRUE, unused, { unused } }, \
92 { { CKA_LABEL, NULL, 0 }, \
93 NotMallocd, Clone, EmptyValue, B_FALSE, \
94 unused, unused, { EMPTY } }
97 * Common certificate attributes, Table 21 (p83) of PKCS#11 2.11r1 spec.
98 * (CKA_CERTIFICATE_TYPE has been moved, to place at top of template)
101 #define COMMON_CERTIFICATE_ATTRIBUTES \
102 { { CKA_TRUSTED, NULL, sizeof (CK_BBOOL) }, \
103 NotMallocd, NotClone, NotEmptyValue, B_FALSE, \
104 CK_FALSE, unused, { unused } }
107 * Common key attributes, Table 25 (p89) of PKCS#11 2.11r1 spec.
108 * (CKA_KEY_TYPE has been moved, to place at top of template)
111 #define COMMON_KEY_ATTRIBUTES \
112 { { CKA_ID, NULL, 0 }, \
113 NotMallocd, Clone, EmptyValue, B_FALSE, \
114 unused, unused, { EMPTY } }, \
115 { { CKA_START_DATE, NULL, sizeof (CK_DATE) }, \
116 NotMallocd, Clone, EmptyValue, B_FALSE, \
117 unused, unused, { EMPTYDATE } }, \
118 { { CKA_END_DATE, NULL, sizeof (CK_DATE) }, \
119 NotMallocd, Clone, EmptyValue, B_FALSE, \
120 unused, unused, { EMPTYDATE } }, \
121 { { CKA_DERIVE, NULL, sizeof (CK_BBOOL) }, \
122 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
123 CK_FALSE, unused, { unused } }, \
124 { { CKA_LOCAL, NULL, sizeof (CK_BBOOL) }, \
125 NotMallocd, NotClone, NotEmptyValue, B_FALSE, \
126 CK_FALSE, unused, { unused } }, \
127 { { CKA_KEY_GEN_MECHANISM, NULL, sizeof (CK_MECHANISM_TYPE) }, \
128 NotMallocd, NotClone, EmptyValue, B_FALSE, \
129 unused, CK_UNAVAILABLE_INFORMATION, { unused } }
132 * Common public-key attributes, Table 26 (p90) of PKCS#11 2.11r1 spec.
134 * CKA_SUBJECT has the PKCS#11-specified default. The object-usage attributes
135 * are token-specific defaults.
138 #define COMMON_PUBKEY_ATTRIBUTES \
139 { { CKA_SUBJECT, NULL, 0 }, \
140 NotMallocd, Clone, EmptyValue, B_FALSE, \
141 unused, unused, { EMPTY } }, \
142 { { CKA_ENCRYPT, NULL, sizeof (CK_BBOOL) }, \
143 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
144 CK_TRUE, unused, { unused } }, \
145 { { CKA_VERIFY, NULL, sizeof (CK_BBOOL) }, \
146 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
147 CK_TRUE, unused, { unused } }, \
148 { { CKA_VERIFY_RECOVER, NULL, sizeof (CK_BBOOL) }, \
149 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
150 CK_TRUE, unused, { unused } }, \
151 { { CKA_WRAP, NULL, sizeof (CK_BBOOL) }, \
152 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
153 CK_TRUE, unused, { unused } }, \
154 { { CKA_TRUSTED, NULL, sizeof (CK_BBOOL) }, \
155 NotMallocd, NotClone, NotEmptyValue, B_FALSE, \
156 CK_FALSE, unused, { unused } }
159 * Common private-key attributes, Table 34 (p97) of PKCS#11 2.11r1 spec.
161 #define COMMON_PRIVKEY_ATTRIBUTES \
162 { { CKA_SUBJECT, NULL, 0 }, \
163 NotMallocd, Clone, EmptyValue, B_FALSE, \
164 unused, unused, { EMPTY } }, \
165 { { CKA_SENSITIVE, NULL, sizeof (CK_BBOOL) }, \
166 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
167 CK_FALSE, unused, { unused } }, \
168 { { CKA_SECONDARY_AUTH, NULL, sizeof (CK_BBOOL) }, \
169 NotMallocd, Clone, EmptyValue, B_FALSE, \
170 CK_FALSE, unused, { unused } }, \
171 { { CKA_DECRYPT, NULL, sizeof (CK_BBOOL) }, \
172 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
173 CK_TRUE, unused, { unused } }, \
174 { { CKA_SIGN, NULL, sizeof (CK_BBOOL) }, \
175 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
176 CK_TRUE, unused, { unused } }, \
177 { { CKA_SIGN_RECOVER, NULL, sizeof (CK_BBOOL) }, \
178 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
179 CK_TRUE, unused, { unused } }, \
180 { { CKA_UNWRAP, NULL, sizeof (CK_BBOOL) }, \
181 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
182 CK_TRUE, unused, { unused } }, \
183 { { CKA_EXTRACTABLE, NULL, sizeof (CK_BBOOL) }, \
184 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
185 CK_TRUE, unused, { unused } }, \
186 { { CKA_ALWAYS_SENSITIVE, NULL, sizeof (CK_BBOOL) }, \
187 NotMallocd, NotClone, NotEmptyValue, B_FALSE, \
188 CK_FALSE, unused, { unused } }, \
189 { { CKA_NEVER_EXTRACTABLE, NULL, sizeof (CK_BBOOL) }, \
190 NotMallocd, NotClone, NotEmptyValue, B_FALSE, \
191 CK_FALSE, unused, { unused } }
195 * Common secret-key attributes, Table 42 (p108) of PKCS#11 2.11r1 spec.
197 #define COMMON_SECKEY_ATTRIBUTES \
198 { { CKA_SENSITIVE, NULL, sizeof (CK_BBOOL) }, \
199 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
200 CK_FALSE, unused, { unused } }, \
201 { { CKA_ENCRYPT, NULL, sizeof (CK_BBOOL) }, \
202 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
203 CK_TRUE, unused, { unused } }, \
204 { { CKA_DECRYPT, NULL, sizeof (CK_BBOOL) }, \
205 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
206 CK_TRUE, unused, { unused } }, \
207 { { CKA_SIGN, NULL, sizeof (CK_BBOOL) }, \
208 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
209 CK_TRUE, unused, { unused } }, \
210 { { CKA_VERIFY, NULL, sizeof (CK_BBOOL) }, \
211 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
212 CK_TRUE, unused, { unused } }, \
213 { { CKA_WRAP, NULL, sizeof (CK_BBOOL) }, \
214 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
215 CK_TRUE, unused, { unused } }, \
216 { { CKA_UNWRAP, NULL, sizeof (CK_BBOOL) }, \
217 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
218 CK_TRUE, unused, { unused } }, \
219 { { CKA_EXTRACTABLE, NULL, sizeof (CK_BBOOL) }, \
220 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
221 CK_TRUE, unused, { unused } }, \
222 { { CKA_ALWAYS_SENSITIVE, NULL, sizeof (CK_BBOOL) }, \
223 NotMallocd, NotClone, NotEmptyValue, B_FALSE, \
224 CK_FALSE, unused, { unused } }, \
225 { { CKA_NEVER_EXTRACTABLE, NULL, sizeof (CK_BBOOL) }, \
226 NotMallocd, NotClone, NotEmptyValue, B_FALSE, \
227 CK_FALSE, unused, { unused } }
230 * Common domain-paramaters attributes, Table 60 (p123) of PKCS#11 2.11r1 spec.
231 * (CKA_KEY_TYPE has been removed, to place elsewhere)
233 #define COMMON_DOMAIN_ATTRIBUTES \
234 { { CKA_LOCAL, NULL, sizeof (CK_BBOOL) }, \
235 NotMallocd, Clone, NotEmptyValue, B_FALSE, \
236 CK_FALSE, unused, { unused } }
239 /* ========================= HW Objects ========================= */
243 * Master template for: CKO_HW_FEATURE + CKH_CLOCK
245 static const generic_attr_t OBJ_HW_CLOCK
[] =
247 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
248 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
249 unused
, CKO_HW_FEATURE
, { unused
} },
250 { { CKA_HW_FEATURE_TYPE
, NULL
, sizeof (CK_HW_FEATURE_TYPE
) },
251 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
252 unused
, CKH_CLOCK
, { unused
} },
253 { { CKA_VALUE
, NULL
, 16 },
254 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
255 unused
, unused
, { EMPTYDATE
, EMPTYDATE
} }
260 * Master template for: CKO_HW_FEATURE + CKH_MONOTONIC_COUNTER
262 * NOTE: no sub-type for this class!
264 static const generic_attr_t OBJ_HW_MONOTONIC
[] =
266 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
267 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
268 unused
, CKO_HW_FEATURE
, { unused
} },
269 { { CKA_HW_FEATURE_TYPE
, NULL
, sizeof (CK_HW_FEATURE_TYPE
) },
270 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
271 unused
, CKH_MONOTONIC_COUNTER
, { unused
} },
272 { { CKA_VALUE
, NULL
, 0 },
273 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
274 unused
, unused
, { EMPTY
} },
275 { { CKA_RESET_ON_INIT
, NULL
, sizeof (CK_BBOOL
) },
276 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
277 CK_FALSE
, unused
, { unused
} },
278 { { CKA_HAS_RESET
, NULL
, sizeof (CK_BBOOL
) },
279 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
280 CK_FALSE
, unused
, { unused
} }
284 /* ========================= Data Objects ========================= */
288 * Master template for CKO_DATA + (no subtypes for this class)
290 * Defaults are according to PKCS#11.
292 * NOTE: no sub-type for this class!
294 static const generic_attr_t OBJ_DATA
[] =
296 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
297 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
298 unused
, CKO_DATA
, { unused
} },
299 COMMON_STORAGE_ATTRIBUTES
,
300 { { CKA_APPLICATION
, NULL
, 0 },
301 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
302 unused
, unused
, { EMPTY
} },
303 { { CKA_OBJECT_ID
, NULL
, 0 },
304 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
305 unused
, unused
, { EMPTY
} },
306 { { CKA_VALUE
, NULL
, 0 },
307 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
308 unused
, unused
, { EMPTY
} }
312 /* ========================= Certificate Objects ========================= */
316 * Master template for CKO_CERTIFICATE + CKC_X_509
318 * Defaults are according to PKCS#11.
320 static const generic_attr_t OBJ_CERT_X509
[] =
322 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
323 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
324 unused
, CKO_CERTIFICATE
, { unused
} },
325 { { CKA_CERTIFICATE_TYPE
, NULL
, sizeof (CK_CERTIFICATE_TYPE
) },
326 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
327 unused
, CKC_X_509
, { unused
} },
328 COMMON_STORAGE_ATTRIBUTES
,
329 COMMON_CERTIFICATE_ATTRIBUTES
,
330 { { CKA_SUBJECT
, NULL
, 0 },
331 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
332 unused
, unused
, { EMPTY
} },
333 { { CKA_ID
, NULL
, 0 },
334 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
335 unused
, unused
, { EMPTY
} },
336 { { CKA_ISSUER
, NULL
, 0 },
337 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
338 unused
, unused
, { EMPTY
} },
339 { { CKA_SERIAL_NUMBER
, NULL
, 0 },
340 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
341 unused
, unused
, { EMPTY
} },
342 { { CKA_VALUE
, NULL
, 0 },
343 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
344 unused
, unused
, { EMPTY
} }
349 * Master template for CKO_CERTIFICATE + CKC_X_509_ATTR_CERT
351 * Defaults are according to PKCS#11.
353 static const generic_attr_t OBJ_CERT_X509ATTR
[] =
355 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
356 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
357 unused
, CKO_CERTIFICATE
, { unused
} },
358 { { CKA_CERTIFICATE_TYPE
, NULL
, sizeof (CK_CERTIFICATE_TYPE
) },
359 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
360 unused
, CKC_X_509_ATTR_CERT
, { unused
} },
361 COMMON_STORAGE_ATTRIBUTES
,
362 COMMON_CERTIFICATE_ATTRIBUTES
,
363 { { CKA_OWNER
, NULL
, 0 },
364 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
365 unused
, unused
, { EMPTY
} },
366 { { CKA_AC_ISSUER
, NULL
, 0 },
367 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
368 unused
, unused
, { EMPTY
} },
369 { { CKA_SERIAL_NUMBER
, NULL
, 0 },
370 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
371 unused
, unused
, { EMPTY
} },
372 { { CKA_ATTR_TYPES
, NULL
, 0 },
373 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
374 unused
, unused
, { EMPTY
} },
375 { { CKA_VALUE
, NULL
, 0 },
376 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
377 unused
, unused
, { EMPTY
} }
381 /* ========================= Public Keys ========================= */
385 * Master template for CKO_PUBLIC_KEY + CKK_RSA
387 static const generic_attr_t OBJ_PUBKEY_RSA
[] =
389 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
390 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
391 unused
, CKO_PUBLIC_KEY
, { unused
} },
392 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
393 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
394 unused
, CKK_RSA
, { unused
} },
395 COMMON_STORAGE_ATTRIBUTES
,
396 COMMON_KEY_ATTRIBUTES
,
397 COMMON_PUBKEY_ATTRIBUTES
,
398 { { CKA_MODULUS
, NULL
, 0 },
399 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
400 unused
, unused
, { EMPTY
} },
401 { { CKA_MODULUS_BITS
, NULL
, sizeof (CK_ULONG
)},
402 NotMallocd
, NotClone
, NotEmptyValue
, B_FALSE
,
403 unused
, 0, { unused
} },
404 { { CKA_PUBLIC_EXPONENT
, NULL
, 0 },
405 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
406 unused
, unused
, { EMPTY
} }
411 * Master template for CKO_PUBLIC_KEY + CKK_DSA
414 static const generic_attr_t OBJ_PUBKEY_DSA
[] =
416 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
417 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
418 unused
, CKO_PUBLIC_KEY
, { unused
} },
419 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
420 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
421 unused
, CKK_DSA
, { unused
} },
422 COMMON_STORAGE_ATTRIBUTES
,
423 COMMON_KEY_ATTRIBUTES
,
424 COMMON_PUBKEY_ATTRIBUTES
,
425 { { CKA_PRIME
, NULL
, 0 },
426 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
427 unused
, unused
, { EMPTY
} },
428 { { CKA_SUBPRIME
, NULL
, 0 },
429 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
430 unused
, unused
, { EMPTY
} },
431 { { CKA_BASE
, NULL
, 0 },
432 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
433 unused
, unused
, { EMPTY
} },
434 { { CKA_VALUE
, NULL
, 0 },
435 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
436 unused
, unused
, { EMPTY
} }
441 * Master template for CKO_PUBLIC_KEY + CKK_EC
444 static const generic_attr_t OBJ_PUBKEY_EC
[] =
446 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
447 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
448 unused
, CKO_PUBLIC_KEY
, { unused
} },
449 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
450 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
451 unused
, CKK_EC
, { unused
} },
452 COMMON_STORAGE_ATTRIBUTES
,
453 COMMON_KEY_ATTRIBUTES
,
454 COMMON_PUBKEY_ATTRIBUTES
,
455 { { CKA_EC_PARAMS
, NULL
, 0 },
456 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
457 unused
, unused
, { EMPTY
} },
458 { { CKA_EC_POINT
, NULL
, 0 },
459 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
460 unused
, unused
, { EMPTY
} }
465 * Master template for CKO_PUBLIC_KEY + CKK_DH
468 static const generic_attr_t OBJ_PUBKEY_DH
[] =
470 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
471 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
472 unused
, CKO_PUBLIC_KEY
, { unused
} },
473 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
474 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
475 unused
, CKK_DH
, { unused
} },
476 COMMON_STORAGE_ATTRIBUTES
,
477 COMMON_KEY_ATTRIBUTES
,
478 COMMON_PUBKEY_ATTRIBUTES
,
479 { { CKA_PRIME
, NULL
, 0 },
480 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
481 unused
, unused
, { EMPTY
} },
482 { { CKA_BASE
, NULL
, 0 },
483 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
484 unused
, unused
, { EMPTY
} },
485 { { CKA_VALUE
, NULL
, 0 },
486 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
487 unused
, unused
, { EMPTY
} }
492 * Master template for CKO_PUBLIC_KEY + CKK_X9_42_DH
495 static const generic_attr_t OBJ_PUBKEY_X942DH
[] =
497 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
498 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
499 unused
, CKO_PUBLIC_KEY
, { unused
} },
500 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
501 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
502 unused
, CKK_X9_42_DH
, { unused
} },
503 COMMON_STORAGE_ATTRIBUTES
,
504 COMMON_KEY_ATTRIBUTES
,
505 COMMON_PUBKEY_ATTRIBUTES
,
506 { { CKA_PRIME
, NULL
, 0 },
507 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
508 unused
, unused
, { EMPTY
} },
509 { { CKA_BASE
, NULL
, 0 },
510 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
511 unused
, unused
, { EMPTY
} },
512 { { CKA_SUBPRIME
, NULL
, 0 },
513 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
514 unused
, unused
, { EMPTY
} },
515 { { CKA_VALUE
, NULL
, 0 },
516 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
517 unused
, unused
, { EMPTY
} }
522 * Master template for CKO_PUBLIC_KEY + CKK_KEA
525 static const generic_attr_t OBJ_PUBKEY_KEA
[] =
527 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
528 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
529 unused
, CKO_PUBLIC_KEY
, { unused
} },
530 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
531 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
532 unused
, CKK_KEA
, { unused
} },
533 COMMON_STORAGE_ATTRIBUTES
,
534 COMMON_KEY_ATTRIBUTES
,
535 COMMON_PUBKEY_ATTRIBUTES
,
536 { { CKA_PRIME
, NULL
, 0 },
537 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
538 unused
, unused
, { EMPTY
} },
539 { { CKA_BASE
, NULL
, 0 },
540 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
541 unused
, unused
, { EMPTY
} },
542 { { CKA_SUBPRIME
, NULL
, 0 },
543 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
544 unused
, unused
, { EMPTY
} },
545 { { CKA_VALUE
, NULL
, 0 },
546 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
547 unused
, unused
, { EMPTY
} }
551 /* ========================= Private Keys ========================= */
555 * Master template for CKO_PRIVATE_KEY + CKK_RSA
558 static const generic_attr_t OBJ_PRIVKEY_RSA
[] =
560 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
561 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
562 unused
, CKO_PRIVATE_KEY
, { unused
} },
563 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
564 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
565 unused
, CKK_RSA
, { unused
} },
566 COMMON_STORAGE_ATTRIBUTES
,
567 COMMON_KEY_ATTRIBUTES
,
568 COMMON_PRIVKEY_ATTRIBUTES
,
569 { { CKA_MODULUS
, NULL
, 0 },
570 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
571 unused
, unused
, { EMPTY
} },
572 { { CKA_PRIVATE_EXPONENT
, NULL
, 0 },
573 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
574 unused
, unused
, { EMPTY
} },
575 { { CKA_PUBLIC_EXPONENT
, NULL
, 0 },
576 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
577 unused
, unused
, { EMPTY
} },
578 { { CKA_PRIME_1
, NULL
, 0 },
579 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
580 unused
, unused
, { EMPTY
} },
581 { { CKA_PRIME_2
, NULL
, 0 },
582 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
583 unused
, unused
, { EMPTY
} },
584 { { CKA_EXPONENT_1
, NULL
, 0 },
585 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
586 unused
, unused
, { EMPTY
} },
587 { { CKA_EXPONENT_2
, NULL
, 0 },
588 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
589 unused
, unused
, { EMPTY
} },
590 { { CKA_COEFFICIENT
, NULL
, 0 },
591 NotMallocd
, Clone
, EmptyValue
, B_FALSE
,
592 unused
, unused
, { EMPTY
} }
597 * Master template for CKO_PRIVATE_KEY + CKK_DSA
600 static const generic_attr_t OBJ_PRIVKEY_DSA
[] =
602 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
603 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
604 unused
, CKO_PRIVATE_KEY
, { unused
} },
605 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
606 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
607 unused
, CKK_DSA
, { unused
} },
608 COMMON_STORAGE_ATTRIBUTES
,
609 COMMON_KEY_ATTRIBUTES
,
610 COMMON_PRIVKEY_ATTRIBUTES
,
611 { { CKA_PRIME
, NULL
, 0 },
612 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
613 unused
, unused
, { EMPTY
} },
614 { { CKA_SUBPRIME
, NULL
, 0 },
615 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
616 unused
, unused
, { EMPTY
} },
617 { { CKA_BASE
, NULL
, 0 },
618 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
619 unused
, unused
, { EMPTY
} },
620 { { CKA_VALUE
, NULL
, 0 },
621 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
622 unused
, unused
, { EMPTY
} }
627 * Master template for CKO_PRIVATE_KEY + CKK_EC
630 static const generic_attr_t OBJ_PRIVKEY_EC
[] =
632 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
633 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
634 unused
, CKO_PRIVATE_KEY
, { unused
} },
635 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
636 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
637 unused
, CKK_EC
, { unused
} },
638 COMMON_STORAGE_ATTRIBUTES
,
639 COMMON_KEY_ATTRIBUTES
,
640 COMMON_PRIVKEY_ATTRIBUTES
,
641 { { CKA_EC_PARAMS
, NULL
, 0 },
642 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
643 unused
, unused
, { EMPTY
} },
644 { { CKA_VALUE
, NULL
, 0 },
645 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
646 unused
, unused
, { EMPTY
} }
651 * Master template for CKO_PRIVATE_KEY + CKK_DH
653 static const generic_attr_t OBJ_PRIVKEY_DH
[] =
655 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
656 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
657 unused
, CKO_PRIVATE_KEY
, { unused
} },
658 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
659 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
660 unused
, CKK_DH
, { unused
} },
661 COMMON_STORAGE_ATTRIBUTES
,
662 COMMON_KEY_ATTRIBUTES
,
663 COMMON_PRIVKEY_ATTRIBUTES
,
664 { { CKA_PRIME
, NULL
, 0 },
665 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
666 unused
, unused
, { EMPTY
} },
667 { { CKA_BASE
, NULL
, 0 },
668 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
669 unused
, unused
, { EMPTY
} },
670 { { CKA_VALUE
, NULL
, 0 },
671 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
672 unused
, unused
, { EMPTY
} },
673 { { CKA_VALUE_BITS
, NULL
, sizeof (CK_ULONG
) },
674 NotMallocd
, NotClone
, NotEmptyValue
, B_FALSE
,
675 unused
, 0, { unused
} }
680 * Master template for CKO_PRIVATE_KEY + CKK_X9_42_DH
683 static const generic_attr_t OBJ_PRIVKEY_X942DH
[] =
685 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
686 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
687 unused
, CKO_PRIVATE_KEY
, { unused
} },
688 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
689 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
690 unused
, CKK_X9_42_DH
, { unused
} },
691 COMMON_STORAGE_ATTRIBUTES
,
692 COMMON_KEY_ATTRIBUTES
,
693 COMMON_PRIVKEY_ATTRIBUTES
,
694 { { CKA_PRIME
, NULL
, 0 },
695 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
696 unused
, unused
, { EMPTY
} },
697 { { CKA_SUBPRIME
, NULL
, 0 },
698 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
699 unused
, unused
, { EMPTY
} },
700 { { CKA_BASE
, NULL
, 0 },
701 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
702 unused
, unused
, { EMPTY
} },
703 { { CKA_VALUE
, NULL
, 0 },
704 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
705 unused
, unused
, { EMPTY
} }
710 * Master template for CKO_PRIVATE_KEY + CKK_KEA
713 static const generic_attr_t OBJ_PRIVKEY_KEA
[] =
715 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
716 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
717 unused
, CKO_PRIVATE_KEY
, { unused
} },
718 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
719 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
720 unused
, CKK_KEA
, { unused
} },
721 COMMON_STORAGE_ATTRIBUTES
,
722 COMMON_KEY_ATTRIBUTES
,
723 COMMON_PRIVKEY_ATTRIBUTES
,
724 { { CKA_PRIME
, NULL
, 0 },
725 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
726 unused
, unused
, { EMPTY
} },
727 { { CKA_BASE
, NULL
, 0 },
728 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
729 unused
, unused
, { EMPTY
} },
730 { { CKA_SUBPRIME
, NULL
, 0 },
731 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
732 unused
, unused
, { EMPTY
} },
733 { { CKA_VALUE
, NULL
, 0 },
734 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
735 unused
, unused
, { EMPTY
} }
739 /* ========================= Secret Keys ========================= */
743 * Master template for CKO_SECRET_KEY + (fixed-length keytype)
745 static const generic_attr_t OBJ_SECKEY
[] =
747 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
748 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
749 unused
, CKO_SECRET_KEY
, { unused
} },
750 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
751 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
752 unused
, CKK_GENERIC_SECRET
, { unused
} },
753 COMMON_STORAGE_ATTRIBUTES
,
754 COMMON_KEY_ATTRIBUTES
,
755 COMMON_SECKEY_ATTRIBUTES
,
756 { { CKA_VALUE
, NULL
, 0 },
757 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
758 unused
, unused
, { EMPTY
} }
763 * Master template for CKO_SECRET_KEY + (variable-length keytype)
766 static const generic_attr_t OBJ_SECKEY_WITHLEN
[] =
768 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
769 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
770 unused
, CKO_SECRET_KEY
, { unused
} },
771 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
772 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
773 unused
, CKK_GENERIC_SECRET
, { unused
} },
774 COMMON_STORAGE_ATTRIBUTES
,
775 COMMON_KEY_ATTRIBUTES
,
776 COMMON_SECKEY_ATTRIBUTES
,
777 { { CKA_VALUE
, NULL
, 0 },
778 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
779 unused
, unused
, { EMPTY
} },
780 { { CKA_VALUE_LEN
, NULL
, sizeof (CK_ULONG
) },
781 NotMallocd
, NotClone
, NotEmptyValue
, B_FALSE
,
782 unused
, 0, { unused
} }
786 /* ========================= Domain Parameters ========================= */
790 * Master template for CKO_DOMAIN_PARAMETERS + CKK_DSA
793 static const generic_attr_t OBJ_DOM_DSA
[] =
795 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
796 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
797 unused
, CKO_DOMAIN_PARAMETERS
, { unused
} },
798 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
799 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
800 unused
, CKK_DSA
, { unused
} },
801 COMMON_STORAGE_ATTRIBUTES
,
802 COMMON_DOMAIN_ATTRIBUTES
,
803 { { CKA_PRIME
, NULL
, 0 },
804 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
805 unused
, unused
, { EMPTY
} },
806 { { CKA_SUBPRIME
, NULL
, 0 },
807 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
808 unused
, unused
, { EMPTY
} },
809 { { CKA_BASE
, NULL
, 0 },
810 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
811 unused
, unused
, { EMPTY
} },
812 { { CKA_PRIME_BITS
, NULL
, sizeof (CK_ULONG
) },
813 NotMallocd
, NotClone
, NotEmptyValue
, B_FALSE
,
814 unused
, 0, { unused
} }
818 * Master template for CKO_DOMAIN_PARAMETERS + CKK_DH
821 static const generic_attr_t OBJ_DOM_DH
[] =
823 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
824 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
825 unused
, CKO_DOMAIN_PARAMETERS
, { unused
} },
826 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
827 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
828 unused
, CKK_DH
, { unused
} },
829 COMMON_STORAGE_ATTRIBUTES
,
830 COMMON_DOMAIN_ATTRIBUTES
,
831 { { CKA_PRIME
, NULL
, 0 },
832 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
833 unused
, unused
, { EMPTY
} },
834 { { CKA_BASE
, NULL
, 0 },
835 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
836 unused
, unused
, { EMPTY
} },
837 { { CKA_PRIME_BITS
, NULL
, sizeof (CK_ULONG
) },
838 NotMallocd
, NotClone
, NotEmptyValue
, B_FALSE
,
839 unused
, 0, { unused
} }
843 * Master template for CKO_DOMAIN_PARAMETERS + CKK_X9_42_DH
846 static const generic_attr_t OBJ_DOM_X942DH
[] =
848 { { CKA_CLASS
, NULL
, sizeof (CK_OBJECT_CLASS
) },
849 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
850 unused
, CKO_DOMAIN_PARAMETERS
, { unused
} },
851 { { CKA_KEY_TYPE
, NULL
, sizeof (CK_KEY_TYPE
) },
852 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
853 unused
, CKK_X9_42_DH
, { unused
} },
854 COMMON_STORAGE_ATTRIBUTES
,
855 COMMON_DOMAIN_ATTRIBUTES
,
856 { { CKA_PRIME
, NULL
, 0 },
857 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
858 unused
, unused
, { EMPTY
} },
859 { { CKA_BASE
, NULL
, 0 },
860 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
861 unused
, unused
, { EMPTY
} },
862 { { CKA_SUBPRIME
, NULL
, 0 },
863 NotMallocd
, Clone
, NotEmptyValue
, B_FALSE
,
864 unused
, unused
, { EMPTY
} },
865 { { CKA_PRIME_BITS
, NULL
, sizeof (CK_ULONG
) },
866 NotMallocd
, NotClone
, NotEmptyValue
, B_FALSE
,
867 unused
, 0, { unused
} },
868 { { CKA_SUBPRIME_BITS
, NULL
, sizeof (CK_ULONG
) },
869 NotMallocd
, NotClone
, NotEmptyValue
, B_FALSE
,
870 unused
, 0, { unused
} }
877 #endif /* _META_ATTRMASTERS_H */