                 case .failure(let encodingError):
                     print(encodingError)
                 }
-        }
-        )
+        })
+    }
+    
+    //获取客户端证书相关信息
+     func extractIdentity() -> IdentityAndTrust {
+        var identityAndTrust: IdentityAndTrust!
+        var securityError:OSStatus = errSecSuccess
+        
+        let path: String = Bundle.main.path(forResource: "mykey", ofType: "p12")!
+        let PKCS12Data = NSData(contentsOfFile:path)!
+        let key : NSString = kSecImportExportPassphrase as NSString
+        let options : NSDictionary = [key : "123456"] //客户端证书密码
+        //create variable for holding security information
+        //var privateKeyRef: SecKeyRef? = nil
+        
+        var items : CFArray?
+        
+        securityError = SecPKCS12Import(PKCS12Data, options, &items)
+        
+        if securityError == errSecSuccess {
+            let certItems:CFArray = items as CFArray!;
+            let certItemsArray:Array = certItems as Array
+            let dict:AnyObject? = certItemsArray.first;
+            if let certEntry:Dictionary = dict as? Dictionary<String, AnyObject> {
+                // grab the identity
+                let identityPointer:AnyObject? = certEntry["identity"];
+                let secIdentityRef:SecIdentity = identityPointer as! SecIdentity!
+                print("\(identityPointer)  :::: \(secIdentityRef)")
+                // grab the trust
+                let trustPointer:AnyObject? = certEntry["trust"]
+                let trustRef:SecTrust = trustPointer as! SecTrust
+                print("\(trustPointer)  :::: \(trustRef)")
+                // grab the cert
+                let chainPointer:AnyObject? = certEntry["chain"]
+                identityAndTrust = IdentityAndTrust(identityRef: secIdentityRef,
+                                                    trust: trustRef, certArray:  chainPointer!)
+            }
+        }
+        return identityAndTrust;
     }
 }
+
+
+

    }()
    
    
    // 请求类型
    public enum requestType {
        case get, post
    }
    
    // 创建单例
    static var sharedInstance : JQNetworkTools {

                    multipartFormData.append(utf8Value, withName: key)
                }
            }
        },to: postUrlStr,headers: headers,encodingCompletion: { encodingResult in
                switch encodingResult {
                case .success(let upload, _, _):
                    upload.responseJSON { response in
