Mit folgender Funktion lässt sich ein ein Byte Array mit einem Zertifikat (z.B. aus dem Zertifikatsspeicher) signieren.
Zurückgeliefert wird daraufhin ein Byte Array mit angehängter digitaler Signatur. Diese Daten könnten danach noch durch einen Signaturvalidierungsprozess auf Integrität und Herkunft überprüft werden.
Code:
private byte[] SignData(byte[] data, X509Certificate2 cert)
{
ContentInfo content = new ContentInfo(data); // was signiert werden soll
SignedCms signedMessage = new SignedCms(content);
CmsSigner signer = new CmsSigner(cert); // wer signiert
signedMessage.ComputeSignature(signer); // signieren der Daten
byte[] signedBytes = signedMessage.Encode(); // Daten serialisieren
return signedBytes;
}