Open-source aspects of GOST Cryptography
 help / color / mirror / Atom feed
* [oss-gost-crypto] Патч для libgcrypt
@ 2019-05-06 11:59 Aleksei Nikiforov
  2019-05-06 13:21 ` Vitaly Chikunov
  2019-05-06 14:22 ` Aleksei Nikiforov
  0 siblings, 2 replies; 3+ messages in thread
From: Aleksei Nikiforov @ 2019-05-06 11:59 UTC (permalink / raw)
  To: oss-gost-crypto

Здравствуйте.

Я узнал о проблеме со stribog в libgcrypt, и посмотрел патчи, в 
частности для openssl и libgcrypt:

https://github.com/gost-engine/engine/commit/835e0d788bfec1f51545b038cef135b02456b27b#diff-e3af9488a17fea1bdc808c139088e6ff

https://lists.gnupg.org/pipermail/gcrypt-devel/2019-May/004700.html

Мне патч для openssl понравился больше, в связи с чем я его переложил на 
libgcrypt. Результат можно посмотреть вот здесь:

http://git.altlinux.org/people/darktemplar/packages/?p=libgcrypt.git;a=commitdiff;h=a161d7e069ce4e6741cc89f74bdbee71cf1519d6

Что скажете по поводу данного патча? Можете посмотреть и проревьюить? 
Или же лучше использовать уже отправленный в libgcrypt патч?

С уважением,
Алексей Никифоров


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [oss-gost-crypto] Патч для  libgcrypt
  2019-05-06 11:59 [oss-gost-crypto] Патч для libgcrypt Aleksei Nikiforov
@ 2019-05-06 13:21 ` Vitaly Chikunov
  2019-05-06 14:22 ` Aleksei Nikiforov
  1 sibling, 0 replies; 3+ messages in thread
From: Vitaly Chikunov @ 2019-05-06 13:21 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

FYI,

On Mon, May 06, 2019 at 02:59:47PM +0300, Aleksei Nikiforov wrote:
> Здравствуйте.
> 
> Я узнал о проблеме со stribog в libgcrypt, и посмотрел патчи, в частности
> для openssl и libgcrypt:
> 
> https://github.com/gost-engine/engine/commit/835e0d788bfec1f51545b038cef135b02456b27b#diff-e3af9488a17fea1bdc808c139088e6ff
> 
> https://lists.gnupg.org/pipermail/gcrypt-devel/2019-May/004700.html
> 
> Мне патч для openssl понравился больше, в связи с чем я его переложил на
> libgcrypt. Результат можно посмотреть вот здесь:
> 
> http://git.altlinux.org/people/darktemplar/packages/?p=libgcrypt.git;a=commitdiff;h=a161d7e069ce4e6741cc89f74bdbee71cf1519d6
> 
> Что скажете по поводу данного патча? Можете посмотреть и проревьюить? Или же
> лучше использовать уже отправленный в libgcrypt патч?

Я протестил все реализации (на u8 представлении int32'ов вместо u64
представления 512-bit integers, для того чтоб можно было прогнать все 
релевантные значения) и они не дали ошибок (кроме одной где ошибка
ожидалась).

Код тестов ниже:

---
#include <stdio.h>
#include <stdlib.h>

void add32_kernel(unsigned char *x, unsigned char *y)
{
    int i;
    unsigned char CF = 0;

    for (i = 0; i < sizeof(int); i++) {
	unsigned char left = x[i];
	unsigned char sum;

	sum = left + y[i] + CF;
	if (sum != left)
	    CF = (sum < left);
	x[i] = sum;
    }
}

void add32_streebog(unsigned char *x, unsigned char *y)
{
    int i;
    unsigned char OF = 0, CF = 0;

    for (i = 0; i < sizeof(int); i++) {
	unsigned char tmp = x[i] + y[i];

	if (tmp < x[i])
	    OF = 1;
	else
	    OF = 0;
	tmp += CF;
	if (CF > 0 && tmp == 0)
	    OF = 1;
	CF = OF;
	x[i] = tmp;
    }
}

