Vendors providing add-in security service modules are
developing products that provide services in more than one
functional category. Vendors may not want to partition their
products in this manner. More pointedly, they can be unable
to do so. Consider a class 2 PKCS#11 cryptographic device.
This device performs cryptographic operations and provides
persistent storage for keys, certificates, and other
security-related objects. These services are logically
partitioned between the CSP-APIs and the DLM-APIs.
Implementing two separate add-in modules is not feasible. In
order to provide correct service, the two modules must share
execution state, such as PKCS#11 session identifiers.
Additional examples exist, as shown in
Multi-service add-in modules separate module packaging from the application developers functional view of CSSM APIs. A multi-service module is a single, dynamic add-in module that implements CSSM functions from two or more functional categories of the CSSM APIs.
Applications attach a multi-service module as they would any
other module. The attach function returns a handle
representing a unique pairing between the caller and the
attached module. The caller uses this single handle to
obtain any and all types of services implemented by the
attached module.
Multiple calls to attach are viewed as independent requests. Each attach request returns separate, independent handles that do not share execution state.
Before attaching a service module, an application can query the CSSM registry to obtain information about that module. A multi-service module has exactly one CSSM registry entry containing multiple capability descriptions. There are one or more capability descriptions per functional category supported by the module. Each set of capabilities includes a type identifier to distinguish CSPinfo from Clinfo, and so on.
When an add-in module is installed on a CSSM system, the module registers its name, GUID, and capability descriptions with CSSM. CSSM securely records this information in the CSSM registry (making it available for application queries). A multi-service module will register capabilities for each of the service categories supported by the module.
A multi-service module is not required to implement all of the functions in any functional categories. The CSSM dispatching mechanism invokes only to those interfaces registered with the CSSM.
Contents | Next section | Index |