Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS设备上的swift中创建新的X509证书_Ios_Swift_Security_Cryptography - Fatal编程技术网

在iOS设备上的swift中创建新的X509证书

在iOS设备上的swift中创建新的X509证书,ios,swift,security,cryptography,Ios,Swift,Security,Cryptography,我的用例如下。 1.当用户第一次打开应用程序时,我需要在iOS设备上创建新的X509证书。 2.我需要代码在swift中使用安全框架执行此操作。 3.在不使用第三方LIB的情况下,iOS安全框架是否支持此功能? 4.如果上面第3点的答案是否定的,那么我可以使用哪个第三方LIB?您可以使用Security.framework生成一个证书。您需要手动执行的是将x509标头预先添加到它 我将在下面发布的代码片段是简化的示例。确保负责任地处理nil值 以下代码将生成证书: func obtainKe

我的用例如下。 1.当用户第一次打开应用程序时,我需要在iOS设备上创建新的X509证书。 2.我需要代码在swift中使用安全框架执行此操作。 3.在不使用第三方LIB的情况下,iOS安全框架是否支持此功能?
4.如果上面第3点的答案是否定的,那么我可以使用哪个第三方LIB?

您可以使用
Security.framework
生成一个证书。您需要手动执行的是将x509标头预先添加到它

我将在下面发布的代码片段是简化的示例。确保负责任地处理
nil

以下代码将生成证书:

  func obtainKeyData(_ tag: String) -> Data {
      var keyRef: AnyObject?
      let query: Dictionary<String, AnyObject> = [
          String(kSecAttrKeyType): kSecAttrKeyTypeRSA,
          String(kSecReturnData): kCFBooleanTrue as CFBoolean,
          String(kSecClass): kSecClassKey as CFString,
          String(kSecAttrApplicationTag): tag as CFString,
      ]

      switch SecItemCopyMatching(query as CFDictionary, &keyRef) {
      case noErr:
        return keyRef as! Data
      default:
        fatalError("Error")
      }
  }
最后,将两者结合起来以创建x509格式的证书:

let x509Key = obtainKeyData(keyTag).dataByPrependingX509Header()

作为参考,我从项目中获得了这段代码,这是Swift的
安全性
框架包装,目前正在一个私人应用程序中使用。

只需使用openssl绑定即可swift@Woodstock谢谢你提供的信息。iOS安全框架不支持吗?
let x509Key = obtainKeyData(keyTag).dataByPrependingX509Header()