(iOS) Obj-c .cer 从字符串存储到 SecCertificateRef
(iOS) Obj-c .cer store from string to SecCertificateRef
我已经在网上尝试了几件事,并阅读了几个小时,并经历了大约 20 次演练。他们所有人都在做不同的事情,不要指出我在做什么。
我有一个字符串形式的 .cer,通过 api 返回。然后我想将其传递给 Obj-c 中的 SecCertificateRef
对象。我遇到桥接错误,我试过了。 (__bridge id)certificate
和 (__bridge CFStringRef)certificate
。没有骰子。演员类型仍然存在错误。
我仍在学习 Obj-c,尤其是证书处理方面的知识。我有一个字符串 -----BEGIN CERTIFICATE-----
MIIF4zCCA8...
形式的证书,我想将它存储在钥匙链中,然后在进行网络调用时使用它。令人惊讶的是,我找不到任何帮助演练或指南。谢谢。
好像没有人来救,所以我想通了。比我想象的要简单。它抱怨 initWithBase64Encoding
的方法已弃用,但尝试使用 Foundation 中的新方法导致了问题。
NSString * s = @"-----BEGIN CERTIFICATE---- ....." // My Certificate raw string.
NSRange r1 = [s rangeOfString:@"-----BEGIN CERTIFICATE-----"];
NSRange r2 = [s rangeOfString:@"-----END CERTIFICATE-----"];
NSRange rSub = NSMakeRange(r1.location + r1.length, r2.location - r1.location - r1.length);
NSString *subCert = [s substringWithRange:rSub];
NSData *rawCertificate = [[NSData alloc] initWithBase64Encoding:subCert];
SecCertificateRef parsedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)rawCertificate);
// This gave me a valid certificate I could store.
我已经在网上尝试了几件事,并阅读了几个小时,并经历了大约 20 次演练。他们所有人都在做不同的事情,不要指出我在做什么。
我有一个字符串形式的 .cer,通过 api 返回。然后我想将其传递给 Obj-c 中的 SecCertificateRef
对象。我遇到桥接错误,我试过了。 (__bridge id)certificate
和 (__bridge CFStringRef)certificate
。没有骰子。演员类型仍然存在错误。
我仍在学习 Obj-c,尤其是证书处理方面的知识。我有一个字符串 -----BEGIN CERTIFICATE-----
MIIF4zCCA8...
形式的证书,我想将它存储在钥匙链中,然后在进行网络调用时使用它。令人惊讶的是,我找不到任何帮助演练或指南。谢谢。
好像没有人来救,所以我想通了。比我想象的要简单。它抱怨 initWithBase64Encoding
的方法已弃用,但尝试使用 Foundation 中的新方法导致了问题。
NSString * s = @"-----BEGIN CERTIFICATE---- ....." // My Certificate raw string.
NSRange r1 = [s rangeOfString:@"-----BEGIN CERTIFICATE-----"];
NSRange r2 = [s rangeOfString:@"-----END CERTIFICATE-----"];
NSRange rSub = NSMakeRange(r1.location + r1.length, r2.location - r1.location - r1.length);
NSString *subCert = [s substringWithRange:rSub];
NSData *rawCertificate = [[NSData alloc] initWithBase64Encoding:subCert];
SecCertificateRef parsedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)rawCertificate);
// This gave me a valid certificate I could store.