The branch master has been updated
       via  40ab6b856754a11050174b222c7abb10b6dcb822 (commit)
       via  e9afe7a143a27e4e488e3d027439157fb0fc550b (commit)
       via  3571069526084778528b3099159689bbc485079b (commit)
       via  fe46035dbe173a42cbdfc7d31d17976300b22ccc (commit)
       via  eefc485bda4ab1ac7293b4c749c251b662d9fba8 (commit)
       via  1018a7251e1f8721fc7aebbe5737680544f71698 (commit)
       via  0fe72aaaa9bb01b440e6a285bffc1ffc2ea174ac (commit)
       via  e4739e31ee7430046e80b88132c2ccbc7ca501d9 (commit)
      from  dd2d7b19f8572b2c447397524621efdb675b5248 (commit)


- Log -----------------------------------------------------------------
commit 40ab6b856754a11050174b222c7abb10b6dcb822
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 14:08:28 2018 +0200

    00-base-templates.conf: wire keccak1600-armv4 module.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

commit e9afe7a143a27e4e488e3d027439157fb0fc550b
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 13:59:52 2018 +0200

    sha/asm/keccak1600-armv4.pl: adapt for multi-platform.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

commit 3571069526084778528b3099159689bbc485079b
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 13:45:12 2018 +0200

    00-base-templates.conf: wire keccak1600-ppc64 module.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

commit fe46035dbe173a42cbdfc7d31d17976300b22ccc
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 13:09:49 2018 +0200

    00-base-templates.conf: wire keccak1600-s390x module.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

commit eefc485bda4ab1ac7293b4c749c251b662d9fba8
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 13:00:28 2018 +0200

    00-base-templates.conf: wire keccak1600-armv8 module.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

commit 1018a7251e1f8721fc7aebbe5737680544f71698
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 12:56:31 2018 +0200

    00-base-templates.conf: wire keccak1600-x86_64 module.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

commit 0fe72aaaa9bb01b440e6a285bffc1ffc2ea174ac
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 12:48:56 2018 +0200

    sha/asm/keccak1600-x86_64.pl: make it work on Windows.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

commit e4739e31ee7430046e80b88132c2ccbc7ca501d9
Author: Andy Polyakov <[email protected]>
Date:   Sun Apr 22 10:42:59 2018 +0200

    Configure: add $target{keccak1600_asm_src}.
    
    Reviewed-by: Richard Levitte <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/6042)

-----------------------------------------------------------------------

Summary of changes:
 Configurations/00-base-templates.conf |  7 ++++++-
 Configure                             |  3 +++
 crypto/sha/asm/keccak1600-armv4.pl    | 23 ++++++++++++++++++++---
 crypto/sha/asm/keccak1600-x86_64.pl   |  8 ++++----
 crypto/sha/build.info                 |  8 +++++++-
 5 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/Configurations/00-base-templates.conf 
