background image

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 数组中包含了所有的证书