Возможно ли заранее узнать размер подписи EC или, в качестве альтернативы, установить размер подписи EC в OperSSL?

#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. С помощью командной строки, и да, если бы я захотел, у меня был бы доступ к ним