【发布时间】: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。
我做错了什么?
【问题讨论】:
-
你从
ERR_print_errors_fp()或ERR_get_error()得到什么?你会让我们猜吗;)文档位于ERR_print_errors(3)和ERR_get_error(3)。 -
x509_verify可能对您有所帮助。有关验证密钥和证书的建议,请参阅 Check that a file is certificate or a key。 -
Apple 在apple.com/certificateauthority 提供了两个可供下载的根:AppleIncRootCertificate.cer 和 AppleComputerRootCertificate.cer。是其中之一,还是不同的?
标签: ios xcode openssl x509certificate