Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

валидация CRYPT_PARAMS #390

Open
chipitsine opened this issue Feb 8, 2022 · 7 comments
Open

валидация CRYPT_PARAMS #390

chipitsine opened this issue Feb 8, 2022 · 7 comments

Comments

@chipitsine
Copy link
Contributor

баг репорт от @rostislaved

при не очень аккуратной сборке образа докер, в конфиг доехало вот такое

CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet RUN cd /usr/local/src

gost-engine-photo_2022-02-08_12-22-28

в итоге - ожидаемым образом не работало.

мысль - можно ли в случае невалидного конфига делать hard fail ? в идеале с ошибкой "валидация конфига не прошла"

@beldmit
Copy link
Contributor

beldmit commented Feb 8, 2022

Во-первых, не надо пихать в конфиг устаревшие параметры :)
Во-вторых, чтобы проверить, что тут у нас фигня написана, надо явно это проверять. А так - строка и строка.
В-главных, проблема в том, что в openssl нет механизма warning, чтобы, увидев здесь фигню, осуществить fallback к значению по умолчанию и дать warning.

@chipitsine
Copy link
Contributor Author

жила-была девочка.
сама виновата

@chipitsine
Copy link
Contributor Author

мысль примерно такая - эти параметры обрабатываются в openssl или он их делегирует в engine ?
если в engine, можно было бы там и фейлить

@beldmit
Copy link
Contributor

beldmit commented Feb 8, 2022

ну не без того. Вообще это значение параметров шифрования я из рекомендаций выкинул достаточно давно, и добавил ошибку - но не warning. Но народ упорно копирует из старых инструкций - это умолчание было релевантно лет 10 назад.

делегирует в engine, вот это место:

engine/gost_crypt.c

Lines 326 to 341 in 374627a

const char *params = get_gost_engine_param(GOST_PARAM_CRYPT_PARAMS);
if (!params || !strlen(params)) {
int i;
for (i = 0; gost_cipher_list[i].nid != NID_undef; i++)
if (gost_cipher_list[i].nid == NID_id_tc26_gost_28147_param_Z)
return &gost_cipher_list[i];
return &gost_cipher_list[0];
}
nid = OBJ_txt2nid(params);
if (nid == NID_undef) {
GOSTerr(GOST_F_GET_ENCRYPTION_PARAMS,
GOST_R_INVALID_CIPHER_PARAM_OID);
ERR_add_error_data(3, "Unsupported CRYPT_PARAMS='",
params, "' specified in environment or in config");
return NULL;

@chipitsine
Copy link
Contributor Author

https://github.com/gost-engine/engine/blob/master/example.conf - вот отсюда вполне могут копировать.

@chipitsine
Copy link
Contributor Author

а что предполагается должно произойти после ERR_add_error_data на стороне openssl ? выглядит, как будто должно упасть. баг ?

@beldmit
Copy link
Contributor

beldmit commented Feb 8, 2022

По идее неправильное значение должно попасть в лог, и дальше можно прогрепать. Ща уберу значение из example.conf, спасибо!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants