#c #ecdsa
Вопрос:
Я борюсь с OpenSSL ECDSA. Проблема заключается в следующем. У меня есть этот формат в виде пакета (который генерируется моим серверным приложением при получении некоторых входных данных, но это не важно).:
Теперь подпись выполняется TOTAL LENGTH
(8 байт для поля длины переменный размер для зашифрованного материала 512 для подписи) и ENCRYPTED STUFF
. Для этого с помощью подписи RSA я использовал EVP_PKEY_size()
API, чтобы заранее получить размер подписи (не то чтобы было строго необходимо знать модуль ключей RSA, но дело в том, что у меня были средства, чтобы это знать). К сожалению, при переходе на ECDSA размер подписи больше не является детерминированным, и поэтому я не могу записать его в поле длина перед подписанием сообщения. Чтобы избежать неопределенностей, я указываю, что процесс подписи учитывает длину 8 байт и зашифрованные данные. EVP_PKEY_size()
Это время возвращает максимальное количество байтов, необходимых для подписи. Поэтому мой вопрос таков: можно ли заранее узнать точный размер подписи, не вычисляя его (вероятно, не как не являющийся детерминированным), или, в качестве альтернативы, установить своего рода дополнение к подписи, чтобы компенсировать байты до возвращаемого значения EVP_PKEY_size()
? Рабочим решением было бы, конечно, исключить поле длины с помощью подписи, но я стараюсь этого не делать..
Комментарии:
1. Как была создана пара клавиш? У вас есть доступ к
EC_KEY
объекту?2. С помощью командной строки, и да, если бы я захотел, у меня был бы доступ к ним