privé Comment puis-je assurer que le code C# utilise un password
pour utiliser le certificate's private key
? Le certificat est installé dans le magasin CurrentUser/Personal
. J'ai essayé mais mon code utilise toujours la clé privée sans demander de mot de passe.Exécution d'une signature numérique à l'aide rapide X509Certificate2 un mot de passe à utiliser la clé
byte[] fileData = File.ReadAllBytes(path);
ContentInfo contentInfo = new ContentInfo(fileData);
SignedCms signedCms =
new SignedCms(SubjectIdentifierType.SubjectKeyIdentifier, contentInfo, true);
CmsSigner signer =
new CmsSigner(SubjectIdentifierType.SubjectKeyIdentifier, MyLoadedCert);
signer.IncludeOption = X509IncludeOption.WholeChain;
signedCms.ComputeSignature(signer); // Works fine without prompting password
byte[] encoded = signedCms.Encode();
File.WriteAllBytes(signatureFilePath, encoded);
Il est de ne pas jeter une exception pour moi. Mais si je mets 'signedCms.ComputeSignature (signataire, false)' alors il demande un mot de passe dans une fenêtre externe. Pourquoi en mode silencieux cela ne fonctionne pas? Est-ce quelque chose requis dans mon certificat? –
@GokulE C'est IMHO mode silencieux = aucune interaction de l'utilisateur autorisé. Je n'ai trouvé aucun moyen dans .NET pour vérifier si un certificat a une forte protection des clés, mais peut-être que je n'ai pas regardé assez fort :) – pepo