Créer un message signé PKCS # 7 en c # avec une signature précalculée

J’essaie de créer un message signé PKCS # 7 en C #. La signature numérique étant calculée séparément dans un HSM, j’ai donc déjà la valeur de la signature. Je souhaite simplement créer une structure PKCS # 7 qui la contient.

J’ai déjà envisagé d’utiliser SignedCms dans l’espace de noms System.Security.Cryptography.Pkcs mais cela ne semble pas avoir l’option de fournir une signature précalculée.

Quel est le meilleur moyen de générer une structure PKCS # 7 en C # alors que j’ai déjà la valeur de la signature numérique?

Autant que vous puissiez, vous ne pouvez pas faire cela avec les classes .NET “intégrées”.

Cependant, j’ai créé un exemple d’application – Pkcs7SignatureGenerator – pour la création de signatures CMS avec Pkcs11Interop (dont je suis l’auteur) et les bibliothèques de Bouncy Castle .

Dans cette application, la bibliothèque Pkcs11Interop exécute une opération de signature via l’API PKCS # 11 avec la clé privée stockée dans le périphérique matériel. La bibliothèque BouncyCastle est responsable de la construction d’une structure de signature CMS (PKCS # 7).

Je pense que vous voulez utiliser la classe X509Certificate2 , utilisez la fonction statique CreateFromSignedFile pour extraire le certificate du fichier signé ou utilisez CreateFromCertFile pour créer à partir du fichier de certificateion spécifié:

 X509Certificate2 cert = X509Certificate2.CreateFromSignedFile(filename); CmsSigner signer = new CmsSigner(cert);