.NetプログラムでOpenSSLコードを使用しようとしています。コードは次のとおりです。
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の結果は同じではありません。誰かが私を助けてくれますか?
前もって感謝します!