Различная подпись S / MIME между OpenSSL и C #

Я пытаюсь использовать код OpenSSL в моей программе .Net. Вот код:

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

Я пытался использовать .Net OpenSSL, но я абсолютно не представляю, как его использовать, и я не смог найти хорошую документацию для него. Я решил использовать .Net для выполнения того же процесса подписи, вот код:

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);

Но результаты между C # и OpenSSL не совпадают. Может кто-нибудь помочь мне?

Заранее спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос