]> www.wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - gost_grasshopper_cipher.c
merge upstream
[openssl-gost/engine.git] / gost_grasshopper_cipher.c
index 24e389a6cee3c9cf9174a8ba7d09c56558d7c3f8..b3aa4b9aa9009184dae6b9cc20b30f9ba9b4deba 100644 (file)
@@ -96,7 +96,7 @@ static struct GRASSHOPPER_CIPHER_PARAMS gost_cipher_params[5] = {
                 gost_grasshopper_cipher_do_ctr,
                 gost_grasshopper_cipher_destroy_ctr,
                 1,
-                sizeof(gost_grasshopper_cipher_ctx),
+                sizeof(gost_grasshopper_cipher_ctx_ctr),
                 8,
                 false
         },
@@ -293,18 +293,20 @@ static int gost_grasshopper_cipher_do_ctr(EVP_CIPHER_CTX* ctx, unsigned char* ou
     grasshopper_w128_t* currentInputBlock;
     grasshopper_w128_t* currentOutputBlock;
     size_t lasted;
-               size_t i;
+    size_t i;
 
     memcpy(&c->iv_buffer, iv, 8);
 
     // full parts
-    for (i = 0; i < blocks; i++, current_in += GRASSHOPPER_BLOCK_SIZE, current_out += GRASSHOPPER_BLOCK_SIZE) {
+    for (i = 0; i < blocks; i++) {
         currentInputBlock = (grasshopper_w128_t*) current_in;
         currentOutputBlock = (grasshopper_w128_t*) current_out;
         memcpy(c->iv_buffer.b + 8, &c->counter, 8);
         grasshopper_encrypt_block(&c->c.encrypt_round_keys, &c->iv_buffer, currentOutputBlock, &c->c.buffer);
         grasshopper_append128(currentOutputBlock, currentInputBlock);
         c->counter += 1;
+        current_in += GRASSHOPPER_BLOCK_SIZE;
+        current_out += GRASSHOPPER_BLOCK_SIZE;
     }
 
     // last part