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_initIV 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, но так не работает.