Hello community, here is the log from the commit of package libgcrypt for openSUSE:Factory checked in at 2013-04-19 09:56:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libgcrypt (Old) and /work/SRC/openSUSE:Factory/.libgcrypt.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libgcrypt", Maintainer is "mvysko...@suse.com" Changes: -------- --- /work/SRC/openSUSE:Factory/libgcrypt/libgcrypt.changes 2013-03-25 20:32:08.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libgcrypt.new/libgcrypt.changes 2013-04-19 09:56:44.000000000 +0200 @@ -1,0 +2,12 @@ +Thu Apr 18 18:23:36 UTC 2013 - andreas.stie...@gmx.de + +- update to 1.5.2 + * The upstream sources now contain the IDEA algorithm, dropping: + idea.c.gz + libgcrypt-1.5.0-idea.patch + libgcrypt-1.5.0-idea_codecleanup.patch + * Made the Padlock code work again (regression since 1.5.0). + * Fixed alignment problems for Serpent. + * Fixed two bugs in ECC computations. + +------------------------------------------------------------------- Old: ---- idea.c.gz libgcrypt-1.5.0-idea.patch libgcrypt-1.5.0-idea_codecleanup.patch libgcrypt-1.5.1.tar.bz2 libgcrypt-1.5.1.tar.bz2.sig New: ---- libgcrypt-1.5.2.tar.bz2 libgcrypt-1.5.2.tar.bz2.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libgcrypt.spec ++++++ --- /var/tmp/diff_new_pack.YQj4St/_old 2013-04-19 09:56:47.000000000 +0200 +++ /var/tmp/diff_new_pack.YQj4St/_new 2013-04-19 09:56:47.000000000 +0200 @@ -19,7 +19,7 @@ Name: libgcrypt %define libsoname %{name}11 Url: http://directory.fsf.org/wiki/Libgcrypt -Version: 1.5.1 +Version: 1.5.2 Release: 0 Summary: The GNU Crypto Library License: GPL-2.0+ and LGPL-2.1+ and GPL-3.0+ @@ -27,15 +27,12 @@ Source: ftp://ftp.gnupg.org/gcrypt/libgcrypt/%{name}-%{version}.tar.bz2 Source1: ftp://ftp.gnupg.org/gcrypt/libgcrypt/%{name}-%{version}.tar.bz2.sig Source2: baselibs.conf -Source3: idea.c.gz # http://www.gnupg.org/signature_key.en.html Source4: %{name}.keyring Patch0: %{name}-ppc64.patch Patch1: %{name}-strict-aliasing.patch Patch3: %{name}-1.4.1-rijndael_no_strict_aliasing.patch Patch4: %{name}-sparcv9.diff -Patch5: %{name}-1.5.0-idea.patch -Patch6: %{name}-1.5.0-idea_codecleanup.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: automake >= 1.11 BuildRequires: libgpg-error-devel >= 1.8 @@ -93,13 +90,10 @@ %prep %{?gpg_verify: %gpg_verify %{S:1}} %setup -q -n %{name}-%{version} -gzip -dc < %{S:3} > cipher/idea.c %patch0 -p1 %patch1 %patch3 -p1 %patch4 -p1 -%patch5 -p1 -%patch6 -p1 %build # define ciphers to build ++++++ libgcrypt-1.5.1.tar.bz2 -> libgcrypt-1.5.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/AUTHORS new/libgcrypt-1.5.2/AUTHORS --- old/libgcrypt-1.5.1/AUTHORS 2013-03-18 16:00:35.000000000 +0100 +++ new/libgcrypt-1.5.2/AUTHORS 2013-04-18 16:48:42.000000000 +0200 @@ -98,6 +98,11 @@ open...@brainhub.org (cipher/ecc.c and related files) +LIBGCRYPT Vladimir Serbinenko 2012-04-26 +Assigns Past and Future Changes +phco...@gmail.com +(cipher/serpent.c) + Authors with a DCO ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/ChangeLog new/libgcrypt-1.5.2/ChangeLog --- old/libgcrypt-1.5.1/ChangeLog 2013-03-18 16:32:24.000000000 +0100 +++ new/libgcrypt-1.5.2/ChangeLog 2013-04-18 17:07:43.000000000 +0200 @@ -1,5 +1,96 @@ +2013-04-18 Werner Koch <w...@gnupg.org> + + Release 1.5.2. + + Update LT version for the next release. + * configure.ac: Set LT version to C19/A8/R1. + + mpi: Yet another fix to get option flag munging right. + * cipher/Makefile.am (o_flag_munging): Yet another fix. + + cipher: Fix regression in Padlock support. + * cipher/rijndael.c (do_setkey): Remove dummy padlock key generation case + and use the standard one. + + Fix alignment problem in idea.c. + * cipher/idea.c (cipher): Rework parameter use to fix alignment + problems. + + * cipher/idea.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Remove unused macros. + +2013-04-18 Vladimir Serbinenko <phco...@gmail.com> + + Add some const attributes. + * cipher/md4.c (transform): Add const attribute. + * cipher/md5.c (transform): Ditto. + * cipher/rmd160.c (transform): Ditto. + + Fix alignment problem in serpent.c. + * cipher/serpent.c (serpent_key_prepare): Fix misaligned access. + (serpent_setkey): Likewise. + (serpent_encrypt_internal): Likewise. + (serpent_decrypt_internal): Likewise. + (serpent_encrypt): Don't put an alignment-increasing cast. + (serpent_decrypt): Likewise. + (serpent_test): Likewise. + +2013-04-18 Werner Koch <w...@wheatstone.g10code.de> + + Fix multiply by zero in gcry_mpi_ec_mul. + * mpi/ec.c (_gcry_mpi_ec_mul_point): Handle case of SCALAR == 0. + +2013-04-15 Werner Koch <w...@gnupg.org> + + Fix addition of EC points. + * mpi/ec.c (_gcry_mpi_ec_add_points): Fix case of P1 given in affine + coordinates. + +2013-03-20 Ulrich Müller <u...@gentoo.org> + + Rework selftest in idea.c. + * cipher/idea.c (do_setkey): Execute selftest when first called. + (decrypt_block): Remove commented-out code. + (selftest): Execute all selftests. Return NULL on success, or + string in case of error. + + Add support for the IDEA cipher. + Adapt idea.c to the Libgcrypt framework. + Add IDEA to cipher_table and to the build system. + + Patents on IDEA have expired: + Europe: EP0482154 on 2011-05-16, + Japan: JP3225440 on 2011-05-16, + U.S.: 5,214,703 on 2012-01-07. + + * configure.ac: Add idea to the list of available ciphers. + Define USE_IDEA if idea is enabled. + * cipher/cipher.c (cipher_table): Add entry for IDEA. + * cipher/idea.c: Update comment about patents. + Include proper header files and remove redundant declarations. + (expand_key, cipher, do_setkey, encrypt_block, decrypt_block): + Define function arguments as const where appropriate. + (cipher): Test for !WORDS_BIGENDIAN instead of LITTLE_ENDIAN_HOST. + (do_setkey, decrypt_block): Don't call selftest. + (idea_setkey): New function, wrapper for do_setkey. + (idea_encrypt): New function, wrapper for encrypt_block. + (_gcry_cipher_spec_idea): Define. + * cipher/Makefile.am (EXTRA_libcipher_la_SOURCES): Add idea.c. + * src/cipher.h (_gcry_cipher_spec_idea): Declare. + * tests/basic.c (check_ciphers): Add GCRY_CIPHER_IDEA. + +2013-03-20 Werner Koch <w...@gnupg.org> + + Include an IDEA implementation. + The code is the old IDEA test code, written by me back in 1997 and + distributed on a Danish FTP server. This commit is only for + reference. To use the code it has to be adjusted to the Libgcrypt + framework. + 2013-03-18 Werner Koch <w...@gnupg.org> + Get rid of the deprecated AM_CONFIG_HEADER. + * configure.ac: Use AC_CONFIG_HEADERS. + Release 1.5.1. Allow building with w64-mingw32. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/NEWS new/libgcrypt-1.5.2/NEWS --- old/libgcrypt-1.5.1/NEWS 2013-03-18 15:50:45.000000000 +0100 +++ new/libgcrypt-1.5.2/NEWS 2013-04-18 16:59:48.000000000 +0200 @@ -1,3 +1,15 @@ +Noteworthy changes in version 1.5.2 (2013-04-18) +------------------------------------------------ + + * Added support for IDEA. + + * Made the Padlock code work again (regression since 1.5.0). + + * Fixed alignment problems for Serpent. + + * Fixed two bugs in ECC computations. + + Noteworthy changes in version 1.5.1 (2013-03-18) ------------------------------------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/THANKS new/libgcrypt-1.5.2/THANKS --- old/libgcrypt-1.5.1/THANKS 2012-11-29 15:22:35.000000000 +0100 +++ new/libgcrypt-1.5.2/THANKS 2013-04-18 16:11:48.000000000 +0200 @@ -130,6 +130,7 @@ Stephane Corthesy steph...@sente.ch Stefan Karrmann s.karrm...@gmx.net Stefan Keller d...@cs.tu-berlin.de +Stefan Krüger stadtkind2 at gmx de Steffen Ullrich ccrl...@xensei.com Steffen Zahn z...@berlin.snafu.de Steven Bakker ste...@icoe.att.com diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/VERSION new/libgcrypt-1.5.2/VERSION --- old/libgcrypt-1.5.1/VERSION 2013-03-18 16:32:24.000000000 +0100 +++ new/libgcrypt-1.5.2/VERSION 2013-04-18 17:07:43.000000000 +0200 @@ -1 +1 @@ -1.5.1 +1.5.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/aclocal.m4 new/libgcrypt-1.5.2/aclocal.m4 --- old/libgcrypt-1.5.1/aclocal.m4 2013-03-18 16:11:42.000000000 +0100 +++ new/libgcrypt-1.5.2/aclocal.m4 2013-04-18 17:06:01.000000000 +0200 @@ -438,18 +438,6 @@ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/Makefile.am new/libgcrypt-1.5.2/cipher/Makefile.am --- old/libgcrypt-1.5.1/cipher/Makefile.am 2013-03-18 08:57:04.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/Makefile.am 2013-04-18 16:49:13.000000000 +0200 @@ -51,6 +51,7 @@ dsa.c \ elgamal.c \ ecc.c \ +idea.c \ md4.c \ md5.c \ rijndael.c rijndael-tables.h \ @@ -68,7 +69,7 @@ camellia.c camellia.h camellia-glue.c if ENABLE_O_FLAG_MUNGING -o_flag_munging = sed -e 's/-O([2-9s]|fast)*/-O1/g' +o_flag_munging = sed -e 's/-O\([2-9s][2-9s]*\)/-O1/' -e 's/-Ofast/-O1/g' else o_flag_munging = cat endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/Makefile.in new/libgcrypt-1.5.2/cipher/Makefile.in --- old/libgcrypt-1.5.1/cipher/Makefile.in 2013-03-18 16:31:45.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/Makefile.in 2013-04-18 17:06:03.000000000 +0200 @@ -296,6 +296,7 @@ dsa.c \ elgamal.c \ ecc.c \ +idea.c \ md4.c \ md5.c \ rijndael.c rijndael-tables.h \ @@ -313,7 +314,7 @@ camellia.c camellia.h camellia-glue.c @ENABLE_O_FLAG_MUNGING_FALSE@o_flag_munging = cat -@ENABLE_O_FLAG_MUNGING_TRUE@o_flag_munging = sed -e 's/-O([2-9s]|fast)*/-O1/g' +@ENABLE_O_FLAG_MUNGING_TRUE@o_flag_munging = sed -e 's/-O\([2-9s][2-9s]*\)/-O1/' -e 's/-Ofast/-O1/g' all: all-am .SUFFIXES: @@ -380,6 +381,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elgamal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hmac-tests.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idea.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kdf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md4.Plo@am__quote@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/cipher.c new/libgcrypt-1.5.2/cipher/cipher.c --- old/libgcrypt-1.5.1/cipher/cipher.c 2013-03-18 08:45:00.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/cipher.c 2013-04-18 16:48:42.000000000 +0200 @@ -112,6 +112,10 @@ { &_gcry_cipher_spec_camellia256, &dummy_extra_spec, GCRY_CIPHER_CAMELLIA256 }, #endif +#ifdef USE_IDEA + { &_gcry_cipher_spec_idea, + &dummy_extra_spec, GCRY_CIPHER_IDEA }, +#endif { NULL } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/idea.c new/libgcrypt-1.5.2/cipher/idea.c --- old/libgcrypt-1.5.1/cipher/idea.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/idea.c 2013-04-18 15:29:57.000000000 +0200 @@ -0,0 +1,378 @@ +/* idea.c - IDEA function + * Copyright 1997, 1998, 1999, 2001 Werner Koch (dd9jn) + * Copyright 2013 g10 Code GmbH + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * WERNER KOCH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Werner Koch shall not be + * used in advertising or otherwise to promote the sale, use or other dealings + * in this Software without prior written authorization from Werner Koch. + * + * Patents on IDEA have expired: + * Europe: EP0482154 on 2011-05-16, + * Japan: JP3225440 on 2011-05-16, + * U.S.: 5,214,703 on 2012-01-07. + */ + +/* + * Please see http://www.noepatents.org/ to learn why software patents + * are bad for society and what you can do to fight them. + * + * The code herein is based on the one from: + * Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996. + * ISBN 0-471-11709-9. + */ + + +#include <config.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> + +#include "types.h" /* for byte and u32 typedefs */ +#include "g10lib.h" +#include "cipher.h" + + +#define IDEA_KEYSIZE 16 +#define IDEA_BLOCKSIZE 8 +#define IDEA_ROUNDS 8 +#define IDEA_KEYLEN (6*IDEA_ROUNDS+4) + +typedef struct { + u16 ek[IDEA_KEYLEN]; + u16 dk[IDEA_KEYLEN]; + int have_dk; +} IDEA_context; + +static const char *selftest(void); + + +static u16 +mul_inv( u16 x ) +{ + u16 t0, t1; + u16 q, y; + + if( x < 2 ) + return x; + t1 = 0x10001L / x; + y = 0x10001L % x; + if( y == 1 ) + return (1-t1) & 0xffff; + + t0 = 1; + do { + q = x / y; + x = x % y; + t0 += q * t1; + if( x == 1 ) + return t0; + q = y / x; + y = y % x; + t1 += q * t0; + } while( y != 1 ); + return (1-t1) & 0xffff; +} + + + +static void +expand_key( const byte *userkey, u16 *ek ) +{ + int i,j; + + for(j=0; j < 8; j++ ) { + ek[j] = (*userkey << 8) + userkey[1]; + userkey += 2; + } + for(i=0; j < IDEA_KEYLEN; j++ ) { + i++; + ek[i+7] = ek[i&7] << 9 | ek[(i+1)&7] >> 7; + ek += i & 8; + i &= 7; + } +} + + +static void +invert_key( u16 *ek, u16 dk[IDEA_KEYLEN] ) +{ + int i; + u16 t1, t2, t3; + u16 temp[IDEA_KEYLEN]; + u16 *p = temp + IDEA_KEYLEN; + + t1 = mul_inv( *ek++ ); + t2 = -*ek++; + t3 = -*ek++; + *--p = mul_inv( *ek++ ); + *--p = t3; + *--p = t2; + *--p = t1; + + for(i=0; i < IDEA_ROUNDS-1; i++ ) { + t1 = *ek++; + *--p = *ek++; + *--p = t1; + + t1 = mul_inv( *ek++ ); + t2 = -*ek++; + t3 = -*ek++; + *--p = mul_inv( *ek++ ); + *--p = t2; + *--p = t3; + *--p = t1; + } + t1 = *ek++; + *--p = *ek++; + *--p = t1; + + t1 = mul_inv( *ek++ ); + t2 = -*ek++; + t3 = -*ek++; + *--p = mul_inv( *ek++ ); + *--p = t3; + *--p = t2; + *--p = t1; + memcpy(dk, temp, sizeof(temp) ); + memset(temp, 0, sizeof(temp) ); /* burn temp */ +} + + +static void +cipher( byte *outbuf, const byte *inbuf, u16 *key ) +{ + u16 s2, s3; + u16 in[4]; + int r = IDEA_ROUNDS; +#define x1 (in[0]) +#define x2 (in[1]) +#define x3 (in[2]) +#define x4 (in[3]) +#define MUL(x,y) \ + do {u16 _t16; u32 _t32; \ + if( (_t16 = (y)) ) { \ + if( (x = (x)&0xffff) ) { \ + _t32 = (u32)x * _t16; \ + x = _t32 & 0xffff; \ + _t16 = _t32 >> 16; \ + x = ((x)-_t16) + (x<_t16?1:0); \ + } \ + else { \ + x = 1 - _t16; \ + } \ + } \ + else { \ + x = 1 - x; \ + } \ + } while(0) + + memcpy (in, inbuf, sizeof in); +#ifndef WORDS_BIGENDIAN + x1 = (x1>>8) | (x1<<8); + x2 = (x2>>8) | (x2<<8); + x3 = (x3>>8) | (x3<<8); + x4 = (x4>>8) | (x4<<8); +#endif + do { + MUL(x1, *key++); + x2 += *key++; + x3 += *key++; + MUL(x4, *key++ ); + + s3 = x3; + x3 ^= x1; + MUL(x3, *key++); + s2 = x2; + x2 ^=x4; + x2 += x3; + MUL(x2, *key++); + x3 += x2; + + x1 ^= x2; + x4 ^= x3; + + x2 ^= s3; + x3 ^= s2; + } while( --r ); + MUL(x1, *key++); + x3 += *key++; + x2 += *key++; + MUL(x4, *key); + +#ifndef WORDS_BIGENDIAN + x1 = (x1>>8) | (x1<<8); + x2 = (x2>>8) | (x2<<8); + x3 = (x3>>8) | (x3<<8); + x4 = (x4>>8) | (x4<<8); +#endif + memcpy (outbuf+0, &x1, 2); + memcpy (outbuf+2, &x3, 2); + memcpy (outbuf+4, &x2, 2); + memcpy (outbuf+6, &x4, 2); +#undef MUL +#undef x1 +#undef x2 +#undef x3 +#undef x4 +} + + +static int +do_setkey( IDEA_context *c, const byte *key, unsigned int keylen ) +{ + static int initialized = 0; + static const char *selftest_failed = 0; + + if( !initialized ) { + initialized = 1; + selftest_failed = selftest(); + if( selftest_failed ) + log_error( "%s\n", selftest_failed ); + } + if( selftest_failed ) + return GPG_ERR_SELFTEST_FAILED; + + assert(keylen == 16); + c->have_dk = 0; + expand_key( key, c->ek ); + invert_key( c->ek, c->dk ); + return 0; +} + +static gcry_err_code_t +idea_setkey (void *context, const byte *key, unsigned int keylen) +{ + IDEA_context *ctx = context; + int rc = do_setkey (ctx, key, keylen); + _gcry_burn_stack (23+6*sizeof(void*)); + return rc; +} + +static void +encrypt_block( IDEA_context *c, byte *outbuf, const byte *inbuf ) +{ + cipher( outbuf, inbuf, c->ek ); +} + +static void +idea_encrypt (void *context, byte *out, const byte *in) +{ + IDEA_context *ctx = context; + encrypt_block (ctx, out, in); + _gcry_burn_stack (24+3*sizeof (void*)); +} + +static void +decrypt_block( IDEA_context *c, byte *outbuf, const byte *inbuf ) +{ + if( !c->have_dk ) { + c->have_dk = 1; + invert_key( c->ek, c->dk ); + } + cipher( outbuf, inbuf, c->dk ); +} + +static void +idea_decrypt (void *context, byte *out, const byte *in) +{ + IDEA_context *ctx = context; + decrypt_block (ctx, out, in); + _gcry_burn_stack (24+3*sizeof (void*)); +} + + +static const char * +selftest( void ) +{ +static struct { + byte key[16]; + byte plain[8]; + byte cipher[8]; +} test_vectors[] = { + { { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }, + { 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03 }, + { 0x11, 0xFB, 0xED, 0x2B, 0x01, 0x98, 0x6D, 0xE5 } }, + { { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }, + { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }, + { 0x54, 0x0E, 0x5F, 0xEA, 0x18, 0xC2, 0xF8, 0xB1 } }, + { { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }, + { 0x00, 0x19, 0x32, 0x4B, 0x64, 0x7D, 0x96, 0xAF }, + { 0x9F, 0x0A, 0x0A, 0xB6, 0xE1, 0x0C, 0xED, 0x78 } }, + { { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }, + { 0xF5, 0x20, 0x2D, 0x5B, 0x9C, 0x67, 0x1B, 0x08 }, + { 0xCF, 0x18, 0xFD, 0x73, 0x55, 0xE2, 0xC5, 0xC5 } }, + { { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }, + { 0xFA, 0xE6, 0xD2, 0xBE, 0xAA, 0x96, 0x82, 0x6E }, + { 0x85, 0xDF, 0x52, 0x00, 0x56, 0x08, 0x19, 0x3D } }, + { { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }, + { 0x0A, 0x14, 0x1E, 0x28, 0x32, 0x3C, 0x46, 0x50 }, + { 0x2F, 0x7D, 0xE7, 0x50, 0x21, 0x2F, 0xB7, 0x34 } }, + { { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }, + { 0x05, 0x0A, 0x0F, 0x14, 0x19, 0x1E, 0x23, 0x28 }, + { 0x7B, 0x73, 0x14, 0x92, 0x5D, 0xE5, 0x9C, 0x09 } }, + { { 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x14, + 0x00, 0x19, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x28 }, + { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }, + { 0x3E, 0xC0, 0x47, 0x80, 0xBE, 0xFF, 0x6E, 0x20 } }, + { { 0x3A, 0x98, 0x4E, 0x20, 0x00, 0x19, 0x5D, 0xB3, + 0x2E, 0xE5, 0x01, 0xC8, 0xC4, 0x7C, 0xEA, 0x60 }, + { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }, + { 0x97, 0xBC, 0xD8, 0x20, 0x07, 0x80, 0xDA, 0x86 } }, + { { 0x00, 0x64, 0x00, 0xC8, 0x01, 0x2C, 0x01, 0x90, + 0x01, 0xF4, 0x02, 0x58, 0x02, 0xBC, 0x03, 0x20 }, + { 0x05, 0x32, 0x0A, 0x64, 0x14, 0xC8, 0x19, 0xFA }, + { 0x65, 0xBE, 0x87, 0xE7, 0xA2, 0x53, 0x8A, 0xED } }, + { { 0x9D, 0x40, 0x75, 0xC1, 0x03, 0xBC, 0x32, 0x2A, + 0xFB, 0x03, 0xE7, 0xBE, 0x6A, 0xB3, 0x00, 0x06 }, + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, + { 0xF5, 0xDB, 0x1A, 0xC4, 0x5E, 0x5E, 0xF9, 0xF9 } } +}; + IDEA_context c; + byte buffer[8]; + int i; + + for(i=0; i < DIM(test_vectors); i++ ) { + do_setkey( &c, test_vectors[i].key, 16 ); + encrypt_block( &c, buffer, test_vectors[i].plain ); + if( memcmp( buffer, test_vectors[i].cipher, 8 ) ) + return "IDEA test encryption failed."; + decrypt_block( &c, buffer, test_vectors[i].cipher ); + if( memcmp( buffer, test_vectors[i].plain, 8 ) ) + return "IDEA test decryption failed."; + } + + return NULL; +} + + +gcry_cipher_spec_t _gcry_cipher_spec_idea = +{ + "IDEA", NULL, NULL, IDEA_BLOCKSIZE, 128, + sizeof (IDEA_context), + idea_setkey, idea_encrypt, idea_decrypt +}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/md4.c new/libgcrypt-1.5.2/cipher/md4.c --- old/libgcrypt-1.5.1/cipher/md4.c 2012-11-29 15:22:35.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/md4.c 2013-04-18 15:29:57.000000000 +0200 @@ -100,7 +100,8 @@ #ifdef WORDS_BIGENDIAN { int i; - byte *p2, *p1; + byte *p2; + const byte *p1; for(i=0, p1=data, p2=(byte*)in; i < 16; i++, p2 += 4 ) { p2[3] = *p1++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/md5.c new/libgcrypt-1.5.2/cipher/md5.c --- old/libgcrypt-1.5.1/cipher/md5.c 2012-11-29 15:22:35.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/md5.c 2013-04-18 15:29:57.000000000 +0200 @@ -91,7 +91,8 @@ #ifdef WORDS_BIGENDIAN { int i; - byte *p2, *p1; + byte *p2; + const byte *p1; for(i=0, p1=data, p2=(byte*)correct_words; i < 16; i++, p2 += 4 ) { p2[3] = *p1++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/rijndael.c new/libgcrypt-1.5.2/cipher/rijndael.c --- old/libgcrypt-1.5.1/cipher/rijndael.c 2013-03-18 08:45:00.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/rijndael.c 2013-04-18 16:48:42.000000000 +0200 @@ -279,15 +279,10 @@ ctx->rounds = rounds; + /* NB: We don't yet support Padlock hardware key generation. */ + if (0) ; -#ifdef USE_PADLOCK - else if (ctx->use_padlock) - { - /* Nothing to do as we support only hardware key generation for - now. */ - } -#endif /*USE_PADLOCK*/ #ifdef USE_AESNI_is_disabled_here else if (ctx->use_aesni && ctx->rounds == 10) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/rmd160.c new/libgcrypt-1.5.2/cipher/rmd160.c --- old/libgcrypt-1.5.1/cipher/rmd160.c 2012-11-29 15:22:35.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/rmd160.c 2013-04-18 15:29:57.000000000 +0200 @@ -168,7 +168,8 @@ u32 x[16]; { int i; - byte *p2, *p1; + byte *p2; + const byte *p1; for (i=0, p1=data, p2=(byte*)x; i < 16; i++, p2 += 4 ) { p2[3] = *p1++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/cipher/serpent.c new/libgcrypt-1.5.2/cipher/serpent.c --- old/libgcrypt-1.5.1/cipher/serpent.c 2012-11-29 15:22:35.000000000 +0100 +++ new/libgcrypt-1.5.2/cipher/serpent.c 2013-04-18 15:29:57.000000000 +0200 @@ -585,15 +585,14 @@ int i; /* Copy key. */ - for (i = 0; i < key_length / 4; i++) - { + memcpy (key_prepared, key, key_length); + key_length /= 4; #ifdef WORDS_BIGENDIAN - key_prepared[i] = byte_swap_32 (((u32 *) key)[i]); + for (i = 0; i < key_length; i++) + key_prepared[i] = byte_swap_32 (key_prepared[i]); #else - key_prepared[i] = ((u32 *) key)[i]; + i = key_length; #endif - } - if (i < 8) { /* Key must be padded according to the Serpent @@ -707,21 +706,17 @@ static void serpent_encrypt_internal (serpent_context_t *context, - const serpent_block_t input, serpent_block_t output) + const byte *input, byte *output) { serpent_block_t b, b_next; int round = 0; + memcpy (b, input, sizeof (b)); #ifdef WORDS_BIGENDIAN - b[0] = byte_swap_32 (input[0]); - b[1] = byte_swap_32 (input[1]); - b[2] = byte_swap_32 (input[2]); - b[3] = byte_swap_32 (input[3]); -#else - b[0] = input[0]; - b[1] = input[1]; - b[2] = input[2]; - b[3] = input[3]; + b[0] = byte_swap_32 (b[0]); + b[1] = byte_swap_32 (b[1]); + b[2] = byte_swap_32 (b[2]); + b[3] = byte_swap_32 (b[3]); #endif ROUND (0, context->keys, b, b_next); @@ -759,35 +754,27 @@ ROUND_LAST (7, context->keys, b, b_next); #ifdef WORDS_BIGENDIAN - output[0] = byte_swap_32 (b_next[0]); - output[1] = byte_swap_32 (b_next[1]); - output[2] = byte_swap_32 (b_next[2]); - output[3] = byte_swap_32 (b_next[3]); -#else - output[0] = b_next[0]; - output[1] = b_next[1]; - output[2] = b_next[2]; - output[3] = b_next[3]; + b_next[0] = byte_swap_32 (b_next[0]); + b_next[1] = byte_swap_32 (b_next[1]); + b_next[2] = byte_swap_32 (b_next[2]); + b_next[3] = byte_swap_32 (b_next[3]); #endif + memcpy (output, b_next, sizeof (b_next)); } static void serpent_decrypt_internal (serpent_context_t *context, - const serpent_block_t input, serpent_block_t output) + const byte *input, byte *output) { serpent_block_t b, b_next; int round = ROUNDS; + memcpy (b_next, input, sizeof (b)); #ifdef WORDS_BIGENDIAN - b_next[0] = byte_swap_32 (input[0]); - b_next[1] = byte_swap_32 (input[1]); - b_next[2] = byte_swap_32 (input[2]); - b_next[3] = byte_swap_32 (input[3]); -#else - b_next[0] = input[0]; - b_next[1] = input[1]; - b_next[2] = input[2]; - b_next[3] = input[3]; + b_next[0] = byte_swap_32 (b_next[0]); + b_next[1] = byte_swap_32 (b_next[1]); + b_next[2] = byte_swap_32 (b_next[2]); + b_next[3] = byte_swap_32 (b_next[3]); #endif ROUND_FIRST_INVERSE (7, context->keys, b_next, b); @@ -824,18 +811,13 @@ ROUND_INVERSE (1, context->keys, b, b_next); ROUND_INVERSE (0, context->keys, b, b_next); - #ifdef WORDS_BIGENDIAN - output[0] = byte_swap_32 (b_next[0]); - output[1] = byte_swap_32 (b_next[1]); - output[2] = byte_swap_32 (b_next[2]); - output[3] = byte_swap_32 (b_next[3]); -#else - output[0] = b_next[0]; - output[1] = b_next[1]; - output[2] = b_next[2]; - output[3] = b_next[3]; + b_next[0] = byte_swap_32 (b_next[0]); + b_next[1] = byte_swap_32 (b_next[1]); + b_next[2] = byte_swap_32 (b_next[2]); + b_next[3] = byte_swap_32 (b_next[3]); #endif + memcpy (output, b_next, sizeof (b_next)); } static void @@ -843,8 +825,7 @@ { serpent_context_t *context = ctx; - serpent_encrypt_internal (context, - (const u32 *) buffer_in, (u32 *) buffer_out); + serpent_encrypt_internal (context, buffer_in, buffer_out); _gcry_burn_stack (2 * sizeof (serpent_block_t)); } @@ -853,9 +834,7 @@ { serpent_context_t *context = ctx; - serpent_decrypt_internal (context, - (const u32 *) buffer_in, - (u32 *) buffer_out); + serpent_decrypt_internal (context, buffer_in, buffer_out); _gcry_burn_stack (2 * sizeof (serpent_block_t)); } @@ -914,9 +893,7 @@ { serpent_setkey_internal (&context, test_data[i].key, test_data[i].key_length); - serpent_encrypt_internal (&context, - (const u32 *) test_data[i].text_plain, - (u32 *) scratch); + serpent_encrypt_internal (&context, test_data[i].text_plain, scratch); if (memcmp (scratch, test_data[i].text_cipher, sizeof (serpent_block_t))) switch (test_data[i].key_length) @@ -929,9 +906,7 @@ return "Serpent-256 test encryption failed."; } - serpent_decrypt_internal (&context, - (const u32 *) test_data[i].text_cipher, - (u32 *) scratch); + serpent_decrypt_internal (&context, test_data[i].text_cipher, scratch); if (memcmp (scratch, test_data[i].text_plain, sizeof (serpent_block_t))) switch (test_data[i].key_length) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/config.h.in new/libgcrypt-1.5.2/config.h.in --- old/libgcrypt-1.5.1/config.h.in 2013-03-18 16:12:24.000000000 +0100 +++ new/libgcrypt-1.5.2/config.h.in 2013-04-18 17:07:36.000000000 +0200 @@ -322,6 +322,9 @@ #undef USE_GNU_PTH /* Defined if this module should be included */ +#undef USE_IDEA + +/* Defined if this module should be included */ #undef USE_MD4 /* Defined if this module should be included */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/configure new/libgcrypt-1.5.2/configure --- old/libgcrypt-1.5.1/configure 2013-03-18 16:31:47.000000000 +0100 +++ new/libgcrypt-1.5.2/configure 2013-04-18 17:06:06.000000000 +0200 @@ -1,7 +1,7 @@ #! /bin/sh # From configure.ac Revision. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libgcrypt 1.5.1. +# Generated by GNU Autoconf 2.69 for libgcrypt 1.5.2. # # Report bugs to <http://bugs.gnupg.org>. # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='libgcrypt' PACKAGE_TARNAME='libgcrypt' -PACKAGE_VERSION='1.5.1' -PACKAGE_STRING='libgcrypt 1.5.1' +PACKAGE_VERSION='1.5.2' +PACKAGE_STRING='libgcrypt 1.5.2' PACKAGE_BUGREPORT='http://bugs.gnupg.org' PACKAGE_URL='' @@ -1423,7 +1423,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libgcrypt 1.5.1 to adapt to many kinds of systems. +\`configure' configures libgcrypt 1.5.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1493,7 +1493,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libgcrypt 1.5.1:";; + short | recursive ) echo "Configuration of libgcrypt 1.5.2:";; esac cat <<\_ACEOF @@ -1632,7 +1632,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libgcrypt configure 1.5.1 +libgcrypt configure 1.5.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2284,7 +2284,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libgcrypt $as_me 1.5.1, which was +It was created by libgcrypt $as_me 1.5.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2642,7 +2642,7 @@ # LIBGCRYPT_LT_CURRENT=19 LIBGCRYPT_LT_AGE=8 -LIBGCRYPT_LT_REVISION=0 +LIBGCRYPT_LT_REVISION=1 # If the API is changed in an incompatible way: increment the next counter. @@ -3121,7 +3121,7 @@ # Define the identity of the package. PACKAGE='libgcrypt' - VERSION='1.5.1' + VERSION='1.5.2' cat >>confdefs.h <<_ACEOF @@ -3282,7 +3282,7 @@ #define VERSION "$VERSION" _ACEOF -VERSION_NUMBER=0x010501 +VERSION_NUMBER=0x010502 @@ -12740,7 +12740,7 @@ # Definitions for symmetric ciphers. available_ciphers="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed" -available_ciphers="$available_ciphers camellia" +available_ciphers="$available_ciphers camellia idea" enabled_ciphers="" # Definitions for public-key ciphers. @@ -16154,6 +16154,24 @@ fi +name=idea +list=$enabled_ciphers +found=0 + +for n in $list; do + if test "x$name" = "x$n"; then + found=1 + fi +done + +if test "$found" = "1" ; then + GCRYPT_CIPHERS="$GCRYPT_CIPHERS idea.lo" + +$as_echo "#define USE_IDEA 1" >>confdefs.h + +fi + + name=dsa list=$enabled_pubkey_ciphers found=0 @@ -16489,7 +16507,7 @@ # # Provide information about the build. # -BUILD_REVISION="d2f2f90" +BUILD_REVISION="8bfe337" cat >>confdefs.h <<_ACEOF @@ -16498,7 +16516,7 @@ BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'` -BUILD_FILEVERSION="${BUILD_FILEVERSION}54002" +BUILD_FILEVERSION="${BUILD_FILEVERSION}35838" BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date` @@ -17140,7 +17158,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libgcrypt $as_me 1.5.1, which was +This file was extended by libgcrypt $as_me 1.5.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17210,7 +17228,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libgcrypt config.status 1.5.1 +libgcrypt config.status 1.5.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -19256,7 +19274,7 @@ echo " Libgcrypt v${VERSION} has been configured as follows: - Revision: d2f2f90 (54002) + Revision: 8bfe337 (35838) Platform: $PRINTABLE_OS_NAME ($host) Enabled cipher algorithms: $enabled_ciphers Enabled digest algorithms: $enabled_digests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/configure.ac new/libgcrypt-1.5.2/configure.ac --- old/libgcrypt-1.5.1/configure.ac 2013-03-18 16:01:39.000000000 +0100 +++ new/libgcrypt-1.5.2/configure.ac 2013-04-18 17:00:07.000000000 +0200 @@ -30,7 +30,7 @@ # for the LT versions. m4_define(mym4_version_major, [1]) m4_define(mym4_version_minor, [5]) -m4_define(mym4_version_micro, [1]) +m4_define(mym4_version_micro, [2]) # Below is m4 magic to extract and compute the revision number, the # decimalized short revision number, a beta version string, and a flag @@ -59,7 +59,7 @@ # LIBGCRYPT_LT_CURRENT=19 LIBGCRYPT_LT_AGE=8 -LIBGCRYPT_LT_REVISION=0 +LIBGCRYPT_LT_REVISION=1 # If the API is changed in an incompatible way: increment the next counter. @@ -72,7 +72,7 @@ AC_CONFIG_SRCDIR([src/libgcrypt.vers]) AM_INIT_AUTOMAKE -AM_CONFIG_HEADER(config.h) +AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_LIBOBJ_DIR([compat]) AC_CANONICAL_HOST @@ -172,7 +172,7 @@ # Definitions for symmetric ciphers. available_ciphers="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed" -available_ciphers="$available_ciphers camellia" +available_ciphers="$available_ciphers camellia idea" enabled_ciphers="" # Definitions for public-key ciphers. @@ -1057,6 +1057,12 @@ AC_DEFINE(USE_CAMELLIA, 1, [Defined if this module should be included]) fi +LIST_MEMBER(idea, $enabled_ciphers) +if test "$found" = "1" ; then + GCRYPT_CIPHERS="$GCRYPT_CIPHERS idea.lo" + AC_DEFINE(USE_IDEA, 1, [Defined if this module should be included]) +fi + LIST_MEMBER(dsa, $enabled_pubkey_ciphers) if test "$found" = "1" ; then GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS dsa.lo" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/doc/fips-fsm.eps new/libgcrypt-1.5.2/doc/fips-fsm.eps --- old/libgcrypt-1.5.1/doc/fips-fsm.eps 2012-04-25 16:56:10.000000000 +0200 +++ new/libgcrypt-1.5.2/doc/fips-fsm.eps 2013-04-18 17:07:37.000000000 +0200 @@ -1,7 +1,7 @@ %!PS-Adobe-3.0 EPSF-3.0 %%Title: /home/wk/w/libgcrypt/doc/fips-fsm.fig %%Creator: fig2dev Version 3.2 Patchlevel 5d -%%CreationDate: Wed Apr 25 16:56:10 2012 +%%CreationDate: Thu Apr 18 17:07:37 2013 %%BoundingBox: 0 0 497 579 %Magnification: 1.0000 %%EndComments Files old/libgcrypt-1.5.1/doc/fips-fsm.pdf and new/libgcrypt-1.5.2/doc/fips-fsm.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/doc/gcrypt.info new/libgcrypt-1.5.2/doc/gcrypt.info --- old/libgcrypt-1.5.1/doc/gcrypt.info 2013-03-18 16:32:24.000000000 +0100 +++ new/libgcrypt-1.5.2/doc/gcrypt.info 2013-04-18 17:07:42.000000000 +0200 @@ -1,7 +1,7 @@ This is /home/wk/w/libgcrypt/doc/gcrypt.info, produced by makeinfo version 4.13 from /home/wk/w/libgcrypt/doc/gcrypt.texi. -This manual is for Libgcrypt (version 1.5.1, 18 March 2013), which is +This manual is for Libgcrypt (version 1.5.2, 18 April 2013), which is GNU's library of cryptographic building blocks. Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2011 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/doc/gcrypt.info-1 new/libgcrypt-1.5.2/doc/gcrypt.info-1 --- old/libgcrypt-1.5.1/doc/gcrypt.info-1 2013-03-18 16:32:24.000000000 +0100 +++ new/libgcrypt-1.5.2/doc/gcrypt.info-1 2013-04-18 17:07:42.000000000 +0200 @@ -1,7 +1,7 @@ This is /home/wk/w/libgcrypt/doc/gcrypt.info, produced by makeinfo version 4.13 from /home/wk/w/libgcrypt/doc/gcrypt.texi. -This manual is for Libgcrypt (version 1.5.1, 18 March 2013), which is +This manual is for Libgcrypt (version 1.5.2, 18 April 2013), which is GNU's library of cryptographic building blocks. Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2011 @@ -25,7 +25,7 @@ The Libgcrypt Library ********************* -This manual is for Libgcrypt (version 1.5.1, 18 March 2013), which is +This manual is for Libgcrypt (version 1.5.2, 18 April 2013), which is GNU's library of cryptographic building blocks. Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2011 Files old/libgcrypt-1.5.1/doc/gcrypt.info-2 and new/libgcrypt-1.5.2/doc/gcrypt.info-2 differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/doc/libgcrypt-modules.eps new/libgcrypt-1.5.2/doc/libgcrypt-modules.eps --- old/libgcrypt-1.5.1/doc/libgcrypt-modules.eps 2012-04-25 16:56:10.000000000 +0200 +++ new/libgcrypt-1.5.2/doc/libgcrypt-modules.eps 2013-04-18 17:07:37.000000000 +0200 @@ -1,7 +1,7 @@ %!PS-Adobe-3.0 EPSF-3.0 %%Title: /home/wk/w/libgcrypt/doc/libgcrypt-modules.fig %%Creator: fig2dev Version 3.2 Patchlevel 5d -%%CreationDate: Wed Apr 25 16:56:10 2012 +%%CreationDate: Thu Apr 18 17:07:37 2013 %%BoundingBox: 0 0 488 300 %Magnification: 1.0000 %%EndComments Files old/libgcrypt-1.5.1/doc/libgcrypt-modules.pdf and new/libgcrypt-1.5.2/doc/libgcrypt-modules.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/doc/stamp-vti new/libgcrypt-1.5.2/doc/stamp-vti --- old/libgcrypt-1.5.1/doc/stamp-vti 2013-03-18 16:32:24.000000000 +0100 +++ new/libgcrypt-1.5.2/doc/stamp-vti 2013-04-18 17:07:37.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 18 March 2013 -@set UPDATED-MONTH March 2013 -@set EDITION 1.5.1 -@set VERSION 1.5.1 +@set UPDATED 18 April 2013 +@set UPDATED-MONTH April 2013 +@set EDITION 1.5.2 +@set VERSION 1.5.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/doc/version.texi new/libgcrypt-1.5.2/doc/version.texi --- old/libgcrypt-1.5.1/doc/version.texi 2013-03-18 16:32:24.000000000 +0100 +++ new/libgcrypt-1.5.2/doc/version.texi 2013-04-18 17:07:37.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 18 March 2013 -@set UPDATED-MONTH March 2013 -@set EDITION 1.5.1 -@set VERSION 1.5.1 +@set UPDATED 18 April 2013 +@set UPDATED-MONTH April 2013 +@set EDITION 1.5.2 +@set VERSION 1.5.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/mpi/ec.c new/libgcrypt-1.5.2/mpi/ec.c --- old/libgcrypt-1.5.1/mpi/ec.c 2013-03-18 08:45:01.000000000 +0100 +++ new/libgcrypt-1.5.2/mpi/ec.c 2013-04-18 16:48:42.000000000 +0200 @@ -522,7 +522,7 @@ ec_mulm (l1, l1, x1, ctx); } if (z1_is_one) - mpi_set (l2, x1); + mpi_set (l2, x2); else { ec_powm (l2, z1, ctx->two, ctx); @@ -670,10 +670,23 @@ mpi_mul (h, k, ctx->three); /* h = 3k */ loops = mpi_get_nbits (h); - - mpi_set (result->x, point->x); - mpi_set (result->y, yy); mpi_free (yy); yy = NULL; - mpi_set (result->z, point->z); + if (loops < 2) + { + /* If SCALAR is zero, the above mpi_mul sets H to zero and thus + LOOPs will be zero. To avoid an underflow of I in the main + loop we set LOOP to 2 and the result to (0,0,0). */ + loops = 2; + mpi_clear (result->x); + mpi_clear (result->y); + mpi_clear (result->z); + } + else + { + mpi_set (result->x, point->x); + mpi_set (result->y, yy); + mpi_set (result->z, point->z); + } + mpi_free (yy); yy = NULL; p1.x = x1; x1 = NULL; p1.y = y1; y1 = NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/src/cipher.h new/libgcrypt-1.5.2/src/cipher.h --- old/libgcrypt-1.5.1/src/cipher.h 2013-03-18 08:45:01.000000000 +0100 +++ new/libgcrypt-1.5.2/src/cipher.h 2013-04-18 16:48:42.000000000 +0200 @@ -135,6 +135,7 @@ extern gcry_cipher_spec_t _gcry_cipher_spec_camellia128; extern gcry_cipher_spec_t _gcry_cipher_spec_camellia192; extern gcry_cipher_spec_t _gcry_cipher_spec_camellia256; +extern gcry_cipher_spec_t _gcry_cipher_spec_idea; extern cipher_extra_spec_t _gcry_cipher_extraspec_tripledes; extern cipher_extra_spec_t _gcry_cipher_extraspec_aes; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/src/gcrypt.h new/libgcrypt-1.5.2/src/gcrypt.h --- old/libgcrypt-1.5.1/src/gcrypt.h 2013-03-18 16:32:16.000000000 +0100 +++ new/libgcrypt-1.5.2/src/gcrypt.h 2013-04-18 17:07:05.000000000 +0200 @@ -63,11 +63,11 @@ return the same version. The purpose of this macro is to let autoconf (using the AM_PATH_GCRYPT macro) check that this header matches the installed library. */ -#define GCRYPT_VERSION "1.5.1" +#define GCRYPT_VERSION "1.5.2" /* The version number of this header. It may be used to handle minor API incompatibilities. */ -#define GCRYPT_VERSION_NUMBER 0x010501 +#define GCRYPT_VERSION_NUMBER 0x010502 /* Internal: We can't use the convenience macros for the multi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgcrypt-1.5.1/tests/basic.c new/libgcrypt-1.5.2/tests/basic.c --- old/libgcrypt-1.5.1/tests/basic.c 2013-03-18 08:45:01.000000000 +0100 +++ new/libgcrypt-1.5.2/tests/basic.c 2013-04-18 16:48:42.000000000 +0200 @@ -1568,6 +1568,9 @@ GCRY_CIPHER_CAMELLIA192, GCRY_CIPHER_CAMELLIA256, #endif +#if USE_IDEA + GCRY_CIPHER_IDEA, +#endif 0 }; static int algos2[] = { -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org