Я могу экспортировать открытый ключ, созданный в iOS, и преобразовать его в base64:
var dataPtr:Unmanaged<AnyObject>?
let query: [String:AnyObject] = [
kSecClass: kSecClassKey,
kSecAttrApplicationTag: "com.example.site.public",
kSecReturnData: kCFBooleanTrue
]
let qResult = SecItemCopyMatching(query, &dataPtr)
// error handling with `qResult` ...
let publicKeyData = dataPtr!.takeRetainedValue() as NSData
// convert to Base64 string
let base64PublicKey = publicKeyData.base64EncodedStringWithOptions(nil)
Я также смог отправить его на мой сервер LAMP. Сейчас я пытаюсь понять, как использовать его в качестве открытого ключа там.
Я старался:
$keydata = base64decode($_GET['base64PublicKey']);
$res = gnupg_init();
$info = gnupg_import($res,$keydata);
print_r($info);
Это правильное направление? Я знаю, что размер данных составляет 270, не совпадает с размером блока ключа. Я немного новичок в PKI, любая помощь будет оценена.
Если ваш ключ публикации соответствует X.509, вы можете выполнить синтаксический анализ PHP следующим образом:
$keydata = base64decode($_GET['base64PublicKey']);
$info = openssl_x509_parse($keydata,true);
print_r($info);
PHP включает в себя библиотеку для OpenSSl и X.509
Других решений пока нет …