Hello community, here is the log from the commit of package libgcrypt for openSUSE:Factory checked in at 2012-03-26 11:03:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libgcrypt (Old) and /work/SRC/openSUSE:Factory/.libgcrypt.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libgcrypt", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/libgcrypt/libgcrypt.changes 2012-02-15 16:16:23.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libgcrypt.new/libgcrypt.changes 2012-03-26 11:03:05.000000000 +0200 @@ -6,0 +7,5 @@ +Sat Dec 24 23:51:26 UTC 2011 - [email protected] + +- add the missing IDEA algorithm after the patent is no longer relevant + +------------------------------------------------------------------ New: ---- idea.c.gz libgcrypt-1.5.0-idea.patch libgcrypt-1.5.0-idea_codecleanup.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libgcrypt.spec ++++++ --- /var/tmp/diff_new_pack.EN5Z8P/_old 2012-03-26 11:03:07.000000000 +0200 +++ /var/tmp/diff_new_pack.EN5Z8P/_new 2012-03-26 11:03:07.000000000 +0200 @@ -19,7 +19,7 @@ Name: libgcrypt BuildRequires: libgpg-error-devel BuildRequires: libtool -Url: http://www.gnu.org/directory/Security/libgcrypt.html +Url: http://directory.fsf.org/wiki/Libgcrypt Version: 1.5.0 Release: 0 Summary: The GNU Crypto Library @@ -27,10 +27,13 @@ Group: Development/Libraries/C and C++ Source: %name-%version.tar.bz2 Source2: baselibs.conf +Source3: idea.c.gz Patch0: %name-ppc64.patch Patch1: libgcrypt-strict-aliasing.patch Patch3: libgcrypt-1.4.1-rijndael_no_strict_aliasing.patch Patch4: libgcrypt-sparcv9.diff +Patch5: libgcrypt-1.5.0-idea.patch +Patch6: libgcrypt-1.5.0-idea_codecleanup.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -58,7 +61,9 @@ Summary: The GNU Crypto Library License: GFDL-1.1 ; GPL-2.0+ ; LGPL-2.1+ ; MIT Group: Development/Libraries/C and C++ -Requires: libgcrypt11 = %version libgpg-error-devel +Requires: glibc-devel +Requires: libgcrypt11 = %version +Requires: libgpg-error-devel # bug437293 %ifarch ppc64 Obsoletes: libgcrypt-devel-64bit @@ -75,14 +80,17 @@ %prep %setup -q -n libgcrypt-%version +gzip -dc < %{S:3} > cipher/idea.c %patch0 -p1 %patch1 %patch3 -p1 %patch4 -p1 +%patch5 -p1 +%patch6 -p1 %build # define ciphers to build -ENABLE_CIPHER="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed camellia" +ENABLE_CIPHER="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed camellia idea" ENABLE_PUBKEY="dsa elgamal rsa ecc" ENABLE_DIGEST="crc md4 md5 rmd160 sha1 sha256 sha512 tiger whirlpool" # ++++++ libgcrypt-1.5.0-idea.patch ++++++ diff -ur libgcrypt-1.5.0/cipher/cipher.c libgcrypt-1.5.0f/cipher/cipher.c --- libgcrypt-1.5.0/cipher/cipher.c 2011-04-19 16:06:57.000000000 +0200 +++ libgcrypt-1.5.0f/cipher/cipher.c 2011-12-25 00:45:18.391287616 +0100 @@ -60,6 +60,12 @@ { &_gcry_cipher_spec_blowfish, &dummy_extra_spec, GCRY_CIPHER_BLOWFISH }, #endif +#if USE_IDEA + { &_gcry_cipher_spec_idea, + &dummy_extra_spec, GCRY_CIPHER_IDEA }, +#else +# warn IDEA not supported +#endif #if USE_DES { &_gcry_cipher_spec_des, &dummy_extra_spec, GCRY_CIPHER_DES }, diff -ur libgcrypt-1.5.0/cipher/Makefile.am libgcrypt-1.5.0f/cipher/Makefile.am --- libgcrypt-1.5.0/cipher/Makefile.am 2011-03-11 09:47:39.000000000 +0100 +++ libgcrypt-1.5.0f/cipher/Makefile.am 2011-12-25 00:39:27.051857406 +0100 @@ -51,6 +51,7 @@ dsa.c \ elgamal.c \ ecc.c \ +idea.c \ md4.c \ md5.c \ rijndael.c rijndael-tables.h \ diff -ur libgcrypt-1.5.0/configure.ac libgcrypt-1.5.0f/configure.ac --- libgcrypt-1.5.0/configure.ac 2011-06-29 10:53:22.000000000 +0200 +++ libgcrypt-1.5.0f/configure.ac 2011-12-25 00:39:27.050857305 +0100 @@ -155,7 +155,7 @@ LIBGCRYPT_CONFIG_HOST="$host" # Definitions for symmetric ciphers. -available_ciphers="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed" +available_ciphers="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed idea" available_ciphers="$available_ciphers camellia" enabled_ciphers="" @@ -1005,6 +1005,12 @@ AC_DEFINE(USE_CAST5, 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(des, $enabled_ciphers) if test "$found" = "1" ; then GCRYPT_CIPHERS="$GCRYPT_CIPHERS des.lo" diff -ur libgcrypt-1.5.0/src/cipher.h libgcrypt-1.5.0f/src/cipher.h --- libgcrypt-1.5.0/src/cipher.h 2011-06-10 10:53:41.000000000 +0200 +++ libgcrypt-1.5.0f/src/cipher.h 2011-12-25 00:40:25.323733275 +0100 @@ -118,6 +118,7 @@ /* Declarations for the cipher specifications. */ extern gcry_cipher_spec_t _gcry_cipher_spec_blowfish; +extern gcry_cipher_spec_t _gcry_cipher_spec_idea; extern gcry_cipher_spec_t _gcry_cipher_spec_des; extern gcry_cipher_spec_t _gcry_cipher_spec_tripledes; extern gcry_cipher_spec_t _gcry_cipher_spec_arcfour; ++++++ libgcrypt-1.5.0-idea_codecleanup.patch ++++++ diff -ur libgcrypt-1.5.0/cipher/idea.c libgcrypt-1.5.0f/cipher/idea.c --- libgcrypt-1.5.0/cipher/idea.c 2011-12-25 00:45:06.747113267 +0100 +++ libgcrypt-1.5.0f/cipher/idea.c 2011-12-25 00:45:18.393287816 +0100 @@ -89,6 +89,9 @@ #include <stdlib.h> #include <string.h> #include <assert.h> +#include "g10lib.h" +#include "types.h" +#include "cipher.h" #if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST) /* Try to handle endianness if we didn't get it from config.h */ @@ -103,9 +106,6 @@ #endif #endif -typedef unsigned short u16; /* Note: Make sure this is a 16 bit type. */ -typedef unsigned long u32; /* Note: Make sure this is a 32 bit type. */ - /* end configurable stuff */ @@ -116,8 +116,8 @@ /* local stuff */ -#define FNCCAST_SETKEY(f) ((int(*)(void*, unsigned char*, unsigned int))(f)) -#define FNCCAST_CRYPT(f) ((void(*)(void*, unsigned char*, unsigned char*))(f)) +#define FNCCAST_SETKEY(f) ((int(*)(void*, byte*, unsigned int))(f)) +#define FNCCAST_CRYPT(f) ((void(*)(void*, byte*, byte*))(f)) #define IDEA_KEYSIZE 16 #define IDEA_BLOCKSIZE 8 @@ -131,11 +131,9 @@ } IDEA_context; -static int do_setkey( IDEA_context *c, unsigned char *key, unsigned keylen ); -static void encrypt_block( IDEA_context *bc, unsigned char *outbuf, - unsigned char *inbuf ); -static void decrypt_block( IDEA_context *bc, unsigned char *outbuf, - unsigned char *inbuf ); +static gcry_err_code_t do_setkey( void *data, const byte *key, unsigned keylen ); +static void encrypt_block( void *data, byte *outbuf, const byte *inbuf ); +static void decrypt_block( void *data, byte *outbuf, const byte *inbuf ); static int selftest(int); @@ -170,7 +168,7 @@ static void -expand_key( unsigned char *userkey, u16 *ek ) +expand_key( const byte *userkey, u16 *ek ) { int i,j; @@ -233,7 +231,7 @@ static void -cipher( unsigned char *outbuf, unsigned char *inbuf, u16 *key ) +cipher( byte *outbuf, const byte *inbuf, u16 *key ) { u16 x1, x2, x3,x4, s2, s3; u16 *in, *out; @@ -309,25 +307,28 @@ } -static int -do_setkey( IDEA_context *c, unsigned char *key, unsigned keylen ) +static gcry_err_code_t +do_setkey( void *data, const byte *key, unsigned keylen ) { + IDEA_context *c = (IDEA_context*)data; assert(keylen == 16); c->have_dk = 0; expand_key( key, c->ek ); invert_key( c->ek, c->dk ); - return 0; + return GPG_ERR_NO_ERROR; } static void -encrypt_block( IDEA_context *c, unsigned char *outbuf, unsigned char *inbuf ) +encrypt_block( void *data, byte *outbuf, const byte *inbuf ) { + IDEA_context *c = (IDEA_context*)data; cipher( outbuf, inbuf, c->ek ); } static void -decrypt_block( IDEA_context *c, unsigned char *outbuf, unsigned char *inbuf ) +decrypt_block( void *data, byte *outbuf, const byte *inbuf ) { + IDEA_context *c = (IDEA_context*)data; if( !c->have_dk ) { c->have_dk = 1; invert_key( c->ek, c->dk ); @@ -340,9 +341,9 @@ selftest( int check_decrypt ) { static struct { - unsigned char key[16]; - unsigned char plain[8]; - unsigned char cipher[8]; + 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 }, @@ -390,7 +391,7 @@ { 0xF5, 0xDB, 0x1A, 0xC4, 0x5E, 0x5E, 0xF9, 0xF9 } } }; IDEA_context c; - unsigned char buffer[8]; + byte buffer[8]; int i; for(i=0; i < DIM(test_vectors); i++ ) { @@ -425,12 +426,12 @@ const char * idea_get_info( int algo, size_t *keylen, size_t *blocksize, size_t *contextsize, - int (**r_setkey)( void *c, unsigned char *key, + int (**r_setkey)( void *c, byte *key, unsigned keylen ), - void (**r_encrypt)( void *c, unsigned char *outbuf, - unsigned char *inbuf ), - void (**r_decrypt)( void *c, unsigned char *outbuf, - unsigned char *inbuf ) + void (**r_encrypt)( void *c, byte *outbuf, + byte *inbuf ), + void (**r_decrypt)( void *c, byte *outbuf, + byte *inbuf ) ) { static int initialized = 0; @@ -451,7 +452,22 @@ return NULL; } +static gcry_err_code_t idea_setkey(void *data, const byte *key, unsigned keylen) +{ + static int initialized = 0; + if(!initialized) { + initialized = 1; + if (selftest(0) || selftest(1)) + return GPG_ERR_CIPHER_ALGO; + } + return do_setkey(data, key, keylen); +} +gcry_cipher_spec_t _gcry_cipher_spec_idea = +{ + "IDEA", NULL, NULL, 8, 128, sizeof (IDEA_context), + idea_setkey, encrypt_block, decrypt_block +}; const char * const gnupgext_version = "IDEA ($Revision: 1.11 $)"; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
