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 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _SYS_CRYPTO_IOCTLADMIN_H 27 #define _SYS_CRYPTO_IOCTLADMIN_H 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #include <sys/types.h> 34 #include <sys/crypto/common.h> 35 36 #define ADMIN_IOCTL_DEVICE "/dev/cryptoadm" 37 38 #define CRYPTOADMIN(x) (('y' << 8) | (x)) 39 40 /* 41 * Administrative IOCTLs 42 */ 43 44 typedef struct crypto_get_dev_list { 45 uint_t dl_return_value; 46 uint_t dl_dev_count; 47 crypto_dev_list_entry_t dl_devs[1]; 48 } crypto_get_dev_list_t; 49 50 typedef struct crypto_get_soft_list { 51 uint_t sl_return_value; 52 uint_t sl_soft_count; 53 size_t sl_soft_len; 54 caddr_t sl_soft_names; 55 } crypto_get_soft_list_t; 56 57 typedef struct crypto_get_dev_info { 58 uint_t di_return_value; 59 char di_dev_name[MAXNAMELEN]; 60 uint_t di_dev_instance; 61 uint_t di_count; 62 crypto_mech_name_t di_list[1]; 63 } crypto_get_dev_info_t; 64 65 typedef struct crypto_get_soft_info { 66 uint_t si_return_value; 67 char si_name[MAXNAMELEN]; 68 uint_t si_count; 69 crypto_mech_name_t si_list[1]; 70 } crypto_get_soft_info_t; 71 72 typedef struct crypto_load_dev_disabled { 73 uint_t dd_return_value; 74 char dd_dev_name[MAXNAMELEN]; 75 uint_t dd_dev_instance; 76 uint_t dd_count; 77 crypto_mech_name_t dd_list[1]; 78 } crypto_load_dev_disabled_t; 79 80 typedef struct crypto_load_soft_disabled { 81 uint_t sd_return_value; 82 char sd_name[MAXNAMELEN]; 83 uint_t sd_count; 84 crypto_mech_name_t sd_list[1]; 85 } crypto_load_soft_disabled_t; 86 87 typedef struct crypto_unload_soft_module { 88 uint_t sm_return_value; 89 char sm_name[MAXNAMELEN]; 90 } crypto_unload_soft_module_t; 91 92 typedef struct crypto_load_soft_config { 93 uint_t sc_return_value; 94 char sc_name[MAXNAMELEN]; 95 uint_t sc_count; 96 crypto_mech_name_t sc_list[1]; 97 } crypto_load_soft_config_t; 98 99 typedef struct crypto_load_door { 100 uint_t ld_return_value; 101 uint_t ld_did; 102 } crypto_load_door_t; 103 104 typedef struct crypto_fips140 { 105 uint_t fips140_return_value; 106 uint_t fips140_op; 107 uint_t fips140_status; 108 } crypto_fips140_t; 109 110 #ifdef _KERNEL 111 #ifdef _SYSCALL32 112 113 typedef struct crypto_get_soft_list32 { 114 uint32_t sl_return_value; 115 uint32_t sl_soft_count; 116 size32_t sl_soft_len; 117 caddr32_t sl_soft_names; 118 } crypto_get_soft_list32_t; 119 120 #endif /* _SYSCALL32 */ 121 #endif /* _KERNEL */ 122 123 /* 124 * FIPS140 ioctl operations 125 */ 126 enum { 127 FIPS140_STATUS, /* get current fips140 mode */ 128 FIPS140_ENABLE, /* enable fips140 mode */ 129 FIPS140_DISABLE /* disable fips140 mode */ 130 131 132 }; 133 134 /* 135 * FIPS140 Mode Status 136 */ 137 enum { 138 FIPS140_MODE_UNSET, /* userland has not told us the mode */ 139 FIPS140_MODE_VALIDATING, /* In the process of validation to enable */ 140 FIPS140_MODE_SHUTDOWN, /* Failure has occurred, shutdown framework */ 141 FIPS140_MODE_ENABLED, /* Validation is complete and we are running */ 142 FIPS140_MODE_DISABLED /* Not running in FIPS 140 mode */ 143 }; 144 145 #define CRYPTO_GET_VERSION CRYPTOADMIN(1) 146 #define CRYPTO_GET_DEV_LIST CRYPTOADMIN(2) 147 #define CRYPTO_GET_SOFT_LIST CRYPTOADMIN(3) 148 #define CRYPTO_GET_DEV_INFO CRYPTOADMIN(4) 149 #define CRYPTO_GET_SOFT_INFO CRYPTOADMIN(5) 150 #define CRYPTO_LOAD_DEV_DISABLED CRYPTOADMIN(8) 151 #define CRYPTO_LOAD_SOFT_DISABLED CRYPTOADMIN(9) 152 #define CRYPTO_UNLOAD_SOFT_MODULE CRYPTOADMIN(10) 153 #define CRYPTO_LOAD_SOFT_CONFIG CRYPTOADMIN(11) 154 #define CRYPTO_POOL_CREATE CRYPTOADMIN(12) 155 #define CRYPTO_POOL_WAIT CRYPTOADMIN(13) 156 #define CRYPTO_POOL_RUN CRYPTOADMIN(14) 157 #define CRYPTO_LOAD_DOOR CRYPTOADMIN(15) 158 #define CRYPTO_FIPS140_STATUS CRYPTOADMIN(16) 159 #define CRYPTO_FIPS140_SET CRYPTOADMIN(17) 160 161 #ifdef __cplusplus 162 } 163 #endif 164 165 #endif /* _SYS_CRYPTO_IOCTLADMIN_H */ 166