Platform SDK: Cryptography

About Cryptographic Service Providers

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 (a system program interface). 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.

This documentation is written for CSP developers. It defines the CSP interfaces, describes the procedures a CSP writer must use, and the requirements that a CSP writer must fulfill to create a custom CSP. While information in this documentation is primarily intended for a person writing a CSP, it can also be of interest to advanced cryptography application developers.

This documentation maintains a focus on creating a CSP and assumes familiarity with CryptoAPI in the Microsoft Platform SDK. The following related subjects, which a CSP developer must be familiar with to implement a CSP, are not covered:

For more reading on the above topics, see Additional Documentation on Cryptography.

This section includes the following topics.

Topic Contents
Architecture of a Cryptographic Service Provider (CSP) Describes the internal structure of a typical CSP and explains some of the assumptions implicit in the CryptoAPI/CryptoSPI design.
Writing a CSP Outlines the steps used to write, test, and implement a custom CSP.
CSP Interoperability Presents information on implementation requirements that a CSP must meet to work with other cryptography providers.