SHA256
1
0
forked from pool/libgcrypt

Accepting request 110723 from home:dstoecker

Inbetween patent situation should be clear, so I resubmit the idea changes.

OBS-URL: https://build.opensuse.org/request/show/110723
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/libgcrypt?expand=0&rev=14
This commit is contained in:
Sascha Peilicke 2012-03-23 11:47:53 +00:00 committed by Git OBS Bridge
parent 1c1273999c
commit 544f8f765c
5 changed files with 246 additions and 3 deletions

3
idea.c.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:309928da34941dff1d6f6687542ff3d58306d85be9e1a9906bc4f9f8e6011844
size 5216

View File

@ -0,0 +1,63 @@
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;

View File

@ -0,0 +1,164 @@
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 $)";

View File

@ -4,6 +4,11 @@ Sun Feb 12 15:23:56 UTC 2012 - crrodriguez@opensuse.org
- Libraries back into %{_libdir}, /usr merge project - Libraries back into %{_libdir}, /usr merge project
------------------------------------------------------------------- -------------------------------------------------------------------
Sat Dec 24 23:51:26 UTC 2011 - opensuse@dstoecker.de
- add the missing IDEA algorithm after the patent is no longer relevant
------------------------------------------------------------------
Sun Nov 13 14:37:29 UTC 2011 - jengelh@medozas.de Sun Nov 13 14:37:29 UTC 2011 - jengelh@medozas.de
- Remove redundant/unwanted tags/section (cf. specfile guidelines) - Remove redundant/unwanted tags/section (cf. specfile guidelines)

View File

@ -19,7 +19,7 @@
Name: libgcrypt Name: libgcrypt
BuildRequires: libgpg-error-devel BuildRequires: libgpg-error-devel
BuildRequires: libtool BuildRequires: libtool
Url: http://www.gnu.org/directory/Security/libgcrypt.html Url: http://directory.fsf.org/wiki/Libgcrypt
Version: 1.5.0 Version: 1.5.0
Release: 0 Release: 0
Summary: The GNU Crypto Library Summary: The GNU Crypto Library
@ -27,10 +27,13 @@ License: GPL-2.0+ ; LGPL-2.1+
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Source: %name-%version.tar.bz2 Source: %name-%version.tar.bz2
Source2: baselibs.conf Source2: baselibs.conf
Source3: idea.c.gz
Patch0: %name-ppc64.patch Patch0: %name-ppc64.patch
Patch1: libgcrypt-strict-aliasing.patch Patch1: libgcrypt-strict-aliasing.patch
Patch3: libgcrypt-1.4.1-rijndael_no_strict_aliasing.patch Patch3: libgcrypt-1.4.1-rijndael_no_strict_aliasing.patch
Patch4: libgcrypt-sparcv9.diff Patch4: libgcrypt-sparcv9.diff
Patch5: libgcrypt-1.5.0-idea.patch
Patch6: libgcrypt-1.5.0-idea_codecleanup.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description %description
@ -58,7 +61,9 @@ GnuPG (alpha version).
Summary: The GNU Crypto Library Summary: The GNU Crypto Library
License: GFDL-1.1 ; GPL-2.0+ ; LGPL-2.1+ ; MIT License: GFDL-1.1 ; GPL-2.0+ ; LGPL-2.1+ ; MIT
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: libgcrypt11 = %version libgpg-error-devel Requires: glibc-devel
Requires: libgcrypt11 = %version
Requires: libgpg-error-devel
# bug437293 # bug437293
%ifarch ppc64 %ifarch ppc64
Obsoletes: libgcrypt-devel-64bit Obsoletes: libgcrypt-devel-64bit
@ -75,14 +80,17 @@ library.
%prep %prep
%setup -q -n libgcrypt-%version %setup -q -n libgcrypt-%version
gzip -dc < %{S:3} > cipher/idea.c
%patch0 -p1 %patch0 -p1
%patch1 %patch1
%patch3 -p1 %patch3 -p1
%patch4 -p1 %patch4 -p1
%patch5 -p1
%patch6 -p1
%build %build
# define ciphers to 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_PUBKEY="dsa elgamal rsa ecc"
ENABLE_DIGEST="crc md4 md5 rmd160 sha1 sha256 sha512 tiger whirlpool" ENABLE_DIGEST="crc md4 md5 rmd160 sha1 sha256 sha512 tiger whirlpool"
# #