[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[openssl-gost] Re: [openssl-gost] ГОСТ 94 года
- To: Dmitry Belyavsky <beldmit@gmail.com>
- Subject: [openssl-gost] Re: [openssl-gost] ГОСТ 94 года
- From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
- Date: Sat, 25 May 2019 00:16:26 +0300
- Cc: openssl-gost@lists.wagner.pp.ru
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=COak/fK7kuAB0asBkypC489KoSvhfwJvwJ3jMVKjIPQ=; b=Hxqe5jYivPL41sK0aQtsTVyLclo7D3RWSsrILKu4EAEF/hPYFoYlUfonmk5vloyglo ydxs23CeX5z8wW1b13ZPKsX+npXrvRJem9Lr0YYVcVw8LgUtxk+5/yc9vZALlAEPxzlo MIHimRQwzAhodcSVxI712u1AdpmIS4w6pGdugny5BK5Xn1iSQhFU+1Qvd8Dp/6wH9fJ5 Hf4lR7AMs0NgJW+28hiTU39/heGqmZD9l6UkjTjhAkuKScfqNrzwnn/KdBa/FTiW5V0W MLTWJQ8nIaNNzdvwvsqoL0D+G3z91UaY+EkWizITo4Ro8fj+JCyrWkHLT8QJkUXzPlrx z+yg==
- In-reply-to: <CADqLbzLDpJve-Jb8xn=EQB8xjgs9=QYY-oeugQKj7my3aa+jaQ@mail.gmail.com>
- List-help: <mailto:openssl-gost+help@lists.wagner.pp.ru>
- List-id: <openssl-gost.lists.wagner.pp.ru>
- List-post: <mailto:openssl-gost@lists.wagner.pp.ru>
- List-subscribe: <mailto:openssl-gost+subscribe@lists.wagner.pp.ru>
- List-unsubscribe: <mailto:openssl-gost+unsubscribe@lists.wagner.pp.ru>
- List-url: <https://www.wagner.pp.ru/list-archives/openssl-gost>
- References: <CADqLbzLDpJve-Jb8xn=EQB8xjgs9=QYY-oeugQKj7my3aa+jaQ@mail.gmail.com>
Привет!
пт, 24 мая 2019 г. в 17:51, Dmitry Belyavsky <beldmit@gmail.com>:
>
> Привет!
>
> Мне тут прислали пулл-реквест на исправление старого хеша для файла нулевой длины.
> А на самом деле как должно быть?
>
> https://github.com/gost-engine/engine/pull/143
Интересный вопрос. Если дословно вчитываться в код стандарта, получится,
что для сообщения нулевой длины на этапе 2 (пп. 2.3 и 2.5) должно быть
вычисление шаговой функции от строки, заполненной нулями.
При этом ccgost engine до 2015 года в этом случае не вычислял шаговую
функцию (см далее). А потом кто-то молча поменял это место.
Свои реализации, кстати, я проверял на совместимость со старым engine,
поэтому LibreSSL (которая на нем основывается) и libgcrypt тоже
не производят вычислений. rhash и основывающийся на коде из нее nettle
(и GnuTLS) тоже не делает вычислений. И вишенкой на торте в Wiki тоже
висят значения без этого вычисления.
Вопрос, какой из вариантов совместим с коммерческими реализациями?
commit cba16944bff9d8c5dcf37be641822cd3de6d2ec1
Author: Dmitry Belyavskiy <beldmit@gmail.com>
Date: Fri Aug 14 21:08:23 2015 +0300
Initial commit providing GOST 2012 algorithms.
diff --git a/gosthash.c b/gosthash.c
index 72faa24ed560..ee4a57debbfe 100644
--- a/gosthash.c
+++ b/gosthash.c
@@ -255,6 +255,8 @@ int finish_hash(gost_hash_ctx * ctx, byte * hashval)
fin_len += ctx->left;
}
memset(buf, 0, 32);
+ if (fin_len == 0)
+ hash_step(ctx->cipher_ctx, H, buf);
bptr = buf;
fin_len <<= 3; /* Hash length in BITS!! */
while (fin_len > 0) {
--
With best wishes
Dmitry