For mac:
let pubKey = "-----BEGIN PUBLIC KEY-----MIICIjANBgAgK.......InbFk1FkucQqruMyUCAwEAAQ==-----END PUBLIC KEY-----"
let pubKeyData = pubKey.dataUsingEncoding(NSASCIIStringEncoding)
var error: Unmanaged<CFErrorRef>?
let secKey = SecKeyCreateFromData(NSDictionary(), pubKeyData!, &error)
其中 pubKey 是公钥的字符串表示形式。
如果您不知道您的公钥,您可以使用以下命令从您的私钥推断出它:
openssl rsa -in server.key -pubout > mykey.pub
其中 server.key 是包含以下内容的文件-----BEGIN RSA PRIVATE KEY-----
作为第一行。
For iOS:
情况有点复杂。
你需要一个der
文件。它是您的证书的二进制表示形式。
如果需要转换现有证书,可以使用以下命令进行操作:
openssl x509 -outform der -in file.crt|pem -out mycert.der
The .crt
or .pem
文件包含-----BEGIN CERTIFICATE-----
作为第一行。
Put the der
将文件放入你的包中并执行以下操作:
let certificateData = NSData(contentsOfURL:NSBundle.mainBundle().URLForResource("mycert", withExtension: "der")!)
let certificate = SecCertificateCreateWithData(nil, certificateData!)
var trust: SecTrustRef?
let policy = SecPolicyCreateBasicX509()
let status = SecTrustCreateWithCertificates(certificate!, policy, &trust)
if status == errSecSuccess {
let key = SecTrustCopyPublicKey(trust!)!;
}
亚塔!密钥现在包含一个SecKey
您的公钥的表示。快乐固定。