在ios设备上打开p12文件

时间:2016-02-01 22:45:24

标签: ios swift uti smime

我有这个要求从供应商处下载.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()
    }

现在我需要打开此文件,以便用户安装配置文件屏幕。请帮忙。

1 个答案:

答案 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可以帮助你做你想做的一切。

试一试。