SignedCms.ComputeSignature Methode

Definition

Erstellt eine Signatur und fügt der CMS/PKCS #7-Meldung die Signatur hinzu.

Überlädt

ComputeSignature(CmsSigner, Boolean)

Erstellt mithilfe des angegebenen Signaturgebers eine Signatur und fügt der CMS/PKCS #7-Meldung die Signatur hinzu.

ComputeSignature()

Erstellt eine Signatur und fügt der CMS/PKCS #7-Meldung die Signatur hinzu.

ComputeSignature(CmsSigner)

Erstellt mithilfe des angegebenen Signaturgebers eine Signatur und fügt der CMS/PKCS #7-Meldung die Signatur hinzu.

ComputeSignature(CmsSigner, Boolean)

Quelle:
SignedCms.cs
Quelle:
SignedCms.cs
Quelle:
SignedCms.cs

Erstellt mithilfe des angegebenen Signaturgebers eine Signatur und fügt der CMS/PKCS #7-Meldung die Signatur hinzu.

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)

Parameter

signer
CmsSigner

Ein CmsSigner-Objekt, das den Signaturgeber darstellt.

silent
Boolean

Nur .NET Core und .NET 5 und höher: true Zum Anfordern von Öffnungsschlüsseln mit deaktivierten PIN-Eingabeaufforderungen, sofern unterstützt, andernfalls false. In .NET Framework wird dieser Parameter nicht verwendet, bei Bedarf wird immer eine PIN-Aufforderung angezeigt.

Ausnahmen

signer ist null.

Ein kryptografischer Vorgang konnte nicht abgeschlossen werden.

Nur .NET Framework: Ein Signaturzertifikat wurde nicht angegeben.

Nur .NET Core und .NET 5 und höher: Ein Signaturzertifikat ist nicht angegeben.

Hinweise

Nur .NET Core: Der silent Parameter hat keine Auswirkung, wenn der CmsSigner.PrivateKey Wert nicht NULL ist. Der angegebene Wert steuert, ob beim Berechnen der Signatur eine PIN-Eingabeaufforderung angezeigt wird. Auch wenn die PrivateKey Eigenschaft NULL ist und der silent Parameter auf truefestgelegt ist, können einige Kombinationen von Betriebssystem- und Signieroptionen immer noch zu einer PIN-Eingabeaufforderung führen.

Die folgenden Berechtigungen sind erforderlich, um die Benutzeroberfläche auf .NET Framework anzuzeigen:

Für den Zugriff auf den Signaturschlüssel auf .NET Framework sind die folgenden Berechtigungen erforderlich:

Gilt für:

ComputeSignature()

Quelle:
SignedCms.cs
Quelle:
SignedCms.cs
Quelle:
SignedCms.cs

Erstellt eine Signatur und fügt der CMS/PKCS #7-Meldung die Signatur hinzu.

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

Ausnahmen

.NET Framework (alle Versionen) und .NET Core 3.0 und höher: Das Empfängerzertifikat ist nicht angegeben.

.NET Core-Version 2.2 und früher: Ein Signaturzertifikat wurde nicht angegeben.

Hinweise

Diese Methode ist erfolgreich, wenn SubjectIdentifierType.NoSignature als signerIdentifierType Argument einer der SignedCms Konstruktorüberladungen angegeben wurde. Andernfalls wird eine Ausnahme ausgelöst.

Für den Zugriff auf den Signaturschlüssel auf .NET Framework sind die folgenden Berechtigungen erforderlich:

Gilt für:

ComputeSignature(CmsSigner)

Quelle:
SignedCms.cs
Quelle:
SignedCms.cs
Quelle:
SignedCms.cs

Erstellt mithilfe des angegebenen Signaturgebers eine Signatur und fügt der CMS/PKCS #7-Meldung die Signatur hinzu.

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)

Parameter

signer
CmsSigner

Ein CmsSigner-Objekt, das den Signaturgeber darstellt.

Ausnahmen

Ein NULL-Verweis wurde an eine Methode übergeben, die diesen nicht als gültiges Argument annimmt.

Ein kryptografischer Vorgang konnte nicht abgeschlossen werden.

Beispiele

Das folgende Beispiel zeigt die Schritte zum Berechnen einer Signatur für eine SignedCms Nachricht mit Nachrichteninhalt, der nicht getrennt ist. In diesem Fall ist der Nachrichteninhalt in der SignedCms Nachricht enthalten.

// 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.

Das folgende Beispiel zeigt die Schritte zum Berechnen einer Signatur für eine SignedCms Nachricht mit getrenntem Nachrichteninhalt. In diesem Fall muss der Nachrichteninhalt unabhängig von der SignedCms Nachricht überprüft werden.

// 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.

Hinweise

Für den Zugriff auf den Signaturschlüssel auf .NET Framework sind die folgenden Berechtigungen erforderlich:

Gilt für: