Export (0) Print
Expand All

SignedCms.ComputeSignature Method

The ComputeSignature() method prompts the user to select a signing certificate, creates a signature, and adds the signature to the CMS/PKCS #7 message.

Namespace:  System.Security.Cryptography.Pkcs
Assembly:  System.Security (in System.Security.dll)

public void ComputeSignature()

ExceptionCondition
ArgumentNullException

A null reference was passed to a method that does not accept it as a valid argument.

CryptographicException

A cryptographic operation could not be completed.

This method displays a user interface in which you choose signers for this message. This requires that the current process is running in user interactive mode, meaning that the Environment.UserInteractive property is set to true. A process is normally in user interactive mode unless it is a service process or running inside a Web application.

Signers whose certificates meet the following conditions will be displayed in the list:

  • The certificate has an associated private key.

  • The certificate is within its validity period.

  • The certificate has no key usage or a key usage that supports digital signatures or nonrepudiation.

Signer certificates are chosen from the My store.

.NET Framework Security

The following permissions are required to display the user interface:

The following permissions are required to access the signature key:

The following example shows the steps to compute a signature on a SignedCms message with message content that is not detached. In this case, the message content is included in the SignedCms message.

// The dataToSign byte array holds the data to be signed.
ContentInfo contentInfo = new ContentInfo(dataToSign);

// Create a new, nondetached SignedCms message.
SignedCms signedCms = new SignedCms(contentInfo);

// Sign the message.
signedCms.ComputeSignature();

// Encode the message. 
byte[] myCmsMessage = signedCms.Encode();

// The signed CMS/PKCS #7 message is ready to send. 
// The original content is included in this byte array.

The following example shows the steps to compute a signature on a SignedCms message with message content that is detached. In this case, the message content must be verified independently of the SignedCms message.

// The dataToSign byte array holds the data to be signed.
ContentInfo contentInfo = new ContentInfo(dataToSign);

// Create a new, detached SignedCms message.
SignedCms signedCms = new SignedCms(contentInfo, true);

// Sign the message.
signedCms.ComputeSignature();

// Encode the message. 
byte[] myCmsMessage = signedCms.Encode();

// The signed CMS/PKCS #7 message is ready to send. 
// The original content is not included in this byte array.

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft