From cd1922cde02e344658968325c2006b17fe01b4d6 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Tue, 1 Jul 2014 19:07:49 +0200 Subject: [PATCH] Engage SHA256/512 for PowerISA 2.07. --- Configure | 2 +- TABLE | 20 ++++++++++---------- crypto/ppccap.c | 16 ++++++++++++++++ crypto/sha/Makefile | 2 ++ crypto/sha/asm/sha512-ppc.pl | 4 ++-- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/Configure b/Configure index b34682690f..429eaeda4f 100755 --- 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 $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"; diff --git a/TABLE b/TABLE index 108ba87c02..1920cb2e35 100644 --- 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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = @@ -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 = -$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 = diff --git a/crypto/ppccap.c b/crypto/ppccap.c index 4c5e88d3a0..cad14fd67b 100644 --- a/crypto/ppccap.c +++ b/crypto/ppccap.c @@ -54,6 +54,22 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_U } #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); } diff --git a/crypto/sha/Makefile b/crypto/sha/Makefile index 3949354646..689ccfff53 100644 --- a/crypto/sha/Makefile +++ b/crypto/sha/Makefile @@ -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) $@ +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) $@ diff --git a/crypto/sha/asm/sha512-ppc.pl b/crypto/sha/asm/sha512-ppc.pl index 5c3ac2c095..734f3c1ca0 100755 --- a/crypto/sha/asm/sha512-ppc.pl +++ b/crypto/sha/asm/sha512-ppc.pl @@ -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/) { - $func="sha512_block_data_order"; + $func="sha512_block_ppc"; $SZ=8; @Sigma0=(28,34,39); @Sigma1=(14,18,41); @@ -77,7 +77,7 @@ if ($output =~ /512/) { $ROR="rotrdi"; $SHR="srdi"; } else { - $func="sha256_block_data_order"; + $func="sha256_block_ppc"; $SZ=4; @Sigma0=( 2,13,22); @Sigma1=( 6,11,25); -- 2.34.1