[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openssl-cvs
Subject:    [CVS] OpenSSL: openssl/engines/ccgost/ gost89.c gost_crypt.c gost_keyw...
From:       "Andy Polyakov" <appro () openssl ! org>
Date:       2008-01-05 21:28:53
Message-ID: 20080105212853.E8BDE1EAE82F () master ! openssl ! org
[Download RAW message or body]

  OpenSSL CVS Repository
  http://cvs.openssl.org/
  ____________________________________________________________________________

  Server: cvs.openssl.org                  Name:   Andy Polyakov
  Root:   /v/openssl/cvs                   Email:  appro@openssl.org
  Module: openssl                          Date:   05-Jan-2008 22:28:53
  Branch: HEAD                             Handle: 2008010521285300

  Modified files:
    openssl/engines/ccgost  gost89.c gost_crypt.c gost_keywrap.c gosthash.c
                            gosthash.h

  Log:
    engine/ccgost Win32 portability fixes.

  Summary:
    Revision    Changes     Path
    1.5         +17 -10     openssl/engines/ccgost/gost89.c
    1.12        +8  -2      openssl/engines/ccgost/gost_crypt.c
    1.2         +8  -2      openssl/engines/ccgost/gost_keywrap.c
    1.4         +2  -2      openssl/engines/ccgost/gosthash.c
    1.3         +10 -1      openssl/engines/ccgost/gosthash.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openssl/engines/ccgost/gost89.c
  ============================================================================
  $ cvs diff -u -r1.4 -r1.5 gost89.c
  --- openssl/engines/ccgost/gost89.c	4 Jan 2008 00:37:22 -0000	1.4
  +++ openssl/engines/ccgost/gost89.c	5 Jan 2008 21:28:53 -0000	1.5
  @@ -164,8 +164,10 @@
   	n2 ^= f(c,n1+c->k[3]); n1 ^= f(c,n2+c->k[2]);
   	n2 ^= f(c,n1+c->k[1]); n1 ^= f(c,n2+c->k[0]);
    
  -	out[0] = (n2&0xff);  out[1] = (n2>>8)&0xff; out[2]=(n2>>16)&0xff; out[3]=n2>>24; 
  -	out[4] = (n1&0xff);  out[5] = (n1>>8)&0xff; out[6]=(n1>>16)&0xff; out[7]=n1>>24;
  +	out[0] = (byte)(n2&0xff);  out[1] = (byte)((n2>>8)&0xff);
  +	out[2] = (byte)((n2>>16)&0xff); out[3]=(byte)(n2>>24); 
  +	out[4] = (byte)(n1&0xff);  out[5] = (byte)((n1>>8)&0xff);
  +	out[6] = (byte)((n1>>16)&0xff); out[7] = (byte)(n1>>24);
   	} 
   /* Low-level decryption routine. Decrypts one 64-bit block */
   void gostdecrypt(gost_ctx *c, const byte *in,byte *out)
  @@ -193,8 +195,11 @@
   	n2 ^= f(c,n1+c->k[5]); n1 ^= f(c,n2+c->k[4]);
   	n2 ^= f(c,n1+c->k[3]); n1 ^= f(c,n2+c->k[2]);
   	n2 ^= f(c,n1+c->k[1]); n1 ^= f(c,n2+c->k[0]);
  -	out[0] = (n2&0xff);  out[1] = (n2>>8)&0xff; out[2]=(n2>>16)&0xff; out[3]=n2>>24;
  -	out[4] = (n1&0xff);  out[5] = (n1>>8)&0xff; out[6]=(n1>>16)&0xff; out[7]=n1>>24;
  +
  +	out[0] = (byte)(n2&0xff);  out[1] = (byte)((n2>>8)&0xff);
  +	out[2] = (byte)((n2>>16)&0xff); out[3]=(byte)(n2>>24);
  +	out[4] = (byte)(n1&0xff);  out[5] = (byte)((n1>>8)&0xff);
  +	out[6] = (byte)((n1>>16)&0xff); out[7] = (byte)(n1>>24);
   	} 
   
   /* Encrypts several blocks in ECB mode */
  @@ -280,10 +285,10 @@
   	int i,j; 
   	for(i=0,j=0;i<8;i++,j+=4)
   		{
  -		k[j]=c->k[i]& 0xFF;
  -		k[j+1]=(c->k[i]>>8 )&0xFF;
  -		k[j+2]=(c->k[i]>>16) &0xFF;
  -		k[j+3]=(c->k[i]>>24) &0xFF;
  +		k[j]=(byte)(c->k[i]& 0xFF);
  +		k[j+1]=(byte)((c->k[i]>>8 )&0xFF);
  +		k[j+2]=(byte)((c->k[i]>>16) &0xFF);
  +		k[j+3]=(byte)((c->k[i]>>24) &0xFF);
   		}		
   	}
   
  @@ -332,8 +337,10 @@
   	n2 ^= f(c,n1+c->k[4]); n1 ^= f(c,n2+c->k[5]);
   	n2 ^= f(c,n1+c->k[6]); n1 ^= f(c,n2+c->k[7]);
   
  -	buffer[0] = (n1&0xff);  buffer[1] = (n1>>8)&0xff; buffer[2]=(n1>>16)&0xff; buffer[3]=n1>>24;
  -	buffer[4] = (n2&0xff);  buffer[5] = (n2>>8)&0xff; buffer[6]=(n2>>16)&0xff; buffer[7]=n2>>24;
  +	buffer[0] = (byte)(n1&0xff);  buffer[1] = (byte)((n1>>8)&0xff);
  +	buffer[2] = (byte)((n1>>16)&0xff); buffer[3] = (byte)(n1>>24);
  +	buffer[4] = (byte)(n2&0xff);  buffer[5] = (byte)((n2>>8)&0xff);
  +	buffer[6] = (byte)((n2>>16)&0xff); buffer[7] = (byte)(n2>>24);
   	}
   
   /* Get mac with specified number of bits from MAC state buffer */
  @@ .
  patch -p0 <<'@@ .'
  Index: openssl/engines/ccgost/gost_crypt.c
  ============================================================================
  $ cvs diff -u -r1.11 -r1.12 gost_crypt.c
  --- openssl/engines/ccgost/gost_crypt.c	4 Jan 2008 00:37:22 -0000	1.11
  +++ openssl/engines/ccgost/gost_crypt.c	5 Jan 2008 21:28:53 -0000	1.12
  @@ -233,13 +233,19 @@
   		}	
   	g = buf1[0]|(buf1[1]<<8)|(buf1[2]<<16)|(buf1[3]<<24);
   	g += 0x01010101;
  -	buf1[0]=g&0xff; buf1[1]=(g>>8)&0xff; buf1[2]=(g>>16)&0xff; buf1[3]=(g>>24)&0xff;
  +	buf1[0]=(unsigned char)(g&0xff);
  +	buf1[1]=(unsigned char)((g>>8)&0xff);
  +	buf1[2]=(unsigned char)((g>>16)&0xff);
  +	buf1[3]=(unsigned char)((g>>24)&0xff);
   	g = buf1[4]|(buf1[5]<<8)|(buf1[6]<<16)|(buf1[7]<<24);
   	go = g;
   	g += 0x01010104;
   	if (go > g)      /*  overflow*/
   		g++;
  -	buf1[4]=g&0xff; buf1[5]=(g>>8)&0xff; buf1[6]=(g>>16)&0xff; buf1[7]=(g>>24)&0xff;
  +	buf1[4]=(unsigned char)(g&0xff);
  +	buf1[5]=(unsigned char)((g>>8)&0xff);
  +	buf1[6]=(unsigned char)((g>>16)&0xff);
  +	buf1[7]=(unsigned char)((g>>24)&0xff);
   	memcpy(iv,buf1,8);
   	gostcrypt(&(c->cctx),buf1,buf);
   	c->count +=8;
  @@ .
  patch -p0 <<'@@ .'
  Index: openssl/engines/ccgost/gost_keywrap.c
  ============================================================================
  $ cvs diff -u -r1.1 -r1.2 gost_keywrap.c
  --- openssl/engines/ccgost/gost_keywrap.c	21 Sep 2006 13:04:41 -0000	1.1
  +++ openssl/engines/ccgost/gost_keywrap.c	5 Jan 2008 21:28:53 -0000	1.2
  @@ -44,8 +44,14 @@
   				s2+=k;
   				}
   			}
  -		S[0]=s1&0xff; S[1]=(s1>>8)&0xff; S[2]=(s1>>16)&0xff; S[3]=(s1>>24)&0xff; 
  -		S[4]=s2&0xff; S[5]=(s2>>8)&0xff; S[6]=(s2>>16)&0xff; S[7]=(s2>>24)&0xff; 
  +		S[0]=(unsigned char)(s1&0xff);
  +		S[1]=(unsigned char)((s1>>8)&0xff);
  +		S[2]=(unsigned char)((s1>>16)&0xff);
  +		S[3]=(unsigned char)((s1>>24)&0xff); 
  +		S[4]=(unsigned char)(s2&0xff);
  +		S[5]=(unsigned char)((s2>>8)&0xff);
  +		S[6]=(unsigned char)((s2>>16)&0xff);
  +		S[7]=(unsigned char)((s2>>24)&0xff); 
   		gost_key(ctx,outputKey);
   		gost_enc_cfb(ctx,S,outputKey,outputKey,4);
   		}
  @@ .
  patch -p0 <<'@@ .'
  Index: openssl/engines/ccgost/gosthash.c
  ============================================================================
  $ cvs diff -u -r1.3 -r1.4 gosthash.c
  --- openssl/engines/ccgost/gosthash.c	4 Jan 2008 00:37:23 -0000	1.3
  +++ openssl/engines/ccgost/gosthash.c	5 Jan 2008 21:28:53 -0000	1.4
  @@ -228,7 +228,7 @@
   	byte buf[32];
   	byte H[32];
   	byte S[32];
  -	long long fin_len=ctx->len;
  +	ghosthash_len fin_len=ctx->len;
   	byte *bptr;
   	memcpy(H,ctx->H,32);
   	memcpy(S,ctx->S,32);
  @@ -245,7 +245,7 @@
   	fin_len<<=3; /* Hash length in BITS!!*/
   	while(fin_len>0)
   		{
  -		*(bptr++)=fin_len&0xFF;
  +		*(bptr++)=(byte)(fin_len&0xFF);
   		fin_len>>=8;
   		};
   	hash_step(ctx->cipher_ctx,H,buf);
  @@ .
  patch -p0 <<'@@ .'
  Index: openssl/engines/ccgost/gosthash.h
  ============================================================================
  $ cvs diff -u -r1.2 -r1.3 gosthash.h
  --- openssl/engines/ccgost/gosthash.h	21 Sep 2006 13:04:41 -0000	1.2
  +++ openssl/engines/ccgost/gosthash.h	5 Jan 2008 21:28:53 -0000	1.3
  @@ -10,8 +10,17 @@
   #define GOSTHASH_H
   #include "gost89.h"
   #include <stdlib.h>
  +
  +#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
  +typedef __int64 ghosthash_len;
  +#elif defined(__arch64__)
  +typedef long ghosthash_len;
  +#else
  +typedef long long ghosthash_len;
  +#endif
  +
   typedef struct gost_hash_ctx {
  -		long long len;
  +		ghosthash_len len;
   		gost_ctx *cipher_ctx;
   		int left;
   		byte H[32];
  @@ .
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
CVS Repository Commit List                     openssl-cvs@openssl.org
Automated List Manager                           majordomo@openssl.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic