Вы ищете функцию SecKeyCopyAttributes
.Эта функция, когда передано SecKey
, вернет CFDictionary
, который содержит ключ v_Data
, который содержит закодированную DER последовательность атрибутов, которые описывают ключ:
PrivateKey ::= SEQUENCE {
version INTEGER,
modulus INTEGER, <- n
publicExponent INTEGER,
privateExponent INTEGER, <- d
prime1 INTEGER,
prime2 INTEGER,
exponent1 INTEGER,
exponent2 INTEGER,
coefficient INTEGER,
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
Нелюбое означает прямолинейное решение, но Apple никогда не была известна своим прямым шифрованием.
Теперь вы могли бы внедрить парсер ASN.1 или попытаться найти и запустить его.Но, если честно, на вашем месте я бы просто создал ярлык и вытащил только те два значения, которые вам нужны.
Вот фиктивная разбивка аналогичной структуры ASN.1, которая представляет собой последовательностьцелые числа:
и его шестнадцатеричное представление ...
Эти изображения получены с этого превосходного декодера ASN.1 здесь. .Для наглядности выделенная часть шестнадцатеричного числа - это целое число секунда вниз.
Вы можете извлечь нужные значения, пропустив заголовок SEQUENCE
и рассчитав длину каждого целого числа.(байт 0x02
буквально означает «INTEGER»).Делая это, вы можете точно определить местоположения в структуре, которые содержат ваш модуль и ваш личный показатель.
Реализация этого я оставлю вам!