SignedCms.ComputeSignature 方法

定义

创建一个签名,并将该签名添加到 CMS/PKCS #7 消息中。

重载

ComputeSignature(CmsSigner, Boolean)

使用指定的签名者创建一个签名,并将该签名添加到 CMS/PKCS #7 消息中。

ComputeSignature()

创建一个签名,并将该签名添加到 CMS/PKCS #7 消息中。

ComputeSignature(CmsSigner)

使用指定的签名者创建一个签名,并将该签名添加到 CMS/PKCS #7 消息中。

ComputeSignature(CmsSigner, Boolean)

Source:
SignedCms.cs
Source:
SignedCms.cs
Source:
SignedCms.cs

使用指定的签名者创建一个签名,并将该签名添加到 CMS/PKCS #7 消息中。

public:
 void ComputeSignature(System::Security::Cryptography::Pkcs::CmsSigner ^ signer, bool silent);
public void ComputeSignature (System.Security.Cryptography.Pkcs.CmsSigner signer, bool silent);
member this.ComputeSignature : System.Security.Cryptography.Pkcs.CmsSigner * bool -> unit
Public Sub ComputeSignature (signer As CmsSigner, silent As Boolean)

参数

signer
CmsSigner

一个表示签名者的 CmsSigner 对象。

silent
Boolean

仅限 .NET Core 和 .NET 5+ : true 如果支持,则请求禁用 PIN 提示的打开密钥;否则为 false。 在 .NET Framework 中,不使用此参数,并且将始终显示 PIN 提示(如果需要)。

例外

signernull

未能完成加密操作。

仅限 .NET Framework:未指定签名证书。

仅限 .NET Core 和 .NET 5+:未指定签名证书。

注解

仅限 .NET Core:如果值不为 null,CmsSigner.PrivateKeysilent参数无效。 提供的值控制计算签名是否显示 PIN 提示。 PrivateKey即使 属性为 null 且 silent 参数设置为 true,操作系统和签名者选项的某些组合仍可能导致 PIN 提示。

若要在 .NET Framework 上显示用户界面,需要以下权限:

访问 .NET Framework 上的签名密钥需要以下权限:

适用于

ComputeSignature()

Source:
SignedCms.cs
Source:
SignedCms.cs
Source:
SignedCms.cs

创建一个签名,并将该签名添加到 CMS/PKCS #7 消息中。

public:
 void ComputeSignature();
public void ComputeSignature ();
member this.ComputeSignature : unit -> unit
Public Sub ComputeSignature ()

例外

.NET Framework(所有版本)和 .NET Core 3.0 及更高版本:未指定收件人证书。

.NET Core 2.2 版本及更早版本:未提供签名者证书。

注解

如果 SubjectIdentifierType.NoSignature 作为构造函数重载之SignedCms一的参数提供signerIdentifierType,则此方法成功。 否则,它将引发异常。

访问 .NET Framework 上的签名密钥需要以下权限:

适用于

ComputeSignature(CmsSigner)

Source:
SignedCms.cs
Source:
SignedCms.cs
Source:
SignedCms.cs

使用指定的签名者创建一个签名,并将该签名添加到 CMS/PKCS #7 消息中。

public:
 void ComputeSignature(System::Security::Cryptography::Pkcs::CmsSigner ^ signer);
public void ComputeSignature (System.Security.Cryptography.Pkcs.CmsSigner signer);
member this.ComputeSignature : System.Security.Cryptography.Pkcs.CmsSigner -> unit
Public Sub ComputeSignature (signer As CmsSigner)

参数

signer
CmsSigner

一个表示签名者的 CmsSigner 对象。

例外

向不接受空引用作为有效参数的方法传递了一个空引用。

未能完成加密操作。

示例

以下示例演示计算邮件内容未分离的邮件签名 SignedCms 的步骤。 在这种情况下,消息内容包含在消息中 SignedCms

// 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 dataToSign byte array holds the data to be signed.
Dim contentInfo As New ContentInfo(dataToSign)

' Create a new, nondetached SignedCms message.
Dim signedCms As New SignedCms(contentInfo)

' Sign the message.
signedCms.ComputeSignature()

' Encode the message.
Dim myCmsMessage As Byte() = signedCms.Encode()

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

以下示例演示了在邮件内容分离的邮件上 SignedCms 计算签名的步骤。 在这种情况下,必须独立于 SignedCms 消息验证消息内容。

// 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.
' The dataToSign byte array holds the data to be signed.
Dim contentInfo As New ContentInfo(dataToSign)

' Create a new, detached SignedCms message.
Dim signedCms As New SignedCms(contentInfo, True)

' Sign the message.
signedCms.ComputeSignature()

' Encode the message.
Dim myCmsMessage As Byte() = signedCms.Encode()

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

注解

访问 .NET Framework 上的签名密钥需要以下权限:

适用于