【问题标题】:Apple certificate is invalide with PKCS7_verifyApple 证书对 PKCS7_verify 无效
【发布时间】:2014-05-08 02:39:28
【问题描述】:

我下载了AppleRootCertificate.cer,现在我尝试检查我的应用内收据证书是否有效(与苹果相同)。

我这样做就像他的 WWDS 视频中出现的苹果一样。

    BIO *b_receipt = BIO_new_mem_buf((void *)[receipt bytes], (long)[receipt length]);
    BIO *b_x509 = BIO_new_mem_buf((void *)[certificateData bytes], (long)[certificateData length]);

    // Convert receipt data to PKCS #7 Representation
    PKCS7 * p7 = d2i_PKCS7_bio(b_receipt, NULL);

    // Create the certificate store for matching white Apple cerif.
    X509_STORE * store = X509_STORE_new();
    X509 * appleRootCA = d2i_X509_bio(b_x509, NULL);
    X509_STORE_add_cert(store, appleRootCA);

    // Verify the Signature

    BIO * b_receiptPayload = BIO_new(BIO_s_mem());
    int result = PKCS7_verify(p7, NULL, store, NULL, b_receiptPayload, 0);
    NSLog(@"Result == %i", result); 

但结果总是0而不是1。

我做错了什么?

【问题讨论】:

标签: ios xcode openssl x509certificate


【解决方案1】:

根据#noloader 的建议,我打印错误ERR_get_error()

当我得到:Error:0D0C50A1:lib(13):func(197):reason(161),我用谷歌搜索并发现我需要在上面添加这一行:

 OpenSSL_add_all_algorithms();

这解决了我所有的问题:D

【讨论】:

  • OpenSSL_add_all_algorithms() 似乎对于 OpenSSL 1.0.2k 是必需的,OpenSSL 1.1.1 似乎可以在没有明确添加所有算法的情况下工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2012-04-06
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 2016-06-01
  • 2013-01-07
相关资源
最近更新 更多