b/Configurations/00-base-templates.conf
index edcc454..4a1645f 100644
--- a/Configurations/00-base-templates.conf
+++ b/Configurations/00-base-templates.conf
@@ -34,6 +34,7 @@ my %targets=(
        padlock_asm_src => "",
        chacha_asm_src  => "chacha_enc.c",
        poly1305_asm_src        => "",
+       keccak1600_asm_src      => "keccak1600.c",
 
        unistd          => "<unistd.h>",
        shared_target   => "",
@@ -226,6 +227,7 @@ my %targets=(
        padlock_asm_src => "e_padlock-x86_64.s",
        chacha_asm_src  => "chacha-x86_64.s",
        poly1305_asm_src=> "poly1305-x86_64.s",
+       keccak1600_asm_src      => "keccak1600-x86_64.s",
     },
     ia64_asm => {
        template        => 1,
@@ -287,6 +289,7 @@ my %targets=(
        modes_asm_src   => "ghash-s390x.S",
        chacha_asm_src  => "chacha-s390x.S",
        poly1305_asm_src=> "poly1305-s390x.S",
+       keccak1600_asm_src      => "keccak1600-s390x.S",
     },
     armv4_asm => {
        template        => 1,
@@ -298,6 +301,7 @@ my %targets=(
        modes_asm_src   => "ghash-armv4.S ghashv8-armx.S",
        chacha_asm_src  => "chacha-armv4.S",
        poly1305_asm_src=> "poly1305-armv4.S", 
+       keccak1600_asm_src      => "keccak1600-armv4.S",
        perlasm_scheme  => "void"
     },
     aarch64_asm => {
@@ -310,6 +314,7 @@ my %targets=(
        modes_asm_src   => "ghashv8-armx.S",
        chacha_asm_src  => "chacha-armv8.S",
        poly1305_asm_src=> "poly1305-armv8.S",
+       keccak1600_asm_src      => "keccak1600-armv8.S",
     },
     parisc11_asm => {
        template        => 1,
@@ -340,6 +345,6 @@ my %targets=(
        inherit_from    => [ "ppc32_asm" ],
        template        => 1,
        ec_asm_src      => "ecp_nistz256.c ecp_nistz256-ppc64.s",
-
+       keccak1600_asm_src      => "keccak1600-ppc64.s",
     },
 );
diff --git a/Configure b/Configure
index 5703302..ffc5fe5 100755
--- a/Configure
+++ b/Configure
@@ -1359,6 +1359,9 @@ unless ($disabled{asm}) {
        push @{$config{lib_defines}}, "SHA256_ASM" if ($target{sha1_asm_src} =~ 
/sha256/);
        push @{$config{lib_defines}}, "SHA512_ASM" if ($target{sha1_asm_src} =~ 
/sha512/);
     }
+    if ($target{keccak1600_asm_src} ne $table{DEFAULTS}->{keccak1600_asm_src}) 
{
+       push @{$config{lib_defines}}, "KECCAK1600_ASM";
+    }
     if ($target{rc4_asm_src} ne $table{DEFAULTS}->{rc4_asm_src}) {
        push @{$config{lib_defines}}, "RC4_ASM";
     }
diff --git a/crypto/sha/asm/keccak1600-armv4.pl 
b/crypto/sha/asm/keccak1600-armv4.pl
index 4ef9ee0..8bf665c 100755
--- a/crypto/sha/asm/keccak1600-armv4.pl
+++ b/crypto/sha/asm/keccak1600-armv4.pl
@@ -70,6 +70,21 @@
 #      Cortex-Mx, x>=3. Otherwise, non-NEON results for NEON-capable
 #      processors are presented mostly for reference purposes.
 
+$flavour = shift;
+if ($flavour=~/\w[\w\-]*\.\w+$/) { $output=$flavour; undef $flavour; }
+else { while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} }
+
+if ($flavour && $flavour ne "void") {
+    $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+    ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
+    ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+    die "can't locate arm-xlate.pl";
+
+    open STDOUT,"| \"$^X\" $xlate $flavour $output";
+} else {
+    open STDOUT,">$output";
+}
+
 my @C = map("r$_",(0..9));
 my @E = map("r$_",(10..12,14));
 
@@ -96,6 +111,8 @@ my @D = map(8*$_, (25..29));
 my @T = map([ 8*$_, 8*($_+1), 8*($_+2), 8*($_+3), 8*($_+4) ], 
(30,35,40,45,50));
 
 $code.=<<___;
+#include "arm_arch.h"
+
 .text
 
 #if defined(__thumb2__)
@@ -1044,6 +1061,7 @@ ___
 }
 
 $code.=<<___;
+#if __ARM_MAX_ARCH__>=7
 .fpu   neon
 
 .type  iotas64, %object
@@ -1545,6 +1563,7 @@ SHA3_squeeze_neon:
 .Lsqueeze_neon_done:
        ldmia   sp!, {r4-r6,pc}
 .size  SHA3_squeeze_neon,.-SHA3_squeeze_neon
+#endif
 .asciz "Keccak-1600 absorb and squeeze for ARMv4/NEON, CRYPTOGAMS by 
<appro\@openssl.org>"
 .align 2
 ___
@@ -1573,13 +1592,11 @@ ___
     }
 }
 
