diff options
author | root <root@rshg054.dnsready.net> | 2011-08-14 23:14:32 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2011-08-14 23:14:32 +0000 |
commit | 4784cc8068c68b6fc23c2bd0ee8158b2a924f5f4 (patch) | |
tree | 30dd0cb9a1406f132ae8c5b5dbbb4ee4b25732f8 /testing/gnutls | |
parent | 76c08dc0eadb92247b4978f3185ee4176603b7af (diff) |
Sun Aug 14 23:14:32 UTC 2011
Diffstat (limited to 'testing/gnutls')
-rw-r--r-- | testing/gnutls/PKGBUILD | 43 | ||||
-rw-r--r-- | testing/gnutls/align.patch | 64 | ||||
-rw-r--r-- | testing/gnutls/gnutls.install | 20 |
3 files changed, 127 insertions, 0 deletions
diff --git a/testing/gnutls/PKGBUILD b/testing/gnutls/PKGBUILD new file mode 100644 index 000000000..232866e8e --- /dev/null +++ b/testing/gnutls/PKGBUILD @@ -0,0 +1,43 @@ +# $Id: PKGBUILD 135280 2011-08-12 06:48:04Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=gnutls +pkgver=3.0.0 +pkgrel=2 +pkgdesc="A library which provides a secure layer over a reliable transport layer" +arch=('i686' 'x86_64') +license=('GPL3' 'LGPL') +url="http://www.gnu.org/software/gnutls/" +install=gnutls.install +options=('!libtool' '!zipman') +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 \ + --without-p11-kit + make +} + +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + make check # passes all || /bin/true +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + # lots of .png files are put into infodir and are gzipped by makepkg! this may need to be fixed by using !zipman + # gzip -9 all files in infodir and manpages manually + find "$pkgdir/usr/share/info" -name '*.info*' -exec gzip -9 {} \; + find "$pkgdir/usr/share/man" -exec gzip -9 {} \; +} diff --git a/testing/gnutls/align.patch b/testing/gnutls/align.patch new file mode 100644 index 000000000..dce5cf408 --- /dev/null +++ b/testing/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; + diff --git a/testing/gnutls/gnutls.install b/testing/gnutls/gnutls.install new file mode 100644 index 000000000..9ce7c6edc --- /dev/null +++ b/testing/gnutls/gnutls.install @@ -0,0 +1,20 @@ +infodir=usr/share/info +filelist=(gnutls.info-1.gz gnutls.info-2.gz gnutls.info-3.gz gnutls.info.gz) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} |