Мне нужен способ создать пару асимметричных ключей RSA в Swift. Мне не нужно хранить его в связке ключей или еще где-то. Мне просто нужно сгенерировать пару ключей и засунуть оба ключа в переменные String.
Ключи должны быть совместимы с PHP на другом конце. Я буду использовать симметричное шифрование, чтобы защитить закрытый ключ и сохранить его на телефоне. Я отправлю открытый ключ веб-службе, реализованной на PHP, и веб-служба сохранит открытый ключ в базе данных.
Этот открытый ключ позже будет использоваться веб-службой для шифрования таких значений, как одноразовые пароли и другие конфиденциальные значения, предназначенные для приложения IOS. Я реализую аналогичную схему для небольших фрагментов данных, поступающих из приложения IOS в веб-службу.
Единственное задокументированное объявление API, которое я смог найти для создания пары ключей в Swift, показано на сайте developer.apple.com:
func SecKeyGeneratePairAsync(_ parameters: CFDictionary!,
_ deliveryQueue: dispatch_queue_t!,
_ result: SecKeyGeneratePairBlock!)
Я пытался понять, как это использовать, но XCode не любит символы подчеркивания, и я не уверен, что я на самом деле должен делать с этим или как его использовать.
Даже если XCode примет это, я не уверен, как я буду вызывать функцию и какие значения ей передавать и т. д. Я включил «безопасность импорта» вверху, так что это не проблема.
Смешно, что это должно быть так сложно. Все, что я хочу сделать, это сгенерировать пару асимметричных ключей.
Это легко сделать на PHP, .NET, Java или любом другом языке, но я не могу найти четкую документацию по этому поводу для Swift. Я должен использовать Swift для этого приложения. Я не хочу использовать OpenSSL, потому что он устарел.
Я использую Swift, потому что чертовски ненавижу объективный C. Swift — причина, по которой я наконец-то перешел к разработке IOS.
Я не знаю, как интегрировать класс Objective C со Swift, и я бы предпочел чистое решение Swift, если оно есть. Если нет, я был бы признателен за некоторые советы о том, как интегрировать решение Objective C и заставить его работать.
Приведенный выше фрагмент — единственный вызов функции, предоставляемый Apple, и, естественно, он неполный, не имеет смысла и не работает.