Hi,
I'm trying to make an installation on iOS in sandbox, but it fails on public key.
My code:
`let publicKeyAttribute: [NSObject : NSObject] = [kSecAttrIsPermanent: true as NSObject, kSecAttrApplicationTag: "com.anu.keys.apppublic2".data(using: String.Encoding.utf8)! as NSObject]
let privateKeyAtrribute: [NSObject: NSObject] = [kSecAttrIsPermanent: true as NSObject, kSecAttrApplicationTag: "com.anu.keys.appprivate2".data(using: String.Encoding.utf8)! as NSObject]
var keyPairAttr = [NSObject: Any]()
keyPairAttr[kSecAttrType] = kSecAttrKeyTypeRSA
keyPairAttr[kSecAttrKeySizeInBits] = 2048
keyPairAttr[kSecReturnData] = true
keyPairAttr[kSecPublicKeyAttrs] = publicKeyAttribute
keyPairAttr[kSecPrivateKeyAttrs] = privateKeyAtrribute
var pbError:Unmanaged<CFError>?
guard let privateKey = SecKeyCreateRandomKey(keyPairAttr as CFDictionary, &pbError) else {
return
}
let publicKey = SecKeyCopyPublicKey(privateKey)
guard let pbData = SecKeyCopyExternalRepresentation((publicKey)!, &pbError) as Data? else {
print("error: ", pbError!.takeRetainedValue() as Error)
return
}
guard let prData = SecKeyCopyExternalRepresentation((privateKey), &pbError) as Data? else {
print("error: ", pbError!.takeRetainedValue() as Error)
return
}
let pr = prData.base64EncodedString(options: .lineLength64Characters)
let pb = pbData.base64EncodedString(options: .lineLength64Characters)
let strPublicKey = ["-----BEGIN PUBLIC KEY-----", pb, "-----END PUBLIC KEY-----"].joined(separator: "\n")`
and result key is like this:
-----BEGIN PUBLIC KEY-----
MIIBCgKCAQEAtIyoe2q++125lPxwl92x+m+fTbksQouuDZHR4IgpWMuEwAzzgrRP
YdkiJIQAoepP8rTHxMuOXcSkTv6kY2xx3++tTyvHKjRyl/ZE/CNnL38Oot9scaKk
8XmICuUUC0D0TqOZ9IDwHFkrv9Z63p15f9QpB5Ie2T1IIeEn2Em2yEUit4LJb1PV
tzyCcjtxsyzPN7QKAooJFS2HovcCs0AKDP8PYAGFR5zh6Zdc1Fgv2Fe6jxxcLSXq
Qnnqyr0+yYJZikDRFmNHzkcDXnMnScsML4nTtpp15mhLITZDGZDMDTtsJuHyLlC1
dljLAOoQZ8DtiR/Ylzyy/N+Eqi6VraTB1wIDAQAB
-----END PUBLIC KEY-----
Getting response:
"Client public key invalid", errorDescriptionTranslated: Optional("De openbare klant-code is ongeldig."))```
Also tried third party library SwCrypt, but with same result.
Am I missing something? In Postman with javascript generated RSA pair it works as it should.
Thanks!