LIBPKCS11(3LIB)              Interface Libraries             LIBPKCS11(3LIB)
NAME
     libpkcs11 - PKCS#11 Cryptographic Framework library
SYNOPSIS
     PKCS#11 Cryptographic Framework Library (libpkcs11, -lpkcs11)     
#include <security/cryptoki.h>     #include <security/pkcs11.h>DESCRIPTION
     The 
libpkcs11 library implements the RSA Security Inc. PKCS#11
     Cryptographic Token Interface (Cryptoki), v2.40 specification by using
     plug-ins to provide the slots.
     Each plug-in, which also implements RSA PKCS#11 v2.40, represents one
     or more slots.
     The 
libpkcs11 library provides a special slot called the meta slot.
     The meta slot provides a virtual union of capabilities of all other
     slots.  When available, the meta slot is always the first slot provided
     by 
libpkcs11.
     The meta slot feature can be configured either system-wide or by
     individual users.  System-wide configuration for meta slot features is
     done with the 
cryptoadm(8) utility.  User configuration for meta slot
     features is performed with environment variables.
     By default, the following is the system-wide configuration for meta
     slot.  Meta slot is enabled.  Meta slot provides token-based object
     support with the Software RSA PKCS#11 softtoken (
pkcs11_softtoken(7)).
     Meta slot is allowed to move sensitive token objects to other slots if
     that is necessary to perform an operation.
     Users can overwrite one or more system-wide configuration options for
     meta slot using these environment variables.
     The ${METASLOT_OBJECTSTORE_SLOT} and ${METASLOT_OBJECTSTORE_TOKEN}
     environment variables are used to specify an alternate token object
     store.  A user can specify either slot-description in
     ${METASLOT_OBJECTSTORE_SLOT} or token-label in
     ${METASLOT_OBJECTSTORE_TOKEN}, or both.  Valid values for slot-
     description and token-label are available from output of the command:
           # cryptoadm list -v
     The ${METASLOT_ENABLED} environment variable is used to specify whether
     the user wants to turn the metaslot feature on or off.  Only two values
     are recognized.  The value "true" means meta slot will be on.  The
     value "false" means meta slot will be off.
     The ${METASLOT_AUTO_KEY_MIGRATE} environment variable is used to
     specify whether the user wants sensitive token objects to move to other
     slots for cryptographic operations.  Only two values are recognized.
     The value "true" means meta slot will migrate sensitive token objects
     to other slots if necessary.  The value "false" means meta slot will
     not migrate sensitive token objects to other slots even if it is
     necessary.
     When the meta slot feature is enabled, the slot that provides token-
     based object support is not shown as one of the available slots.  All
     of its functionality can be used with the meta slot.
     This library filters the list of mechanisms available from plug-ins
     based on the policy set by 
cryptoadm(8).
     This library provides entry points for all PKCS#11 v2.40 functions.
     See the PKCS#11 v2.40 specifications at 
http://www.oasis-open.org.
     Plug-ins are added to 
libpkcs11 by the 
pkcs11conf class action script
     during execution of 
pkgadd(8).  The available mechanisms are
     administered by the 
cryptoadm(8) utility.
     Plug-ins must have all of their library dependencies specified,
     including 
libc(3LIB).  Libraries that have unresolved symbols,
     including those from 
libc(3LIB), will be rejected and a message will be
     sent to 
syslog(3C) for such plug-ins.
     Due to U.S. Export regulations, all plug-ins are required to be
     cryptographically signed using the 
elfsign(1) utility.
     Any plug-in that is not signed or is not a compatible version of
     PKCS#11 will be dropped by 
libpkcs11.  When a plug-in is dropped, the
     administrator is alerted by the 
syslog(3C) utility.
     The <
security/pkcs11f.h> header contains function definitions.  The
     <
security/pkcs11t.h> header contains type definitions.  Applications
     can include either of these headers in place of <
security/pkcs11.h>,
     which contains both function and type definitions.
INTERFACES
     The shared object 
