Теперь у меня уже есть пара ключей.
Я хочу импортировать эту пару ключей в свой Swift и использовать эту пару ключей для шифрования
Что-то или расшифровать что-то, что я получил от restclint
Я вижу, что во многих документах говорится, как создать общую пару ключей, но она у меня уже есть.
И что означает kSecAttrApplicationTag?
Пожалуйста, помогите мне
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)
2 ответа
Взгляните на Swift-RSAUtils, он предоставляет то, что вам нужно. Я не могу отблагодарить Тхань Ба Нгуена за его фантастическую новаторскую работу в этой области. Apple, позор тебе за то, что ты делаешь жизнь разработчиков такой несчастной!
В основном, история такова: вы должны загрузить ключи в их формате DER или PEM (и декодировать base64 в случае PEM), затем вырезать из него некоторые части, затем импортировать ключи в связку ключей системы. Как только это будет сделано, вы можете достать их из брелка и использовать. К сожалению, Apple не задокументировала это, особенно для Swift. Единственная справочная документация, которую я смог найти, это Certificate, Key и Справочник по службам доверия, и убедитесь, что вы нажимаете «оба», а не только «Swift», иначе вы не увидите многого. Или забудьте об этом и используйте Swift-RSAUtils, код в значительной степени говорит сам за себя.
Самое простое объяснение: когда вы храните что-то в цепочке для ключей, у него есть уникальный ключ (для идентификации цели). kSecAttrApplicationTag: «com.example.site.public» означает «эй, уникальный ключ, который я использую, — «com.example.site.public»».
Ура ,
Похожие вопросы
Новые вопросы
swift
Swift — это язык программирования общего назначения, разработанный Apple Inc., впервые выпущенный в 2014 году для своих платформ и Linux. Swift имеет открытый исходный код. Используйте тег только для вопросов о языковых функциях или необходимости кода в Swift. Используйте теги [ios], [ipados], [macos], [watch-os], [tvos], [swiftui], [cocoa-touch] и [cocoa] для (не зависящих от языка) вопросов о платформах или рамки.