From 5ff867225f83bfe6bbbe297c4f5a439e25729d97 Mon Sep 17 00:00:00 2001 From: Shigeki Ohtsu Date: Tue, 9 May 2017 10:36:54 +0900 Subject: [PATCH 1/2] deps: cherry-pick 4ae5993 from upstream OpenSSL This fixes wrong hash results on Windows with some CPUs that support Intel SHA Extension and resolves the issue of TLS connection errors. After upgrading forthcoming openssl-1.0.2l, this is no nolonger needed. Original commit message: perlasm/x86_64-xlate.pl: work around problem with hex constants in masm. Perl, multiple versions, for some reason occasionally takes issue with letter b[?] in ox([0-9a-f]+) regex. As result some constants, such as 0xb1 came out wrong when generating code for MASM. Fixes GH#3241. Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/3385) (cherry picked from commit c47aea8af1e28e46e1ad5e2e7468b49fec3f4f29) Refs: https://github.com/openssl/openssl/issues/3241 Refs: https://github.com/openssl/openssl/pull/3385 Fixes: https://github.com/nodejs/node/issues/12691 --- deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl b/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl index b7ae40b4dbfa98..79cd2d4f65b1e1 100755 --- a/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl +++ b/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl @@ -206,8 +206,9 @@ } sprintf "\$%s",$self->{value}; } else { - $self->{value} =~ s/0x([0-9a-f]+)/0$1h/ig if ($masm); - sprintf "%s",$self->{value}; + my $value = $self->{value}; + $value =~ s/0x([0-9a-f]+)/0$1h/ig if ($masm); + sprintf "%s",$value; } } } From 9dfd409216489211630d9dd351f4554779407fa0 Mon Sep 17 00:00:00 2001 From: Shigeki Ohtsu Date: Tue, 9 May 2017 11:06:16 +0900 Subject: [PATCH 2/2] deps: update openssl asm and asm_obsolete files Regenerate asm files according to the fix of openssl/crypto/perlasm/x86_64-xlate.pl. Fixes: https://github.com/nodejs/node/issues/12691 --- .../x64-win32-masm/aes/aesni-sha256-x86_64.asm | 6 +++--- .../x64-win32-masm/ec/ecp_nistz256-x86_64.asm | 16 ++++++++-------- .../asm/x64-win32-masm/sha/sha256-x86_64.asm | 6 +++--- .../x64-win32-masm/ec/ecp_nistz256-x86_64.asm | 8 ++++---- .../x64-win32-masm/sha/sha256-x86_64.asm | 6 +++--- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/deps/openssl/asm/x64-win32-masm/aes/aesni-sha256-x86_64.asm b/deps/openssl/asm/x64-win32-masm/aes/aesni-sha256-x86_64.asm index 602ee5b2655442..4fe9772a0f5e26 100644 --- a/deps/openssl/asm/x64-win32-masm/aes/aesni-sha256-x86_64.asm +++ b/deps/openssl/asm/x64-win32-masm/aes/aesni-sha256-x86_64.asm @@ -4150,7 +4150,7 @@ $L$prologue_shaext:: lea rcx,QWORD PTR[112+rcx] pshufd xmm0,xmm1,01bh - pshufd xmm1,xmm1,1h + pshufd xmm1,xmm1,0b1h pshufd xmm2,xmm2,01bh movdqa xmm7,xmm3 DB 102,15,58,15,202,8 @@ -4475,9 +4475,9 @@ $L$aesenclast4:: lea rdi,QWORD PTR[64+rdi] jnz $L$oop_shaext - pshufd xmm2,xmm2,1h + pshufd xmm2,xmm2,0b1h pshufd xmm3,xmm1,01bh - pshufd xmm1,xmm1,1h + pshufd xmm1,xmm1,0b1h punpckhqdq xmm1,xmm2 DB 102,15,58,15,211,8 diff --git a/deps/openssl/asm/x64-win32-masm/ec/ecp_nistz256-x86_64.asm b/deps/openssl/asm/x64-win32-masm/ec/ecp_nistz256-x86_64.asm index 7cf9277bfb33d4..87338aa6f0edae 100644 --- a/deps/openssl/asm/x64-win32-masm/ec/ecp_nistz256-x86_64.asm +++ b/deps/openssl/asm/x64-win32-masm/ec/ecp_nistz256-x86_64.asm @@ -2051,7 +2051,7 @@ $L$SEH_begin_ecp_nistz256_point_add:: por xmm5,xmm4 movdqu xmm0,XMMWORD PTR[rsi] - pshufd xmm3,xmm5,1h + pshufd xmm3,xmm5,0b1h movdqu xmm1,XMMWORD PTR[16+rsi] movdqu xmm2,XMMWORD PTR[32+rsi] por xmm5,xmm3 @@ -2081,7 +2081,7 @@ DB 102,72,15,110,199 call __ecp_nistz256_sqr_montq pcmpeqd xmm5,xmm4 - pshufd xmm4,xmm1,1h + pshufd xmm4,xmm1,0b1h por xmm4,xmm1 pshufd xmm5,xmm5,0 pshufd xmm3,xmm4,01eh @@ -2466,7 +2466,7 @@ $L$SEH_begin_ecp_nistz256_point_add_affine:: por xmm5,xmm4 movdqu xmm0,XMMWORD PTR[rbx] - pshufd xmm3,xmm5,1h + pshufd xmm3,xmm5,0b1h movdqu xmm1,XMMWORD PTR[16+rbx] movdqu xmm2,XMMWORD PTR[32+rbx] por xmm5,xmm3 @@ -2488,7 +2488,7 @@ DB 102,72,15,110,199 call __ecp_nistz256_sqr_montq pcmpeqd xmm5,xmm4 - pshufd xmm4,xmm3,1h + pshufd xmm4,xmm3,0b1h mov rax,QWORD PTR[rbx] mov r9,r12 @@ -3117,7 +3117,7 @@ $L$point_addx:: por xmm5,xmm4 movdqu xmm0,XMMWORD PTR[rsi] - pshufd xmm3,xmm5,1h + pshufd xmm3,xmm5,0b1h movdqu xmm1,XMMWORD PTR[16+rsi] movdqu xmm2,XMMWORD PTR[32+rsi] por xmm5,xmm3 @@ -3147,7 +3147,7 @@ DB 102,72,15,110,199 call __ecp_nistz256_sqr_montx pcmpeqd xmm5,xmm4 - pshufd xmm4,xmm1,1h + pshufd xmm4,xmm1,0b1h por xmm4,xmm1 pshufd xmm5,xmm5,0 pshufd xmm3,xmm4,01eh @@ -3528,7 +3528,7 @@ $L$point_add_affinex:: por xmm5,xmm4 movdqu xmm0,XMMWORD PTR[rbx] - pshufd xmm3,xmm5,1h + pshufd xmm3,xmm5,0b1h movdqu xmm1,XMMWORD PTR[16+rbx] movdqu xmm2,XMMWORD PTR[32+rbx] por xmm5,xmm3 @@ -3550,7 +3550,7 @@ DB 102,72,15,110,199 call __ecp_nistz256_sqr_montx pcmpeqd xmm5,xmm4 - pshufd xmm4,xmm3,1h + pshufd xmm4,xmm3,0b1h mov rdx,QWORD PTR[rbx] mov r9,r12 diff --git a/deps/openssl/asm/x64-win32-masm/sha/sha256-x86_64.asm b/deps/openssl/asm/x64-win32-masm/sha/sha256-x86_64.asm index ddcaa2c5ec5270..d0892736b713ca 100644 --- a/deps/openssl/asm/x64-win32-masm/sha/sha256-x86_64.asm +++ b/deps/openssl/asm/x64-win32-masm/sha/sha256-x86_64.asm @@ -1796,7 +1796,7 @@ $L$prologue_shaext:: movdqa xmm7,XMMWORD PTR[((512-128))+rcx] pshufd xmm0,xmm1,01bh - pshufd xmm1,xmm1,1h + pshufd xmm1,xmm1,0b1h pshufd xmm2,xmm2,01bh movdqa xmm8,xmm7 DB 102,15,58,15,202,8 @@ -1983,9 +1983,9 @@ DB 15,56,203,202 paddd xmm1,xmm9 jnz $L$oop_shaext - pshufd xmm2,xmm2,1h + pshufd xmm2,xmm2,0b1h pshufd xmm7,xmm1,01bh - pshufd xmm1,xmm1,1h + pshufd xmm1,xmm1,0b1h punpckhqdq xmm1,xmm2 DB 102,15,58,15,215,8 diff --git a/deps/openssl/asm_obsolete/x64-win32-masm/ec/ecp_nistz256-x86_64.asm b/deps/openssl/asm_obsolete/x64-win32-masm/ec/ecp_nistz256-x86_64.asm index c985159a7b4012..4086b66e461889 100644 --- a/deps/openssl/asm_obsolete/x64-win32-masm/ec/ecp_nistz256-x86_64.asm +++ b/deps/openssl/asm_obsolete/x64-win32-masm/ec/ecp_nistz256-x86_64.asm @@ -1537,7 +1537,7 @@ $L$SEH_begin_ecp_nistz256_point_add:: por xmm5,xmm4 movdqu xmm0,XMMWORD PTR[rsi] - pshufd xmm3,xmm5,1h + pshufd xmm3,xmm5,0b1h movdqu xmm1,XMMWORD PTR[16+rsi] movdqu xmm2,XMMWORD PTR[32+rsi] por xmm5,xmm3 @@ -1567,7 +1567,7 @@ DB 102,72,15,110,199 call __ecp_nistz256_sqr_montq pcmpeqd xmm5,xmm4 - pshufd xmm4,xmm1,1h + pshufd xmm4,xmm1,0b1h por xmm4,xmm1 pshufd xmm5,xmm5,0 pshufd xmm3,xmm4,01eh @@ -1948,7 +1948,7 @@ $L$SEH_begin_ecp_nistz256_point_add_affine:: por xmm5,xmm4 movdqu xmm0,XMMWORD PTR[rbx] - pshufd xmm3,xmm5,1h + pshufd xmm3,xmm5,0b1h movdqu xmm1,XMMWORD PTR[16+rbx] movdqu xmm2,XMMWORD PTR[32+rbx] por xmm5,xmm3 @@ -1970,7 +1970,7 @@ DB 102,72,15,110,199 call __ecp_nistz256_sqr_montq pcmpeqd xmm5,xmm4 - pshufd xmm4,xmm3,1h + pshufd xmm4,xmm3,0b1h mov rax,QWORD PTR[rbx] mov r9,r12 diff --git a/deps/openssl/asm_obsolete/x64-win32-masm/sha/sha256-x86_64.asm b/deps/openssl/asm_obsolete/x64-win32-masm/sha/sha256-x86_64.asm index 3b1559934f6c27..69a382b8924550 100644 --- a/deps/openssl/asm_obsolete/x64-win32-masm/sha/sha256-x86_64.asm +++ b/deps/openssl/asm_obsolete/x64-win32-masm/sha/sha256-x86_64.asm @@ -1788,7 +1788,7 @@ $L$prologue_shaext:: movdqa xmm7,XMMWORD PTR[((512-128))+rcx] pshufd xmm0,xmm1,01bh - pshufd xmm1,xmm1,1h + pshufd xmm1,xmm1,0b1h pshufd xmm2,xmm2,01bh movdqa xmm8,xmm7 DB 102,15,58,15,202,8 @@ -1975,9 +1975,9 @@ DB 15,56,203,202 paddd xmm1,xmm9 jnz $L$oop_shaext - pshufd xmm2,xmm2,1h + pshufd xmm2,xmm2,0b1h pshufd xmm7,xmm1,01bh - pshufd xmm1,xmm1,1h + pshufd xmm1,xmm1,0b1h punpckhqdq xmm1,xmm2 DB 102,15,58,15,215,8