1 .\" Copyright (c) 2008, Sun Microsystems, Inc. All rights reserved. 2 .\" Copyright 2016 Jason King. 3 .\" Copyright 2019 Peter Tribble. 4 .\" 5 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. 6 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. 7 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] 8 .Dd Aug 27, 2019 9 .Dt LIBPKCS11 3LIB 10 .Os 11 .Sh NAME 12 .Nm libpkcs11 13 .Nd PKCS#11 Cryptographic Framework library 14 .Sh SYNOPSIS 15 .Lb libpkcs11 16 .In security/cryptoki.h 17 .In security/pkcs11.h 18 .Sh DESCRIPTION 19 The 20 .Nm 21 library implements the RSA Security Inc. PKCS#11 22 Cryptographic Token Interface (Cryptoki), v2.40 specification by using plug-ins 23 to provide the slots. 24 .Lp 25 Each plug-in, which also implements RSA PKCS#11 v2.40, represents one or more 26 slots. 27 .Lp 28 The 29 .Nm 30 library provides a special slot called the meta slot. 31 The meta slot provides a virtual union of capabilities of all other slots. 32 When available, the meta slot is always the first slot provided by 33 .Nm . 34 .Lp 35 The meta slot feature can be configured either system-wide or by individual 36 users. 37 System-wide configuration for meta slot features is done with the 38 .Xr cryptoadm 1M 39 utility. 40 User configuration for meta slot features is performed with environment 41 variables. 42 .Lp 43 By default, the following is the system-wide configuration for meta slot. 44 Meta slot is enabled. 45 Meta slot provides token-based object support with the Software RSA PKCS#11 46 softtoken 47 .Pq Xr pkcs11_softtoken 5 . 48 Meta slot is 49 allowed to move sensitive token objects to other slots if that is necessary to 50 perform an operation. 51 .Lp 52 Users can overwrite one or more system-wide configuration options for meta slot 53 using these environment variables. 54 .Lp 55 The 56 .Ev ${METASLOT_OBJECTSTORE_SLOT} 57 and 58 .Ev ${METASLOT_OBJECTSTORE_TOKEN} 59 environment variables are used to specify an alternate token object store. 60 A user can specify either slot-description in 61 .Ev ${METASLOT_OBJECTSTORE_SLOT} 62 or token-label in 63 .Ev ${METASLOT_OBJECTSTORE_TOKEN} , 64 or both. 65 Valid values for slot-description and token-label are available from output of 66 the command: 67 .Bd -literal -offset indent 68 # cryptoadm list -v 69 .Ed 70 .Lp 71 The 72 .Ev ${METASLOT_ENABLED} 73 environment variable is used to specify whether 74 the user wants to turn the metaslot feature on or off. 75 Only two values are recognized. 76 The value "true" means meta slot will be on. 77 The value "false" means meta slot will be off. 78 .Lp 79 The 80 .Ev ${METASLOT_AUTO_KEY_MIGRATE} 81 environment variable is used to specify 82 whether the user wants sensitive token objects to move to other slots for 83 cryptographic operations. 84 Only two values are recognized. 85 The value "true" means meta slot will migrate sensitive token objects to other 86 slots if necessary. 87 The value "false" means meta slot will not migrate sensitive token objects to 88 other slots even if it is necessary. 89 .Lp 90 When the meta slot feature is enabled, the slot that provides token-based 91 object support is not shown as one of the available slots. 92 All of its functionality can be used with the meta slot. 93 .Lp 94 This library filters the list of mechanisms available from plug-ins based on 95 the policy set by 96 .Xr cryptoadm 1M . 97 .Lp 98 This library provides entry points for all PKCS#11 v2.40 functions. 99 See the PKCS#11 v2.40 specifications at 100 .Lk http://www.oasis-open.org . 101 .Lp 102 Plug-ins are added to 103 .Nm 104 by the 105 .Sy pkcs11conf 106 class action 107 script during execution of 108 .Xr pkgadd 1M . 109 The available mechanisms are administered by the 110 .Xr cryptoadm 1M 111 utility. 112 .Lp 113 Plug-ins must have all of their library dependencies specified, including 114 .Xr libc 3LIB . 115 Libraries that have unresolved symbols, including those from 116 .Xr libc 3LIB , 117 will be rejected and a message will be sent to 118 .Xr syslog 3C 119 for such plug-ins. 120 .Lp 121 Due to U.S. Export regulations, all plug-ins are required to be 122 cryptographically signed using the 123 .Xr elfsign 1 124 utility. 125 .Lp 126 Any plug-in that is not signed or is not a compatible version of PKCS#11 will 127 be dropped by 128 .Nm . 129 When a plug-in is dropped, the administrator is alerted by the 130 .Xr syslog 3C 131 utility. 132 .Lp 133 The 134 .In security/pkcs11f.h 135 header contains function definitions. 136 The 137 .In security/pkcs11t.h 138 header contains type definitions. 139 Applications can include either of these headers in place of 140 .In security/pkcs11.h , 141 which contains both function and type definitions. 142 .Sh INTERFACES 143 The shared object 144 .Pa libpkcs11.so.1 145 provides the public interfaces defined below. 146 See 147 .Xr Intro 3 148 for additional information on shared object interfaces. 149 .Ss "PKCS#11 Standard" 150 .\" 151 .\" Use SUNW_C_GetMechSession for the first column so both sections will 152 .\" line up better when rendered 153 .\" 154 .Bl -column -offset indent ".Sy SUNW_C_GetMechSession" ".Sy C_DecryptDigestUpdate" 155 .It Sy C_CloseAllSessions Ta Sy C_CloseSession 156 .It Sy C_CopyObject Ta Sy C_CreateObject 157 .It Sy C_Decrypt Ta Sy C_DecryptDigestUpdate 158 .It Sy C_DecryptFinal Ta Sy C_DecryptInit 159 .It Sy C_DecryptUpdate Ta Sy C_DecryptVerifyUpdate 160 .It Sy C_DeriveKey Ta Sy C_DestroyObject 161 .It Sy C_Digest Ta Sy C_DigestEncryptUpdate 162 .It Sy C_DigestFinal Ta Sy C_DigestInit 163 .It Sy C_DigestKey Ta Sy C_DigestUpdate 164 .It Sy C_Encrypt Ta Sy C_EncryptFinal 165 .It Sy C_EncryptInit Ta Sy C_EncryptUpdate 166 .It Sy C_Finalize Ta Sy C_FindObjects 167 .It Sy C_FindObjectsFinal Ta Sy C_FindObjectsInit 168 .It Sy C_GenerateKey Ta Sy C_GenerateKeyPair 169 .It Sy C_GenerateRandom Ta Sy C_GetAttributeValue 170 .It Sy C_GetFunctionList Ta Sy C_GetInfo 171 .It Sy C_GetMechanismInfo Ta Sy C_GetMechanismList 172 .It Sy C_GetObjectSize Ta Sy C_GetOperationState 173 .It Sy C_GetSessionInfo Ta Sy C_GetSlotInfo 174 .It Sy C_GetSlotList Ta Sy C_GetTokenInfo 175 .It Sy C_InitPIN Ta Sy C_InitToken 176 .It Sy C_Initialize Ta Sy C_Login 177 .It Sy C_Logout Ta Sy C_OpenSession 178 .It Sy C_SeedRandom Ta Sy C_SetAttributeValue 179 .It Sy C_SetOperationState Ta Sy C_SetPIN 180 .It Sy C_Sign Ta Sy C_SignEncryptUpdate 181 .It Sy C_SignFinal Ta Sy C_SignInit 182 .It Sy C_SignRecover Ta Sy C_SignRecoverInit 183 .It Sy C_SignUpdate Ta Sy C_UnwrapKey 184 .It Sy C_Verify Ta Sy C_VerifyFinal 185 .It Sy C_VerifyInit Ta Sy C_VerifyRecover 186 .It Sy C_VerifyRecoverInit Ta Sy C_VerifyUpdate 187 .It Sy C_WaitForSlotEvent Ta Sy C_WrapKey 188 .El 189 .Ss "SUNW Extensions" 190 .Bl -column -offset indent ".Sy SUNW_C_GetMechSession" ".Sy C_DecryptDigestUpdate" 191 .It Sy SUNW_C_GetMechSession Ta Sy SUNW_C_KeyToObject 192 .El 193 .Sh FILES 194 .Bl -tag -compact -width Pa 195 .It Pa /usr/lib/libpkcs11.so.1 196 shared object 197 .It Pa /usr/lib/64/libpkcs11.so.1 198 64-bit shared object 199 .El 200 .Sh ATTRIBUTES 201 See 202 .Xr attributes 5 203 for descriptions of the following attributes: 204 .Sh INTERFACE STABILITY 205 .Sy Committed 206 .Sh MT-LEVEL 207 The SUNW Extension functions are MT-Safe. 208 The PKCS#11 Standard functions are MT-Safe with exceptions. 209 See Section 2.5.3 of PKCS#11 Cryptographic Token Usage Guide v2.40 and 210 Section 5.1.5 of PKCS#11 Cryptographic Token Interface Base Standard v2.40 211 .Sh SEE ALSO 212 .Xr cryptoadm 1M , 213 .Xr pkgadd 1M , 214 .Xr Intro 3 , 215 .Xr syslog 3C , 216 .Xr SUNW_C_GetMechSession 3EXT , 217 .Xr attributes 5 , 218 .Xr pkcs11_kernel 5 , 219 .Xr pkcs11_softtoken 5 220 .Rs 221 .%T "PKCS#11 Cryptographic Token Interface Base Specification v2.40 Plus Errata 01" 222 .%U http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/errata01/os/pkcs11-base-v2.40-errata01-os.html 223 .Re 224 .Rs 225 .%T "PKCS#11 Cryptographic Token Interface Profiles v2.40" 226 .%U http://docs.oasis-open.org/pkcs11/pkcs11-profiles/v2.40/pkcs11-profiles-v2.40.html 227 .Re 228 .Rs 229 .%T "PKCS#11 Cryptographic Token Interface Usage Guide v2.40" 230 .%U http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html 231 .Re 232 .Sh STANDARDS 233 The PKCS#11 Standard functions conform to PKCS#11 Cryptographic Token 234 Interface Profiles v2.40 Extended Provider. 235 .Sh NOTES 236 If an application calls 237 .Fn C_WaitForSlotEvent 238 without the 239 .Dv CKF_DONT_BLOCK 240 flag set, 241 .Nm 242 must create threads internally. 243 If, however, 244 .Dv CKF_LIBRARY_CANT_CREATE_OS_THREADS 245 is set, 246 .Fn C_WaitForSlotEvent 247 returns 248 .Dv CKR_FUNCTION_FAILED . 249 .Lp 250 Because 251 .Fn C_Initialize 252 might have been called by both an application and a 253 library, it is not safe for a library or its plugins to call 254 .Fn C_Finalize . 255 A library can be finished calling functions from 256 .Nm , 257 while an application might not.