2
iOS는 키 생성을위한 API와 ECDH를 사용하는 비밀 키 유도를 노출합니까?Eosiptic Curve Diffie Hellman in ios/swift
사과는 내부적으로 (특히 x25519) 사용하고 있지만 일반 암호 또는 공개 키로 공개 API로 공개되지는 않습니다.
감사합니다,
iOS는 키 생성을위한 API와 ECDH를 사용하는 비밀 키 유도를 노출합니까?Eosiptic Curve Diffie Hellman in ios/swift
사과는 내부적으로 (특히 x25519) 사용하고 있지만 일반 암호 또는 공개 키로 공개 API로 공개되지는 않습니다.
감사합니다,
이 엑스 코드 8.3.3와 함께 놀이터에서 완료
Z는 다음 앨리스의 개인과 밥의 공개를 사용하여 앨리스의 공유 비밀을 계산, 앨리스, 밥에 대한 EC를 사용하여 공개/개인 키를 생성 Bob의 개인 및 Alice의 공개를 사용하여 Bob에 대한 비밀을 공유하고 마침내 그들이 동등 함을 주장합니다.
import Security
import UIKit
let attributes: [String: Any] =
[kSecAttrKeySizeInBits as String: 256,
kSecAttrKeyType as String: kSecAttrKeyTypeEC,
kSecPrivateKeyAttrs as String:
[kSecAttrIsPermanent as String: false]
]
var error: Unmanaged<CFError>?
if #available(iOS 10.0, *) {
// generate a key for alice
guard let privateKey1 = SecKeyCreateRandomKey(attributes as CFDictionary, &error) else {
throw error!.takeRetainedValue() as Error
}
let publicKey1 = SecKeyCopyPublicKey(privateKey1)
// generate a key for bob
guard let privateKey2 = SecKeyCreateRandomKey(attributes as CFDictionary, &error) else {
throw error!.takeRetainedValue() as Error
}
let publicKey2 = SecKeyCopyPublicKey(privateKey2)
let dict: [String: Any] = [:]
// alice is calculating the shared secret
guard let shared1 = SecKeyCopyKeyExchangeResult(privateKey1, SecKeyAlgorithm.ecdhKeyExchangeStandardX963SHA256, publicKey2!, dict as CFDictionary, &error) else {
throw error!.takeRetainedValue() as Error
}
// bob is calculating the shared secret
guard let shared2 = SecKeyCopyKeyExchangeResult(privateKey2, SecKeyAlgorithm.ecdhKeyExchangeStandardX963SHA256, publicKey1!, dict as CFDictionary, &error) else {
throw error!.takeRetainedValue() as Error
}
print(shared1==shared2)
} else {
// Fallback on earlier versions
print("unsupported")
}
감사 @Mats 권리 direction..3 날을 보내는
당신은'SecKeyCopyKeyExchangeResult' 살펴 있었나요? – Mats
@Mats 감사합니다. - 나도 그랬지만 관련성이있는 것 같습니다.하지만 불행히도 문서는 너무 가난하고 어설프므로 사용 방법을 알기 어렵고 내가 원하는 것을 수행 할 수 없습니다. –
'SecKey.h' 헤더 파일에는 온라인 문서에없는 몇 가지 추가 정보가있을 수 있습니다. – Mats