-$output=pop;
-open STDOUT,">$output";
-
 foreach (split($/,$code)) {
        s/\`([^\`]*)\`/eval $1/ge;
 
        s/^\s+(ldr|str)\.([lh])\s+(r[0-9]+),\s*(\[.*)/ldrd($1,$2,$3,$4)/ge or
+       s/\b(ror|ls[rl])\s+(r[0-9]+.*)#/mov     $2$1#/g or
        s/\bret\b/bx    lr/g            or
        s/\bbx\s+lr\b/.word\t0xe12fff1e/g;      # make it possible to compile 
with -march=armv4
 
diff --git a/crypto/sha/asm/keccak1600-x86_64.pl 
b/crypto/sha/asm/keccak1600-x86_64.pl
index 94c9c10..e24b575 100755
--- a/crypto/sha/asm/keccak1600-x86_64.pl
+++ b/crypto/sha/asm/keccak1600-x86_64.pl
@@ -81,7 +81,7 @@ my @rhotates = ([  0,  1, 62, 28, 27 ],
 $code.=<<___;
 .text
 
-.type  __KeccakF1600,\@function
+.type  __KeccakF1600,\@abi-omnipotent
 .align 32
 __KeccakF1600:
        mov     $A[4][0](%rdi),@C[0]
@@ -345,7 +345,7 @@ $code.=<<___;
 .size  __KeccakF1600,.-__KeccakF1600
 
 .globl KeccakF1600
-.type  KeccakF1600,\@function
+.type  KeccakF1600,\@abi-omnipotent
 .align 32
 KeccakF1600:
 .cfi_startproc
@@ -410,7 +410,7 @@ ___
      ($A_flat,$inp) = ("%r8","%r9");
 $code.=<<___;
 .globl SHA3_absorb
-.type  SHA3_absorb,\@function
+.type  SHA3_absorb,\@function,4
 .align 32
 SHA3_absorb:
 .cfi_startproc
@@ -505,7 +505,7 @@ ___
 
 $code.=<<___;
 .globl SHA3_squeeze
-.type  SHA3_squeeze,\@function
+.type  SHA3_squeeze,\@function,4
 .align 32
 SHA3_squeeze:
 .cfi_startproc
diff --git a/crypto/sha/build.info b/crypto/sha/build.info
index 9dffec3..5dd5a99 100644
--- a/crypto/sha/build.info
+++ b/crypto/sha/build.info
@@ -1,7 +1,7 @@
 LIBS=../../libcrypto
 SOURCE[../../libcrypto]=\
         sha1dgst.c sha1_one.c sha256.c sha512.c {- $target{sha1_asm_src} -} \
-        keccak1600.c
+        {- $target{keccak1600_asm_src} -}
 
 GENERATE[sha1-586.s]=asm/sha1-586.pl \
         $(PERLASM_SCHEME) $(LIB_CFLAGS) $(LIB_CPPFLAGS) $(PROCESSOR)
@@ -24,6 +24,7 @@ GENERATE[sha1-mb-x86_64.s]=asm/sha1-mb-x86_64.pl 
$(PERLASM_SCHEME)
 GENERATE[sha256-x86_64.s]=asm/sha512-x86_64.pl $(PERLASM_SCHEME)
 GENERATE[sha256-mb-x86_64.s]=asm/sha256-mb-x86_64.pl $(PERLASM_SCHEME)
 GENERATE[sha512-x86_64.s]=asm/sha512-x86_64.pl $(PERLASM_SCHEME)
+GENERATE[keccak1600-x86_64.s]=asm/keccak1600-x86_64.pl $(PERLASM_SCHEME)
 
 GENERATE[sha1-sparcv9.S]=asm/sha1-sparcv9.pl $(PERLASM_SCHEME)
 INCLUDE[sha1-sparcv9.o]=..
@@ -37,6 +38,7 @@ GENERATE[sha256-ppc.s]=asm/sha512-ppc.pl $(PERLASM_SCHEME)
 GENERATE[sha512-ppc.s]=asm/sha512-ppc.pl $(PERLASM_SCHEME)
 GENERATE[sha256p8-ppc.s]=asm/sha512p8-ppc.pl $(PERLASM_SCHEME)
 GENERATE[sha512p8-ppc.s]=asm/sha512p8-ppc.pl $(PERLASM_SCHEME)
+GENERATE[keccak1600-ppc64.s]=asm/keccak1600-ppc64.pl $(PERLASM_SCHEME)
 
 GENERATE[sha1-parisc.s]=asm/sha1-parisc.pl $(PERLASM_SCHEME)
 GENERATE[sha256-parisc.s]=asm/sha512-parisc.pl $(PERLASM_SCHEME)
@@ -55,6 +57,8 @@ GENERATE[sha256-armv4.S]=asm/sha256-armv4.pl $(PERLASM_SCHEME)
 INCLUDE[sha256-armv4.o]=..
 GENERATE[sha512-armv4.S]=asm/sha512-armv4.pl $(PERLASM_SCHEME)
 INCLUDE[sha512-armv4.o]=..
+GENERATE[keccak1600-armv4.S]=asm/keccak1600-armv4.pl $(PERLASM_SCHEME)
+INCLUDE[keccak1600-armv4.o]=..
 
 GENERATE[sha1-armv8.S]=asm/sha1-armv8.pl $(PERLASM_SCHEME)
 INCLUDE[sha1-armv8.o]=..
@@ -62,6 +66,7 @@ GENERATE[sha256-armv8.S]=asm/sha512-armv8.pl $(PERLASM_SCHEME)
 INCLUDE[sha256-armv8.o]=..
 GENERATE[sha512-armv8.S]=asm/sha512-armv8.pl $(PERLASM_SCHEME)
 INCLUDE[sha512-armv8.o]=..
+GENERATE[keccak1600-armv8.S]=asm/keccak1600-armv8.pl $(PERLASM_SCHEME)
 
 GENERATE[sha1-s390x.S]=asm/sha1-s390x.pl $(PERLASM_SCHEME)
 INCLUDE[sha1-s390x.o]=..
@@ -69,6 +74,7 @@ GENERATE[sha256-s390x.S]=asm/sha512-s390x.pl $(PERLASM_SCHEME)
 INCLUDE[sha256-s390x.o]=..
 GENERATE[sha512-s390x.S]=asm/sha512-s390x.pl $(PERLASM_SCHEME)
 INCLUDE[sha512-s390x.o]=..
+GENERATE[keccak1600-s390x.S]=asm/keccak1600-s390x.pl $(PERLASM_SCHEME)
 
 BEGINRAW[Makefile(unix)]
 ##### SHA assembler implementations
_____
openssl-commits mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-commits

Reply via email to