Могу ли я получить модуль или показатель от объекта Seckeyref в Swift?IOS

Программируем под IOS
Ответить
Anonymous
 Могу ли я получить модуль или показатель от объекта Seckeyref в Swift?

Сообщение Anonymous »

В Swift я создал объект SeckeyRef , вызывая SecTrustCopypublicKey на некоторых данных сертификата RAW X509. Это то, как выглядит этот объект SeckeyRef < /code>. < /P>

Код: Выделить всё

Optional()
По сути, этот объект SeckeyRef содержит целую кучу информации о общедоступном ключе, но, похоже, нет никакого способа на самом деле преобразовать этот SeckeyRef в строку, nsdata или что -то еще (это моя цель, просто чтобы получить базовую ключ). /> Тем не менее, у меня есть функция, которую я могу дать модуль и экспонент , и она просто рассчитывает, что такое открытый ключ. Я проверил его, передавая данные, которые зарегистрированы из приведенного выше Seckeyref .

, но каким -то образом я не могу получить доступ к этим свойствам из объекта SeckeyRef (я могу видеть только весь объект в консоли; например, я не могу сделать SeckeyRef.modulus или что -либо из -за этого, это кажется, это не так. />
Мой вопрос: как я могу получить доступ к seckeyref.modulus < /code> или альтернативно, преобразовать это seckeyref < /code> nsdata < /code> или что -то подобное? /> Я создаю свой SeckeyRef < /code> динамически, через эту функцию: < /p>

Код: Выделить всё

func bytesToPublicKey(certData: NSData) -> SecKeyRef? {
guard let certRef = SecCertificateCreateWithData(nil, certData) else { return nil }
var secTrust: SecTrustRef?
let secTrustStatus = SecTrustCreateWithCertificates(certRef, nil, &secTrust)
if secTrustStatus != errSecSuccess { return nil }
var resultType: SecTrustResultType = UInt32(0) // result will be ignored.
let evaluateStatus = SecTrustEvaluate(secTrust!, &resultType)
if evaluateStatus != errSecSuccess { return nil }
let publicKeyRef = SecTrustCopyPublicKey(secTrust!)

return publicKeyRef
}
What that does is takes the raw byte stream from a certificate (which can be broadcasted from, say, a piece of hardware using PKI), and then turns that into a SecKeyRef.

Edit 2

(comments on existing answers as of 7 January 2015) < /p>

Это не работает: < /p>

Код: Выделить всё

let mirror = Mirror(reflecting: mySecKeyObject)

for case let (label?, value) in mirror.children {
print (label, value)
}
< /code>

Это приводит к этому выводу в консоли: < /p>

Some 
Не уверен, что строка «некоторые» означает.

Кроме того, mirror.descendend («exponent») (или «модуль») приводит к тому, что мы не получают , даже если при печати необработанного объекта в консоле, я отчетливо вижу, что эти моменты существуют, и они есть, что они есть, и они есть, что они есть, и они есть, что они есть. />
Кроме того, если это вообще возможно, я хотел бы избежать необходимости сохранять в ключевой матче, читать как nsdata < /code>, а затем удалять из ключичной < /strong>. Как указано в описании щедрости, если это единственный способ, пожалуйста, укажите авторитетную ссылку. Спасибо за все ответы, предоставленные до сих пор.

Подробнее здесь: https://stackoverflow.com/questions/344 ... t-in-swift
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»