我是新来的,但我有一个私钥,我从p12 cert使用此命令获得它
openssl pkcs12 -in cert.p12 -nodes -out private.key.pem -nocerts
这是结果文件的内容
行李属性localKeyID:== friendlyName:==关键属性:- 开始PRIVATE KEY- MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1e12SFqNnD2aiLtB 2x5+K0R2pZDaBh2Drt09zLuL5imhRANCAASduIdkrmXpf5681JwnJHkcMi5zVPAS YFUig95A2w7flEY1lNtZcy/IRDQidqu/6BqLqe0V8P/CBZDa4hvKGzkE -结束PRIVATE KEY-
然后我试图从这个文件的内容创建一个secKey,但我总是得到相同的错误
非托管(_value:错误域=NSOSStatusErrorDomain Code=-50“从数据创建EC私钥失败”UserInfo={numberOfErrorsDeep=0,NSDescription=从数据创建EC私钥失败})
这里的代码
func test() {
let pemContent = """
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1e12SFqNnD2aiLtB
2x5+K0R2pZDaBh2Drt09zLuL5imhRANCAASduIdkrmXpf5681JwnJHkcMi5zVPAS
YFUig95A2w7flEY1lNtZcy/IRDQidqu/6BqLqe0V8P/CBZDa4hvKGzkE
"""
let pemData = pemContent
.replacingOccurrences(of: "\n", with: "")
.trimmingCharacters(in: .whitespacesAndNewlines)
guard let decodedData = Data(base64Encoded: pemData) else {
fatalError("Failed to decode Base64 data")
}
var attribute = [
kSecAttrKeyType: kSecAttrKeyTypeECSECPrimeRandom,
kSecAttrKeyClass: kSecAttrKeyClassPrivate,
kSecAttrKeySizeInBits: 256
] as CFDictionary
// Create the key
var error: Unmanaged<CFError>?
guard let secKey = SecKeyCreateWithData(decodedData as CFData,
[
kSecAttrKeyType: kSecAttrKeyTypeECSECPrimeRandom,
kSecAttrKeyClass: kSecAttrKeyClassPrivate,
kSecAttrKeySizeInBits: 256
] as CFDictionary,
&error) else {
if let createKeyError = error {
print("Error creating key: \(createKeyError.takeRetainedValue() as Error)")
}
fatalError("Failed to create key")
}
// Successfully created SecKey
print("SecKey created: \(secKey)")
}
注:相同的关键是工作正常,当我尝试在Android平台,但不是在iOS
1条答案
按热度按时间rmbxnbpk1#
我能够找到一种方法来做到这一点,我将张贴在这里的任何人有同样的问题,与this question的帮助