update magma cipher ctr_acpkm mode encrypting #298
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixed bug when acpkm key meshing didn't apply at appropriate time
during TLS secure exchange.
Unify usage of 'num' variable of EVP_CIPHER_CTX for kuznetchik and
magma.
несвоевременно осуществлялась смена ключа в режиме acpkm при шифровании для магмы.
это связанно с тем, что ф-ии которые используются для шифрования данных для магмы и кузнечика (magma_cipher_do_ctr() и gost_grasshopper_cipher_do_ctracpkm() соответветственно) по разному используют переменную "num" контекста шифрования EVP_CIPHER_CTX.
Так магма в переменной "num" хранит остаток длины зашифрованного сообщения по % block_size (8 - для магмы, 16 - для кузнечика). А длина зашифрованного сообщения в магме хранится в локальном контексте в переменной "count".
Кузнечик же хранит в "num" длину всего зашифрованного текста и вычисляет остаток в самой ф-ии в явном виде в выражении вида "(num & GRASSHOPPER_BLOCK_MASK)".
из-за этого различия вызов ф-ии "EVP_CIPHER_CTX_set_num(ctx, 0)" в control-функции (magma_cipher_ctl) для магмы не приводил к обнулению длины зашифрованных данных. и смена ключа происходила не в тот момент (раньше).
кроме того, коммит влючает исправление issue: #299, что также могло сказаться на несвоевременной смене ключа.