JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
man pages section 3: Library Interfaces and Headers     Oracle Solaris 11.1 Information Library
search filter icon
search icon

Document Information

Preface

Introduction

Library Interfaces and Headers

acct(3HEAD)

acct.h(3HEAD)

aio(3HEAD)

aio.h(3HEAD)

ar(3HEAD)

archives(3HEAD)

archives.h(3HEAD)

ar.h(3HEAD)

assert(3HEAD)

assert.h(3HEAD)

complex(3HEAD)

complex.h(3HEAD)

cpio(3HEAD)

cpio.h(3HEAD)

dirent(3HEAD)

dirent.h(3HEAD)

errno(3HEAD)

errno.h(3HEAD)

fcntl(3HEAD)

fcntl.h(3HEAD)

fenv(3HEAD)

fenv.h(3HEAD)

float(3HEAD)

float.h(3HEAD)

floatingpoint(3HEAD)

floatingpoint.h(3HEAD)

fmtmsg(3HEAD)

fmtmsg.h(3HEAD)

fnmatch(3HEAD)

fnmatch.h(3HEAD)

ftw(3HEAD)

ftw.h(3HEAD)

glob(3HEAD)

glob.h(3HEAD)

grp(3HEAD)

grp.h(3HEAD)

iconv(3HEAD)

iconv.h(3HEAD)

if(3HEAD)

if.h(3HEAD)

in(3HEAD)

inet(3HEAD)

inet.h(3HEAD)

in.h(3HEAD)

inttypes(3HEAD)

inttypes.h(3HEAD)

ipc(3HEAD)

ipc.h(3HEAD)

iso646(3HEAD)

iso646.h(3HEAD)

langinfo(3HEAD)

langinfo.h(3HEAD)

lib300(3LIB)

lib300s(3LIB)

lib4014(3LIB)

lib450(3LIB)

libadm(3LIB)

libaio(3LIB)

libauto_ef(3LIB)

libbsdmalloc(3LIB)

libc(3LIB)

libc_db(3LIB)

libcfgadm(3LIB)

libcommputil(3LIB)

libcontract(3LIB)

libcpc(3LIB)

libcrypt(3LIB)

libcurses(3LIB)

libdat(3LIB)

libdevid(3LIB)

libdevinfo(3LIB)

libdl(3LIB)

libdlpi(3LIB)

libdns_sd(3LIB)

libdoor(3LIB)

libdtrace(3LIB)

libefi(3LIB)

libelf(3LIB)

libexacct(3LIB)

libfcoe(3LIB)

libfmevent(3LIB)

libform(3LIB)

libfstyp(3LIB)

libgen(3HEAD)

libgen(3LIB)

libgen.h(3HEAD)

libgss(3LIB)

libhbaapi(3LIB)

libicudata(3LIB)

libicui18n(3LIB)

libicuio(3LIB)

libicule(3LIB)

libiculx(3LIB)

libicutu(3LIB)

libicuuc(3LIB)

libilb(3LIB)

libintl(3HEAD)

libintl(3LIB)

libintl.h(3HEAD)

libiscsit(3LIB)

libkmf(3LIB)

libkrb5(3LIB)

libkstat(3LIB)

libkvm(3LIB)

libl(3LIB)

liblayout(3LIB)

liblgrp(3LIB)

libm(3LIB)

libmail(3LIB)

libmalloc(3LIB)

libmapmalloc(3LIB)

libmd(3LIB)

libmd5(3LIB)

libmenu(3LIB)

libmlib(3LIB)

libmlib_mt(3LIB)

libmp(3LIB)

libMPAPI(3LIB)

libmpapi(3LIB)

libmtmalloc(3LIB)

libmvec(3LIB)

libnsl(3LIB)

libnvpair(3LIB)

libpam(3LIB)

libpanel(3LIB)

libpapi(3LIB)

libpctx(3LIB)

libpicl(3LIB)

libpicltree(3LIB)

libpkcs11(3LIB)

libplot(3LIB)

libpool(3LIB)

libposix4(3LIB)

libproject(3LIB)

libpthread(3LIB)

libreparse(3LIB)

libresolv(3LIB)

librpcsvc(3LIB)

librt(3LIB)

librtld_db(3LIB)

libsasl(3LIB)

