Неизвестный 116-байтовый формат закрытого ключа ECDSA
Платформа CryptoKit для iOS 13 обеспечивает .rawRepresentation
значение для открытых и закрытых ключей ECDSA. Я пытался реконструировать rawRepresentation
тип данных для преобразования между ним и JWK. Судя по длине представления открытого ключа в 64 байта, это кажется простым x || y
конкатенации. Я предполагаю, что закрытый ключ будет x || y || d
, но это, похоже, не так, поскольку это должно привести к 96-байтовой строке, в то время как фактическая rawRepresentation
144 байта. Это также, похоже, не является допустимой строкой DER/ASN.1. Мне не удалось найти спецификацию, которая соответствует фактическим значениям, которые я получаю.
Как вы могли догадаться, документы Apple очень наглядны.
rawRepresentation
: Представление закрытого ключа в виде коллекции байтов.
Пример пары ключей в шестнадцатеричном виде предоставляется.
Private: 988f8187ff7f00007466815b0d6b02ae1a063198fd1e4923fb1e413195126cc00d30483284186b435726c0c69cc774274ea32eb6a17cbaf2ea88dd7f3a5a2a3ce637bc4b96523c2795035bd2fbeb093b010000000000000000000000000000000000000000000000000000000000000012b2b61abe8beae5aeb6d0bda739235364de96c7f498813cfb0336198dcf9063
Public: 2774c79cc6c02657436b18843248300dc06c129531411efb23491efd9831061a3b09ebfbd25b0395273c52964bbc37e63c2a5a3a7fdd88eaf2ba7ca1b62ea34e
В каком формате это может быть?
1 ответ
Я не смог разобраться rawRepresentation
так что я в конечном итоге использовал x963Representation
, который 0x04 + x + y + d
для закрытого ключа (97 байт) и 04 + x + y
для открытого ключа (65 байт).