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