About Cryptographic Service Provider (Windows CE 5.0)
A cryptographic service provider (CSP) contains implementations of cryptographic standards and algorithms. At a minimum, a CSP consists of a dynamic-link library (DLL) that implements the functions in CryptoSPI. Most CSPs contain the implementation of all of their own functions; however, some CSPs implement their functions mainly in a Microsoft® Win32®–based service program managed by the Win32 service control manager. Others implement functions in hardware, such as a smart card or secure coprocessor. If a CSP does not implement its own functions, the DLL acts as a pass-through layer, facilitating the communication between the operating system and the actual CSP implementation.
Applications do not communicate directly with a CSP. Instead, applications call the CryptoAPI functions exposed by the operating system's Coredll.dll and Crypt32.dll files. The operating system filters these functions calls and passes them on to the appropriate CSP functions through CryptoSPI.
All custom CSPs must support all of the following DLL entry points. Each function in the table corresponds directly to a CryptoAPI function with the prefix of Crypt instead of CP. For example, CPCreateHash is the same as CryptCreateHash.
Function | Description |
---|---|
CPAcquireContext | Acquires a handle to a particular key container within the CSP. |
CPCreateHash | Creates a hash object and returns a handle to it. |
CPDecrypt | Decrypts a section of ciphertext using the specified encryption key. |
CPDeriveKey | Creates a key from a password. |
CPDestroyHash | Destroys a hash object. |
CPDestroyKey | Destroys a key. |
CPDuplicateHash | Makes an exact copy of a hash object and the state the hash is in. |
CPDuplicateKey | Makes an exact copy of a key, including the state of a key. |
CPEncrypt | Encrypts a section of plaintext using the specified encryption key. |
CPExportKey | Transfers a key from the CSP into a key BLOB in the application's memory. |
CPGenKey | Creates a random key. |
CPGenRandom | Generates random data. |
CPGetHashParam | Retrieves a hash object parameter. |
CPGetKeyParam | Retrieves a key's parameters. |
CPGetProvParam | Retrieves attributes of the CSP. |
CPGetUserKey | Gets a handle to the key exchange or signature key. |
CPHashData | Hashes a block of data and adds it to the specified hash object. |
CPHashSessionKey | Hashes a session key and adds it to the specified hash object. |
CPImportKey | Transfers a key from a key BLOB to a CSP. |
CPReleaseContext | Frees the handle acquired by CPAcquireContext. |
CPSetHashParam | Sets a hash object parameter. |
CPSetKeyParam | Specifies a key's parameters. |
CPSetProvParam | Sets specific attributes of a CSP. |
CPSignHash | Signs the specified hash object. |
CPVerifySignature | Verifies a digital signature. |
See Also
Cryptography | Microsoft Cryptographic System | Using Basic Cryptography Services | Protected Store | Cryptography Security | Cryptography Registry Settings | Certificates
Send Feedback on this topic to the authors