在iOS设备上的swift中创建新的X509证书
我的用例如下。 1.当用户第一次打开应用程序时,我需要在iOS设备上创建新的X509证书。 2.我需要代码在swift中使用安全框架执行此操作。 3.在不使用第三方LIB的情况下,iOS安全框架是否支持此功能?在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
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()