我有这个要求从供应商处下载.p12文件(证书)并使其在我的应用程序上可用,以便用户将其安装到他的设备上。 现在如果我将.p12文件附加到电子邮件中,当收件人点击iphone上的文件时它将开始安装我只是想尝试获得相同的行为。 截至目前,在我的应用程序中,我可以下载p12文件并将其存储在apps文档目录中。
func saveCert(serialId : String){
let source = "https://myhost.com/serialId"
let url = NSURL(string: source)
let request = NSURLRequest(URL: url!)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if (error == nil) {
let statusCode = (response as! NSHTTPURLResponse).statusCode
print("Success: \(statusCode)")
let filename = self.getDocumentsDirectory().stringByAppendingPathComponent("test.p12")
print(filename)
data?.writeToFile(filename, atomically: true)
let filemgr = NSFileManager.defaultManager()
if filemgr.fileExistsAtPath(filename) {
print("File exists")
} else {
print("File not found")
}
}
else {
print("Faulure: %@", error!.localizedDescription);
}
});
task.resume()
}
现在我需要打开此文件,以便用户安装配置文件屏幕。请帮忙。
答案 0 :(得分:2)
Here是你想看的。
以下是如何使用它的示例
import Security
let fileManager = NSFileManager.defaultManager()
var resourcePath:String = fileManager.currentDirectoryPath
resourcePath = resourcePath.stringByAppendingString("/dummy.p12")
if fileManager.fileExistsAtPath(resourcePath){
let p12Data: NSData = NSData(contentsOfFile: resourcePath)!
let key : NSString = kSecImportExportPassphrase as NSString
let options : NSDictionary = [key : "password_for_certificate"]
//create variable for holding security information
var privateKeyRef: SecKeyRef? = nil
var items : CFArray?
let securityError: OSStatus = SecPKCS12Import(p12Data, options, &items)
}
希望能帮助你完成大部分工作。
修改强>
在做了更多的研究后,我发现this lib可以帮助你做你想做的一切。
试一试。