我希望使用RSA加密数据,我已经尝试在我的代码中生成密钥并且它可以工作。但是我实际上需要从服务器获取公钥字符串,然后将其用作Seckey以便我可以使用它来使用RSA加密数据, 我尝试了这段代码:
//KeyString is the string of the key from server
let KeyData = (keyString as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData!
var cert : Unmanaged<SecCertificateRef>!;
var policy : Unmanaged<SecPolicy>!;
cert = SecCertificateCreateWithData(kCFAllocatorDefault, KeyData);
policy = SecPolicyCreateBasicX509();
var status : OSStatus = noErr
var trust: SecTrust?
var certArray : [Unmanaged<SecCertificateRef>!] = [cert];
var certArrayPointer = UnsafeMutablePointer<UnsafePointer<Void>>(certArray)
status = SecTrustCreateWithCertificates(cert, policy, trust);
let publicKey: SecKeyRef = SecTrustCopyPublicKey(trust!).takeUnretainedValue()
我无法运行这段代码,因为SecTrustCreateWithCertificates方法期望证书作为任意对象!我不知道如何解决这个问题,如果解决了这个问题,我就可以得到SecKey。
我从这个objective-c答案中获得了上面的代码。
所以,如果有人能帮我找到正确的代码来解决这个问题,我将非常感激:)
pubKey
会让答案更有用。 - zaphopenssl x509 -in NAME.cer -inform der -out NAME.pem
将 .pem 转换为 .deropenssl x509 -outform der -in NAME.pem -out NAME.der
- HusamData(base64Encoded: base64string)
解码base64字符串,这将给你数据,你可以传递给SecCertificateCreateWithData
。参见:https://dev59.com/vWkv5IYBdhLWcg3wdQnm - Koen.