]> wagner.pp.ru Git - openssl-gost/engine.git/commitdiff
No need for special OFB context
authorDmitry Belyavskiy <beldmit@gmail.com>
Sat, 22 Feb 2020 13:43:42 +0000 (16:43 +0300)
committerDmitry Belyavskiy <beldmit@gmail.com>
Sat, 22 Feb 2020 13:43:42 +0000 (16:43 +0300)
gost_grasshopper_cipher.c
gost_grasshopper_cipher.h

index 9df7bbc7b12756d9956cdfb51b7a3351fc56404c..70c9f17a354d4e4150fa2bca29b11135a7eb6d3d 100644 (file)
@@ -29,8 +29,6 @@ static EVP_CIPHER *gost_grasshopper_ciphers[6] = {
     NULL, NULL, NULL, NULL, NULL, NULL,
 };
 
-static GRASSHOPPER_INLINE void
-gost_grasshopper_cipher_destroy_ofb(gost_grasshopper_cipher_ctx * c);
 static GRASSHOPPER_INLINE void
 gost_grasshopper_cipher_destroy_ctr(gost_grasshopper_cipher_ctx * c);
 
@@ -70,9 +68,9 @@ static struct GRASSHOPPER_CIPHER_PARAMS gost_cipher_params[6] = {
                                 NID_grasshopper_ofb,
                                 gost_grasshopper_cipher_init_ofb,
                                 gost_grasshopper_cipher_do_ofb,
-                                gost_grasshopper_cipher_destroy_ofb,
+                                NULL,
                                 1,
-                                sizeof(gost_grasshopper_cipher_ctx_ofb),
+                                sizeof(gost_grasshopper_cipher_ctx),
                                 16,
                                 false}
     ,
@@ -180,15 +178,6 @@ gost_grasshopper_cipher_destroy(gost_grasshopper_cipher_ctx * c)
     grasshopper_zero128(&c->buffer);
 }
 
-static GRASSHOPPER_INLINE void
-gost_grasshopper_cipher_destroy_ofb(gost_grasshopper_cipher_ctx * c)
-{
-    gost_grasshopper_cipher_ctx_ofb *ctx =
-        (gost_grasshopper_cipher_ctx_ofb *) c;
-
-    grasshopper_zero128(&ctx->buffer1);
-}
-
 static GRASSHOPPER_INLINE void
 gost_grasshopper_cipher_destroy_ctr(gost_grasshopper_cipher_ctx * c)
 {
@@ -248,12 +237,8 @@ GRASSHOPPER_INLINE int gost_grasshopper_cipher_init_ofb(EVP_CIPHER_CTX *ctx, con
                                                         *key, const unsigned char
                                                         *iv, int enc)
 {
-    gost_grasshopper_cipher_ctx_ofb *c = EVP_CIPHER_CTX_get_cipher_data(ctx);
-
-    c->c.type = GRASSHOPPER_CIPHER_OFB;
-
-    grasshopper_zero128(&c->buffer1);
-
+    gost_grasshopper_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx);
+    c->type = GRASSHOPPER_CIPHER_OFB;
     return gost_grasshopper_cipher_init(ctx, key, iv, enc);
 }
 
@@ -523,20 +508,21 @@ int gost_grasshopper_cipher_do_ctracpkm(EVP_CIPHER_CTX *ctx,
 /*
  * Fixed 128-bit IV implementation make shift regiser redundant.
  */
-static void gost_grasshopper_cnt_next(gost_grasshopper_cipher_ctx_ofb * ctx,
+static void gost_grasshopper_cnt_next(gost_grasshopper_cipher_ctx * ctx,
                                       grasshopper_w128_t * iv,
                                       grasshopper_w128_t * buf)
 {
-    memcpy(&ctx->buffer1, iv, 16);
-    grasshopper_encrypt_block(&ctx->c.encrypt_round_keys, &ctx->buffer1,
-                              buf, &ctx->c.buffer);
+    grasshopper_w128_t tmp;
+    memcpy(&tmp, iv, 16);
+    grasshopper_encrypt_block(&ctx->encrypt_round_keys, &tmp,
+                              buf, &ctx->buffer);
     memcpy(iv, buf, 16);
 }
 
 int gost_grasshopper_cipher_do_ofb(EVP_CIPHER_CTX *ctx, unsigned char *out,
                                    const unsigned char *in, size_t inl)
 {
-    gost_grasshopper_cipher_ctx_ofb *c = (gost_grasshopper_cipher_ctx_ofb *)
+    gost_grasshopper_cipher_ctx *c = (gost_grasshopper_cipher_ctx *)
         EVP_CIPHER_CTX_get_cipher_data(ctx);
     const unsigned char *in_ptr = in;
     unsigned char *out_ptr = out;
index 31dc0210e1e57f488e798be6ca7a375672366ed6..8d32dfa8528f95208c21c97d0fe9027e805fd60e 100644 (file)
@@ -25,11 +25,6 @@ typedef struct {
     grasshopper_w128_t buffer;
 } gost_grasshopper_cipher_ctx;
 
-typedef struct {
-    gost_grasshopper_cipher_ctx c;
-    grasshopper_w128_t buffer1;
-} gost_grasshopper_cipher_ctx_ofb;
-
 typedef struct {
     gost_grasshopper_cipher_ctx c;
     grasshopper_w128_t partial_buffer;