libpkcs11.so.1 provides the public interfaces defined
     below.  See 
Intro(3) for additional information on shared object
     interfaces.   
PKCS#11 Standard           C_CloseAllSessions           C_CloseSession           C_CopyObject                 C_CreateObject           C_Decrypt                    C_DecryptDigestUpdate           C_DecryptFinal               C_DecryptInit           C_DecryptUpdate              C_DecryptVerifyUpdate           C_DeriveKey                  C_DestroyObject           C_Digest                     C_DigestEncryptUpdate           C_DigestFinal                C_DigestInit           C_DigestKey                  C_DigestUpdate           C_Encrypt                    C_EncryptFinal           C_EncryptInit                C_EncryptUpdate           C_Finalize                   C_FindObjects           C_FindObjectsFinal           C_FindObjectsInit           C_GenerateKey                C_GenerateKeyPair           C_GenerateRandom             C_GetAttributeValue           C_GetFunctionList            C_GetInfo           C_GetMechanismInfo           C_GetMechanismList           C_GetObjectSize              C_GetOperationState           C_GetSessionInfo             C_GetSlotInfo           C_GetSlotList                C_GetTokenInfo           C_InitPIN                    C_InitToken           C_Initialize                 C_Login           C_Logout                     C_OpenSession           C_SeedRandom                 C_SetAttributeValue           C_SetOperationState          C_SetPIN           C_Sign                       C_SignEncryptUpdate           C_SignFinal                  C_SignInit           C_SignRecover                C_SignRecoverInit           C_SignUpdate                 C_UnwrapKey           C_Verify                     C_VerifyFinal           C_VerifyInit                 C_VerifyRecover           C_VerifyRecoverInit          C_VerifyUpdate           C_WaitForSlotEvent           C_WrapKey   SUNW Extensions
           SUNW_C_GetMechSession        SUNW_C_KeyToObjectFILES
     /usr/lib/libpkcs11.so.1           shared object     
/usr/lib/64/libpkcs11.so.1        64-bit shared object
ATTRIBUTES
     See 
attributes(7) for descriptions of the following attributes:
INTERFACE STABILITY
     CommittedMT-LEVEL     The SUNW Extension functions are MT-Safe.  The PKCS#11 Standard
     functions are MT-Safe with exceptions.  See Section 2.5.3 of PKCS#11
     Cryptographic Token Usage Guide v2.40 and Section 5.1.5 of PKCS#11
     Cryptographic Token Interface Base Standard v2.40
SEE ALSO
     Intro(3), 
syslog(3C), 
SUNW_C_GetMechSession(3EXT), 
attributes(7),     
pkcs11_kernel(7), 
pkcs11_softtoken(7), 
cryptoadm(8), 
pkgadd(8)     PKCS#11 Cryptographic Token Interface Base Specification v2.40 Plus     Errata 01,
     http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/errata01/os/pkcs11-base-v2.40-errata01-os.html.     
PKCS#11 Cryptographic Token Interface Profiles v2.40,
     http://docs.oasis-open.org/pkcs11/pkcs11-profiles/v2.40/pkcs11-profiles-v2.40.html.     
PKCS#11 Cryptographic Token Interface Usage Guide v2.40,
     http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html.
STANDARDS
     The PKCS#11 Standard functions conform to PKCS#11 Cryptographic Token
     Interface Profiles v2.40 Extended Provider.
NOTES
     If an application calls 
C_WaitForSlotEvent() without the CKF_DONT_BLOCK
     flag set, 
libpkcs11 must create threads internally.  If, however,
     CKF_LIBRARY_CANT_CREATE_OS_THREADS is set, 
C_WaitForSlotEvent() returns
     CKR_FUNCTION_FAILED.
     Because 
C_Initialize() might have been called by both an application
     and a library, it is not safe for a library or its plugins to call     
C_Finalize().  A library can be finished calling functions from     
libpkcs11, while an application might not.
illumos                        August 27, 2019                       illumos