The System.Security.Cryptography.Pkcs namespace provides programming elements for Public Key Cryptography Standards (PKCS), including methods for signing data, exchanging keys, requesting certificates, public key encryption and decryption, and other security functions.
The KeyAgreeRecipientInfo class defines key agreement recipient information. Key agreement algorithms typically use the Diffie-Hellman key agreement algorithm, in which the two parties that establish a shared cryptographic key both take part in its generation and, by definition, agree on that key. This is in contrast to key transport algorithms, in which one party generates the key unilaterally and sends, or transports it, to the other party.
The KeyTransRecipientInfo class defines key transport recipient information. Key transport algorithms typically use the RSA algorithm, in which an originator establishes a shared cryptographic key with a recipient by generating that key and then transporting it to the recipient. This is in contrast to key agreement algorithms, in which the two parties that will be using a cryptographic key both take part in its generation, thereby mutually agreeing to that key.
The Pkcs9SigningTime class defines the signing date and time of a signature. A Pkcs9SigningTime object can be used as an authenticated attribute of a CmsSigner object when an authenticated date and time are to accompany a digital signature.
The SubjectIdentifier class defines the type of the identifier of a subject, such as a CmsSigner or a CmsRecipient. The subject can be identified by the certificate issuer and serial number or the subject key.
The SubjectIdentifierOrKey class defines the type of the identifier of a subject, such as a CmsSigner or a CmsRecipient. The subject can be identified by the certificate issuer and serial number, the hash of the subject key, or the subject key.