aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVoev <voev.kirill@gmail.com>2019-05-13 18:03:58 +0300
committerGitHub <noreply@github.com>2019-05-13 18:03:58 +0300
commit1855e10fa994a31e5da15dd5c5a76549578ca849 (patch)
tree4d0a9d7e8f7c26fd6fbd413481af64032dd1ce65
parentec882cfdb956d06a78aad19bc1089203bd08812d (diff)
downloadgost-engine-1855e10fa994a31e5da15dd5c5a76549578ca849.zip
gost-engine-1855e10fa994a31e5da15dd5c5a76549578ca849.tar.gz
gost-engine-1855e10fa994a31e5da15dd5c5a76549578ca849.tar.bz2
Не учитывается значение carry
-rw-r--r--gost_grasshopper_cipher.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gost_grasshopper_cipher.c b/gost_grasshopper_cipher.c
index 7ae50f5..df58097 100644
--- a/gost_grasshopper_cipher.c
+++ b/gost_grasshopper_cipher.c
@@ -771,7 +771,7 @@ int gost_grasshopper_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg,
unsigned char adjusted_iv[16];
unsigned char seq[8];
- int j;
+ int j, carry;
if (mode != EVP_CIPH_CTR_MODE)
return -1;
@@ -799,10 +799,9 @@ int gost_grasshopper_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg,
(const unsigned char *)seq) > 0) {
memset(adjusted_iv, 0, 16);
memcpy(adjusted_iv, EVP_CIPHER_CTX_original_iv(ctx), 8);
- for(j=7; j>=0; j--)
+ for(j=7,carry=0; j>=0; j--)
{
- int adj_byte, carry = 0;
- adj_byte = adjusted_iv[j]+seq[j]+carry;
+ int adj_byte = adjusted_iv[j]+seq[j]+carry;
carry = (adj_byte > 255) ? 1 : 0;
adjusted_iv[j] = adj_byte & 0xFF;
}