libscf(3LIB)

libsctp(3LIB)

libsec(3LIB)

libsecdb(3LIB)

libsendfile(3LIB)

libsip(3LIB)

libslp(3LIB)

libSMHBAAPI(3LIB)

libsmhbaapi(3LIB)

libsocket(3LIB)

libsrpt(3LIB)

libssagent(3LIB)

libssasnmp(3LIB)

libstmf(3LIB)

libsys(3LIB)

libsysevent(3LIB)

libtecla(3LIB)

libtermcap(3LIB)

libtermlib(3LIB)

libthread(3LIB)

libtsalarm(3LIB)

libtsnet(3LIB)

libtsol(3LIB)

libumem(3LIB)

libusb(3LIB)

libuuid(3LIB)

libv12n(3LIB)

libvolmgt(3LIB)

libvt0(3LIB)

libw(3LIB)

libxnet(3LIB)

libXtsol(3LIB)

libxtsol(3LIB)

liby(3LIB)

libzonestat(3LIB)

limits(3HEAD)

limits.h(3HEAD)

locale(3HEAD)

locale.h(3HEAD)

math(3HEAD)

math.h(3HEAD)

mman(3HEAD)

mman.h(3HEAD)

monetary(3HEAD)

monetary.h(3HEAD)

mqueue(3HEAD)

mqueue.h(3HEAD)

msg(3HEAD)

msg.h(3HEAD)

ndbm(3HEAD)

ndbm.h(3HEAD)

netdb(3HEAD)

netdb.h(3HEAD)

nl_types(3HEAD)

nl_types.h(3HEAD)

paths(3HEAD)

paths.h(3HEAD)

poll(3HEAD)

poll.h(3HEAD)

pthread(3HEAD)

pthread.h(3HEAD)

pwd(3HEAD)

pwd.h(3HEAD)

regex(3HEAD)

regex.h(3HEAD)

resource(3HEAD)

resource.h(3HEAD)

sched(3HEAD)

sched.h(3HEAD)

search(3HEAD)

search.h(3HEAD)

select(3HEAD)

select.h(3HEAD)

sem(3HEAD)

semaphore(3HEAD)

semaphore.h(3HEAD)

sem.h(3HEAD)

setjmp(3HEAD)

setjmp.h(3HEAD)

shm(3HEAD)

shm.h(3HEAD)

siginfo(3HEAD)

siginfo.h(3HEAD)

signal(3HEAD)

signal.h(3HEAD)

SMHBA_GetAdapterAttributes(3LIB)

SMHBA_GetAdapterPortAttributes(3LIB)

SMHBA_GetBindingCapability(3LIB)

SMHBA_GetBindingSupport(3LIB)

SMHBA_GetDiscoveredPortAttributes(3LIB)

SMHBA_GetFCPhyAttributes(3LIB)

SMHBA_GetLUNStatistics(3LIB)

SMHBA_GetNumberofPorts(3LIB)

SMHBA_GetPersistentBinding(3LIB)

SMHBA_GetPhyStatistics(3LIB)

SMHBA_GetPortAttributesByWWN(3LIB)

SMHBA_GetPortType(3LIB)

SMHBA_GetProtocolStatistics(3LIB)

SMHBA_GetSASPhyAttributes(3LIB)

SMHBA_GetTargetMapping(3LIB)

SMHBA_GetVendorLibraryAttributes(3LIB)

SMHBA_GetVersion(3LIB)

SMHBA_GetWrapperLibraryAttributes(3LIB)

SMHBA_RegisterForAdapterAddEvents(3LIB)

SMHBA_RegisterForAdapterEvents(3LIB)

SMHBA_RegisterForAdapterPhyStatEvents(3LIB)

SMHBA_RegisterForAdapterPortEvents(3LIB)

SMHBA_RegisterForAdapterPortStatEvents(3LIB)

SMHBA_RegisterForTargetEvents(3LIB)

SMHBA_RegisterLibrary(3LIB)

SMHBA_RemoveAllPersistentBindings(3LIB)

SMHBA_RemovePersistentBinding(3LIB)

SMHBA_ScsiInquiry(3LIB)

SMHBA_ScsiReadCapacity(3LIB)

SMHBA_ScsiReportLuns(3LIB)

