iOS - как выполнить sharedSecretFromKeyAgreement в iOS 12
Недавно Apple с iOS 13 представила CryptoKit, у которого есть метод sharedSecretFromKeyAgreement, который генерирует общий секрет из соглашения о ключах между открытым и закрытым ключами. Как этого добиться в iOS 12 и ниже?
iOS 13
import CryptoKit
let alicePrivateKey = P256.KeyAgreement.PrivateKey()
let alicePublicKey = alicePrivateKey.publicKey
let eileenPrivateKey = P256.KeyAgreement.PrivateKey()
let eileenPublicKey = eileenPrivateKey.publicKey
let shared1 = try alicePrivateKey.sharedSecretFromKeyAgreement(with: eileenPublicKey)
let shared2 = try eileenPrivateKey.sharedSecretFromKeyAgreement(with: alicePublicKey)
if shared1 == shared2 {
print("shared keys are equal")
}
0 ответов
Я использовал SecKeyCopyKeyExchangeResult из iOS, который отлично работает без проблем. Единственное, что нужно сделать, это убедиться, что используемые ниже ecSecPrivateKey и ecSecPrivateKey должны быть в формате Seckey и работать нормально.
guard let derivedData = SecKeyCopyKeyExchangeResult(
ecSecPrivateKey,
SecKeyAlgorithm.ecdhKeyExchangeStandard,
ecSecPublicKey,
parameters as CFDictionary,
&error)
else {
return
}
import CryptoKit
import Foundation
let bobsPrivateKey = P521.KeyAgreement.PrivateKey()
let bobsPublicKey = bobsPrivateKey.publicKey
let alicesPrivateKey = P521.KeyAgreement.PrivateKey()
let alicesPublicKey = alicesPrivateKey.publicKey
let shared1 = try alicesPrivateKey.sharedSecretFromKeyAgreement(with: bobsPublicKey)
let shared2 = try bobsPrivateKey.sharedSecretFromKeyAgreement(with: alicesPublicKey)
if shared1 == shared2 {
print("shared keys are equal")
}