engine
engine copied to clipboard
Allow `kuznyechik-ctr-acpkm-omac` PKCS12 integration
OpenSSL PKCS12 module sets all-zeros initial vector on encryption and doesn't change it on decryption.
This patch addresses kuznyechik-ctr-acpkm-omac
behavior differences in two places:
-
in
gost2015_acpkm_omac_init()
IV is initialized with a random value on encryption, thus overwriting user-defined value -
in
gost_grasshopper_cipher_init
IV is initialized with a random value, thus overwriting assumed default all-zeros value
This patch also implements 3 ctrl operations required by PKCS12 module:
- EVP_CTRL_AEAD_GET_TAG
- EVP_CTRL_AEAD_SET_TAG
- EVP_CTRL_AEAD_TLS1_AAD
Signed-off-by: Sergei Ianovich [email protected]
When CMS files are created, IV (and, hence, these parameters) shouldn't be zeroes.
Если прямо обязательно, чтобы была рандомная строка по умолчанию, то можно добавить в структуру контекста поле has_kdf_seed
, а потом в gost_grasshopper_cipher_init_ctracpkm_omac()
его проверять, и при отсутствии в случае зашифрования делать рандомную инициализацию (которая раньше делалась всегда, и которую я тоже убрал).
Просто оставить в инициализации не получается, потому что init()
вызывается после set_attributes()
. И получается, что в ините затирается значение, которое ранее установил пользователь.
Да, это вариант Я не помню, что я тут делал в коммерческой реализации
Просто убрал своё удаление инициализации. Так тоже ключи шифруются и расшифровываются стандартной библиотекой.
Просто оставить в инициализации не получается, потому что
init()
вызывается послеset_attributes()
. И получается, что в ините затирается значение, которое ранее установил пользователь.
тут я оказался не прав
Правильно было бы использовать NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac
, но так не работает.