提问人:dickfala 提问时间:10/20/2023 更新时间:10/20/2023 访问量:74
在 iOS 中使用 GMEllipticCurveCrypto 和 CryptoKit 的 ECDH 公钥的类型转换错误
Type conversion error using ECDH public key at GMEllipticCurveCrypto and CryptoKit in iOS
问:
我正在集成代码,我将从“GMEllipticCurveCrypto”框架获取公钥,如下所示:
[Objective-C]
GMEllipticCurveCrypto *crypto = [GMEllipticCurveCrypto generateKeyPairForCurve:
GMEllipticCurveSecp384r1];
NSLog(@"public base64:%@",crypto.publicKeyBase64);
// output : AmIh8odxIxJ93mdBOjxW9zP0DhIP29YejHyVwDkiKfNEm26sfPgq3yD86ttt826uyQ==
,但我想使用 Swift 的 CryptoKit 将这个公钥转换为 P384 类型。KeyAgreement.PublicKey。 但是,我遇到以下错误。
[Swift]
let base64CompressedPublicKeyString = "AmIh8odxIxJ93mdBOjxW9zP0DhIP29YejHyVwDkiKfNEm26sfPgq3yD86ttt826uyQ=="
if let compressedPublicKeyData = Data(base64Encoded: base64CompressedPublicKeyString) {
do {
let publicKey = try P384.Signing.PublicKey(rawRepresentation: compressedPublicKeyData)
print("create P-384 ECDH public key:\(publicKey)")
} catch {
print("cant’t create:\(error)")
}
} else {
print("Base64 decode” fail")
}
我收到了下面的错误日志:
"cant’t create:incorrectParameterSize"
如何调整以将收到的公钥转换为 P384。KeyAgreement 类型,然后生成带有私钥的共享密钥?
答: 暂无答案
评论
compressedRepresentation
而不是必须用于密钥导入。rawRepresentation