[openssl-commits] [openssl] master update

Andy Polyakov appro at openssl.org
Mon May 16 20:21:50 UTC 2016


The branch master has been updated
       via  6133b4edbd12266ef9ccc3cbbfc0d5bb56e0d481 (commit)
      from  a7f9e0a45f5f35a5fe318461aa03b4afe944af74 (commit)


- Log -----------------------------------------------------------------
commit 6133b4edbd12266ef9ccc3cbbfc0d5bb56e0d481
Author: Andy Polyakov <appro at openssl.org>
Date:   Sun May 15 15:37:46 2016 +0200

    ARMv8 assembly pack: add OPENSSL_cleanse.
    
    Reviewed-by: Richard Levitte <levitte at openssl.org>

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

Summary of changes:
 Configurations/00-base-templates.conf |  2 +-
 crypto/arm64cpuid.pl                  | 31 +++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf
index 0f8a2fd..515cf00 100644
--- a/Configurations/00-base-templates.conf
+++ b/Configurations/00-base-templates.conf
@@ -245,7 +245,7 @@
     },
     aarch64_asm => {
 	template	=> 1,
-	cpuid_asm_src   => "armcap.c arm64cpuid.S mem_clr.c",
+	cpuid_asm_src   => "armcap.c arm64cpuid.S",
 	ec_asm_src      => "ecp_nistz256.c ecp_nistz256-armv8.S",
 	bn_asm_src      => "bn_asm.c armv8-mont.S",
 	aes_asm_src     => "aes_core.c aes_cbc.c aesv8-armx.S vpaes-armv8.S",
diff --git a/crypto/arm64cpuid.pl b/crypto/arm64cpuid.pl
index b9501eb..c0af608 100755
--- a/crypto/arm64cpuid.pl
+++ b/crypto/arm64cpuid.pl
@@ -69,6 +69,37 @@ _armv8_pmull_probe:
 	pmull	v0.1q, v0.1d, v0.1d
 	ret
 .size	_armv8_pmull_probe,.-_armv8_pmull_probe
+
+.globl	OPENSSL_cleanse
+.type	OPENSSL_cleanse,%function
+.align	5
+OPENSSL_cleanse:
+	cbz	x1,.Lret	// len==0?
+	cmp	x1,#15
+	b.hi	.Lot		// len>15
+	nop
+.Little:
+	strb	wzr,[x0],#1	// store byte-by-byte
+	subs	x1,x1,#1
+	b.ne	.Little
+.Lret:	ret
+
+.align	4
+.Lot:	tst	x0,#7
+	b.eq	.Laligned	// inp is aligned
+	strb	wzr,[x0],#1	// store byte-by-byte
+	sub	x1,x1,#1
+	b	.Lot
+
+.align	4
+.Laligned:
+	str	xzr,[x0],#8	// store word-by-word
+	sub	x1,x1,#8
+	tst	x1,#-8
+	b.ne	.Laligned	// len>=8
+	cbnz	x1,.Little	// len!=0?
+	ret
+.size	OPENSSL_cleanse,.-OPENSSL_cleanse
 ___
 
 print $code;


More information about the openssl-commits mailing list