void add32_darktemplar(unsigned char *Sigma, unsigned char *M)
{
    int i;
    unsigned char of = 0, cf = 0;

    for (i = 0; i < sizeof(int); i++) {
	if ((unsigned char)(M[i] + Sigma[i]) < M[i])
	    of = 1;
	else
	    of = 0;
	Sigma[i] += M[i] + cf;
	if ((cf > 0) && (Sigma[i] == 0))
	    of = 1;
	cf = of;
    }
}

void add32_libgcrypt(unsigned char *Sigma, unsigned char *M)
{
    int i;

    Sigma[0] += M[0];
    for (i = 1; i < sizeof(int); i++)
	if (Sigma[i-1] < M[i-1])
	    Sigma[i] += M[i] + 1;
	else
	    Sigma[i] += M[i];
}

void add32_libgcrypt_new(unsigned char *Sigma, unsigned char *M)
{
    int i;
    unsigned char cf;

    Sigma[0] += M[0];
    cf = 0;
    for (i = 1; i < sizeof(int); i++)
    {
	if (Sigma[i-1] != M[i-1])
	    cf = (Sigma[i-1] < M[i-1]);
	Sigma[i] += M[i] + cf;
    }
}

int main(int argc, char **argv)
{
    unsigned int i, j;

    for (i = 0; i < 65539; i++) {
	printf("%u\r", i);
	for (j = 0; j < 65539; j++) {
	    unsigned int k = i;

	    add32_libgcrypt_new((unsigned char *)&k, (unsigned char *)&j);

	    if (k != i+j) {
		printf("%u+%u=%u != %u\n", i, j, i+j, k);
		exit(1);
	    }

	}
    }
    return 0;
}


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [oss-gost-crypto] Патч для libgcrypt
  2019-05-06 11:59 [oss-gost-crypto] Патч для libgcrypt Aleksei Nikiforov
  2019-05-06 13:21 ` Vitaly Chikunov
@ 2019-05-06 14:22 ` Aleksei Nikiforov
  1 sibling, 0 replies; 3+ messages in thread
From: Aleksei Nikiforov @ 2019-05-06 14:22 UTC (permalink / raw)
  To: oss-gost-crypto

С учётом текущих замечаний, немного подправил патч:

http://git.altlinux.org/people/darktemplar/packages/?p=libgcrypt.git;a=commitdiff;h=2af145b65f1cf96304096aa5a0cfe1d69f2f39f2

06.05.2019 14:59, Aleksei Nikiforov пишет:
> Здравствуйте.
> 
> Я узнал о проблеме со stribog в libgcrypt, и посмотрел патчи, в 
> частности для openssl и libgcrypt:
> 
> https://github.com/gost-engine/engine/commit/835e0d788bfec1f51545b038cef135b02456b27b#diff-e3af9488a17fea1bdc808c139088e6ff 
> 
> 
> https://lists.gnupg.org/pipermail/gcrypt-devel/2019-May/004700.html
> 
> Мне патч для openssl понравился больше, в связи с чем я его переложил на 
> libgcrypt. Результат можно посмотреть вот здесь:
> 
> http://git.altlinux.org/people/darktemplar/packages/?p=libgcrypt.git;a=commitdiff;h=a161d7e069ce4e6741cc89f74bdbee71cf1519d6 
> 
> 
> Что скажете по поводу данного патча? Можете посмотреть и проревьюить? 
> Или же лучше использовать уже отправленный в libgcrypt патч?
> 
> С уважением,
> Алексей Никифоров


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-05-06 14:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-06 11:59 [oss-gost-crypto] Патч для libgcrypt Aleksei Nikiforov
2019-05-06 13:21 ` Vitaly Chikunov
2019-05-06 14:22 ` Aleksei Nikiforov

Open-source aspects of GOST Cryptography

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/oss-gost-crypto/0 oss-gost-crypto/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 oss-gost-crypto oss-gost-crypto/ http://lore.altlinux.org/oss-gost-crypto \
		oss-gost-crypto@lists.altlinux.org oss-gost-crypto@lists.altlinux.ru oss-gost-crypto@lists.altlinux.com
	public-inbox-index oss-gost-crypto

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.oss-gost-crypto


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git