5869 Need AES CMAC support in KCF+PKCS11
[unleashed.git] / usr / src / uts / common / sys / crypto / ioctl.h
blobb7b511768b170586adeed14a77103cf07f2c39cb
1 /*
2 * CDDL HEADER START
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]
19 * CDDL HEADER END
23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #ifndef _SYS_CRYPTO_IOCTL_H
28 #define _SYS_CRYPTO_IOCTL_H
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
34 #include <sys/types.h>
35 #include <sys/crypto/api.h>
36 #include <sys/crypto/spi.h>
37 #include <sys/crypto/common.h>
39 #define CRYPTO_MAX_ATTRIBUTE_COUNT 128
41 #define CRYPTO_IOFLAGS_RW_SESSION 0x00000001
43 #define CRYPTO(x) (('y' << 8) | (x))
45 #define MAX_NUM_THRESHOLD 7
47 /* the PKCS11 Mechanisms */
48 #define CKM_RC4 0x00000111UL
49 #define CKM_DES3_ECB 0x00000132UL
50 #define CKM_DES3_CBC 0x00000133UL
51 #define CKM_MD5 0x00000210UL
52 #define CKM_SHA_1 0x00000220UL
53 #define CKM_AES_ECB 0x00001081UL
54 #define CKM_AES_CBC 0x00001082UL
57 * General Purpose Ioctls
60 typedef struct fl_mechs_threshold {
61 int mech_type;
62 uint32_t mech_threshold;
63 } fl_mechs_threshold_t;
65 typedef struct crypto_function_list {
66 boolean_t fl_digest_init;
67 boolean_t fl_digest;
68 boolean_t fl_digest_update;
69 boolean_t fl_digest_key;
70 boolean_t fl_digest_final;
72 boolean_t fl_encrypt_init;
73 boolean_t fl_encrypt;
74 boolean_t fl_encrypt_update;
75 boolean_t fl_encrypt_final;
77 boolean_t fl_decrypt_init;
78 boolean_t fl_decrypt;
79 boolean_t fl_decrypt_update;
80 boolean_t fl_decrypt_final;
82 boolean_t fl_mac_init;
83 boolean_t fl_mac;
84 boolean_t fl_mac_update;
85 boolean_t fl_mac_final;
87 boolean_t fl_sign_init;
88 boolean_t fl_sign;
89 boolean_t fl_sign_update;
90 boolean_t fl_sign_final;
91 boolean_t fl_sign_recover_init;
92 boolean_t fl_sign_recover;
94 boolean_t fl_verify_init;
95 boolean_t fl_verify;
96 boolean_t fl_verify_update;
97 boolean_t fl_verify_final;
98 boolean_t fl_verify_recover_init;
99 boolean_t fl_verify_recover;
101 boolean_t fl_digest_encrypt_update;
102 boolean_t fl_decrypt_digest_update;
103 boolean_t fl_sign_encrypt_update;
104 boolean_t fl_decrypt_verify_update;
106 boolean_t fl_seed_random;
107 boolean_t fl_generate_random;
109 boolean_t fl_session_open;
110 boolean_t fl_session_close;
111 boolean_t fl_session_login;
112 boolean_t fl_session_logout;
114 boolean_t fl_object_create;
115 boolean_t fl_object_copy;
116 boolean_t fl_object_destroy;
117 boolean_t fl_object_get_size;
118 boolean_t fl_object_get_attribute_value;
119 boolean_t fl_object_set_attribute_value;
120 boolean_t fl_object_find_init;
121 boolean_t fl_object_find;
122 boolean_t fl_object_find_final;
124 boolean_t fl_key_generate;
125 boolean_t fl_key_generate_pair;
126 boolean_t fl_key_wrap;
127 boolean_t fl_key_unwrap;
128 boolean_t fl_key_derive;
130 boolean_t fl_init_token;
131 boolean_t fl_init_pin;
132 boolean_t fl_set_pin;
134 boolean_t prov_is_hash_limited;
135 uint32_t prov_hash_threshold;
136 uint32_t prov_hash_limit;
138 boolean_t prov_is_hmac_limited;
139 uint32_t prov_hmac_limit;
141 int total_threshold_count;
142 fl_mechs_threshold_t fl_threshold[MAX_NUM_THRESHOLD];
143 } crypto_function_list_t;
145 typedef struct crypto_get_function_list {
146 uint_t fl_return_value;
147 crypto_provider_id_t fl_provider_id;
148 crypto_function_list_t fl_list;
149 } crypto_get_function_list_t;
151 typedef struct crypto_get_mechanism_number {
152 uint_t pn_return_value;
153 caddr_t pn_mechanism_string;
154 size_t pn_mechanism_len;
155 crypto_mech_type_t pn_internal_number;
156 } crypto_get_mechanism_number_t;
158 #ifdef _KERNEL
159 #ifdef _SYSCALL32
161 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
162 #pragma pack(4)
163 #endif
165 typedef struct crypto_get_mechanism_number32 {
166 uint32_t pn_return_value;
167 caddr32_t pn_mechanism_string;
168 size32_t pn_mechanism_len;
169 crypto_mech_type_t pn_internal_number;
170 } crypto_get_mechanism_number32_t;
172 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
173 #pragma pack()
174 #endif
176 #endif /* _SYSCALL32 */
177 #endif /* _KERNEL */
179 #define CRYPTO_GET_FUNCTION_LIST CRYPTO(20)
180 #define CRYPTO_GET_MECHANISM_NUMBER CRYPTO(21)
183 * Session Ioctls
186 typedef uint32_t crypto_flags_t;
188 typedef struct crypto_open_session {
189 uint_t os_return_value;
190 crypto_session_id_t os_session;
191 crypto_flags_t os_flags;
192 crypto_provider_id_t os_provider_id;
193 } crypto_open_session_t;
195 typedef struct crypto_close_session {
196 uint_t cs_return_value;
197 crypto_session_id_t cs_session;
198 } crypto_close_session_t;
200 typedef struct crypto_close_all_sessions {
201 uint_t as_return_value;
202 crypto_provider_id_t as_provider_id;
203 } crypto_close_all_sessions_t;
205 #define CRYPTO_OPEN_SESSION CRYPTO(30)
206 #define CRYPTO_CLOSE_SESSION CRYPTO(31)
207 #define CRYPTO_CLOSE_ALL_SESSIONS CRYPTO(32)
210 * Login Ioctls
212 typedef struct crypto_login {
213 uint_t co_return_value;
214 crypto_session_id_t co_session;
215 uint_t co_user_type;
216 uint_t co_pin_len;
217 caddr_t co_pin;
218 } crypto_login_t;
220 typedef struct crypto_logout {
221 uint_t cl_return_value;
222 crypto_session_id_t cl_session;
223 } crypto_logout_t;
225 #ifdef _KERNEL
226 #ifdef _SYSCALL32
228 typedef struct crypto_login32 {
229 uint32_t co_return_value;
230 crypto_session_id_t co_session;
231 uint32_t co_user_type;
232 uint32_t co_pin_len;
233 caddr32_t co_pin;
234 } crypto_login32_t;
236 typedef struct crypto_logout32 {
237 uint32_t cl_return_value;
238 crypto_session_id_t cl_session;
239 } crypto_logout32_t;
241 #endif /* _SYSCALL32 */
242 #endif /* _KERNEL */
244 #define CRYPTO_LOGIN CRYPTO(40)
245 #define CRYPTO_LOGOUT CRYPTO(41)
247 /* flag for encrypt and decrypt operations */
248 #define CRYPTO_INPLACE_OPERATION 0x00000001
251 * Cryptographic Ioctls
253 typedef struct crypto_encrypt {
254 uint_t ce_return_value;
255 crypto_session_id_t ce_session;
256 size_t ce_datalen;
257 caddr_t ce_databuf;
258 size_t ce_encrlen;
259 caddr_t ce_encrbuf;
260 uint_t ce_flags;
261 } crypto_encrypt_t;
263 typedef struct crypto_encrypt_init {
264 uint_t ei_return_value;
265 crypto_session_id_t ei_session;
266 crypto_mechanism_t ei_mech;
267 crypto_key_t ei_key;
268 } crypto_encrypt_init_t;
270 typedef struct crypto_encrypt_update {
271 uint_t eu_return_value;
272 crypto_session_id_t eu_session;
273 size_t eu_datalen;
274 caddr_t eu_databuf;
275 size_t eu_encrlen;
276 caddr_t eu_encrbuf;
277 uint_t eu_flags;
278 } crypto_encrypt_update_t;
280 typedef struct crypto_encrypt_final {
281 uint_t ef_return_value;
282 crypto_session_id_t ef_session;
283 size_t ef_encrlen;
284 caddr_t ef_encrbuf;
285 } crypto_encrypt_final_t;
287 typedef struct crypto_decrypt {
288 uint_t cd_return_value;
289 crypto_session_id_t cd_session;
290 size_t cd_encrlen;
291 caddr_t cd_encrbuf;
292 size_t cd_datalen;
293 caddr_t cd_databuf;
294 uint_t cd_flags;
295 } crypto_decrypt_t;
297 typedef struct crypto_decrypt_init {
298 uint_t di_return_value;
299 crypto_session_id_t di_session;
300 crypto_mechanism_t di_mech;
301 crypto_key_t di_key;
302 } crypto_decrypt_init_t;
304 typedef struct crypto_decrypt_update {
305 uint_t du_return_value;
306 crypto_session_id_t du_session;
307 size_t du_encrlen;
308 caddr_t du_encrbuf;
309 size_t du_datalen;
310 caddr_t du_databuf;
311 uint_t du_flags;
312 } crypto_decrypt_update_t;
314 typedef struct crypto_decrypt_final {
315 uint_t df_return_value;
316 crypto_session_id_t df_session;
317 size_t df_datalen;
318 caddr_t df_databuf;
319 } crypto_decrypt_final_t;
321 typedef struct crypto_digest {
322 uint_t cd_return_value;
323 crypto_session_id_t cd_session;
324 size_t cd_datalen;
325 caddr_t cd_databuf;
326 size_t cd_digestlen;
327 caddr_t cd_digestbuf;
328 } crypto_digest_t;
330 typedef struct crypto_digest_init {
331 uint_t di_return_value;
332 crypto_session_id_t di_session;
333 crypto_mechanism_t di_mech;
334 } crypto_digest_init_t;
336 typedef struct crypto_digest_update {
337 uint_t du_return_value;
338 crypto_session_id_t du_session;
339 size_t du_datalen;
340 caddr_t du_databuf;
341 } crypto_digest_update_t;
343 typedef struct crypto_digest_key {
344 uint_t dk_return_value;
345 crypto_session_id_t dk_session;
346 crypto_key_t dk_key;
347 } crypto_digest_key_t;
349 typedef struct crypto_digest_final {
350 uint_t df_return_value;
351 crypto_session_id_t df_session;
352 size_t df_digestlen;
353 caddr_t df_digestbuf;
354 } crypto_digest_final_t;
356 typedef struct crypto_mac {
357 uint_t cm_return_value;
358 crypto_session_id_t cm_session;
359 size_t cm_datalen;
360 caddr_t cm_databuf;
361 size_t cm_maclen;
362 caddr_t cm_macbuf;
363 } crypto_mac_t;
365 typedef struct crypto_mac_init {
366 uint_t mi_return_value;
367 crypto_session_id_t mi_session;
368 crypto_mechanism_t mi_mech;
369 crypto_key_t mi_key;
370 } crypto_mac_init_t;
372 typedef struct crypto_mac_update {
373 uint_t mu_return_value;
374 crypto_session_id_t mu_session;
375 size_t mu_datalen;
376 caddr_t mu_databuf;
377 } crypto_mac_update_t;
379 typedef struct crypto_mac_final {
380 uint_t mf_return_value;
381 crypto_session_id_t mf_session;
382 size_t mf_maclen;
383 caddr_t mf_macbuf;
384 } crypto_mac_final_t;
386 typedef struct crypto_sign {
387 uint_t cs_return_value;
388 crypto_session_id_t cs_session;
389 size_t cs_datalen;
390 caddr_t cs_databuf;
391 size_t cs_signlen;
392 caddr_t cs_signbuf;
393 } crypto_sign_t;
395 typedef struct crypto_sign_init {
396 uint_t si_return_value;
397 crypto_session_id_t si_session;
398 crypto_mechanism_t si_mech;
399 crypto_key_t si_key;
400 } crypto_sign_init_t;
402 typedef struct crypto_sign_update {
403 uint_t su_return_value;
404 crypto_session_id_t su_session;
405 size_t su_datalen;
406 caddr_t su_databuf;
407 } crypto_sign_update_t;
409 typedef struct crypto_sign_final {
410 uint_t sf_return_value;
411 crypto_session_id_t sf_session;
412 size_t sf_signlen;
413 caddr_t sf_signbuf;
414 } crypto_sign_final_t;
416 typedef struct crypto_sign_recover_init {
417 uint_t ri_return_value;
418 crypto_session_id_t ri_session;
419 crypto_mechanism_t ri_mech;
420 crypto_key_t ri_key;
421 } crypto_sign_recover_init_t;
423 typedef struct crypto_sign_recover {
424 uint_t sr_return_value;
425 crypto_session_id_t sr_session;
426 size_t sr_datalen;
427 caddr_t sr_databuf;
428 size_t sr_signlen;
429 caddr_t sr_signbuf;
430 } crypto_sign_recover_t;
432 typedef struct crypto_verify {
433 uint_t cv_return_value;
434 crypto_session_id_t cv_session;
435 size_t cv_datalen;
436 caddr_t cv_databuf;
437 size_t cv_signlen;
438 caddr_t cv_signbuf;
439 } crypto_verify_t;
441 typedef struct crypto_verify_init {
442 uint_t vi_return_value;
443 crypto_session_id_t vi_session;
444 crypto_mechanism_t vi_mech;
445 crypto_key_t vi_key;
446 } crypto_verify_init_t;
448 typedef struct crypto_verify_update {
449 uint_t vu_return_value;
450 crypto_session_id_t vu_session;
451 size_t vu_datalen;
452 caddr_t vu_databuf;
453 } crypto_verify_update_t;
455 typedef struct crypto_verify_final {
456 uint_t vf_return_value;
457 crypto_session_id_t vf_session;
458 size_t vf_signlen;
459 caddr_t vf_signbuf;
460 } crypto_verify_final_t;
462 typedef struct crypto_verify_recover_init {
463 uint_t ri_return_value;
464 crypto_session_id_t ri_session;
465 crypto_mechanism_t ri_mech;
466 crypto_key_t ri_key;
467 } crypto_verify_recover_init_t;
469 typedef struct crypto_verify_recover {
470 uint_t vr_return_value;
471 crypto_session_id_t vr_session;
472 size_t vr_signlen;
473 caddr_t vr_signbuf;
474 size_t vr_datalen;
475 caddr_t vr_databuf;
476 } crypto_verify_recover_t;
478 typedef struct crypto_digest_encrypt_update {
479 uint_t eu_return_value;
480 crypto_session_id_t eu_session;
481 size_t eu_datalen;
482 caddr_t eu_databuf;
483 size_t eu_encrlen;
484 caddr_t eu_encrbuf;
485 } crypto_digest_encrypt_update_t;
487 typedef struct crypto_decrypt_digest_update {
488 uint_t du_return_value;
489 crypto_session_id_t du_session;
490 size_t du_encrlen;
491 caddr_t du_encrbuf;
492 size_t du_datalen;
493 caddr_t du_databuf;
494 } crypto_decrypt_digest_update_t;
496 typedef struct crypto_sign_encrypt_update {
497 uint_t eu_return_value;
498 crypto_session_id_t eu_session;
499 size_t eu_datalen;
500 caddr_t eu_databuf;
501 size_t eu_encrlen;
502 caddr_t eu_encrbuf;
503 } crypto_sign_encrypt_update_t;
505 typedef struct crypto_decrypt_verify_update {
506 uint_t vu_return_value;
507 crypto_session_id_t vu_session;
508 size_t vu_encrlen;
509 caddr_t vu_encrbuf;
510 size_t vu_datalen;
511 caddr_t vu_databuf;
512 } crypto_decrypt_verify_update_t;
514 #ifdef _KERNEL
515 #ifdef _SYSCALL32
517 typedef struct crypto_encrypt32 {
518 uint32_t ce_return_value;
519 crypto_session_id_t ce_session;
520 size32_t ce_datalen;
521 caddr32_t ce_databuf;
522 size32_t ce_encrlen;
523 caddr32_t ce_encrbuf;
524 uint32_t ce_flags;
525 } crypto_encrypt32_t;
527 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
528 #pragma pack(4)
529 #endif
531 typedef struct crypto_encrypt_init32 {
532 uint32_t ei_return_value;
533 crypto_session_id_t ei_session;
534 crypto_mechanism32_t ei_mech;
535 crypto_key32_t ei_key;
536 } crypto_encrypt_init32_t;
538 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
539 #pragma pack()
540 #endif
542 typedef struct crypto_encrypt_update32 {
543 uint32_t eu_return_value;
544 crypto_session_id_t eu_session;
545 size32_t eu_datalen;
546 caddr32_t eu_databuf;
547 size32_t eu_encrlen;
548 caddr32_t eu_encrbuf;
549 uint_t eu_flags;
550 } crypto_encrypt_update32_t;
552 typedef struct crypto_encrypt_final32 {
553 uint32_t ef_return_value;
554 crypto_session_id_t ef_session;
555 size32_t ef_encrlen;
556 caddr32_t ef_encrbuf;
557 } crypto_encrypt_final32_t;
559 typedef struct crypto_decrypt32 {
560 uint32_t cd_return_value;
561 crypto_session_id_t cd_session;
562 size32_t cd_encrlen;
563 caddr32_t cd_encrbuf;
564 size32_t cd_datalen;
565 caddr32_t cd_databuf;
566 uint32_t cd_flags;
567 } crypto_decrypt32_t;
569 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
570 #pragma pack(4)
571 #endif
573 typedef struct crypto_decrypt_init32 {
574 uint32_t di_return_value;
575 crypto_session_id_t di_session;
576 crypto_mechanism32_t di_mech;
577 crypto_key32_t di_key;
578 } crypto_decrypt_init32_t;
580 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
581 #pragma pack()
582 #endif
584 typedef struct crypto_decrypt_update32 {
585 uint32_t du_return_value;
586 crypto_session_id_t du_session;
587 size32_t du_encrlen;
588 caddr32_t du_encrbuf;
589 size32_t du_datalen;
590 caddr32_t du_databuf;
591 uint_t du_flags;
592 } crypto_decrypt_update32_t;
594 typedef struct crypto_decrypt_final32 {
595 uint32_t df_return_value;
596 crypto_session_id_t df_session;
597 size32_t df_datalen;
598 caddr32_t df_databuf;
599 } crypto_decrypt_final32_t;
601 typedef struct crypto_digest32 {
602 uint32_t cd_return_value;
603 crypto_session_id_t cd_session;
604 size32_t cd_datalen;
605 caddr32_t cd_databuf;
606 size32_t cd_digestlen;
607 caddr32_t cd_digestbuf;
608 } crypto_digest32_t;
610 typedef struct crypto_digest_init32 {
611 uint32_t di_return_value;
612 crypto_session_id_t di_session;
613 crypto_mechanism32_t di_mech;
614 } crypto_digest_init32_t;
616 typedef struct crypto_digest_update32 {
617 uint32_t du_return_value;
618 crypto_session_id_t du_session;
619 size32_t du_datalen;
620 caddr32_t du_databuf;
621 } crypto_digest_update32_t;
623 typedef struct crypto_digest_key32 {
624 uint32_t dk_return_value;
625 crypto_session_id_t dk_session;
626 crypto_key32_t dk_key;
627 } crypto_digest_key32_t;
629 typedef struct crypto_digest_final32 {
630 uint32_t df_return_value;
631 crypto_session_id_t df_session;
632 size32_t df_digestlen;
633 caddr32_t df_digestbuf;
634 } crypto_digest_final32_t;
636 typedef struct crypto_mac32 {
637 uint32_t cm_return_value;
638 crypto_session_id_t cm_session;
639 size32_t cm_datalen;
640 caddr32_t cm_databuf;
641 size32_t cm_maclen;
642 caddr32_t cm_macbuf;
643 } crypto_mac32_t;
645 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
646 #pragma pack(4)
647 #endif
649 typedef struct crypto_mac_init32 {
650 uint32_t mi_return_value;
651 crypto_session_id_t mi_session;
652 crypto_mechanism32_t mi_mech;
653 crypto_key32_t mi_key;
654 } crypto_mac_init32_t;
656 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
657 #pragma pack()
658 #endif
660 typedef struct crypto_mac_update32 {
661 uint32_t mu_return_value;
662 crypto_session_id_t mu_session;
663 size32_t mu_datalen;
664 caddr32_t mu_databuf;
665 } crypto_mac_update32_t;
667 typedef struct crypto_mac_final32 {
668 uint32_t mf_return_value;
669 crypto_session_id_t mf_session;
670 size32_t mf_maclen;
671 caddr32_t mf_macbuf;
672 } crypto_mac_final32_t;
674 typedef struct crypto_sign32 {
675 uint32_t cs_return_value;
676 crypto_session_id_t cs_session;
677 size32_t cs_datalen;
678 caddr32_t cs_databuf;
679 size32_t cs_signlen;
680 caddr32_t cs_signbuf;
681 } crypto_sign32_t;
683 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
684 #pragma pack(4)
685 #endif
687 typedef struct crypto_sign_init32 {
688 uint32_t si_return_value;
689 crypto_session_id_t si_session;
690 crypto_mechanism32_t si_mech;
691 crypto_key32_t si_key;
692 } crypto_sign_init32_t;
694 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
695 #pragma pack()
696 #endif
698 typedef struct crypto_sign_update32 {
699 uint32_t su_return_value;
700 crypto_session_id_t su_session;
701 size32_t su_datalen;
702 caddr32_t su_databuf;
703 } crypto_sign_update32_t;
705 typedef struct crypto_sign_final32 {
706 uint32_t sf_return_value;
707 crypto_session_id_t sf_session;
708 size32_t sf_signlen;
709 caddr32_t sf_signbuf;
710 } crypto_sign_final32_t;
712 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
713 #pragma pack(4)
714 #endif
716 typedef struct crypto_sign_recover_init32 {
717 uint32_t ri_return_value;
718 crypto_session_id_t ri_session;
719 crypto_mechanism32_t ri_mech;
720 crypto_key32_t ri_key;
721 } crypto_sign_recover_init32_t;
723 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
724 #pragma pack()
725 #endif
727 typedef struct crypto_sign_recover32 {
728 uint32_t sr_return_value;
729 crypto_session_id_t sr_session;
730 size32_t sr_datalen;
731 caddr32_t sr_databuf;
732 size32_t sr_signlen;
733 caddr32_t sr_signbuf;
734 } crypto_sign_recover32_t;
736 typedef struct crypto_verify32 {
737 uint32_t cv_return_value;
738 crypto_session_id_t cv_session;
739 size32_t cv_datalen;
740 caddr32_t cv_databuf;
741 size32_t cv_signlen;
742 caddr32_t cv_signbuf;
743 } crypto_verify32_t;
745 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
746 #pragma pack(4)
747 #endif
749 typedef struct crypto_verify_init32 {
750 uint32_t vi_return_value;
751 crypto_session_id_t vi_session;
752 crypto_mechanism32_t vi_mech;
753 crypto_key32_t vi_key;
754 } crypto_verify_init32_t;
756 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
757 #pragma pack()
758 #endif
760 typedef struct crypto_verify_update32 {
761 uint32_t vu_return_value;
762 crypto_session_id_t vu_session;
763 size32_t vu_datalen;
764 caddr32_t vu_databuf;
765 } crypto_verify_update32_t;
767 typedef struct crypto_verify_final32 {
768 uint32_t vf_return_value;
769 crypto_session_id_t vf_session;
770 size32_t vf_signlen;
771 caddr32_t vf_signbuf;
772 } crypto_verify_final32_t;
774 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
775 #pragma pack(4)
776 #endif
778 typedef struct crypto_verify_recover_init32 {
779 uint32_t ri_return_value;
780 crypto_session_id_t ri_session;
781 crypto_mechanism32_t ri_mech;
782 crypto_key32_t ri_key;
783 } crypto_verify_recover_init32_t;
785 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
786 #pragma pack()
787 #endif
789 typedef struct crypto_verify_recover32 {
790 uint32_t vr_return_value;
791 crypto_session_id_t vr_session;
792 size32_t vr_signlen;
793 caddr32_t vr_signbuf;
794 size32_t vr_datalen;
795 caddr32_t vr_databuf;
796 } crypto_verify_recover32_t;
798 typedef struct crypto_digest_encrypt_update32 {
799 uint32_t eu_return_value;
800 crypto_session_id_t eu_session;
801 size32_t eu_datalen;
802 caddr32_t eu_databuf;
803 size32_t eu_encrlen;
804 caddr32_t eu_encrbuf;
805 } crypto_digest_encrypt_update32_t;
807 typedef struct crypto_decrypt_digest_update32 {
808 uint32_t du_return_value;
809 crypto_session_id_t du_session;
810 size32_t du_encrlen;
811 caddr32_t du_encrbuf;
812 size32_t du_datalen;
813 caddr32_t du_databuf;
814 } crypto_decrypt_digest_update32_t;
816 typedef struct crypto_sign_encrypt_update32 {
817 uint32_t eu_return_value;
818 crypto_session_id_t eu_session;
819 size32_t eu_datalen;
820 caddr32_t eu_databuf;
821 size32_t eu_encrlen;
822 caddr32_t eu_encrbuf;
823 } crypto_sign_encrypt_update32_t;
825 typedef struct crypto_decrypt_verify_update32 {
826 uint32_t vu_return_value;
827 crypto_session_id_t vu_session;
828 size32_t vu_encrlen;
829 caddr32_t vu_encrbuf;
830 size32_t vu_datalen;
831 caddr32_t vu_databuf;
832 } crypto_decrypt_verify_update32_t;
834 #endif /* _SYSCALL32 */
835 #endif /* _KERNEL */
837 #define CRYPTO_ENCRYPT CRYPTO(50)
838 #define CRYPTO_ENCRYPT_INIT CRYPTO(51)
839 #define CRYPTO_ENCRYPT_UPDATE CRYPTO(52)
840 #define CRYPTO_ENCRYPT_FINAL CRYPTO(53)
841 #define CRYPTO_DECRYPT CRYPTO(54)
842 #define CRYPTO_DECRYPT_INIT CRYPTO(55)
843 #define CRYPTO_DECRYPT_UPDATE CRYPTO(56)
844 #define CRYPTO_DECRYPT_FINAL CRYPTO(57)
846 #define CRYPTO_DIGEST CRYPTO(58)
847 #define CRYPTO_DIGEST_INIT CRYPTO(59)
848 #define CRYPTO_DIGEST_UPDATE CRYPTO(60)
849 #define CRYPTO_DIGEST_KEY CRYPTO(61)
850 #define CRYPTO_DIGEST_FINAL CRYPTO(62)
851 #define CRYPTO_MAC CRYPTO(63)
852 #define CRYPTO_MAC_INIT CRYPTO(64)
853 #define CRYPTO_MAC_UPDATE CRYPTO(65)
854 #define CRYPTO_MAC_FINAL CRYPTO(66)
856 #define CRYPTO_SIGN CRYPTO(67)
857 #define CRYPTO_SIGN_INIT CRYPTO(68)
858 #define CRYPTO_SIGN_UPDATE CRYPTO(69)
859 #define CRYPTO_SIGN_FINAL CRYPTO(70)
860 #define CRYPTO_SIGN_RECOVER_INIT CRYPTO(71)
861 #define CRYPTO_SIGN_RECOVER CRYPTO(72)
862 #define CRYPTO_VERIFY CRYPTO(73)
863 #define CRYPTO_VERIFY_INIT CRYPTO(74)
864 #define CRYPTO_VERIFY_UPDATE CRYPTO(75)
865 #define CRYPTO_VERIFY_FINAL CRYPTO(76)
866 #define CRYPTO_VERIFY_RECOVER_INIT CRYPTO(77)
867 #define CRYPTO_VERIFY_RECOVER CRYPTO(78)
869 #define CRYPTO_DIGEST_ENCRYPT_UPDATE CRYPTO(79)
870 #define CRYPTO_DECRYPT_DIGEST_UPDATE CRYPTO(80)
871 #define CRYPTO_SIGN_ENCRYPT_UPDATE CRYPTO(81)
872 #define CRYPTO_DECRYPT_VERIFY_UPDATE CRYPTO(82)
875 * Random Number Ioctls
877 typedef struct crypto_seed_random {
878 uint_t sr_return_value;
879 crypto_session_id_t sr_session;
880 size_t sr_seedlen;
881 caddr_t sr_seedbuf;
882 } crypto_seed_random_t;
884 typedef struct crypto_generate_random {
885 uint_t gr_return_value;
886 crypto_session_id_t gr_session;
887 caddr_t gr_buf;
888 size_t gr_buflen;
889 } crypto_generate_random_t;
891 #ifdef _KERNEL
892 #ifdef _SYSCALL32
894 typedef struct crypto_seed_random32 {
895 uint32_t sr_return_value;
896 crypto_session_id_t sr_session;
897 size32_t sr_seedlen;
898 caddr32_t sr_seedbuf;
899 } crypto_seed_random32_t;
901 typedef struct crypto_generate_random32 {
902 uint32_t gr_return_value;
903 crypto_session_id_t gr_session;
904 caddr32_t gr_buf;
905 size32_t gr_buflen;
906 } crypto_generate_random32_t;
908 #endif /* _SYSCALL32 */
909 #endif /* _KERNEL */
911 #define CRYPTO_SEED_RANDOM CRYPTO(90)
912 #define CRYPTO_GENERATE_RANDOM CRYPTO(91)
915 * Object Management Ioctls
917 typedef struct crypto_object_create {
918 uint_t oc_return_value;
919 crypto_session_id_t oc_session;
920 crypto_object_id_t oc_handle;
921 uint_t oc_count;
922 caddr_t oc_attributes;
923 } crypto_object_create_t;
925 typedef struct crypto_object_copy {
926 uint_t oc_return_value;
927 crypto_session_id_t oc_session;
928 crypto_object_id_t oc_handle;
929 crypto_object_id_t oc_new_handle;
930 uint_t oc_count;
931 caddr_t oc_new_attributes;
932 } crypto_object_copy_t;
934 typedef struct crypto_object_destroy {
935 uint_t od_return_value;
936 crypto_session_id_t od_session;
937 crypto_object_id_t od_handle;
938 } crypto_object_destroy_t;
940 typedef struct crypto_object_get_attribute_value {
941 uint_t og_return_value;
942 crypto_session_id_t og_session;
943 crypto_object_id_t og_handle;
944 uint_t og_count;
945 caddr_t og_attributes;
946 } crypto_object_get_attribute_value_t;
948 typedef struct crypto_object_get_size {
949 uint_t gs_return_value;
950 crypto_session_id_t gs_session;
951 crypto_object_id_t gs_handle;
952 size_t gs_size;
953 } crypto_object_get_size_t;
955 typedef struct crypto_object_set_attribute_value {
956 uint_t sa_return_value;
957 crypto_session_id_t sa_session;
958 crypto_object_id_t sa_handle;
959 uint_t sa_count;
960 caddr_t sa_attributes;
961 } crypto_object_set_attribute_value_t;
963 typedef struct crypto_object_find_init {
964 uint_t fi_return_value;
965 crypto_session_id_t fi_session;
966 uint_t fi_count;
967 caddr_t fi_attributes;
968 } crypto_object_find_init_t;
970 typedef struct crypto_object_find_update {
971 uint_t fu_return_value;
972 crypto_session_id_t fu_session;
973 uint_t fu_max_count;
974 uint_t fu_count;
975 caddr_t fu_handles;
976 } crypto_object_find_update_t;
978 typedef struct crypto_object_find_final {
979 uint_t ff_return_value;
980 crypto_session_id_t ff_session;
981 } crypto_object_find_final_t;
983 #ifdef _KERNEL
984 #ifdef _SYSCALL32
986 typedef struct crypto_object_create32 {
987 uint32_t oc_return_value;
988 crypto_session_id_t oc_session;
989 crypto_object_id_t oc_handle;
990 uint32_t oc_count;
991 caddr32_t oc_attributes;
992 } crypto_object_create32_t;
994 typedef struct crypto_object_copy32 {
995 uint32_t oc_return_value;
996 crypto_session_id_t oc_session;
997 crypto_object_id_t oc_handle;
998 crypto_object_id_t oc_new_handle;
999 uint32_t oc_count;
1000 caddr32_t oc_new_attributes;
1001 } crypto_object_copy32_t;
1003 typedef struct crypto_object_destroy32 {
1004 uint32_t od_return_value;
1005 crypto_session_id_t od_session;
1006 crypto_object_id_t od_handle;
1007 } crypto_object_destroy32_t;
1009 typedef struct crypto_object_get_attribute_value32 {
1010 uint32_t og_return_value;
1011 crypto_session_id_t og_session;
1012 crypto_object_id_t og_handle;
1013 uint32_t og_count;
1014 caddr32_t og_attributes;
1015 } crypto_object_get_attribute_value32_t;
1017 typedef struct crypto_object_get_size32 {
1018 uint32_t gs_return_value;
1019 crypto_session_id_t gs_session;
1020 crypto_object_id_t gs_handle;
1021 size32_t gs_size;
1022 } crypto_object_get_size32_t;
1024 typedef struct crypto_object_set_attribute_value32 {
1025 uint32_t sa_return_value;
1026 crypto_session_id_t sa_session;
1027 crypto_object_id_t sa_handle;
1028 uint32_t sa_count;
1029 caddr32_t sa_attributes;
1030 } crypto_object_set_attribute_value32_t;
1032 typedef struct crypto_object_find_init32 {
1033 uint32_t fi_return_value;
1034 crypto_session_id_t fi_session;
1035 uint32_t fi_count;
1036 caddr32_t fi_attributes;
1037 } crypto_object_find_init32_t;
1039 typedef struct crypto_object_find_update32 {
1040 uint32_t fu_return_value;
1041 crypto_session_id_t fu_session;
1042 uint32_t fu_max_count;
1043 uint32_t fu_count;
1044 caddr32_t fu_handles;
1045 } crypto_object_find_update32_t;
1047 typedef struct crypto_object_find_final32 {
1048 uint32_t ff_return_value;
1049 crypto_session_id_t ff_session;
1050 } crypto_object_find_final32_t;
1052 #endif /* _SYSCALL32 */
1053 #endif /* _KERNEL */
1055 #define CRYPTO_OBJECT_CREATE CRYPTO(100)
1056 #define CRYPTO_OBJECT_COPY CRYPTO(101)
1057 #define CRYPTO_OBJECT_DESTROY CRYPTO(102)
1058 #define CRYPTO_OBJECT_GET_ATTRIBUTE_VALUE CRYPTO(103)
1059 #define CRYPTO_OBJECT_GET_SIZE CRYPTO(104)
1060 #define CRYPTO_OBJECT_SET_ATTRIBUTE_VALUE CRYPTO(105)
1061 #define CRYPTO_OBJECT_FIND_INIT CRYPTO(106)
1062 #define CRYPTO_OBJECT_FIND_UPDATE CRYPTO(107)
1063 #define CRYPTO_OBJECT_FIND_FINAL CRYPTO(108)
1066 * Key Generation Ioctls
1068 typedef struct crypto_object_generate_key {
1069 uint_t gk_return_value;
1070 crypto_session_id_t gk_session;
1071 crypto_object_id_t gk_handle;
1072 crypto_mechanism_t gk_mechanism;
1073 uint_t gk_count;
1074 caddr_t gk_attributes;
1075 } crypto_object_generate_key_t;
1077 typedef struct crypto_object_generate_key_pair {
1078 uint_t kp_return_value;
1079 crypto_session_id_t kp_session;
1080 crypto_object_id_t kp_public_handle;
1081 crypto_object_id_t kp_private_handle;
1082 uint_t kp_public_count;
1083 uint_t kp_private_count;
1084 caddr_t kp_public_attributes;
1085 caddr_t kp_private_attributes;
1086 crypto_mechanism_t kp_mechanism;
1087 } crypto_object_generate_key_pair_t;
1089 typedef struct crypto_object_wrap_key {
1090 uint_t wk_return_value;
1091 crypto_session_id_t wk_session;
1092 crypto_mechanism_t wk_mechanism;
1093 crypto_key_t wk_wrapping_key;
1094 crypto_object_id_t wk_object_handle;
1095 size_t wk_wrapped_key_len;
1096 caddr_t wk_wrapped_key;
1097 } crypto_object_wrap_key_t;
1099 typedef struct crypto_object_unwrap_key {
1100 uint_t uk_return_value;
1101 crypto_session_id_t uk_session;
1102 crypto_mechanism_t uk_mechanism;
1103 crypto_key_t uk_unwrapping_key;
1104 crypto_object_id_t uk_object_handle;
1105 size_t uk_wrapped_key_len;
1106 caddr_t uk_wrapped_key;
1107 uint_t uk_count;
1108 caddr_t uk_attributes;
1109 } crypto_object_unwrap_key_t;
1111 typedef struct crypto_derive_key {
1112 uint_t dk_return_value;
1113 crypto_session_id_t dk_session;
1114 crypto_mechanism_t dk_mechanism;
1115 crypto_key_t dk_base_key;
1116 crypto_object_id_t dk_object_handle;
1117 uint_t dk_count;
1118 caddr_t dk_attributes;
1119 } crypto_derive_key_t;
1121 #ifdef _KERNEL
1122 #ifdef _SYSCALL32
1124 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
1125 #pragma pack(4)
1126 #endif
1128 typedef struct crypto_object_generate_key32 {
1129 uint32_t gk_return_value;
1130 crypto_session_id_t gk_session;
1131 crypto_object_id_t gk_handle;
1132 crypto_mechanism32_t gk_mechanism;
1133 uint32_t gk_count;
1134 caddr32_t gk_attributes;
1135 } crypto_object_generate_key32_t;
1137 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
1138 #pragma pack()
1139 #endif
1141 typedef struct crypto_object_generate_key_pair32 {
1142 uint32_t kp_return_value;
1143 crypto_session_id_t kp_session;
1144 crypto_object_id_t kp_public_handle;
1145 crypto_object_id_t kp_private_handle;
1146 uint32_t kp_public_count;
1147 uint32_t kp_private_count;
1148 caddr32_t kp_public_attributes;
1149 caddr32_t kp_private_attributes;
1150 crypto_mechanism32_t kp_mechanism;
1151 } crypto_object_generate_key_pair32_t;
1153 typedef struct crypto_object_wrap_key32 {
1154 uint32_t wk_return_value;
1155 crypto_session_id_t wk_session;
1156 crypto_mechanism32_t wk_mechanism;
1157 crypto_key32_t wk_wrapping_key;
1158 crypto_object_id_t wk_object_handle;
1159 size32_t wk_wrapped_key_len;
1160 caddr32_t wk_wrapped_key;
1161 } crypto_object_wrap_key32_t;
1163 typedef struct crypto_object_unwrap_key32 {
1164 uint32_t uk_return_value;
1165 crypto_session_id_t uk_session;
1166 crypto_mechanism32_t uk_mechanism;
1167 crypto_key32_t uk_unwrapping_key;
1168 crypto_object_id_t uk_object_handle;
1169 size32_t uk_wrapped_key_len;
1170 caddr32_t uk_wrapped_key;
1171 uint32_t uk_count;
1172 caddr32_t uk_attributes;
1173 } crypto_object_unwrap_key32_t;
1175 typedef struct crypto_derive_key32 {
1176 uint32_t dk_return_value;
1177 crypto_session_id_t dk_session;
1178 crypto_mechanism32_t dk_mechanism;
1179 crypto_key32_t dk_base_key;
1180 crypto_object_id_t dk_object_handle;
1181 uint32_t dk_count;
1182 caddr32_t dk_attributes;
1183 } crypto_derive_key32_t;
1185 #endif /* _SYSCALL32 */
1186 #endif /* _KERNEL */
1188 #define CRYPTO_GENERATE_KEY CRYPTO(110)
1189 #define CRYPTO_GENERATE_KEY_PAIR CRYPTO(111)
1190 #define CRYPTO_WRAP_KEY CRYPTO(112)
1191 #define CRYPTO_UNWRAP_KEY CRYPTO(113)
1192 #define CRYPTO_DERIVE_KEY CRYPTO(114)
1195 * Provider Management Ioctls
1198 typedef struct crypto_get_provider_list {
1199 uint_t pl_return_value;
1200 uint_t pl_count;
1201 crypto_provider_entry_t pl_list[1];
1202 } crypto_get_provider_list_t;
1204 typedef struct crypto_provider_data {
1205 uchar_t pd_prov_desc[CRYPTO_PROVIDER_DESCR_MAX_LEN];
1206 uchar_t pd_label[CRYPTO_EXT_SIZE_LABEL];
1207 uchar_t pd_manufacturerID[CRYPTO_EXT_SIZE_MANUF];
1208 uchar_t pd_model[CRYPTO_EXT_SIZE_MODEL];
1209 uchar_t pd_serial_number[CRYPTO_EXT_SIZE_SERIAL];
1210 ulong_t pd_flags;
1211 ulong_t pd_max_session_count;
1212 ulong_t pd_session_count;
1213 ulong_t pd_max_rw_session_count;
1214 ulong_t pd_rw_session_count;
1215 ulong_t pd_max_pin_len;
1216 ulong_t pd_min_pin_len;
1217 ulong_t pd_total_public_memory;
1218 ulong_t pd_free_public_memory;
1219 ulong_t pd_total_private_memory;
1220 ulong_t pd_free_private_memory;
1221 crypto_version_t pd_hardware_version;
1222 crypto_version_t pd_firmware_version;
1223 uchar_t pd_time[CRYPTO_EXT_SIZE_TIME];
1224 } crypto_provider_data_t;
1226 typedef struct crypto_get_provider_info {
1227 uint_t gi_return_value;
1228 crypto_provider_id_t gi_provider_id;
1229 crypto_provider_data_t gi_provider_data;
1230 } crypto_get_provider_info_t;
1232 typedef struct crypto_get_provider_mechanisms {
1233 uint_t pm_return_value;
1234 crypto_provider_id_t pm_provider_id;
1235 uint_t pm_count;
1236 crypto_mech_name_t pm_list[1];
1237 } crypto_get_provider_mechanisms_t;
1239 typedef struct crypto_get_provider_mechanism_info {
1240 uint_t mi_return_value;
1241 crypto_provider_id_t mi_provider_id;
1242 crypto_mech_name_t mi_mechanism_name;
1243 uint32_t mi_min_key_size;
1244 uint32_t mi_max_key_size;
1245 uint32_t mi_flags;
1246 } crypto_get_provider_mechanism_info_t;
1248 typedef struct crypto_init_token {
1249 uint_t it_return_value;
1250 crypto_provider_id_t it_provider_id;
1251 caddr_t it_pin;
1252 size_t it_pin_len;
1253 caddr_t it_label;
1254 } crypto_init_token_t;
1256 typedef struct crypto_init_pin {
1257 uint_t ip_return_value;
1258 crypto_session_id_t ip_session;
1259 caddr_t ip_pin;
1260 size_t ip_pin_len;
1261 } crypto_init_pin_t;
1263 typedef struct crypto_set_pin {
1264 uint_t sp_return_value;
1265 crypto_session_id_t sp_session;
1266 caddr_t sp_old_pin;
1267 size_t sp_old_len;
1268 caddr_t sp_new_pin;
1269 size_t sp_new_len;
1270 } crypto_set_pin_t;
1272 #ifdef _KERNEL
1273 #ifdef _SYSCALL32
1275 typedef struct crypto_get_provider_list32 {
1276 uint32_t pl_return_value;
1277 uint32_t pl_count;
1278 crypto_provider_entry_t pl_list[1];
1279 } crypto_get_provider_list32_t;
1281 typedef struct crypto_version32 {
1282 uchar_t cv_major;
1283 uchar_t cv_minor;
1284 } crypto_version32_t;
1286 typedef struct crypto_provider_data32 {
1287 uchar_t pd_prov_desc[CRYPTO_PROVIDER_DESCR_MAX_LEN];
1288 uchar_t pd_label[CRYPTO_EXT_SIZE_LABEL];
1289 uchar_t pd_manufacturerID[CRYPTO_EXT_SIZE_MANUF];
1290 uchar_t pd_model[CRYPTO_EXT_SIZE_MODEL];
1291 uchar_t pd_serial_number[CRYPTO_EXT_SIZE_SERIAL];
1292 uint32_t pd_flags;
1293 uint32_t pd_max_session_count;
1294 uint32_t pd_session_count;
1295 uint32_t pd_max_rw_session_count;
1296 uint32_t pd_rw_session_count;
1297 uint32_t pd_max_pin_len;
1298 uint32_t pd_min_pin_len;
1299 uint32_t pd_total_public_memory;
1300 uint32_t pd_free_public_memory;
1301 uint32_t pd_total_private_memory;
1302 uint32_t pd_free_private_memory;
1303 crypto_version32_t pd_hardware_version;
1304 crypto_version32_t pd_firmware_version;
1305 uchar_t pd_time[CRYPTO_EXT_SIZE_TIME];
1306 } crypto_provider_data32_t;
1308 typedef struct crypto_get_provider_info32 {
1309 uint32_t gi_return_value;
1310 crypto_provider_id_t gi_provider_id;
1311 crypto_provider_data32_t gi_provider_data;
1312 } crypto_get_provider_info32_t;
1314 typedef struct crypto_get_provider_mechanisms32 {
1315 uint32_t pm_return_value;
1316 crypto_provider_id_t pm_provider_id;
1317 uint32_t pm_count;
1318 crypto_mech_name_t pm_list[1];
1319 } crypto_get_provider_mechanisms32_t;
1321 typedef struct crypto_init_token32 {
1322 uint32_t it_return_value;
1323 crypto_provider_id_t it_provider_id;
1324 caddr32_t it_pin;
1325 size32_t it_pin_len;
1326 caddr32_t it_label;
1327 } crypto_init_token32_t;
1329 typedef struct crypto_init_pin32 {
1330 uint32_t ip_return_value;
1331 crypto_session_id_t ip_session;
1332 caddr32_t ip_pin;
1333 size32_t ip_pin_len;
1334 } crypto_init_pin32_t;
1336 typedef struct crypto_set_pin32 {
1337 uint32_t sp_return_value;
1338 crypto_session_id_t sp_session;
1339 caddr32_t sp_old_pin;
1340 size32_t sp_old_len;
1341 caddr32_t sp_new_pin;
1342 size32_t sp_new_len;
1343 } crypto_set_pin32_t;
1345 #endif /* _SYSCALL32 */
1346 #endif /* _KERNEL */
1348 #define CRYPTO_GET_PROVIDER_LIST CRYPTO(120)
1349 #define CRYPTO_GET_PROVIDER_INFO CRYPTO(121)
1350 #define CRYPTO_GET_PROVIDER_MECHANISMS CRYPTO(122)
1351 #define CRYPTO_GET_PROVIDER_MECHANISM_INFO CRYPTO(123)
1352 #define CRYPTO_INIT_TOKEN CRYPTO(124)
1353 #define CRYPTO_INIT_PIN CRYPTO(125)
1354 #define CRYPTO_SET_PIN CRYPTO(126)
1357 * No (Key) Store Key Generation Ioctls
1359 typedef struct crypto_nostore_generate_key {
1360 uint_t ngk_return_value;
1361 crypto_session_id_t ngk_session;
1362 crypto_mechanism_t ngk_mechanism;
1363 uint_t ngk_in_count;
1364 uint_t ngk_out_count;
1365 caddr_t ngk_in_attributes;
1366 caddr_t ngk_out_attributes;
1367 } crypto_nostore_generate_key_t;
1369 typedef struct crypto_nostore_generate_key_pair {
1370 uint_t nkp_return_value;
1371 crypto_session_id_t nkp_session;
1372 uint_t nkp_in_public_count;
1373 uint_t nkp_in_private_count;
1374 uint_t nkp_out_public_count;
1375 uint_t nkp_out_private_count;
1376 caddr_t nkp_in_public_attributes;
1377 caddr_t nkp_in_private_attributes;
1378 caddr_t nkp_out_public_attributes;
1379 caddr_t nkp_out_private_attributes;
1380 crypto_mechanism_t nkp_mechanism;
1381 } crypto_nostore_generate_key_pair_t;
1383 typedef struct crypto_nostore_derive_key {
1384 uint_t ndk_return_value;
1385 crypto_session_id_t ndk_session;
1386 crypto_mechanism_t ndk_mechanism;
1387 crypto_key_t ndk_base_key;
1388 uint_t ndk_in_count;
1389 uint_t ndk_out_count;
1390 caddr_t ndk_in_attributes;
1391 caddr_t ndk_out_attributes;
1392 } crypto_nostore_derive_key_t;
1394 #ifdef _KERNEL
1395 #ifdef _SYSCALL32
1397 typedef struct crypto_nostore_generate_key32 {
1398 uint32_t ngk_return_value;
1399 crypto_session_id_t ngk_session;
1400 crypto_mechanism32_t ngk_mechanism;
1401 uint32_t ngk_in_count;
1402 uint32_t ngk_out_count;
1403 caddr32_t ngk_in_attributes;
1404 caddr32_t ngk_out_attributes;
1405 } crypto_nostore_generate_key32_t;
1407 typedef struct crypto_nostore_generate_key_pair32 {
1408 uint32_t nkp_return_value;
1409 crypto_session_id_t nkp_session;
1410 uint32_t nkp_in_public_count;
1411 uint32_t nkp_in_private_count;
1412 uint32_t nkp_out_public_count;
1413 uint32_t nkp_out_private_count;
1414 caddr32_t nkp_in_public_attributes;
1415 caddr32_t nkp_in_private_attributes;
1416 caddr32_t nkp_out_public_attributes;
1417 caddr32_t nkp_out_private_attributes;
1418 crypto_mechanism32_t nkp_mechanism;
1419 } crypto_nostore_generate_key_pair32_t;
1421 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
1422 #pragma pack(4)
1423 #endif
1425 typedef struct crypto_nostore_derive_key32 {
1426 uint32_t ndk_return_value;
1427 crypto_session_id_t ndk_session;
1428 crypto_mechanism32_t ndk_mechanism;
1429 crypto_key32_t ndk_base_key;
1430 uint32_t ndk_in_count;
1431 uint32_t ndk_out_count;
1432 caddr32_t ndk_in_attributes;
1433 caddr32_t ndk_out_attributes;
1434 } crypto_nostore_derive_key32_t;
1436 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
1437 #pragma pack()
1438 #endif
1440 #endif /* _SYSCALL32 */
1441 #endif /* _KERNEL */
1443 #define CRYPTO_NOSTORE_GENERATE_KEY CRYPTO(127)
1444 #define CRYPTO_NOSTORE_GENERATE_KEY_PAIR CRYPTO(128)
1445 #define CRYPTO_NOSTORE_DERIVE_KEY CRYPTO(129)
1448 * Mechanism Ioctls
1451 typedef struct crypto_get_mechanism_list {
1452 uint_t ml_return_value;
1453 uint_t ml_count;
1454 crypto_mech_name_t ml_list[1];
1455 } crypto_get_mechanism_list_t;
1457 typedef struct crypto_get_all_mechanism_info {
1458 uint_t mi_return_value;
1459 crypto_mech_name_t mi_mechanism_name;
1460 uint_t mi_count;
1461 crypto_mechanism_info_t mi_list[1];
1462 } crypto_get_all_mechanism_info_t;
1464 #ifdef _KERNEL
1465 #ifdef _SYSCALL32
1467 typedef struct crypto_get_mechanism_list32 {
1468 uint32_t ml_return_value;
1469 uint32_t ml_count;
1470 crypto_mech_name_t ml_list[1];
1471 } crypto_get_mechanism_list32_t;
1473 typedef struct crypto_get_all_mechanism_info32 {
1474 uint32_t mi_return_value;
1475 crypto_mech_name_t mi_mechanism_name;
1476 uint32_t mi_count;
1477 crypto_mechanism_info32_t mi_list[1];
1478 } crypto_get_all_mechanism_info32_t;
1480 #endif /* _SYSCALL32 */
1481 #endif /* _KERNEL */
1483 #define CRYPTO_GET_MECHANISM_LIST CRYPTO(140)
1484 #define CRYPTO_GET_ALL_MECHANISM_INFO CRYPTO(141)
1486 #define CRYPTO_GET_PROVIDER_BY_MECH CRYPTO(142)
1488 typedef struct crypto_by_mech {
1489 int rv;
1490 int res;
1491 crypto_mech_type_t mech_type;
1492 uint_t mech_keylen;
1493 crypto_func_group_t mech_fg;
1494 crypto_session_id_t session_id;
1495 } crypto_by_mech_t;
1497 #ifdef __cplusplus
1499 #endif
1501 #endif /* _SYS_CRYPTO_IOCTL_H */