PEM_read_bio_PrivateKey() возвращает NULL только в режиме ECB

PEM_read_bio_PrivateKey() возвращает NULL, если секретный ключ зашифрован DES EDE в режиме ECB. Проблема происходит в EVP_DecryptFinal_ex():

4128:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:330:

Если тот же секретный ключ зашифрован DES EDE в режиме CBC, эта функция работает нормально.

Я проверил, эта проблема воспроизводится в версиях openssl 0.9.8r/y (без FIPS). Если openssl построен с FIPS, проблема не возникает.

Что вызывает это поведение?

Спасибо!

Ответ 1

Глядя на источники OpenSSL, это может произойти, только если заполнение зашифрованных данных недействительно. Это происходит с разными ключами, и вы можете предоставить образец? И какой инструмент используется для генерации таких ключей (т.е. Тот же OpenSSL или нет)? Вероятно, он пропускает дополнение или записывает нулевое дополнение вместо правильного.