签名apple的存折通行证
本文关键字:通行证 apple 签名 | 更新日期: 2023-09-27 17:51:11
我正在尝试签署舱单。Apple Passbook pass的c# json文件。我遵循了苹果的通行证签名指南,并在这里和这里查看了帖子。当我执行代码时,在signedCms.ComputeSignature(cmsSigner);
行出现一个CryptographicException,表示
键不存在
这是我目前拥有的代码:
private void button2_Click(object sender, EventArgs e)
{
String manifest = System.IO.File.ReadAllText(@"C:'Users'Administrator'Downloads'Testpass'Testpass'manifest.json");
byte[] msgBytes = Encoding.Unicode.GetBytes(manifest);
byte[] sign = SignMsg(msgBytes, findCertificate(true));
//byte[] sign = signit(manifest);
File.WriteAllBytes(@"C:'Users'Administrator'Downloads'Testpass'Testpass", sign);
}
private byte[] SignMsg(Byte[] msg, X509Certificate2 signerCert)
{
ContentInfo contentInfo = new ContentInfo(msg);
SignedCms signedCms = new SignedCms(contentInfo, true);
X509Certificate2 developerCertificate = new X509Certificate2(@"C:'Users'Administrator'Downloads'pass.cer");
X509Certificate2 appleWWDRCA = new X509Certificate2(@"C:'Users'Administrator'Downloads'AppleWWDRCA.cer");
CmsSigner cmsSigner = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, developerCertificate);
cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;
cmsSigner.Certificates.Add(appleWWDRCA);
cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));
// Sign the CMS/PKCS #7 message.
signedCms.ComputeSignature(cmsSigner);
// Encode the CMS/PKCS #7 message.
return signedCms.Encode();
}
是否有必要从Windows证书存储中获取证书,还是从文件系统中获取证书?任何关于如何解决问题的帮助是赞赏的!
PS:我也看过DotNet-Passbook,但首先它给我带来了一些问题,其次,我真的只需要签名manifest文件,而不是库提供的其他一切。
我是。net-passbook的创造者。
这个错误看起来像您的证书不包括私钥组件。
当您在Windows中打开证书时,它将指示是否包含私钥。