64
return
nil;
65
}
66
}
67
if
(cipherBuffer) {
68
free(cipherBuffer);
69
}
70
return
encryptedData;
71
}
6. 获取私钥。
//从 p12
文件中获取私钥 ,密码是你生成私钥的时候生成的
72
- (OSStatus)extractEveryThingFromPKCS12File:(NSString *)pkcsPath passphrase:
(NSString *)pkcsPassword {
73
SecIdentityRef identity;
74
SecTrustRef trust;
75
OSStatus status = -1;
76
77
if
(_privateKey == nil) {
78
NSData *p12Data = [NSData dataWithContentsOfFile:pkcsPath];
79
if
(p12Data) {
80
CFStringRef password = (CFStringRef)pkcsPassword;
81
const
void
*keys[] = {
82
kSecImportExportPassphrase
83
};
84
const
void
*values[] = {
85
password
86
};
87
CFDictionaryRef options = CFDictionaryCreate(kCFAllocatorDefault, keys,
values, 1, NULL, NULL);
88
CFArrayRef items = CFArrayCreate(kCFAllocatorDefault, NULL, 0, NULL);
89
status = SecPKCS12Import((CFDataRef)p12Data, options, &items);
90
if
(status == errSecSuccess) {
91
CFDictionaryRef identity_trust_dic = CFArrayGetValueAtIndex(items, 0);
92
identity = (SecIdentityRef)CFDictionaryGetValue(identity_trust_dic,
kSecImportItemIdentity);
93
trust = (SecTrustRef)CFDictionaryGetValue(identity_trust_dic,
kSecImportItemTrust);
94
// certs 数组中包含了所有的证书