The following structures are used by cryptography functions. Cryptography structures are categorized according to usage as follows:
| Structure | Description |
| CERT_ACCESS_DESCRIPTION | This structure is a member of a CERT_AUTHORITY_INFO_ACCESS structure. |
| CERT_ALT_NAME_ENTRY | Contains an alternative name in one of a variety of name forms. |
| CERT_ALT_NAME_INFO | Used in encoding and decoding extensions for subject or issuer certificates, certificate revocation list (CRLs), and certificate trust list (CTLs). |
| CERT_AUTHORITY_INFO_ACCESS | Represents authority information access and subject information access certificate extensions and specifies how to access additional information and services for the subject or the issuer of that certificate. |
| CERT_AUTHORITY_KEY_ID_INFO | Identifies the key used to sign a certificate or CRL. |
| CERT_AUTHORITY_KEY_ID2_INFO | Identifies the key used to sign a certificate or CRL. It differs from the CERT_AUTHORITY_KEY_ID_INFO structure in that the certificate issuer is a CERT_ALT_NAME_INFO instead of a CERT_NAME_BLOB. |
| CERT_BASIC_CONSTRAINTS_INFO | Contains information indicating whether the certified subject can act as a CA, an end-entity, or both. |
| CERT_BASIC_CONSTRAINTS2_INFO | Contains information indicating whether the certified subject can act as a CA or an end entity. |
| CERT_KEY_ATTRIBUTES_INFO | Contains optional additional information about the public key being certified. |
| CERT_KEY_USAGE_RESTRICTION_INFO | Contains restrictions imposed on the usage of a certificate's public key. |
| CERT_POLICIES_INFO | Contains an array of CERT_POLICY_INFO. |
| CERT_POLICY_ID | Contains a list of certificate policies that the certificate expressly supports, together with optional qualifier information pertaining to these policies. |
| CERT_POLICY_INFO | Contains an object identifier (OID) specifying a policy and an optional array of policy qualifiers. |
| CERT_POLICY_QUALIFIER_INFO | Contains an object identifier (OID) specifying the qualifier and qualifier-specific supplemental information. |
| CERT_PRIVATE_KEY_VALIDITY | Indicates a valid time span for the private key corresponding to a certificate's public key. |
| CRL_DIST_POINT | Identifies a single CRL distribution point that a certificate user can reference to determine whether certificates have been revoked. |
| CRL_DIST_POINT_NAME | Identifies a location from which the CRL can be obtained. |
| CRL_DIST_POINTS_INFO | Contains a list of CRL distribution points a certificate user can reference to determine whether the certificate has been revoked. |
Current extension predefined constants and OIDs along with the structure associated with each are shown in the following table.
| Structure | Description |
| CMSG_CMS_RECIPIENT_INFO | This structure is used with the CryptMsgGetParam function to get information on a key transport, key agreement, or mail list envelope message recipient. |
| CMSG_CMS_SIGNER_INFO | This structure contains the content of the defined SignerInfo in signed or signed and enveloped messages. |
| CMSG_CNG_CONTENT_DECRYPT_INFO | Contains all the relevant information passed between CryptMsgControl and OID installable functions for the import and decryption of a Cryptography API: Next Generation (CNG) content encryption key (CEK). |
| CMSG_CONTENT_ENCRYPT_INFO | Contains information shared between the PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY, PFN_CMSG_EXPORT_KEY_TRANS, PFN_CMSG_EXPORT_KEY_AGREE, and PFN_CMSG_EXPORT_MAIL_LISTobject identifier (OID) installable functions used for the encryption and export of a content encryption key. |
| CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA | This structure is used to add an unauthenticated attribute to a signer of a signed message. |
| CMSG_CTRL_DECRYPT_PARA | This structure contains information used to decrypt an enveloped message for a key transport recipient. This structure is passed to CryptMsgControl if the dwCtrlType parameter is CMSG_CTRL_DECRYPT. |
| CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA | This structure is used to delete an unauthenticated attribute of a signer of a signed message. |
| CMSG_CTRL_KEY_AGREE_DECRYPT_PARA | This structure contains information about a key agreement recipient. |
| CMSG_CTRL_KEY_TRANS_DECRYPT_PARA | This structure containing information about a key transport message recipient. |
| CMSG_CTRL_MAIL_LIST_DECRYPT_PARA | This structure contains information on a mail list message recipient. |
| CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA | This structure contains information used to verify a message signature. It contains the signer index and signer public key. The signer public key can be the signer's CERT_PUBLIC_KEY_INFO structure, certificate context, or chain context. |
| CMSG_ENVELOPED_ENCODE_INFO | This structure contains information needed to encode an enveloped message. It is passed to CryptMsgOpenToEncode if dwMsgType is CMSG_ENVELOPED. |
| CMSG_ENVELOPED_HASHED_INFO | This structure is used with hashed messages. It is passed to CryptMsgOpenToEncode if dwMsgType is CMSG_ENVELOPED. |
| CMSG_KEY_AGREE_ENCRYPT_INFO | Contains encryption information applicable to all key agreement recipients of an enveloped message. |
| CMSG_KEY_AGREE_KEY_ENCRYPT_INFO | Contains the encrypted key for a key agreement recipient of an enveloped message. |
| CMSG_KEY_TRANS_ENCRYPT_INFO | Contains encryption information for a key transport recipient of enveloped data. |
| CMSG_MAIL_LIST_ENCRYPT_INFO | Contains encryption information for a mailing list recipient of enveloped data. |
| CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO | This structure contains information on a message recipient using key agreement key management. |
| CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO | This structure contains encoded key transport information for a message recipient. |
| CMSG_KEY_TRANS_RECIPIENT_INFO | This structure contains information used in key transport algorithms. |
| CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO | This structure is used with previously distributed symmetric keys for decrypting the content key encryption key (KEK). |
| CMSG_MAIL_LIST_RECIPIENT_INFO | This structure contains information used for previously distributed symmetric key-encryption keys (KEK). |
| CMSG_RC2_AUX_INFO | This structure contains the bit length of the key for RC2 encryption algorithms. The pvEncryptionAuxInfo member in CMSG_ENVELOPED_ENCODE_INFO can be set to point to an instance of this structure. |
| CMSG_RC4_AUX_INFO | This structure contains the bit length of the key for RC4 encryption algorithms. The pvEncryptionAuxInfo member in CMSG_ENVELOPED_ENCODE_INFO can be set to point to an instance of this structure. |
| CMSG_RECIPIENT_ENCODE_INFO | This structure contains information a message recipient's content encryption key management type. |
| CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO | This structure contains information on a message receiver used to decrypt the session key needed to decrypt the message contents. This structure is used with CMS low level messages using any of the key management methods. |
| CMSG_RECIPIENT_ENCRYPTED_KEY_INFO | This structure contains information used for an individual key agreement recipient. |
| CMSG_SIGNED_ENCODE_INFO | This structure contains information to be passed to CryptMsgOpenToEncode if dwMsgType is CMSG_SIGNED. |
| CMSG_SIGNER_ENCODE_INFO | This structure contains signer information. It is passed to CryptMsgCountersign, CryptMsgCountersignEncoded, and optionally to CryptMsgOpenToEncode as a member of the CMSG_SIGNED_ENCODE_INFO structure, if the dwMsgType parameter is CMSG_SIGNED. |
| CMSG_SIGNER_INFO | This structure contains the content of the PKCS #7 defined SignerInfo in signed messages. |
| CMSG_SP3_COMPATIBLE_AUX_INFO | This structure contains information needed for SP3 compatible encryption. |
| CMSG_STREAM_INFO | This structure is used to enable processing stream data rather than single block processing. Stream processing is most often used when processing large messages. Stream-process messages can originate from any serialized source such as a file on a hard disk, a server, or a CD ROM. |
| CRYPT_DECRYPT_MESSAGE_PARA | Contains information for decrypting messages. |
| CRYPT_ENCRYPT_MESSAGE_PARA | Contains information used to encrypt messages. |
| CRYPT_HASH_MESSAGE_PARA | Contains data for hashing messages. |
| CRYPT_SIGN_MESSAGE_PARA | Contains information for signing messages using a specified signing certificate context. |
| CRYPT_VERIFY_MESSAGE_PARA | Contains information needed to verify a signed message. |
The following structures are used in building certificate chains used to establish trust in a certificate.
The following structures are used with cryptographic service provider (CSP) functions.