Engage SHA256/512 for PowerISA 2.07.
authorAndy Polyakov <appro@openssl.org>
Tue, 1 Jul 2014 17:07:49 +0000 (19:07 +0200)
committerAndy Polyakov <appro@openssl.org>
Tue, 1 Jul 2014 17:09:11 +0000 (19:09 +0200)
Configure
TABLE
crypto/ppccap.c
crypto/sha/Makefile
crypto/sha/asm/sha512-ppc.pl

index b346826..429eaed 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -140,7 +140,7 @@ my $armv4_asm="armcap.o armv4cpuid.o:bn_asm.o armv4-mont.o armv4-gf2m.o::aes_cbc
 my $aarch64_asm="armcap.o arm64cpuid.o mem_clr.o:::aes_core.o aes_cbc.o aesv8-armx.o:::sha1-armv8.o sha256-armv8.o sha512-armv8.o:::::::ghashv8-armx.o:";
 my $parisc11_asm="pariscid.o:bn_asm.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::32";
 my $parisc20_asm="pariscid.o:pa-risc2W.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::64";
 my $aarch64_asm="armcap.o arm64cpuid.o mem_clr.o:::aes_core.o aes_cbc.o aesv8-armx.o:::sha1-armv8.o sha256-armv8.o sha512-armv8.o:::::::ghashv8-armx.o:";
 my $parisc11_asm="pariscid.o:bn_asm.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::32";
 my $parisc20_asm="pariscid.o:pa-risc2W.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::64";
-my $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::::";
+my $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o::::::::";
 my $ppc32_asm=$ppc64_asm;
 my $no_asm=":::::::::::::::void";
 
 my $ppc32_asm=$ppc64_asm;
 my $no_asm=":::::::::::::::void";
 
diff --git a/TABLE b/TABLE
index 108ba87..1920cb2 100644 (file)
--- a/TABLE
+++ b/TABLE
@@ -905,7 +905,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -938,7 +938,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -1004,7 +1004,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -1037,7 +1037,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -1466,7 +1466,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -1499,7 +1499,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -2192,7 +2192,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -4535,7 +4535,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -4568,7 +4568,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
@@ -4601,7 +4601,7 @@ $des_obj      =
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
 $aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
 $bf_obj       = 
 $md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
+$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
 $cast_obj     = 
 $rc4_obj      = 
 $rmd160_obj   = 
index 4c5e88d..cad14fd 100644 (file)
@@ -54,6 +54,22 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_U
        }
 #endif
 
        }
 #endif
 
+void sha256_block_p8(void *ctx,const void *inp,size_t len);
+void sha256_block_ppc(void *ctx,const void *inp,size_t len);
+void sha256_block_data_order(void *ctx,const void *inp,size_t len)
+       {
+       OPENSSL_ppccap_P&PPC_CRYPTO207? sha256_block_p8(ctx,inp,len):
+                                       sha256_block_ppc(ctx,inp,len);
+       }
+
+void sha512_block_p8(void *ctx,const void *inp,size_t len);
+void sha512_block_ppc(void *ctx,const void *inp,size_t len);
+void sha512_block_data_order(void *ctx,const void *inp,size_t len)
+       {
+       OPENSSL_ppccap_P&PPC_CRYPTO207? sha512_block_p8(ctx,inp,len):
+                                       sha512_block_ppc(ctx,inp,len);
+       }
+
 static sigjmp_buf ill_jmp;
 static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); }
 
 static sigjmp_buf ill_jmp;
 static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); }
 
index 3949354..689ccff 100644 (file)
@@ -77,6 +77,8 @@ sha512-sparcv9.S:asm/sha512-sparcv9.pl;       $(PERL) asm/sha512-sparcv9.pl $@ $(CFLAG
 sha1-ppc.s:    asm/sha1-ppc.pl;        $(PERL) asm/sha1-ppc.pl $(PERLASM_SCHEME) $@
 sha256-ppc.s:  asm/sha512-ppc.pl;      $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
 sha512-ppc.s:  asm/sha512-ppc.pl;      $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
 sha1-ppc.s:    asm/sha1-ppc.pl;        $(PERL) asm/sha1-ppc.pl $(PERLASM_SCHEME) $@
 sha256-ppc.s:  asm/sha512-ppc.pl;      $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
 sha512-ppc.s:  asm/sha512-ppc.pl;      $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
+sha256p8-ppc.s:        asm/sha512p8-ppc.pl;    $(PERL) asm/sha512p8-ppc.pl $(PERLASM_SCHEME) $@
+sha512p8-ppc.s:        asm/sha512p8-ppc.pl;    $(PERL) asm/sha512p8-ppc.pl $(PERLASM_SCHEME) $@
 
 sha1-parisc.s: asm/sha1-parisc.pl;     $(PERL) asm/sha1-parisc.pl $(PERLASM_SCHEME) $@
 sha256-parisc.s:asm/sha512-parisc.pl;  $(PERL) asm/sha512-parisc.pl $(PERLASM_SCHEME) $@
 
 sha1-parisc.s: asm/sha1-parisc.pl;     $(PERL) asm/sha1-parisc.pl $(PERLASM_SCHEME) $@
 sha256-parisc.s:asm/sha512-parisc.pl;  $(PERL) asm/sha512-parisc.pl $(PERLASM_SCHEME) $@
index 5c3ac2c..734f3c1 100755 (executable)
@@ -65,7 +65,7 @@ die "can't locate ppc-xlate.pl";
 open STDOUT,"| $^X $xlate $flavour $output" || die "can't call $xlate: $!";
 
 if ($output =~ /512/) {
 open STDOUT,"| $^X $xlate $flavour $output" || die "can't call $xlate: $!";
 
 if ($output =~ /512/) {
-       $func="sha512_block_data_order";
+       $func="sha512_block_ppc";
        $SZ=8;
        @Sigma0=(28,34,39);
        @Sigma1=(14,18,41);
        $SZ=8;
        @Sigma0=(28,34,39);
        @Sigma1=(14,18,41);
@@ -77,7 +77,7 @@ if ($output =~ /512/) {
        $ROR="rotrdi";
        $SHR="srdi";
 } else {
        $ROR="rotrdi";
        $SHR="srdi";
 } else {
-       $func="sha256_block_data_order";
+       $func="sha256_block_ppc";
        $SZ=4;
        @Sigma0=( 2,13,22);
        @Sigma1=( 6,11,25);
        $SZ=4;
        @Sigma0=( 2,13,22);
        @Sigma1=( 6,11,25);