summaryrefslogtreecommitdiff
path: root/crypto/poly1305
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2019-02-11 15:33:43 +0100
committerRichard Levitte <levitte@openssl.org>2019-02-12 19:00:42 +0100
commit9a18aae5f21efc59da8b697ad67d5d37b95ab322 (patch)
tree7b99425b58a70172894332ebf9255b16fd3572da /crypto/poly1305
parenta40f0f6475711f01d32c4cdc39e54311b7e9c876 (diff)
downloadopenssl-new-9a18aae5f21efc59da8b697ad67d5d37b95ab322.tar.gz
AArch64 assembly pack: authenticate return addresses.
ARMv8.3 adds pointer authentication extension, which in this case allows to ensure that, when offloaded to stack, return address is same at return as at entry to the subroutine. The new instructions are nops on processors that don't implement the extension, so that the vetification is backward compatible. Reviewed-by: Kurt Roeckx <kurt@roeckx.be> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/8205)
Diffstat (limited to 'crypto/poly1305')
-rwxr-xr-xcrypto/poly1305/asm/poly1305-armv8.pl2
1 files changed, 2 insertions, 0 deletions
diff --git a/crypto/poly1305/asm/poly1305-armv8.pl b/crypto/poly1305/asm/poly1305-armv8.pl
index 31b3110a25..1aded5a275 100755
--- a/crypto/poly1305/asm/poly1305-armv8.pl
+++ b/crypto/poly1305/asm/poly1305-armv8.pl
@@ -291,6 +291,7 @@ poly1305_blocks_neon:
cbz $is_base2_26,poly1305_blocks
.Lblocks_neon:
+ .inst 0xd503233f // paciasp
stp x29,x30,[sp,#-80]!
add x29,sp,#0
@@ -859,6 +860,7 @@ poly1305_blocks_neon:
st1 {$ACC4}[0],[$ctx]
.Lno_data_neon:
+ .inst 0xd50323bf // autiasp
ldr x29,[sp],#80
ret
.size poly1305_blocks_neon,.-poly1305_blocks_neon