This section lists each function that must be exported from the CSP, and briefly discusses any required functionality beyond PROV_DSS_DH. Additional functions specific to a CSP may exist within the CSP.
| Function | Description | 
|---|---|
| CPAcquireContext | Acquires a handle to a particular key container within a particular CSP. See CPAcquireContext. | 
| CPCreateHash | Initiates hashing a stream of data. See CPCreateHash Diffie-Hellman/Schannel Extensions. | 
| CPDecrypt | Decrypts data that was previously encrypted via the CPEncrypt function. See CPDecrypt Diffie-Hellman/Schannel Extensions. | 
| CPDeriveKey | Generates cryptographic keys derived from base data. See CPDeriveKey Diffie-Hellman/Schannel Extensions. | 
| CPDestroyHash | Destroys the hash object referenced by the hHash parameter. See CPDestroyHash. | 
| CPDestroyKey | Releases the handle referenced by the hKey parameter. After a key handle has been released, it becomes invalid and cannot be used again. See CPDestroyKey. | 
| CPDuplicateHash | Makes an exact copy of a hash and the state the hash is in. See CPDuplicateHash. | 
| CPDuplicateKey | Makes an exact copy of a key and the state the key is in. See CPDuplicateKey. | 
| CPEncrypt | Encrypts data. See CPEncrypt Diffie-Hellman/Schannel Extensions. | 
| CPExportKey | Exports cryptographic keys from a cryptographic service provider in a secure manner. See CPExportKey. | 
| CPGenKey | Generates random cryptographic keys for use with the CSP module. See CPGenKey. | 
| CPGenRandom | Fills a buffer with random bytes. See CPGenRandom. | 
| CPGetHashParam | Retrieves data that governs the operations of a hash object. See CPGetHashParam. | 
| CPGetKeyParam | Retrieves data that governs the operations of a key. See CPGetKeyParam. | 
| CPGetProvParam | Retrieves parameters that govern the operations of a CSP. See CPGetProvParam Diffie-Hellman/Schannel Extensions. | 
| CPGetUserKey | Retrieves a handle to a permanent user key pair, such as the user's signature key pair. See CPGetUserKey. | 
| CPHashData | Computes the cryptographic hash on a stream of data. See CPHashData. | 
| CPHashSessionKey | Computes the cryptographic hash on a key object. See CPHashSessionKey Diffie-Hellman/Schannel Extensions. | 
| CPImportKey | Transfers a cryptographic key from a key blob to a CSP. See CPImportKey. | 
| CPReleaseContext | Releases a handle to a CSP and a key container. See CPReleaseContext. | 
| CPSetHashParam | Customizes the operations of a hash object. Currently, only a single parameter is defined for this function. See CPSetHashParam. | 
| CPSetKeyParam | Customizes various aspects of a key's operations. See CPSetKeyParam Diffie-Hellman/Schannel Extensions. | 
| CPSetProvParam | Customizes the operations of a CSP. See CPSetProvParam. | 
| CPSignHash | Signs a piece of data. See CPSignHash. | 
| CPVerifySignature | Verifies a signature against a hash object. See CPVerifySignature. |