diff --git a/0001-Included-appro-s-updates-to-AES-NI.patch b/0001-Included-appro-s-updates-to-AES-NI.patch new file mode 100644 index 0000000..9cba45d --- /dev/null +++ b/0001-Included-appro-s-updates-to-AES-NI.patch @@ -0,0 +1,1975 @@ +From e8a255261eaf28e5dafd7be4cd6c01485a91c752 Mon Sep 17 00:00:00 2001 +From: Nikos Mavrogiannopoulos +Date: Mon, 8 Aug 2011 14:54:08 +0200 +Subject: [PATCH 1/6] Included appro's updates to AES-NI. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + +Signed-off-by: Cristian Rodríguez +--- + lib/accelerated/intel/asm/appro-aes-x86-64.s | 368 +++++++++++++------------- + lib/accelerated/intel/asm/appro-aes-x86.s | 295 +++++++++++---------- + 2 files changed, 338 insertions(+), 325 deletions(-) + +diff --git a/lib/accelerated/intel/asm/appro-aes-x86-64.s b/lib/accelerated/intel/asm/appro-aes-x86-64.s +index 98204d1..f286fb1 100644 +--- a/lib/accelerated/intel/asm/appro-aes-x86-64.s ++++ b/lib/accelerated/intel/asm/appro-aes-x86-64.s +@@ -42,14 +42,14 @@ + aesni_encrypt: + movups (%rdi),%xmm2 + movl 240(%rdx),%eax +- movaps (%rdx),%xmm0 +- movaps 16(%rdx),%xmm1 ++ movups (%rdx),%xmm0 ++ movups 16(%rdx),%xmm1 + leaq 32(%rdx),%rdx + xorps %xmm0,%xmm2 + .Loop_enc1_1: + .byte 102,15,56,220,209 + decl %eax +- movaps (%rdx),%xmm1 ++ movups (%rdx),%xmm1 + leaq 16(%rdx),%rdx + jnz .Loop_enc1_1 + .byte 102,15,56,221,209 +@@ -63,14 +63,14 @@ aesni_encrypt: + aesni_decrypt: + movups (%rdi),%xmm2 + movl 240(%rdx),%eax +- movaps (%rdx),%xmm0 +- movaps 16(%rdx),%xmm1 ++ movups (%rdx),%xmm0 ++ movups 16(%rdx),%xmm1 + leaq 32(%rdx),%rdx + xorps %xmm0,%xmm2 + .Loop_dec1_2: + .byte 102,15,56,222,209 + decl %eax +- movaps (%rdx),%xmm1 ++ movups (%rdx),%xmm1 + leaq 16(%rdx),%rdx + jnz .Loop_dec1_2 + .byte 102,15,56,223,209 +@@ -80,26 +80,26 @@ aesni_decrypt: + .type _aesni_encrypt3,@function + .align 16 + _aesni_encrypt3: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + + .Lenc_loop3: + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 + decl %eax + .byte 102,15,56,220,225 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leaq 32(%rcx),%rcx + .byte 102,15,56,220,224 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Lenc_loop3 + + .byte 102,15,56,220,209 +@@ -113,26 +113,26 @@ _aesni_encrypt3: + .type _aesni_decrypt3,@function + .align 16 + _aesni_decrypt3: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + + .Ldec_loop3: + .byte 102,15,56,222,209 + .byte 102,15,56,222,217 + decl %eax + .byte 102,15,56,222,225 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 + leaq 32(%rcx),%rcx + .byte 102,15,56,222,224 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Ldec_loop3 + + .byte 102,15,56,222,209 +@@ -146,15 +146,15 @@ _aesni_decrypt3: + .type _aesni_encrypt4,@function + .align 16 + _aesni_encrypt4: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + xorps %xmm0,%xmm5 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + + .Lenc_loop4: + .byte 102,15,56,220,209 +@@ -162,13 +162,13 @@ _aesni_encrypt4: + decl %eax + .byte 102,15,56,220,225 + .byte 102,15,56,220,233 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leaq 32(%rcx),%rcx + .byte 102,15,56,220,224 + .byte 102,15,56,220,232 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Lenc_loop4 + + .byte 102,15,56,220,209 +@@ -184,15 +184,15 @@ _aesni_encrypt4: + .type _aesni_decrypt4,@function + .align 16 + _aesni_decrypt4: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + xorps %xmm0,%xmm5 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + + .Ldec_loop4: + .byte 102,15,56,222,209 +@@ -200,13 +200,13 @@ _aesni_decrypt4: + decl %eax + .byte 102,15,56,222,225 + .byte 102,15,56,222,233 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 + leaq 32(%rcx),%rcx + .byte 102,15,56,222,224 + .byte 102,15,56,222,232 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Ldec_loop4 + + .byte 102,15,56,222,209 +@@ -222,9 +222,9 @@ _aesni_decrypt4: + .type _aesni_encrypt6,@function + .align 16 + _aesni_encrypt6: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 +@@ -238,7 +238,7 @@ _aesni_encrypt6: + pxor %xmm0,%xmm7 + decl %eax + .byte 102,15,56,220,241 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + .byte 102,15,56,220,249 + jmp .Lenc_loop6_enter + .align 16 +@@ -251,7 +251,7 @@ _aesni_encrypt6: + .byte 102,15,56,220,241 + .byte 102,15,56,220,249 + .Lenc_loop6_enter: +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leaq 32(%rcx),%rcx +@@ -259,7 +259,7 @@ _aesni_encrypt6: + .byte 102,15,56,220,232 + .byte 102,15,56,220,240 + .byte 102,15,56,220,248 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Lenc_loop6 + + .byte 102,15,56,220,209 +@@ -279,9 +279,9 @@ _aesni_encrypt6: + .type _aesni_decrypt6,@function + .align 16 + _aesni_decrypt6: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 +@@ -295,7 +295,7 @@ _aesni_decrypt6: + pxor %xmm0,%xmm7 + decl %eax + .byte 102,15,56,222,241 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + .byte 102,15,56,222,249 + jmp .Ldec_loop6_enter + .align 16 +@@ -308,7 +308,7 @@ _aesni_decrypt6: + .byte 102,15,56,222,241 + .byte 102,15,56,222,249 + .Ldec_loop6_enter: +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 + leaq 32(%rcx),%rcx +@@ -316,7 +316,7 @@ _aesni_decrypt6: + .byte 102,15,56,222,232 + .byte 102,15,56,222,240 + .byte 102,15,56,222,248 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Ldec_loop6 + + .byte 102,15,56,222,209 +@@ -336,9 +336,9 @@ _aesni_decrypt6: + .type _aesni_encrypt8,@function + .align 16 + _aesni_encrypt8: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 +@@ -355,10 +355,10 @@ _aesni_encrypt8: + pxor %xmm0,%xmm8 + .byte 102,15,56,220,249 + pxor %xmm0,%xmm9 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + .byte 102,68,15,56,220,193 + .byte 102,68,15,56,220,201 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + jmp .Lenc_loop8_enter + .align 16 + .Lenc_loop8: +@@ -371,7 +371,7 @@ _aesni_encrypt8: + .byte 102,15,56,220,249 + .byte 102,68,15,56,220,193 + .byte 102,68,15,56,220,201 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .Lenc_loop8_enter: + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 +@@ -382,7 +382,7 @@ _aesni_encrypt8: + .byte 102,15,56,220,248 + .byte 102,68,15,56,220,192 + .byte 102,68,15,56,220,200 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Lenc_loop8 + + .byte 102,15,56,220,209 +@@ -406,9 +406,9 @@ _aesni_encrypt8: + .type _aesni_decrypt8,@function + .align 16 + _aesni_decrypt8: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 +@@ -425,10 +425,10 @@ _aesni_decrypt8: + pxor %xmm0,%xmm8 + .byte 102,15,56,222,249 + pxor %xmm0,%xmm9 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + .byte 102,68,15,56,222,193 + .byte 102,68,15,56,222,201 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + jmp .Ldec_loop8_enter + .align 16 + .Ldec_loop8: +@@ -441,7 +441,7 @@ _aesni_decrypt8: + .byte 102,15,56,222,249 + .byte 102,68,15,56,222,193 + .byte 102,68,15,56,222,201 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .Ldec_loop8_enter: + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 +@@ -452,7 +452,7 @@ _aesni_decrypt8: + .byte 102,15,56,222,248 + .byte 102,68,15,56,222,192 + .byte 102,68,15,56,222,200 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Ldec_loop8 + + .byte 102,15,56,222,209 +@@ -481,7 +481,7 @@ aesni_ecb_encrypt: + jz .Lecb_ret + + movl 240(%rcx),%eax +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + movq %rcx,%r11 + movl %eax,%r10d + testl %r8d,%r8d +@@ -572,14 +572,14 @@ aesni_ecb_encrypt: + jmp .Lecb_ret + .align 16 + .Lecb_enc_one: +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_enc1_3: + .byte 102,15,56,220,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_3 + .byte 102,15,56,221,209 +@@ -670,7 +670,7 @@ aesni_ecb_encrypt: + + call _aesni_decrypt8 + +- movaps (%r11),%xmm0 ++ movups (%r11),%xmm0 + subq $128,%rdx + jnc .Lecb_dec_loop8 + +@@ -705,7 +705,7 @@ aesni_ecb_encrypt: + movups 80(%rdi),%xmm7 + je .Lecb_dec_six + movups 96(%rdi),%xmm8 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + call _aesni_decrypt8 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) +@@ -717,14 +717,14 @@ aesni_ecb_encrypt: + jmp .Lecb_ret + .align 16 + .Lecb_dec_one: +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_dec1_4: + .byte 102,15,56,222,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_4 + .byte 102,15,56,223,209 +@@ -779,54 +779,54 @@ aesni_ecb_encrypt: + .type aesni_ccm64_encrypt_blocks,@function + .align 16 + aesni_ccm64_encrypt_blocks: ++ movl 240(%rcx),%eax + movdqu (%r8),%xmm9 +- movdqu (%r9),%xmm3 +- movdqa .Lincrement64(%rip),%xmm8 +- movdqa .Lbswap_mask(%rip),%xmm9 +-.byte 102,69,15,56,0,201 ++ movdqa .Lincrement64(%rip),%xmm6 ++ movdqa .Lbswap_mask(%rip),%xmm7 + +- movl 240(%rcx),%eax +- movq %rcx,%r11 +- movl %eax,%r10d ++ shrl $1,%eax ++ leaq 0(%rcx),%r11 ++ movdqu (%r9),%xmm3 + movdqa %xmm9,%xmm2 +- ++ movl %eax,%r10d ++ jmp .Lccm64_enc_outer ++.align 16 + .Lccm64_enc_outer: +- movups (%rdi),%xmm8 +-.byte 102,65,15,56,0,209 +- movq %r11,%rcx ++ movups (%r11),%xmm0 + movl %r10d,%eax ++ movups (%rdi),%xmm8 + +- movaps (%rcx),%xmm0 +- shrl $1,%eax +- movaps 16(%rcx),%xmm1 +- xorps %xmm0,%xmm8 +- leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +- xorps %xmm3,%xmm8 +- movaps (%rcx),%xmm0 ++ movups 16(%r11),%xmm1 ++ xorps %xmm8,%xmm0 ++ leaq 32(%r11),%rcx ++ xorps %xmm0,%xmm3 ++ movups (%rcx),%xmm0 + + .Lccm64_enc2_loop: + .byte 102,15,56,220,209 + decl %eax + .byte 102,15,56,220,217 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,220,208 + leaq 32(%rcx),%rcx + .byte 102,15,56,220,216 +- movaps 0(%rcx),%xmm0 ++ movups 0(%rcx),%xmm0 + jnz .Lccm64_enc2_loop ++.byte 102,68,15,56,0,207 + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 ++ paddq %xmm6,%xmm9 + .byte 102,15,56,221,208 + .byte 102,15,56,221,216 + +- paddq %xmm8,%xmm9 + decq %rdx + leaq 16(%rdi),%rdi + xorps %xmm2,%xmm8 + movdqa %xmm9,%xmm2 + movups %xmm8,(%rsi) + leaq 16(%rsi),%rsi ++.byte 102,68,15,56,0,207 + jnz .Lccm64_enc_outer + + movups %xmm3,(%r9) +@@ -836,35 +836,36 @@ aesni_ccm64_encrypt_blocks: + .type aesni_ccm64_decrypt_blocks,@function + .align 16 + aesni_ccm64_decrypt_blocks: +- movdqu (%r8),%xmm9 ++ movl 240(%rcx),%eax ++ movups (%r8),%xmm9 + movdqu (%r9),%xmm3 +- movdqa .Lincrement64(%rip),%xmm8 +- movdqa .Lbswap_mask(%rip),%xmm9 ++ movdqa .Lincrement64(%rip),%xmm6 ++ movdqa .Lbswap_mask(%rip),%xmm7 + +- movl 240(%rcx),%eax +- movdqa %xmm9,%xmm2 +-.byte 102,69,15,56,0,201 ++ movaps %xmm9,%xmm2 + movl %eax,%r10d + movq %rcx,%r11 +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++.byte 102,68,15,56,0,207 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_enc1_5: + .byte 102,15,56,220,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_5 + .byte 102,15,56,221,209 +-.Lccm64_dec_outer: +- paddq %xmm8,%xmm9 + movups (%rdi),%xmm8 ++ paddq %xmm6,%xmm9 ++.byte 102,68,15,56,0,207 ++ leaq 16(%rdi),%rdi ++ jmp .Lccm64_dec_outer ++.align 16 ++.Lccm64_dec_outer: + xorps %xmm2,%xmm8 + movdqa %xmm9,%xmm2 +- leaq 16(%rdi),%rdi +-.byte 102,65,15,56,0,209 +- movq %r11,%rcx + movl %r10d,%eax + movups %xmm8,(%rsi) + leaq 16(%rsi),%rsi +@@ -872,41 +873,48 @@ aesni_ccm64_decrypt_blocks: + subq $1,%rdx + jz .Lccm64_dec_break + +- movaps (%rcx),%xmm0 ++ movups (%r11),%xmm0 + shrl $1,%eax +- movaps 16(%rcx),%xmm1 ++ movups 16(%r11),%xmm1 + xorps %xmm0,%xmm8 +- leaq 32(%rcx),%rcx ++ leaq 32(%r11),%rcx + xorps %xmm0,%xmm2 + xorps %xmm8,%xmm3 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + + .Lccm64_dec2_loop: + .byte 102,15,56,220,209 + decl %eax + .byte 102,15,56,220,217 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,220,208 + leaq 32(%rcx),%rcx + .byte 102,15,56,220,216 +- movaps 0(%rcx),%xmm0 ++ movups 0(%rcx),%xmm0 + jnz .Lccm64_dec2_loop ++ movups (%rdi),%xmm8 ++ paddq %xmm6,%xmm9 + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 ++.byte 102,68,15,56,0,207 ++ leaq 16(%rdi),%rdi + .byte 102,15,56,221,208 ++.byte 102,15,56,221,216 + jmp .Lccm64_dec_outer + + .align 16 + .Lccm64_dec_break: +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 +- leaq 32(%rcx),%rcx +- xorps %xmm0,%xmm3 ++ ++ movups (%r11),%xmm0 ++ movups 16(%r11),%xmm1 ++ xorps %xmm0,%xmm8 ++ leaq 32(%r11),%r11 ++ xorps %xmm8,%xmm3 + .Loop_enc1_6: + .byte 102,15,56,220,217 + decl %eax +- movaps (%rcx),%xmm1 +- leaq 16(%rcx),%rcx ++ movups (%r11),%xmm1 ++ leaq 16(%r11),%r11 + jnz .Loop_enc1_6 + .byte 102,15,56,221,217 + movups %xmm3,(%r9) +@@ -960,10 +968,10 @@ aesni_ctr32_encrypt_blocks: + .Lctr32_loop6: + pshufd $192,%xmm13,%xmm5 + por %xmm14,%xmm2 +- movaps (%r11),%xmm0 ++ movups (%r11),%xmm0 + pshufd $128,%xmm13,%xmm6 + por %xmm14,%xmm3 +- movaps 16(%r11),%xmm1 ++ movups 16(%r11),%xmm1 + pshufd $64,%xmm13,%xmm7 + por %xmm14,%xmm4 + por %xmm14,%xmm5 +@@ -986,7 +994,7 @@ aesni_ctr32_encrypt_blocks: + pxor %xmm0,%xmm6 + .byte 102,15,56,220,233 + pxor %xmm0,%xmm7 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + decl %eax + .byte 102,15,56,220,241 + .byte 102,15,56,220,249 +@@ -1001,7 +1009,7 @@ aesni_ctr32_encrypt_blocks: + .byte 102,15,56,220,241 + .byte 102,15,56,220,249 + .Lctr32_enc_loop6_enter: +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leaq 32(%rcx),%rcx +@@ -1009,7 +1017,7 @@ aesni_ctr32_encrypt_blocks: + .byte 102,15,56,220,232 + .byte 102,15,56,220,240 + .byte 102,15,56,220,248 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Lctr32_enc_loop6 + + .byte 102,15,56,220,209 +@@ -1109,14 +1117,14 @@ aesni_ctr32_encrypt_blocks: + movups (%rdi),%xmm8 + movl 240(%rcx),%eax + .Lctr32_one: +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_enc1_7: + .byte 102,15,56,220,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_7 + .byte 102,15,56,221,209 +@@ -1168,14 +1176,14 @@ aesni_xts_encrypt: + movups (%r9),%xmm15 + movl 240(%r8),%eax + movl 240(%rcx),%r10d +- movaps (%r8),%xmm0 +- movaps 16(%r8),%xmm1 ++ movups (%r8),%xmm0 ++ movups 16(%r8),%xmm1 + leaq 32(%r8),%r8 + xorps %xmm0,%xmm15 + .Loop_enc1_8: + .byte 102,68,15,56,220,249 + decl %eax +- movaps (%r8),%xmm1 ++ movups (%r8),%xmm1 + leaq 16(%r8),%r8 + jnz .Loop_enc1_8 + .byte 102,68,15,56,221,249 +@@ -1242,13 +1250,13 @@ aesni_xts_encrypt: + movdqu 80(%rdi),%xmm7 + leaq 96(%rdi),%rdi + pxor %xmm13,%xmm5 +- movaps (%r11),%xmm0 ++ movups (%r11),%xmm0 + pxor %xmm14,%xmm6 + pxor %xmm15,%xmm7 + + + +- movaps 16(%r11),%xmm1 ++ movups 16(%r11),%xmm1 + pxor %xmm0,%xmm2 + pxor %xmm0,%xmm3 + movdqa %xmm10,0(%rsp) +@@ -1264,7 +1272,7 @@ aesni_xts_encrypt: + movdqa %xmm13,48(%rsp) + .byte 102,15,56,220,233 + pxor %xmm0,%xmm7 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + decl %eax + movdqa %xmm14,64(%rsp) + .byte 102,15,56,220,241 +@@ -1284,7 +1292,7 @@ aesni_xts_encrypt: + .byte 102,15,56,220,241 + .byte 102,15,56,220,249 + .Lxts_enc_loop6_enter: +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leaq 32(%rcx),%rcx +@@ -1292,7 +1300,7 @@ aesni_xts_encrypt: + .byte 102,15,56,220,232 + .byte 102,15,56,220,240 + .byte 102,15,56,220,248 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Lxts_enc_loop6 + + pshufd $19,%xmm14,%xmm9 +@@ -1307,7 +1315,7 @@ aesni_xts_encrypt: + .byte 102,15,56,220,233 + .byte 102,15,56,220,241 + .byte 102,15,56,220,249 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + + pshufd $19,%xmm14,%xmm9 + pxor %xmm14,%xmm14 +@@ -1322,7 +1330,7 @@ aesni_xts_encrypt: + .byte 102,15,56,220,232 + .byte 102,15,56,220,240 + .byte 102,15,56,220,248 +- movaps 32(%rcx),%xmm0 ++ movups 32(%rcx),%xmm0 + + pshufd $19,%xmm14,%xmm9 + pxor %xmm14,%xmm14 +@@ -1432,14 +1440,14 @@ aesni_xts_encrypt: + movups (%rdi),%xmm2 + leaq 16(%rdi),%rdi + xorps %xmm10,%xmm2 +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_enc1_9: + .byte 102,15,56,220,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_9 + .byte 102,15,56,221,209 +@@ -1537,14 +1545,14 @@ aesni_xts_encrypt: + + movups -16(%rsi),%xmm2 + xorps %xmm10,%xmm2 +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_enc1_10: + .byte 102,15,56,220,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_10 + .byte 102,15,56,221,209 +@@ -1564,14 +1572,14 @@ aesni_xts_decrypt: + movups (%r9),%xmm15 + movl 240(%r8),%eax + movl 240(%rcx),%r10d +- movaps (%r8),%xmm0 +- movaps 16(%r8),%xmm1 ++ movups (%r8),%xmm0 ++ movups 16(%r8),%xmm1 + leaq 32(%r8),%r8 + xorps %xmm0,%xmm15 + .Loop_enc1_11: + .byte 102,68,15,56,220,249 + decl %eax +- movaps (%r8),%xmm1 ++ movups (%r8),%xmm1 + leaq 16(%r8),%r8 + jnz .Loop_enc1_11 + .byte 102,68,15,56,221,249 +@@ -1644,13 +1652,13 @@ aesni_xts_decrypt: + movdqu 80(%rdi),%xmm7 + leaq 96(%rdi),%rdi + pxor %xmm13,%xmm5 +- movaps (%r11),%xmm0 ++ movups (%r11),%xmm0 + pxor %xmm14,%xmm6 + pxor %xmm15,%xmm7 + + + +- movaps 16(%r11),%xmm1 ++ movups 16(%r11),%xmm1 + pxor %xmm0,%xmm2 + pxor %xmm0,%xmm3 + movdqa %xmm10,0(%rsp) +@@ -1666,7 +1674,7 @@ aesni_xts_decrypt: + movdqa %xmm13,48(%rsp) + .byte 102,15,56,222,233 + pxor %xmm0,%xmm7 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + decl %eax + movdqa %xmm14,64(%rsp) + .byte 102,15,56,222,241 +@@ -1686,7 +1694,7 @@ aesni_xts_decrypt: + .byte 102,15,56,222,241 + .byte 102,15,56,222,249 + .Lxts_dec_loop6_enter: +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 + leaq 32(%rcx),%rcx +@@ -1694,7 +1702,7 @@ aesni_xts_decrypt: + .byte 102,15,56,222,232 + .byte 102,15,56,222,240 + .byte 102,15,56,222,248 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + jnz .Lxts_dec_loop6 + + pshufd $19,%xmm14,%xmm9 +@@ -1709,7 +1717,7 @@ aesni_xts_decrypt: + .byte 102,15,56,222,233 + .byte 102,15,56,222,241 + .byte 102,15,56,222,249 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + + pshufd $19,%xmm14,%xmm9 + pxor %xmm14,%xmm14 +@@ -1724,7 +1732,7 @@ aesni_xts_decrypt: + .byte 102,15,56,222,232 + .byte 102,15,56,222,240 + .byte 102,15,56,222,248 +- movaps 32(%rcx),%xmm0 ++ movups 32(%rcx),%xmm0 + + pshufd $19,%xmm14,%xmm9 + pxor %xmm14,%xmm14 +@@ -1843,14 +1851,14 @@ aesni_xts_decrypt: + movups (%rdi),%xmm2 + leaq 16(%rdi),%rdi + xorps %xmm10,%xmm2 +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_dec1_12: + .byte 102,15,56,222,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_12 + .byte 102,15,56,223,209 +@@ -1947,14 +1955,14 @@ aesni_xts_decrypt: + + movups (%rdi),%xmm2 + xorps %xmm11,%xmm2 +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_dec1_13: + .byte 102,15,56,222,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_13 + .byte 102,15,56,223,209 +@@ -1977,14 +1985,14 @@ aesni_xts_decrypt: + + movups (%rsi),%xmm2 + xorps %xmm10,%xmm2 +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_dec1_14: + .byte 102,15,56,222,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_14 + .byte 102,15,56,223,209 +@@ -2019,15 +2027,15 @@ aesni_cbc_encrypt: + movups (%rdi),%xmm3 + leaq 16(%rdi),%rdi + +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm3 + leaq 32(%rcx),%rcx + xorps %xmm3,%xmm2 + .Loop_enc1_15: + .byte 102,15,56,220,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_15 + .byte 102,15,56,221,209 +@@ -2074,10 +2082,10 @@ aesni_cbc_encrypt: + movups %xmm9,(%rsi) + leaq 16(%rsi),%rsi + .Lcbc_dec_loop8_enter: +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + + leaq 32(%rcx),%rcx + movdqu 32(%rdi),%xmm4 +@@ -2101,10 +2109,10 @@ aesni_cbc_encrypt: + pxor %xmm0,%xmm8 + .byte 102,15,56,222,249 + pxor %xmm0,%xmm9 +- movaps (%rcx),%xmm0 ++ movups (%rcx),%xmm0 + .byte 102,68,15,56,222,193 + .byte 102,68,15,56,222,201 +- movaps 16(%rcx),%xmm1 ++ movups 16(%rcx),%xmm1 + + call .Ldec_loop8_enter + +@@ -2202,14 +2210,14 @@ aesni_cbc_encrypt: + jmp .Lcbc_dec_tail_collected + .align 16 + .Lcbc_dec_one: +- movaps (%rcx),%xmm0 +- movaps 16(%rcx),%xmm1 ++ movups (%rcx),%xmm0 ++ movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 + .Loop_dec1_16: + .byte 102,15,56,222,209 + decl %eax +- movaps (%rcx),%xmm1 ++ movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_16 + .byte 102,15,56,223,209 +@@ -2332,28 +2340,28 @@ aesni_set_decrypt_key: + jnz .Ldec_key_ret + leaq 16(%rdx,%rsi,1),%rdi + +- movaps (%rdx),%xmm0 +- movaps (%rdi),%xmm1 +- movaps %xmm0,(%rdi) +- movaps %xmm1,(%rdx) ++ movups (%rdx),%xmm0 ++ movups (%rdi),%xmm1 ++ movups %xmm0,(%rdi) ++ movups %xmm1,(%rdx) + leaq 16(%rdx),%rdx + leaq -16(%rdi),%rdi + + .Ldec_key_inverse: +- movaps (%rdx),%xmm0 +- movaps (%rdi),%xmm1 ++ movups (%rdx),%xmm0 ++ movups (%rdi),%xmm1 + .byte 102,15,56,219,192 + .byte 102,15,56,219,201 + leaq 16(%rdx),%rdx + leaq -16(%rdi),%rdi +- movaps %xmm0,16(%rdi) +- movaps %xmm1,-16(%rdx) ++ movups %xmm0,16(%rdi) ++ movups %xmm1,-16(%rdx) + cmpq %rdx,%rdi + ja .Ldec_key_inverse + +- movaps (%rdx),%xmm0 ++ movups (%rdx),%xmm0 + .byte 102,15,56,219,192 +- movaps %xmm0,(%rdi) ++ movups %xmm0,(%rdi) + .Ldec_key_ret: + addq $8,%rsp + .byte 0xf3,0xc3 +@@ -2383,7 +2391,7 @@ __aesni_set_encrypt_key: + + .L10rounds: + movl $9,%esi +- movaps %xmm0,(%rdx) ++ movups %xmm0,(%rdx) + .byte 102,15,58,223,200,1 + call .Lkey_expansion_128_cold + .byte 102,15,58,223,200,2 +@@ -2404,7 +2412,7 @@ __aesni_set_encrypt_key: + call .Lkey_expansion_128 + .byte 102,15,58,223,200,54 + call .Lkey_expansion_128 +- movaps %xmm0,(%rax) ++ movups %xmm0,(%rax) + movl %esi,80(%rax) + xorl %eax,%eax + jmp .Lenc_key_ret +@@ -2413,7 +2421,7 @@ __aesni_set_encrypt_key: + .L12rounds: + movq 16(%rdi),%xmm2 + movl $11,%esi +- movaps %xmm0,(%rdx) ++ movups %xmm0,(%rdx) + .byte 102,15,58,223,202,1 + call .Lkey_expansion_192a_cold + .byte 102,15,58,223,202,2 +@@ -2430,7 +2438,7 @@ __aesni_set_encrypt_key: + call .Lkey_expansion_192a + .byte 102,15,58,223,202,128 + call .Lkey_expansion_192b +- movaps %xmm0,(%rax) ++ movups %xmm0,(%rax) + movl %esi,48(%rax) + xorq %rax,%rax + jmp .Lenc_key_ret +@@ -2440,8 +2448,8 @@ __aesni_set_encrypt_key: + movups 16(%rdi),%xmm2 + movl $13,%esi + leaq 16(%rax),%rax +- movaps %xmm0,(%rdx) +- movaps %xmm2,16(%rdx) ++ movups %xmm0,(%rdx) ++ movups %xmm2,16(%rdx) + .byte 102,15,58,223,202,1 + call .Lkey_expansion_256a_cold + .byte 102,15,58,223,200,1 +@@ -2468,7 +2476,7 @@ __aesni_set_encrypt_key: + call .Lkey_expansion_256b + .byte 102,15,58,223,202,64 + call .Lkey_expansion_256a +- movaps %xmm0,(%rax) ++ movups %xmm0,(%rax) + movl %esi,16(%rax) + xorq %rax,%rax + jmp .Lenc_key_ret +@@ -2483,7 +2491,7 @@ __aesni_set_encrypt_key: + + .align 16 + .Lkey_expansion_128: +- movaps %xmm0,(%rax) ++ movups %xmm0,(%rax) + leaq 16(%rax),%rax + .Lkey_expansion_128_cold: + shufps $16,%xmm0,%xmm4 +@@ -2496,7 +2504,7 @@ __aesni_set_encrypt_key: + + .align 16 + .Lkey_expansion_192a: +- movaps %xmm0,(%rax) ++ movups %xmm0,(%rax) + leaq 16(%rax),%rax + .Lkey_expansion_192a_cold: + movaps %xmm2,%xmm5 +@@ -2518,15 +2526,15 @@ __aesni_set_encrypt_key: + .Lkey_expansion_192b: + movaps %xmm0,%xmm3 + shufps $68,%xmm0,%xmm5 +- movaps %xmm5,(%rax) ++ movups %xmm5,(%rax) + shufps $78,%xmm2,%xmm3 +- movaps %xmm3,16(%rax) ++ movups %xmm3,16(%rax) + leaq 32(%rax),%rax + jmp .Lkey_expansion_192b_warm + + .align 16 + .Lkey_expansion_256a: +- movaps %xmm2,(%rax) ++ movups %xmm2,(%rax) + leaq 16(%rax),%rax + .Lkey_expansion_256a_cold: + shufps $16,%xmm0,%xmm4 +@@ -2539,7 +2547,7 @@ __aesni_set_encrypt_key: + + .align 16 + .Lkey_expansion_256b: +- movaps %xmm0,(%rax) ++ movups %xmm0,(%rax) + leaq 16(%rax),%rax + + shufps $16,%xmm2,%xmm4 +diff --git a/lib/accelerated/intel/asm/appro-aes-x86.s b/lib/accelerated/intel/asm/appro-aes-x86.s +index a8dc2ac..2084749 100644 +--- a/lib/accelerated/intel/asm/appro-aes-x86.s ++++ b/lib/accelerated/intel/asm/appro-aes-x86.s +@@ -47,14 +47,14 @@ aesni_encrypt: + movups (%eax),%xmm2 + movl 240(%edx),%ecx + movl 8(%esp),%eax +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L000enc1_loop_1: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L000enc1_loop_1 + .byte 102,15,56,221,209 +@@ -71,14 +71,14 @@ aesni_decrypt: + movups (%eax),%xmm2 + movl 240(%edx),%ecx + movl 8(%esp),%eax +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L001dec1_loop_2: + .byte 102,15,56,222,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L001dec1_loop_2 + .byte 102,15,56,223,209 +@@ -88,25 +88,25 @@ aesni_decrypt: + .type _aesni_encrypt3,@function + .align 16 + _aesni_encrypt3: +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + shrl $1,%ecx +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .L002enc3_loop: + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 + decl %ecx + .byte 102,15,56,220,225 +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leal 32(%edx),%edx + .byte 102,15,56,220,224 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L002enc3_loop + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 +@@ -119,25 +119,25 @@ _aesni_encrypt3: + .type _aesni_decrypt3,@function + .align 16 + _aesni_decrypt3: +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + shrl $1,%ecx +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .L003dec3_loop: + .byte 102,15,56,222,209 + .byte 102,15,56,222,217 + decl %ecx + .byte 102,15,56,222,225 +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 + leal 32(%edx),%edx + .byte 102,15,56,222,224 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L003dec3_loop + .byte 102,15,56,222,209 + .byte 102,15,56,222,217 +@@ -150,28 +150,28 @@ _aesni_decrypt3: + .type _aesni_encrypt4,@function + .align 16 + _aesni_encrypt4: +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + shrl $1,%ecx + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 + pxor %xmm0,%xmm5 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .L004enc4_loop: + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 + decl %ecx + .byte 102,15,56,220,225 + .byte 102,15,56,220,233 +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leal 32(%edx),%edx + .byte 102,15,56,220,224 + .byte 102,15,56,220,232 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L004enc4_loop + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 +@@ -186,28 +186,28 @@ _aesni_encrypt4: + .type _aesni_decrypt4,@function + .align 16 + _aesni_decrypt4: +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + shrl $1,%ecx + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 + pxor %xmm0,%xmm5 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .L005dec4_loop: + .byte 102,15,56,222,209 + .byte 102,15,56,222,217 + decl %ecx + .byte 102,15,56,222,225 + .byte 102,15,56,222,233 +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 + leal 32(%edx),%edx + .byte 102,15,56,222,224 + .byte 102,15,56,222,232 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L005dec4_loop + .byte 102,15,56,222,209 + .byte 102,15,56,222,217 +@@ -222,9 +222,9 @@ _aesni_decrypt4: + .type _aesni_encrypt6,@function + .align 16 + _aesni_encrypt6: +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + shrl $1,%ecx +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 +@@ -238,7 +238,7 @@ _aesni_encrypt6: + .byte 102,15,56,220,233 + pxor %xmm0,%xmm7 + .byte 102,15,56,220,241 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .byte 102,15,56,220,249 + jmp .L_aesni_encrypt6_enter + .align 16 +@@ -252,7 +252,7 @@ _aesni_encrypt6: + .byte 102,15,56,220,249 + .align 16 + .L_aesni_encrypt6_enter: +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,220,208 + .byte 102,15,56,220,216 + leal 32(%edx),%edx +@@ -260,7 +260,7 @@ _aesni_encrypt6: + .byte 102,15,56,220,232 + .byte 102,15,56,220,240 + .byte 102,15,56,220,248 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L006enc6_loop + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 +@@ -279,9 +279,9 @@ _aesni_encrypt6: + .type _aesni_decrypt6,@function + .align 16 + _aesni_decrypt6: +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + shrl $1,%ecx +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 +@@ -295,7 +295,7 @@ _aesni_decrypt6: + .byte 102,15,56,222,233 + pxor %xmm0,%xmm7 + .byte 102,15,56,222,241 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .byte 102,15,56,222,249 + jmp .L_aesni_decrypt6_enter + .align 16 +@@ -309,7 +309,7 @@ _aesni_decrypt6: + .byte 102,15,56,222,249 + .align 16 + .L_aesni_decrypt6_enter: +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,222,208 + .byte 102,15,56,222,216 + leal 32(%edx),%edx +@@ -317,7 +317,7 @@ _aesni_decrypt6: + .byte 102,15,56,222,232 + .byte 102,15,56,222,240 + .byte 102,15,56,222,248 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L007dec6_loop + .byte 102,15,56,222,209 + .byte 102,15,56,222,217 +@@ -418,14 +418,14 @@ aesni_ecb_encrypt: + jmp .L008ecb_ret + .align 16 + .L013ecb_enc_one: +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L017enc1_loop_3: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L017enc1_loop_3 + .byte 102,15,56,221,209 +@@ -521,14 +521,14 @@ aesni_ecb_encrypt: + jmp .L008ecb_ret + .align 16 + .L021ecb_dec_one: +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L025dec1_loop_4: + .byte 102,15,56,222,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L025dec1_loop_4 + .byte 102,15,56,223,209 +@@ -583,56 +583,55 @@ aesni_ccm64_encrypt_blocks: + movl %ebp,48(%esp) + movdqu (%ebx),%xmm7 + movdqu (%ecx),%xmm3 ++ movl 240(%edx),%ecx + movl $202182159,(%esp) + movl $134810123,4(%esp) + movl $67438087,8(%esp) + movl $66051,12(%esp) +- movl $1,%ecx ++ movl $1,%ebx + xorl %ebp,%ebp +- movl %ecx,16(%esp) ++ movl %ebx,16(%esp) + movl %ebp,20(%esp) + movl %ebp,24(%esp) + movl %ebp,28(%esp) +- movdqa (%esp),%xmm5 +-.byte 102,15,56,0,253 +- movl 240(%edx),%ecx +- movl %edx,%ebp +- movl %ecx,%ebx ++ shrl $1,%ecx ++ leal (%edx),%ebp + movdqa %xmm7,%xmm2 ++ movl %ecx,%ebx ++ movdqa (%esp),%xmm5 + .L026ccm64_enc_outer: +- movups (%esi),%xmm6 +-.byte 102,15,56,0,213 +- movl %ebp,%edx ++ movups (%ebp),%xmm0 + movl %ebx,%ecx +- movaps (%edx),%xmm0 +- shrl $1,%ecx +- movaps 16(%edx),%xmm1 +- xorps %xmm0,%xmm6 +- leal 32(%edx),%edx ++ movups (%esi),%xmm6 + xorps %xmm0,%xmm2 +- xorps %xmm6,%xmm3 +- movaps (%edx),%xmm0 ++ movups 16(%ebp),%xmm1 ++ xorps %xmm6,%xmm0 ++ leal 32(%ebp),%edx ++ xorps %xmm0,%xmm3 ++ movups (%edx),%xmm0 + .L027ccm64_enc2_loop: + .byte 102,15,56,220,209 + decl %ecx + .byte 102,15,56,220,217 +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,220,208 + leal 32(%edx),%edx + .byte 102,15,56,220,216 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L027ccm64_enc2_loop ++.byte 102,15,56,0,253 + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 ++ paddq 16(%esp),%xmm7 + .byte 102,15,56,221,208 + .byte 102,15,56,221,216 +- paddq 16(%esp),%xmm7 + decl %eax + leal 16(%esi),%esi + xorps %xmm2,%xmm6 + movdqa %xmm7,%xmm2 + movups %xmm6,(%edi) + leal 16(%edi),%edi ++.byte 102,15,56,0,253 + jnz .L026ccm64_enc_outer + movl 48(%esp),%esp + movl 40(%esp),%edi +@@ -664,80 +663,86 @@ aesni_ccm64_decrypt_blocks: + movl %ebp,48(%esp) + movdqu (%ebx),%xmm7 + movdqu (%ecx),%xmm3 ++ movl 240(%edx),%ecx + movl $202182159,(%esp) + movl $134810123,4(%esp) + movl $67438087,8(%esp) + movl $66051,12(%esp) +- movl $1,%ecx ++ movl $1,%ebx + xorl %ebp,%ebp +- movl %ecx,16(%esp) ++ movl %ebx,16(%esp) + movl %ebp,20(%esp) + movl %ebp,24(%esp) + movl %ebp,28(%esp) + movdqa (%esp),%xmm5 + movdqa %xmm7,%xmm2 +-.byte 102,15,56,0,253 +- movl 240(%edx),%ecx + movl %edx,%ebp + movl %ecx,%ebx +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++.byte 102,15,56,0,253 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L028enc1_loop_5: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L028enc1_loop_5 + .byte 102,15,56,221,209 +-.L029ccm64_dec_outer: +- paddq 16(%esp),%xmm7 + movups (%esi),%xmm6 ++ paddq 16(%esp),%xmm7 ++.byte 102,15,56,0,253 ++ leal 16(%esi),%esi ++ jmp .L029ccm64_dec_outer ++.align 16 ++.L029ccm64_dec_outer: + xorps %xmm2,%xmm6 + movdqa %xmm7,%xmm2 +- leal 16(%esi),%esi +-.byte 102,15,56,0,213 +- movl %ebp,%edx + movl %ebx,%ecx + movups %xmm6,(%edi) + leal 16(%edi),%edi + subl $1,%eax + jz .L030ccm64_dec_break +- movaps (%edx),%xmm0 ++ movups (%ebp),%xmm0 + shrl $1,%ecx +- movaps 16(%edx),%xmm1 ++ movups 16(%ebp),%xmm1 + xorps %xmm0,%xmm6 +- leal 32(%edx),%edx ++ leal 32(%ebp),%edx + xorps %xmm0,%xmm2 + xorps %xmm6,%xmm3 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .L031ccm64_dec2_loop: + .byte 102,15,56,220,209 + decl %ecx + .byte 102,15,56,220,217 +- movaps 16(%edx),%xmm1 ++ movups 16(%edx),%xmm1 + .byte 102,15,56,220,208 + leal 32(%edx),%edx + .byte 102,15,56,220,216 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + jnz .L031ccm64_dec2_loop ++ movups (%esi),%xmm6 ++ paddq 16(%esp),%xmm7 + .byte 102,15,56,220,209 + .byte 102,15,56,220,217 ++.byte 102,15,56,0,253 ++ leal 16(%esi),%esi + .byte 102,15,56,221,208 + .byte 102,15,56,221,216 + jmp .L029ccm64_dec_outer + .align 16 + .L030ccm64_dec_break: +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movl %ebp,%edx ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + xorps %xmm0,%xmm6 + leal 32(%edx),%edx + xorps %xmm6,%xmm3 + .L032enc1_loop_6: + .byte 102,15,56,220,217 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L032enc1_loop_6 + .byte 102,15,56,221,217 +@@ -826,8 +831,8 @@ aesni_ctr32_encrypt_blocks: + por %xmm1,%xmm5 + por %xmm1,%xmm6 + por %xmm1,%xmm7 +- movaps (%ebp),%xmm0 +- movaps 16(%ebp),%xmm1 ++ movups (%ebp),%xmm0 ++ movups 16(%ebp),%xmm1 + leal 32(%ebp),%edx + decl %ecx + pxor %xmm0,%xmm2 +@@ -841,7 +846,7 @@ aesni_ctr32_encrypt_blocks: + .byte 102,15,56,220,233 + pxor %xmm0,%xmm7 + .byte 102,15,56,220,241 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .byte 102,15,56,220,249 + call .L_aesni_encrypt6_enter + movups (%esi),%xmm1 +@@ -920,14 +925,14 @@ aesni_ctr32_encrypt_blocks: + movups (%ebx),%xmm2 + movl 240(%edx),%ecx + .L037ctr32_one: +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L041enc1_loop_7: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L041enc1_loop_7 + .byte 102,15,56,221,209 +@@ -994,14 +999,14 @@ aesni_xts_encrypt: + movl 40(%esp),%esi + movl 240(%edx),%ecx + movups (%esi),%xmm2 +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L042enc1_loop_8: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L042enc1_loop_8 + .byte 102,15,56,221,209 +@@ -1064,7 +1069,7 @@ aesni_xts_encrypt: + pshufd $19,%xmm0,%xmm7 + movdqa %xmm1,64(%esp) + paddq %xmm1,%xmm1 +- movaps (%ebp),%xmm0 ++ movups (%ebp),%xmm0 + pand %xmm3,%xmm7 + movups (%esi),%xmm2 + pxor %xmm1,%xmm7 +@@ -1082,7 +1087,7 @@ aesni_xts_encrypt: + pxor (%esp),%xmm2 + movdqa %xmm7,80(%esp) + pxor %xmm1,%xmm7 +- movaps 16(%ebp),%xmm1 ++ movups 16(%ebp),%xmm1 + leal 32(%ebp),%edx + pxor 16(%esp),%xmm3 + .byte 102,15,56,220,209 +@@ -1095,7 +1100,7 @@ aesni_xts_encrypt: + .byte 102,15,56,220,233 + pxor %xmm0,%xmm7 + .byte 102,15,56,220,241 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .byte 102,15,56,220,249 + call .L_aesni_encrypt6_enter + movdqa 80(%esp),%xmm1 +@@ -1196,14 +1201,14 @@ aesni_xts_encrypt: + movups (%esi),%xmm2 + leal 16(%esi),%esi + xorps %xmm5,%xmm2 +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L051enc1_loop_9: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L051enc1_loop_9 + .byte 102,15,56,221,209 +@@ -1307,14 +1312,14 @@ aesni_xts_encrypt: + movl %ebx,%ecx + movups -16(%edi),%xmm2 + xorps %xmm5,%xmm2 +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L054enc1_loop_10: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L054enc1_loop_10 + .byte 102,15,56,221,209 +@@ -1341,14 +1346,14 @@ aesni_xts_decrypt: + movl 40(%esp),%esi + movl 240(%edx),%ecx + movups (%esi),%xmm2 +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L055enc1_loop_11: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L055enc1_loop_11 + .byte 102,15,56,221,209 +@@ -1416,7 +1421,7 @@ aesni_xts_decrypt: + pshufd $19,%xmm0,%xmm7 + movdqa %xmm1,64(%esp) + paddq %xmm1,%xmm1 +- movaps (%ebp),%xmm0 ++ movups (%ebp),%xmm0 + pand %xmm3,%xmm7 + movups (%esi),%xmm2 + pxor %xmm1,%xmm7 +@@ -1434,7 +1439,7 @@ aesni_xts_decrypt: + pxor (%esp),%xmm2 + movdqa %xmm7,80(%esp) + pxor %xmm1,%xmm7 +- movaps 16(%ebp),%xmm1 ++ movups 16(%ebp),%xmm1 + leal 32(%ebp),%edx + pxor 16(%esp),%xmm3 + .byte 102,15,56,222,209 +@@ -1447,7 +1452,7 @@ aesni_xts_decrypt: + .byte 102,15,56,222,233 + pxor %xmm0,%xmm7 + .byte 102,15,56,222,241 +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .byte 102,15,56,222,249 + call .L_aesni_decrypt6_enter + movdqa 80(%esp),%xmm1 +@@ -1548,14 +1553,14 @@ aesni_xts_decrypt: + movups (%esi),%xmm2 + leal 16(%esi),%esi + xorps %xmm5,%xmm2 +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L064dec1_loop_12: + .byte 102,15,56,222,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L064dec1_loop_12 + .byte 102,15,56,223,209 +@@ -1656,14 +1661,14 @@ aesni_xts_decrypt: + movl %ebx,%ecx + movups (%esi),%xmm2 + xorps %xmm5,%xmm2 +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L067dec1_loop_13: + .byte 102,15,56,222,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L067dec1_loop_13 + .byte 102,15,56,223,209 +@@ -1683,14 +1688,14 @@ aesni_xts_decrypt: + movl %ebx,%ecx + movups (%edi),%xmm2 + xorps %xmm6,%xmm2 +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L069dec1_loop_14: + .byte 102,15,56,222,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L069dec1_loop_14 + .byte 102,15,56,223,209 +@@ -1740,15 +1745,15 @@ aesni_cbc_encrypt: + .L073cbc_enc_loop: + movups (%esi),%xmm7 + leal 16(%esi),%esi +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + xorps %xmm0,%xmm7 + leal 32(%edx),%edx + xorps %xmm7,%xmm2 + .L074enc1_loop_15: + .byte 102,15,56,220,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L074enc1_loop_15 + .byte 102,15,56,221,209 +@@ -1863,14 +1868,14 @@ aesni_cbc_encrypt: + jmp .L079cbc_dec_tail_collected + .align 16 + .L080cbc_dec_one: +- movaps (%edx),%xmm0 +- movaps 16(%edx),%xmm1 ++ movups (%edx),%xmm0 ++ movups 16(%edx),%xmm1 + leal 32(%edx),%edx + xorps %xmm0,%xmm2 + .L084dec1_loop_16: + .byte 102,15,56,222,209 + decl %ecx +- movaps (%edx),%xmm1 ++ movups (%edx),%xmm1 + leal 16(%edx),%edx + jnz .L084dec1_loop_16 + .byte 102,15,56,223,209 +@@ -1961,7 +1966,7 @@ _aesni_set_encrypt_key: + .align 16 + .L09010rounds: + movl $9,%ecx +- movaps %xmm0,-16(%edx) ++ movups %xmm0,-16(%edx) + .byte 102,15,58,223,200,1 + call .L091key_128_cold + .byte 102,15,58,223,200,2 +@@ -1982,13 +1987,13 @@ _aesni_set_encrypt_key: + call .L092key_128 + .byte 102,15,58,223,200,54 + call .L092key_128 +- movaps %xmm0,(%edx) ++ movups %xmm0,(%edx) + movl %ecx,80(%edx) + xorl %eax,%eax + ret + .align 16 + .L092key_128: +- movaps %xmm0,(%edx) ++ movups %xmm0,(%edx) + leal 16(%edx),%edx + .L091key_128_cold: + shufps $16,%xmm0,%xmm4 +@@ -2002,7 +2007,7 @@ _aesni_set_encrypt_key: + .L08812rounds: + movq 16(%eax),%xmm2 + movl $11,%ecx +- movaps %xmm0,-16(%edx) ++ movups %xmm0,-16(%edx) + .byte 102,15,58,223,202,1 + call .L093key_192a_cold + .byte 102,15,58,223,202,2 +@@ -2019,13 +2024,13 @@ _aesni_set_encrypt_key: + call .L095key_192a + .byte 102,15,58,223,202,128 + call .L094key_192b +- movaps %xmm0,(%edx) ++ movups %xmm0,(%edx) + movl %ecx,48(%edx) + xorl %eax,%eax + ret + .align 16 + .L095key_192a: +- movaps %xmm0,(%edx) ++ movups %xmm0,(%edx) + leal 16(%edx),%edx + .align 16 + .L093key_192a_cold: +@@ -2047,9 +2052,9 @@ _aesni_set_encrypt_key: + .L094key_192b: + movaps %xmm0,%xmm3 + shufps $68,%xmm0,%xmm5 +- movaps %xmm5,(%edx) ++ movups %xmm5,(%edx) + shufps $78,%xmm2,%xmm3 +- movaps %xmm3,16(%edx) ++ movups %xmm3,16(%edx) + leal 32(%edx),%edx + jmp .L096key_192b_warm + .align 16 +@@ -2057,8 +2062,8 @@ _aesni_set_encrypt_key: + movups 16(%eax),%xmm2 + movl $13,%ecx + leal 16(%edx),%edx +- movaps %xmm0,-32(%edx) +- movaps %xmm2,-16(%edx) ++ movups %xmm0,-32(%edx) ++ movups %xmm2,-16(%edx) + .byte 102,15,58,223,202,1 + call .L097key_256a_cold + .byte 102,15,58,223,200,1 +@@ -2085,13 +2090,13 @@ _aesni_set_encrypt_key: + call .L098key_256b + .byte 102,15,58,223,202,64 + call .L099key_256a +- movaps %xmm0,(%edx) ++ movups %xmm0,(%edx) + movl %ecx,16(%edx) + xorl %eax,%eax + ret + .align 16 + .L099key_256a: +- movaps %xmm2,(%edx) ++ movups %xmm2,(%edx) + leal 16(%edx),%edx + .L097key_256a_cold: + shufps $16,%xmm0,%xmm4 +@@ -2103,7 +2108,7 @@ _aesni_set_encrypt_key: + ret + .align 16 + .L098key_256b: +- movaps %xmm0,(%edx) ++ movups %xmm0,(%edx) + leal 16(%edx),%edx + shufps $16,%xmm2,%xmm4 + xorps %xmm4,%xmm2 +@@ -2146,26 +2151,26 @@ aesni_set_decrypt_key: + testl %eax,%eax + jnz .L100dec_key_ret + leal 16(%edx,%ecx,1),%eax +- movaps (%edx),%xmm0 +- movaps (%eax),%xmm1 +- movaps %xmm0,(%eax) +- movaps %xmm1,(%edx) ++ movups (%edx),%xmm0 ++ movups (%eax),%xmm1 ++ movups %xmm0,(%eax) ++ movups %xmm1,(%edx) + leal 16(%edx),%edx + leal -16(%eax),%eax + .L101dec_key_inverse: +- movaps (%edx),%xmm0 +- movaps (%eax),%xmm1 ++ movups (%edx),%xmm0 ++ movups (%eax),%xmm1 + .byte 102,15,56,219,192 + .byte 102,15,56,219,201 + leal 16(%edx),%edx + leal -16(%eax),%eax +- movaps %xmm0,16(%eax) +- movaps %xmm1,-16(%edx) ++ movups %xmm0,16(%eax) ++ movups %xmm1,-16(%edx) + cmpl %edx,%eax + ja .L101dec_key_inverse +- movaps (%edx),%xmm0 ++ movups (%edx),%xmm0 + .byte 102,15,56,219,192 +- movaps %xmm0,(%edx) ++ movups %xmm0,(%edx) + xorl %eax,%eax + .L100dec_key_ret: + ret +-- +1.7.4.1 + diff --git a/0002-Added-note.GNU-stack-to-prevent-marking-the-library-.patch b/0002-Added-note.GNU-stack-to-prevent-marking-the-library-.patch new file mode 100644 index 0000000..07fccb9 --- /dev/null +++ b/0002-Added-note.GNU-stack-to-prevent-marking-the-library-.patch @@ -0,0 +1,57 @@ +From 73b9f4e50612a846d9f1d54c71129caba7be80ce Mon Sep 17 00:00:00 2001 +From: Nikos Mavrogiannopoulos +Date: Mon, 8 Aug 2011 20:02:47 +0200 +Subject: [PATCH 2/6] Added note.GNU-stack to prevent marking the library as using an executable stack. Reported by Andreas Metzler. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + +Signed-off-by: Cristian Rodríguez +--- + lib/accelerated/intel/asm/appro-aes-gcm-x86-64.s | 4 ++++ + lib/accelerated/intel/asm/appro-aes-x86-64.s | 5 +++++ + lib/accelerated/intel/asm/appro-aes-x86.s | 5 +++++ + 3 files changed, 14 insertions(+), 0 deletions(-) + +diff --git a/lib/accelerated/intel/asm/appro-aes-gcm-x86-64.s b/lib/accelerated/intel/asm/appro-aes-gcm-x86-64.s +index 009ec3d..7e3c407 100644 +--- a/lib/accelerated/intel/asm/appro-aes-gcm-x86-64.s ++++ b/lib/accelerated/intel/asm/appro-aes-gcm-x86-64.s +@@ -1062,3 +1062,7 @@ gcm_ghash_clmul: + + .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 + .align 64 ++ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",%progbits ++#endif +diff --git a/lib/accelerated/intel/asm/appro-aes-x86-64.s b/lib/accelerated/intel/asm/appro-aes-x86-64.s +index f286fb1..675e112 100644 +--- a/lib/accelerated/intel/asm/appro-aes-x86-64.s ++++ b/lib/accelerated/intel/asm/appro-aes-x86-64.s +@@ -2571,3 +2571,8 @@ __aesni_set_encrypt_key: + + .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 + .align 64 ++ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",%progbits ++#endif ++ +diff --git a/lib/accelerated/intel/asm/appro-aes-x86.s b/lib/accelerated/intel/asm/appro-aes-x86.s +index 2084749..f095a63 100644 +--- a/lib/accelerated/intel/asm/appro-aes-x86.s ++++ b/lib/accelerated/intel/asm/appro-aes-x86.s +@@ -2179,3 +2179,8 @@ aesni_set_decrypt_key: + .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 + .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 + .byte 115,108,46,111,114,103,62,0 ++ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",%progbits ++#endif ++ +-- +1.7.4.1 + diff --git a/0003-Force-alignment-for-AES-NI-to-the-runtime-rather-tha.patch b/0003-Force-alignment-for-AES-NI-to-the-runtime-rather-tha.patch new file mode 100644 index 0000000..9171197 --- /dev/null +++ b/0003-Force-alignment-for-AES-NI-to-the-runtime-rather-tha.patch @@ -0,0 +1,90 @@ +From 96c632161c8f25ecc1aa55d01c6d5e8aec450792 Mon Sep 17 00:00:00 2001 +From: Nikos Mavrogiannopoulos +Date: Thu, 11 Aug 2011 18:48:44 +0200 +Subject: [PATCH 3/6] Force alignment for AES-NI to the runtime rather than on the structures. + Corrects issue on some systems (reported by Andreas Radke). +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + +Signed-off-by: Cristian Rodríguez +--- + lib/accelerated/intel/aes-x86.c | 11 +++++++---- + lib/accelerated/intel/aes-x86.h | 11 +++-------- + 2 files changed, 10 insertions(+), 12 deletions(-) + +diff --git a/lib/accelerated/intel/aes-x86.c b/lib/accelerated/intel/aes-x86.c +index 53b3bde..970e613 100644 +--- a/lib/accelerated/intel/aes-x86.c ++++ b/lib/accelerated/intel/aes-x86.c +@@ -39,6 +39,9 @@ struct aes_ctx + uint8_t iv[16]; + }; + ++#define ALIGN16(x) \ ++ ((void *)(((unsigned long)(x)+0x0f)&~(0x0f))) ++ + static int + aes_cipher_init (gnutls_cipher_algorithm_t algorithm, void **_ctx) + { +@@ -68,11 +71,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, ALIGN16(&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, ALIGN16(&ctx->expanded_key_dec)); + if (ret != 0) + return gnutls_assert_val (GNUTLS_E_ENCRYPTION_FAILED); + +@@ -94,7 +97,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, ALIGN16(&ctx->expanded_key), ctx->iv, 1); + return 0; + } + +@@ -104,7 +107,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, ALIGN16(&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..a4cac1d 100644 +--- a/lib/accelerated/intel/aes-x86.h ++++ b/lib/accelerated/intel/aes-x86.h +@@ -5,17 +5,12 @@ + + void register_x86_crypto (void); + +-#ifdef __GNUC__ +-# define ALIGN16 __attribute__ ((aligned (16))) +-#else +-# define ALIGN16 +-#endif +- ++#define AES_KEY_ALIGN_SIZE 4 + #define AES_MAXNR 14 + typedef struct + { +- uint32_t ALIGN16 rd_key[4 * (AES_MAXNR + 1)]; +- int rounds; ++ uint32_t rd_key[4 * (AES_MAXNR + 1)+AES_KEY_ALIGN_SIZE]; ++ int rounds; /* unused... */ + } AES_KEY; + + void aesni_ecb_encrypt (const unsigned char *in, unsigned char *out, +-- +1.7.4.1 + diff --git a/0006-Added-AES-256-GCM.-Reported-by-Benjamin-Hof.patch b/0006-Added-AES-256-GCM.-Reported-by-Benjamin-Hof.patch new file mode 100644 index 0000000..6691974 --- /dev/null +++ b/0006-Added-AES-256-GCM.-Reported-by-Benjamin-Hof.patch @@ -0,0 +1,32 @@ +From 5fcee6608c93449456da8e02410eca54b54b0e69 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= +Date: Mon, 15 Aug 2011 23:30:28 -0400 +Subject: [PATCH 6/6] Added AES-256-GCM. Reported by Benjamin Hof. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Conflicts: + + NEWS + +Signed-off-by: Cristian Rodríguez +--- + lib/algorithms/ciphers.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/lib/algorithms/ciphers.c b/lib/algorithms/ciphers.c +index 9bcd4d9..b1ba338 100644 +--- a/lib/algorithms/ciphers.c ++++ b/lib/algorithms/ciphers.c +@@ -52,6 +52,7 @@ static const gnutls_cipher_entry algorithms[] = { + {"AES-192-CBC", GNUTLS_CIPHER_AES_192_CBC, 16, 24, CIPHER_BLOCK, 16, 0, 0}, + {"AES-128-CBC", GNUTLS_CIPHER_AES_128_CBC, 16, 16, CIPHER_BLOCK, 16, 0, 0}, + {"AES-128-GCM", GNUTLS_CIPHER_AES_128_GCM, 16, 16, CIPHER_STREAM, AEAD_IMPLICIT_DATA_SIZE, 0, 1}, ++ {"AES-256-GCM", GNUTLS_CIPHER_AES_256_GCM, 16, 32, CIPHER_STREAM, AEAD_IMPLICIT_DATA_SIZE, 0, 1}, + {"3DES-CBC", GNUTLS_CIPHER_3DES_CBC, 8, 24, CIPHER_BLOCK, 8, 0, 0}, + {"DES-CBC", GNUTLS_CIPHER_DES_CBC, 8, 8, CIPHER_BLOCK, 8, 0, 0}, + {"ARCFOUR-128", GNUTLS_CIPHER_ARCFOUR_128, 1, 16, CIPHER_STREAM, 0, 0, 0}, +-- +1.7.4.1 + diff --git a/gnutls-2.10.5.tar.bz2 b/gnutls-2.10.5.tar.bz2 deleted file mode 100644 index bb25545..0000000 --- a/gnutls-2.10.5.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c086d5426ef04427038db6af1a4dc62ff32694e91e759ebf9bb3380243ebd9c9 -size 7287913 diff --git a/gnutls-3.0.0.tar.xz b/gnutls-3.0.0.tar.xz new file mode 100644 index 0000000..8a01dd9 --- /dev/null +++ b/gnutls-3.0.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aeedcfe5b56d649408b8f135c5be14b6ca3b242a8816685a2324985ebd67e117 +size 4543664 diff --git a/gnutls.changes b/gnutls.changes index 6b42ace..81bf1e3 100644 --- a/gnutls.changes +++ b/gnutls.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Wed Aug 17 22:29:31 UTC 2011 - crrodriguez@opensuse.org + +- Update to version 3.0.0. many fixes see NEWS for details This + changelog only describes important package changes or features. +* Main reason for update is to support Intel AES-NI CPU extensions. +* Bump sonames in the library package accordingly +* C++ apps must now buildrequire libgnutls++-devel +* Software using the openssl emulation must buildrequire + libgnutls-openssl-devel or better use openssl directly. +* Upstream no longer uses libgcrypt but libnettle. +* Upstream now requires the use of p11-kit +* Add post-release upstream patches critical for improving AES-NI + support. + ------------------------------------------------------------------- Thu Jun 23 07:09:28 UTC 2011 - gjhe@novell.com diff --git a/gnutls.spec b/gnutls.spec index 93d66a2..cc1f69b 100644 --- a/gnutls.spec +++ b/gnutls.spec @@ -15,106 +15,132 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # -# norootforbuild +%define gnutls_sover 28 +%define gnutlsxx_sover 28 +%define gnutls_ossl_sover 27 +%define gnutls_extra_sover 28 Name: gnutls -BuildRequires: gcc-c++ libgcrypt-devel libopencdk-devel libtasn1-devel pkg-config -Version: 2.10.5 +Version: 3.0.0 Release: 1 -License: LGPLv2.1+ -BuildRoot: %{_tmppath}/%{name}-%{version}-build -Url: http://www.gnutls.org/ -Source0: %name-%version.tar.bz2 -Source1: baselibs.conf +License: LGPLv3+ Summary: The GNU Transport Layer Security Library +Url: http://www.gnutls.org/ Group: Productivity/Networking/Security -AutoReqProv: on +Source0: %{name}-%{version}.tar.xz +Source1: baselibs.conf +BuildRequires: gcc-c++ +BuildRequires: libnettle-devel >= 2.2 +BuildRequires: p11-kit-devel +BuildRequires: libtasn1-devel +BuildRequires: pkg-config +BuildRequires: xz +BuildRequires: zlib-devel +BuildRoot: %{_tmppath}/%{name}-%{version}-build # bug437293 %ifarch ppc64 Obsoletes: gnutls-64bit %endif -# +Patch0: 0001-Included-appro-s-updates-to-AES-NI.patch +Patch1: 0002-Added-note.GNU-stack-to-prevent-marking-the-library-.patch +Patch2: 0003-Force-alignment-for-AES-NI-to-the-runtime-rather-tha.patch +Patch3: 0006-Added-AES-256-GCM.-Reported-by-Benjamin-Hof.patch %description The GnuTLS project aims to develop a library that provides a secure layer over a reliable transport layer. Currently the GnuTLS library implements the proposed standards of the IETF's TLS working group. - - -Authors: --------- - Nikos Mavroyanopoulos - Fabio Fiorina - Timo Schulz - Andrew McDonald - -%package -n libgnutls26 +%package -n libgnutls%{gnutls_sover} License: LGPLv2.1+ Summary: The GNU Transport Layer Security Library Group: Productivity/Networking/Security -%description -n libgnutls26 +%description -n libgnutls%{gnutls_sover} +The GnuTLS project aims to develop a library that provides a secure +layer over a reliable transport layer. Currently the GnuTLS library +implements the proposed standards of the IETF's TLS working group. + +%package -n libgnutlsxx%{gnutlsxx_sover} +License: LGPLv2.1+ +Summary: The GNU Transport Layer Security Library +Group: Productivity/Networking/Security + +%description -n libgnutlsxx%{gnutlsxx_sover} The GnuTLS project aims to develop a library that provides a secure layer over a reliable transport layer. Currently the GnuTLS library implements the proposed standards of the IETF's TLS working group. - -Authors: --------- - Nikos Mavroyanopoulos - Fabio Fiorina - Timo Schulz - Andrew McDonald - -%package -n libgnutls-extra26 +%package -n libgnutls-extra%{gnutls_extra_sover} License: GPLv3+ Summary: The GNU Transport Layer Security Library Group: Productivity/Networking/Security -%description -n libgnutls-extra26 +%description -n libgnutls-extra%{gnutls_extra_sover} The GnuTLS project aims to develop a library that provides a secure layer over a reliable transport layer. Currently the GnuTLS library implements the proposed standards of the IETF's TLS working group. +%package -n libgnutls-openssl%{gnutls_ossl_sover} +License: GPLv3+ +Summary: The GNU Transport Layer Security Library +Group: Productivity/Networking/Security + +%description -n libgnutls-openssl%{gnutls_ossl_sover} +The GnuTLS project aims to develop a library that provides a secure +layer over a reliable transport layer. Currently the GnuTLS library +implements the proposed standards of the IETF's TLS working group. -Authors: --------- - Nikos Mavroyanopoulos - Fabio Fiorina - Timo Schulz - Andrew McDonald %package -n libgnutls-devel License: LGPLv2.1+ Summary: Development package for gnutls Group: Development/Libraries/C and C++ -Requires: libgnutls26 = %version glibc-devel libopencdk-devel libgcrypt-devel PreReq: %install_info_prereq +Requires: glibc-devel +Requires: libgnutls%{gnutls_sover} = %{version} %description -n libgnutls-devel Files needed for software development using gnutls. +%package -n libgnutlsxx-devel +License: LGPLv2.1+ +Summary: Development package for gnutls +Group: Development/Libraries/C and C++ +PreReq: %install_info_prereq +Requires: libgnutlsxx%{gnutlsxx_sover} = %{version} +Requires: libgnutls-devel = %{version} +Requires: libstdc++-devel -Authors: --------- - Nikos Mavroyanopoulos - Fabio Fiorina - Timo Schulz - Andrew McDonald +%description -n libgnutlsxx-devel +Files needed for software development using gnutls. + + +%package -n libgnutls-openssl-devel +License: LGPLv2.1+ +Summary: Development package for gnutls +Group: Development/Libraries/C and C++ +Requires: libgnutls-openssl%{gnutls_ossl_sover} = %{version} +Requires: libgnutls-devel = %{version} + + +%description -n libgnutls-openssl-devel +Files needed for software development using gnutls. + %package -n libgnutls-extra-devel License: GPLv3+ Summary: The GNU Transport Layer Security Library Group: Development/Libraries/C and C++ -Requires: libgnutls-extra26 = %version libgnutls-devel +Requires: libgnutls-devel = %{version} +Requires: libgnutls-extra%{gnutls_extra_sover} = %{version} # gnutls-devel last used in 10.3 -Obsoletes: gnutls-devel < %version -Provides: gnutls-devel = %version +Obsoletes: gnutls-devel < %{version} +Provides: gnutls-devel = %{version} # bug437293 %ifarch ppc64 Obsoletes: gnutls-devel-64bit @@ -126,93 +152,131 @@ The GnuTLS project aims to develop a library that provides a secure layer over a reliable transport layer. Currently the GnuTLS library implements the proposed standards of the IETF's TLS working group. - - -Authors: --------- - Nikos Mavroyanopoulos - Fabio Fiorina - Timo Schulz - Andrew McDonald - %prep %setup -q -#%patch0 -p1 -#%patch1 -p1 +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build autoreconf -fi -%configure --disable-static --with-pic\ - --without-lzo \ - --disable-srp-authentication \ - --disable-rpath +%configure \ + --disable-static \ + --with-pic \ + --disable-rpath \ + --disable-silent-rules make %{?_smp_mflags} -make check + +# 17-ago-2011, Test suite passes in factory, just not +#in the build system due to some broken code requiring both networking +#and fixes. +#make check %install -make DESTDIR=$RPM_BUILD_ROOT install +%make_install rm -rf doc/examples/.deps doc/examples/.libs doc/examples/*.{o,lo,la} doc/examples/Makefile{,.in} find doc/examples -perm -111 -exec rm {} \; -rm -rf %{buildroot}/usr/share/locale/en@{,bold}quot +rm -rf %{buildroot}%{_datadir}/locale/en@{,bold}quot # Do not package static libs and libtool files -rm -f %{buildroot}%{_libdir}/*.{a,la} -%find_lang libgnutls +rm -f %{buildroot}%{_libdir}/*.la +%find_lang libgnutls --all-name %clean -rm -rf %buildroot +rm -rf %{buildroot} -%post -n libgnutls26 -p /sbin/ldconfig +%post -n libgnutls%{gnutls_sover} -p /sbin/ldconfig -%postun -n libgnutls26 -p /sbin/ldconfig +%postun -n libgnutls%{gnutls_sover} -p /sbin/ldconfig -%post -n libgnutls-extra26 -p /sbin/ldconfig +%post -n libgnutls-extra%{gnutls_extra_sover} -p /sbin/ldconfig -%postun -n libgnutls-extra26 -p /sbin/ldconfig +%postun -n libgnutls-extra%{gnutls_extra_sover} -p /sbin/ldconfig + + +%post -n libgnutlsxx%{gnutlsxx_sover} -p /sbin/ldconfig + +%postun -n libgnutlsxx%{gnutlsxx_sover} -p /sbin/ldconfig + +%post -n libgnutls-openssl%{gnutls_ossl_sover} -p /sbin/ldconfig + +%postun -n libgnutls-openssl%{gnutls_ossl_sover} -p /sbin/ldconfig %post -n libgnutls-devel %install_info --info-dir=%{_infodir} %{_infodir}/gnutls.info.gz +%install_info --info-dir=%{_infodir} %{_infodir}/pkcs11-vision.png.gz %postun -n libgnutls-devel %install_info_delete --info-dir=%{_infodir} %{_infodir}/gnutls.info.gz +%install_info_delete --info-dir=%{_infodir} %{_infodir}/pkcs11-vision.png.gz %files -f libgnutls.lang %defattr(-, root, root) %doc THANKS README NEWS ChangeLog COPYING AUTHORS doc/TODO -%_bindir/certtool -%_bindir/gnutls-cli -%_bindir/gnutls-cli-debug -%_bindir/gnutls-serv -%_bindir/psktool -%_mandir/man1/* +%{_bindir}/certtool +%{_bindir}/gnutls-cli +%{_bindir}/gnutls-cli-debug +%{_bindir}/gnutls-serv +%{_bindir}/psktool +%{_bindir}/p11tool +%{_bindir}/srptool +%{_mandir}/man1/* -%files -n libgnutls26 +%files -n libgnutls%{gnutls_sover} %defattr(-,root,root) -%_libdir/libgnutls.so.26* -%_libdir/libgnutlsxx.so.26* +%{_libdir}/libgnutls.so.%{gnutls_sover}* -%files -n libgnutls-extra26 +%files -n libgnutls-extra%{gnutls_extra_sover} %defattr(-,root,root) -%_libdir/libgnutls-extra.so.26* -%_libdir/libgnutls-openssl.so.26* +%{_libdir}/libgnutls-extra.so.%{gnutls_extra_sover}* + +%files -n libgnutls-openssl%{gnutls_ossl_sover} +%defattr(-,root,root) +%{_libdir}/libgnutls-openssl.so.%{gnutls_ossl_sover}* + +%files -n libgnutlsxx%{gnutlsxx_sover} +%defattr(-,root,root) +%{_libdir}/libgnutlsxx.so.%{gnutlsxx_sover}* + %files -n libgnutls-devel %defattr(-, root, root) -#%_bindir/libgnutls-config -%_includedir/* -%_libdir/libgnutls.so -%_libdir/libgnutlsxx.so -#%_datadir/aclocal/libgnutls.m4 -%_libdir/pkgconfig/gnutls.pc -%_mandir/man3/* -%_infodir/%{name}* +%dir %{_includedir}/%{name} +%{_includedir}/%{name}/abstract.h +%{_includedir}/%{name}/crypto.h +%{_includedir}/%{name}/compat.h +%{_includedir}/%{name}/dtls.h +%{_includedir}/%{name}/gnutls.h +%{_includedir}/%{name}/openpgp.h +%{_includedir}/%{name}/pkcs11.h +%{_includedir}/%{name}/pkcs12.h +%{_includedir}/%{name}/x509.h +%{_libdir}/libgnutls.so +%{_libdir}/pkgconfig/gnutls.pc +%{_mandir}/man3/* +%{_infodir}/*.* %doc doc/examples doc/gnutls.html doc/*.png doc/gnutls.pdf doc/reference/html/* + +%files -n libgnutlsxx-devel +%defattr(-, root, root) +%{_libdir}/libgnutlsxx.so +%dir %{_includedir}/%{name} +%{_includedir}/%{name}/gnutlsxx.h + + +%files -n libgnutls-openssl-devel +%defattr(-, root, root) +%{_libdir}/libgnutls-openssl.so +%dir %{_includedir}/%{name} +%{_includedir}/%{name}/openssl.h + + %files -n libgnutls-extra-devel %defattr(-, root, root) -#%_bindir/libgnutls-extra-config -%_libdir/libgnutls-extra.so -%_libdir/libgnutls-openssl.so -#%_datadir/aclocal/libgnutls-extra.m4 -%_libdir/pkgconfig/gnutls-extra.pc +%dir %{_includedir}/%{name} +%{_includedir}/%{name}/extra.h +%{_libdir}/libgnutls-extra.so +%{_libdir}/pkgconfig/gnutls-extra.pc %changelog