Неизвестный 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 байт).

Другие вопросы по тегам