Unterschiedliche S / MIME-Signatur zwischen OpenSSL und C #

Ich versuche, einen OpenSSL-Code in meinem .Net-Programm zu verwenden. Hier ist der Code:

openssl pkcs12 -in "My PassKit Cert.p12" -clcerts -nokeys -out certificate.pem
openssl pkcs12 -in "My PassKit Cert.p12" -nocerts -out key.pem
smime -binary -sign -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER

Ich habe versucht, .NET OpenSSL zu verwenden, aber ich habe absolut keine Ahnung, wie ich es verwenden soll, und ich konnte keine gute Dokumentation dafür finden. Ich habe mich für .Net entschieden, um den gleichen Signierprozess durchzuführen. Hier ist der Code:

var dataToSign = System.IO.File.ReadAllBytes(filePathToSign);
ContentInfo contentInfo = new ContentInfo(dataToSign);

X509Certificate2 signerCert = new X509Certificate2(System.IO.File.ReadAllBytes(signerPfxCertPath), signerPfxCertPassword);

var signedCms = new SignedCms(contentInfo, true);
var signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, signerCert);

signer.IncludeOption = X509IncludeOption.EndCertOnly;
signedCms.ComputeSignature(signer);

var myCmsMessage = signedCms.Encode();

var buf = Encoding.Convert(Encoding.UTF7, Encoding.UTF8, myCmsMessage);

return Encoding.UTF8.GetString(buf, 0, buf.Length);

Die Ergebnisse zwischen C # und OpenSSL sind jedoch nicht dieselben. Kann mir bitte jemand weiterhelfen?

Danke im Voraus!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage