summaryrefslogtreecommitdiff
path: root/testing/gnutls
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2011-08-14 23:14:32 +0000
committerroot <root@rshg054.dnsready.net>2011-08-14 23:14:32 +0000
commit4784cc8068c68b6fc23c2bd0ee8158b2a924f5f4 (patch)
tree30dd0cb9a1406f132ae8c5b5dbbb4ee4b25732f8 /testing/gnutls
parent76c08dc0eadb92247b4978f3185ee4176603b7af (diff)
Sun Aug 14 23:14:32 UTC 2011
Diffstat (limited to 'testing/gnutls')
-rw-r--r--testing/gnutls/PKGBUILD43
-rw-r--r--testing/gnutls/align.patch64
-rw-r--r--testing/gnutls/gnutls.install20
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
+}