diff options
author | root <root@rshg054.dnsready.net> | 2011-08-19 23:14:47 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2011-08-19 23:14:47 +0000 |
commit | c6a4d3790fc33558d9af322dac15d2bd6d34ac0b (patch) | |
tree | 934e1d11b80c8529b23dcb07b626c5b81e8b156d /extra/gnutls | |
parent | 59eecef62ae9aa7dd391310f30293318f641c59c (diff) |
Fri Aug 19 23:14:46 UTC 2011
Diffstat (limited to 'extra/gnutls')
-rw-r--r-- | extra/gnutls/PKGBUILD | 20 | ||||
-rw-r--r-- | extra/gnutls/align.patch | 64 |
2 files changed, 76 insertions, 8 deletions
diff --git a/extra/gnutls/PKGBUILD b/extra/gnutls/PKGBUILD index 6f4fe2870..f501d08f5 100644 --- a/extra/gnutls/PKGBUILD +++ b/extra/gnutls/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 130900 2011-07-08 17:01:10Z andyrtr $ +# $Id: PKGBUILD 135768 2011-08-18 15:03:47Z andyrtr $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=gnutls -pkgver=2.12.7 +pkgver=3.0.0 pkgrel=2 pkgdesc="A library which provides a secure layer over a reliable transport layer" arch=('i686' 'x86_64') @@ -10,23 +10,27 @@ license=('GPL3' 'LGPL') url="http://www.gnu.org/software/gnutls/" install=gnutls.install options=('!libtool' '!zipman') -depends=('gcc-libs' 'libtasn1' 'readline' 'zlib' 'nettle') -source=(ftp://ftp.gnu.org/gnu/gnutls/${pkgname}-${pkgver}.tar.bz2) -md5sums=(4b48aa3119f549d30d550bf4162c721b'') +depends=('gcc-libs' 'libtasn1' 'readline' 'zlib' 'nettle>=2.2') +source=(ftp://ftp.gnu.org/gnu/gnutls/${pkgname}-${pkgver}.tar.xz + align.patch) +md5sums=('0677a66667f48810ff8df8335a9a9f9b' + 'bce979498addb45d0fa8d6951f93fab3') build() { cd "${srcdir}/${pkgname}-${pkgver}" + # fix AES-NI for i686 + patch -Np1 -i ${srcdir}/align.patch ./configure --prefix=/usr \ --with-zlib \ --disable-static \ - --disable-guile + --disable-guile \ + --without-p11-kit make } check() { cd "${srcdir}/${pkgname}-${pkgver}" - #make check # passes all || /bin/true - make check # || /bin/true # see https://lists.gnu.org/archive/html/gnutls-devel/2011-06/msg00007.html + make check # passes all || /bin/true } package() { diff --git a/extra/gnutls/align.patch b/extra/gnutls/align.patch new file mode 100644 index 000000000..dce5cf408 --- /dev/null +++ b/extra/gnutls/align.patch @@ -0,0 +1,64 @@ +diff --git a/lib/accelerated/intel/aes-x86.c b/lib/accelerated/intel/aes-x86.c +index 6801e7e..ff5b714 100644 +--- a/lib/accelerated/intel/aes-x86.c ++++ b/lib/accelerated/intel/aes-x86.c +@@ -40,6 +40,10 @@ struct aes_ctx + uint8_t iv[16]; + }; + ++#define AESNI_MIN_ALIGN 16 ++#define AESNI_ALIGN(x) \ ++ ((void *)(((size_t)(x)+AESNI_MIN_ALIGN-1)&~(AESNI_MIN_ALIGN-1))) ++ + static int + aes_cipher_init (gnutls_cipher_algorithm_t algorithm, void **_ctx) + { +@@ -69,11 +73,11 @@ aes_cipher_setkey (void *_ctx, const void *userkey, size_t keysize) + struct aes_ctx *ctx = _ctx; + int ret; + +- ret = aesni_set_encrypt_key (userkey, keysize * 8, &ctx->expanded_key); ++ ret = aesni_set_encrypt_key (userkey, keysize * 8, AESNI_ALIGN(&ctx->expanded_key)); + if (ret != 0) + return gnutls_assert_val (GNUTLS_E_ENCRYPTION_FAILED); + +- ret = aesni_set_decrypt_key (userkey, keysize * 8, &ctx->expanded_key_dec); ++ ret = aesni_set_decrypt_key (userkey, keysize * 8, AESNI_ALIGN(&ctx->expanded_key_dec)); + if (ret != 0) + return gnutls_assert_val (GNUTLS_E_ENCRYPTION_FAILED); + +@@ -95,7 +99,7 @@ aes_encrypt (void *_ctx, const void *src, size_t src_size, + { + struct aes_ctx *ctx = _ctx; + +- aesni_cbc_encrypt (src, dst, src_size, &ctx->expanded_key, ctx->iv, 1); ++ aesni_cbc_encrypt (src, dst, src_size, AESNI_ALIGN(&ctx->expanded_key), ctx->iv, 1); + return 0; + } + +@@ -105,7 +109,7 @@ aes_decrypt (void *_ctx, const void *src, size_t src_size, + { + struct aes_ctx *ctx = _ctx; + +- aesni_cbc_encrypt (src, dst, src_size, &ctx->expanded_key_dec, ctx->iv, 0); ++ aesni_cbc_encrypt (src, dst, src_size, AESNI_ALIGN(&ctx->expanded_key_dec), ctx->iv, 0); + + return 0; + } +diff --git a/lib/accelerated/intel/aes-x86.h b/lib/accelerated/intel/aes-x86.h +index 8f49ff3..20a169e 100644 +--- a/lib/accelerated/intel/aes-x86.h ++++ b/lib/accelerated/intel/aes-x86.h +@@ -11,10 +11,11 @@ void register_x86_crypto (void); + # define ALIGN16 + #endif + ++#define AES_KEY_ALIGN_SIZE 8 + #define AES_MAXNR 14 + typedef struct + { +- uint32_t ALIGN16 rd_key[4 * (AES_MAXNR + 1)]; ++ uint32_t rd_key[4 * (AES_MAXNR + 1)+AES_KEY_ALIGN_SIZE]; + int rounds; + } AES_KEY; + |