在Visual Studio中生成Apple Passbook优惠券/ S-MIME签名
我试图在我的系统中创建Apple钱包传递,在从C#读取OpenSSL和C#以及Apple Passbook优惠券 之间的不同S / MIME签名后,系统现在可以自动创建.pkasss。
而我的问题是签名无法在实际中成功创建 。 如果我使用iPhone并尝试打开.pkpass文件,则无法打开!! 我发现问题来自签名,如果我使用mac在终端中创建签名,它会创建一个3326字节大小的签名; 我的代码只能创建一个3002字节的文件,这意味着签名必须遗漏一些东西。
Mac OS X方法与Windows操作系统方法有很大区别吗?
以前有人遇到过这个问题吗? 有谁知道为什么签名不同?
有谁知道怎么解决它?
这是我的源代码:
var cert = new X509Certificate2(assetsFolder + p12File, p12Password); var buffer = File.ReadAllBytes(Path.Combine(assetsFolder, "manifest.json")); var cont = new ContentInfo(buffer); var cms = new SignedCms(cont, true); var signer = new CmsSigner(cert) { IncludeOption = X509IncludeOption.ExcludeRoot, SignerIdentifierType = SubjectIdentifierType.IssuerAndSerialNumber, }; cms.ComputeSignature(signer, true); var myCmsMessage = cms.Encode(); File.WriteAllBytes(Path.Combine(assetsFolder, "signature"), myCmsMessage);
十分感谢!!!
———————————- UPDATE ————— ——————
我找到了签名!!! OID和SignerIdentifierType的设置将影响签名这是我的解决方案:
上述就是C#学习教程:在Visual Studio中生成Apple Passbook优惠券/ S-MIME签名分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
byte[] buffer = File.ReadAllBytes(Path.Combine(assetsFolder, "manifest.json")); X509Certificate2 cert = new X509Certificate2(assetsFolder + p12File, p12Password); var oid = new Oid("1.2.840.113549.1.7.2"); ContentInfo contentInfo = new ContentInfo(oid, buffer); SignedCms signedCms = new SignedCms(contentInfo, true); var cmsSigner = new CmsSigner(cert); cmsSigner.IncludeOption = X509IncludeOption.ExcludeRoot; cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now)); cmsSigner.SignerIdentifierType = SubjectIdentifierType.SubjectKeyIdentifier; signedCms.ComputeSignature(cmsSigner); byte[] myCmsMessage = signedCms.Encode(); return myCmsMessage;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1016129.html