SMHBA_SendECHO(3LIB)

SMHBA_SendSMPPassThru(3LIB)

SMHBA_SendTEST(3LIB)

SMHBA_SetBindingSupport(3LIB)

SMHBA_SetPersistentBinding(3LIB)

socket(3HEAD)

socket.h(3HEAD)

spawn(3HEAD)

spawn.h(3HEAD)

stat(3HEAD)

stat.h(3HEAD)

statvfs(3HEAD)

statvfs.h(3HEAD)

stdbool(3HEAD)

stdbool.h(3HEAD)

stddef(3HEAD)

stddef.h(3HEAD)

stdint(3HEAD)

stdint.h(3HEAD)

stdio(3HEAD)

stdio.h(3HEAD)

stdlib(3HEAD)

stdlib.h(3HEAD)

string(3HEAD)

string.h(3HEAD)

strings(3HEAD)

strings.h(3HEAD)

stropts(3HEAD)

stropts.h(3HEAD)

syslog(3HEAD)

syslog.h(3HEAD)

tar(3HEAD)

tar.h(3HEAD)

tcp(3HEAD)

tcp.h(3HEAD)

termios(3HEAD)

termios.h(3HEAD)

tgmath(3HEAD)

tgmath.h(3HEAD)

time(3HEAD)

timeb(3HEAD)

timeb.h(3HEAD)

time.h(3HEAD)

times(3HEAD)

times.h(3HEAD)

types32(3HEAD)

types32.h(3HEAD)

types(3HEAD)

types.h(3HEAD)

ucontext(3HEAD)

ucontext.h(3HEAD)

uio(3HEAD)

uio.h(3HEAD)

ulimit(3HEAD)

ulimit.h(3HEAD)

un(3HEAD)

un.h(3HEAD)

unistd(3HEAD)

unistd.h(3HEAD)

utime(3HEAD)

utime.h(3HEAD)

utmpx(3HEAD)

utmpx.h(3HEAD)

utsname(3HEAD)

utsname.h(3HEAD)

values(3HEAD)

values.h(3HEAD)

wait(3HEAD)

wait.h(3HEAD)

wchar(3HEAD)

wchar.h(3HEAD)

wctype(3HEAD)

wctype.h(3HEAD)

wordexp(3HEAD)

wordexp.h(3HEAD)

libpkcs11

- PKCS#11 Cryptographic Framework library

Synopsis

cc [ flag... ] file... -lpkcs11 [ library... ]
#include <security/cryptoki.h>
#include <security/pkcs11.h>

Description

The libpkcs11 library implements the RSA Security Inc. PKCS#11 Cryptographic Token Interface (Cryptoki), v2.20 specification by using plug-ins to provide the slots.

Each plug-in, which also implements RSA PKCS#11 v2.20, 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 order of the rest of the slots is not guaranteed and may vary with every load of this library.

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(1M) 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(5)). 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(1M).

This library provides entry points for all PKCS#11 v2.20 functions. See the RSA PKCS#11 v2.20 specification at http://www.rsasecurity.com.

Plug-ins are added to libpkcs11 by the pkcs11conf class action script during execution of pkgadd(1M). The available mechanisms are administered by the cryptoadm(1M) utility.

Plug-ins must have all of their library dependancies specified, including libc(3LIB). Libraries that have unresolved symbols, including those from libc, 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 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_KeyToObject

Files

/usr/lib/libpkcs11.so.1

shared object

/usr/lib/64/libpkcs11.so.1

64–bit shared object

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Availability
system/library
Interface Stability
Committed
MT-Level
See below.
Standard
See below.

The SUNW Extension functions are MT-Safe. The PKCS#11 Standard functions are MT-Safe with exceptions. See Section 6.6.2 of RSA PKCS#11 v2.20.

The PKCS#11 Standard functions conform to PKCS#11 v2.20.

See Also

cryptoadm(1M), pkgadd(1M), Intro(3), SUNW_C_GetMechSession(3EXT), syslog(3C), attributes(5) , pkcs11_kernel(5), pkcs11_softtoken(5)

RSA PKCS#11 v2.20 http://www.rsasecurity.com

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.

The PKCS#11 library does not work with Netscape 4.x but does work with more recent versions of Netscape and Mozilla.

Because C_Initalize() 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.