Module Name: src Committed By: christos Date: Sun Sep 8 13:09:21 UTC 2024
Modified Files: src/crypto/external/bsd/openssl/dist: Configure src/crypto/external/bsd/openssl/dist/apps/lib: opt.c src/crypto/external/bsd/openssl/dist/crypto/asn1: a_d2i_fp.c a_strex.c src/crypto/external/bsd/openssl/dist/crypto/conf: conf_def.c src/crypto/external/bsd/openssl/dist/crypto/pkcs7: pk7_doit.c src/crypto/external/bsd/openssl/dist/crypto/rand: randfile.c src/crypto/external/bsd/openssl/dist/crypto/rsa: rsa_oaep.c src/crypto/external/bsd/openssl/dist/ssl: ssl_lib.c ssl_sess.c t1_lib.c src/crypto/external/bsd/openssl/dist/test: evp_extra_test.c src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc: aesp8-ppc.S poly1305-ppc.S src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64: aesp8-ppc.S poly1305-ppc.S Log Message: merge and regen between 3.0.1[45] To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/crypto/external/bsd/openssl/dist/Configure cvs rdiff -u -r1.3 -r1.4 src/crypto/external/bsd/openssl/dist/apps/lib/opt.c cvs rdiff -u -r1.8 -r1.9 \ src/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c cvs rdiff -u -r1.11 -r1.12 \ src/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c cvs rdiff -u -r1.15 -r1.16 \ src/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c cvs rdiff -u -r1.11 -r1.12 \ src/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_doit.c cvs rdiff -u -r1.14 -r1.15 \ src/crypto/external/bsd/openssl/dist/crypto/rand/randfile.c cvs rdiff -u -r1.12 -r1.13 \ src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c cvs rdiff -u -r1.25 -r1.26 src/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c cvs rdiff -u -r1.14 -r1.15 \ src/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c cvs rdiff -u -r1.39 -r1.40 src/crypto/external/bsd/openssl/dist/ssl/t1_lib.c cvs rdiff -u -r1.15 -r1.16 \ src/crypto/external/bsd/openssl/dist/test/evp_extra_test.c cvs rdiff -u -r1.4 -r1.5 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S cvs rdiff -u -r1.3 -r1.4 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S cvs rdiff -u -r1.4 -r1.5 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S cvs rdiff -u -r1.3 -r1.4 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/poly1305-ppc.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/crypto/external/bsd/openssl/dist/Configure diff -u src/crypto/external/bsd/openssl/dist/Configure:1.35 src/crypto/external/bsd/openssl/dist/Configure:1.36 --- src/crypto/external/bsd/openssl/dist/Configure:1.35 Tue Jun 11 10:47:51 2024 +++ src/crypto/external/bsd/openssl/dist/Configure Sun Sep 8 09:09:19 2024 @@ -178,7 +178,6 @@ my @gcc_devteam_warn = qw( # -Wextended-offsetof -- no, needed in CMS ASN1 code my @clang_devteam_warn = qw( -Wno-unknown-warning-option - -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof @@ -1583,7 +1582,7 @@ if (!$disabled{makedepend}) { disable('unavailable', 'makedepend') unless $config{makedep_scheme}; } -if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') { +if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS' && !$predefined_C{_AIX}) { # probe for -Wa,--noexecstack option... if ($predefined_C{__clang__}) { # clang has builtin assembler, which doesn't recognize --help, @@ -3407,6 +3406,13 @@ sub absolutedir { return rel2abs($dir); } + # realpath() on Windows seems to check if the directory actually exists, + # which isn't what is wanted here. All we want to know is if a directory + # spec is absolute, not if it exists. + if ($^O eq "MSWin32") { + return rel2abs($dir); + } + # We use realpath() on Unix, since no other will properly clean out # a directory spec. use Cwd qw/realpath/; Index: src/crypto/external/bsd/openssl/dist/apps/lib/opt.c diff -u src/crypto/external/bsd/openssl/dist/apps/lib/opt.c:1.3 src/crypto/external/bsd/openssl/dist/apps/lib/opt.c:1.4 --- src/crypto/external/bsd/openssl/dist/apps/lib/opt.c:1.3 Tue Jun 11 10:47:51 2024 +++ src/crypto/external/bsd/openssl/dist/apps/lib/opt.c Sun Sep 8 09:09:20 2024 @@ -1,5 +1,5 @@ /* - * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -616,7 +616,7 @@ int opt_uintmax(const char *value, ossl_ opt_number_error(value); return 0; } - *result = (ossl_intmax_t)m; + *result = (ossl_uintmax_t)m; errno = oerrno; return 1; } Index: src/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c diff -u src/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c:1.8 src/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c:1.9 --- src/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c:1.8 Sun May 7 14:40:16 2023 +++ src/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c Sun Sep 8 09:09:20 2024 @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -148,6 +148,9 @@ int asn1_d2i_read_bio(BIO *in, BUF_MEM * goto err; } len += i; + if ((size_t)i < want) + continue; + } } /* else data already loaded */ Index: src/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c diff -u src/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c:1.11 src/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c:1.12 --- src/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c:1.11 Sun May 7 14:40:16 2023 +++ src/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c Sun Sep 8 09:09:20 2024 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,6 +10,7 @@ #include <stdio.h> #include <string.h> #include "internal/cryptlib.h" +#include "internal/sizes.h" #include "crypto/asn1.h" #include <openssl/crypto.h> #include <openssl/x509.h> @@ -345,8 +346,10 @@ static int do_print_ex(char_io *io_ch, v if (lflags & ASN1_STRFLGS_SHOW_TYPE) { const char *tagname; + tagname = ASN1_tag2str(type); - outlen += strlen(tagname); + /* We can directly cast here as tagname will never be too large. */ + outlen += (int)strlen(tagname); if (!io_ch(arg, tagname, outlen) || !io_ch(arg, ":", 1)) return -1; outlen++; @@ -372,7 +375,7 @@ static int do_print_ex(char_io *io_ch, v if (type == -1) { len = do_dump(lflags, io_ch, arg, str); - if (len < 0) + if (len < 0 || len > INT_MAX - outlen) return -1; outlen += len; return outlen; @@ -391,7 +394,7 @@ static int do_print_ex(char_io *io_ch, v } len = do_buf(str->data, str->length, type, flags, "es, io_ch, NULL); - if (len < 0) + if (len < 0 || len > INT_MAX - 2 - outlen) return -1; outlen += len; if (quotes) Index: src/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c diff -u src/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c:1.15 src/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c:1.16 --- src/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c:1.15 Wed May 31 15:30:29 2023 +++ src/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c Sun Sep 8 09:09:20 2024 @@ -1,5 +1,5 @@ /* - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -332,7 +332,7 @@ static int def_load_bio(CONF *conf, BIO v = NULL; /* check for line continuation */ - if (bufnum >= 1) { + if (!again && bufnum >= 1) { /* * If we have bytes and the last char '\\' and second last char * is not '\\' Index: src/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_doit.c diff -u src/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_doit.c:1.11 src/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_doit.c:1.12 --- src/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_doit.c:1.11 Sun May 7 14:40:21 2023 +++ src/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_doit.c Sun Sep 8 09:09:20 2024 @@ -1,5 +1,5 @@ /* - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1239,36 +1239,29 @@ static int add_attribute(STACK_OF(X509_A void *value) { X509_ATTRIBUTE *attr = NULL; + int i, n; if (*sk == NULL) { if ((*sk = sk_X509_ATTRIBUTE_new_null()) == NULL) return 0; - new_attrib: - if ((attr = X509_ATTRIBUTE_create(nid, atrtype, value)) == NULL) - return 0; - if (!sk_X509_ATTRIBUTE_push(*sk, attr)) { - X509_ATTRIBUTE_free(attr); - return 0; - } - } else { - int i; - - for (i = 0; i < sk_X509_ATTRIBUTE_num(*sk); i++) { - attr = sk_X509_ATTRIBUTE_value(*sk, i); - if (OBJ_obj2nid(X509_ATTRIBUTE_get0_object(attr)) == nid) { - X509_ATTRIBUTE_free(attr); - attr = X509_ATTRIBUTE_create(nid, atrtype, value); - if (attr == NULL) - return 0; - if (!sk_X509_ATTRIBUTE_set(*sk, i, attr)) { - X509_ATTRIBUTE_free(attr); - return 0; - } - goto end; - } - } - goto new_attrib; } + n = sk_X509_ATTRIBUTE_num(*sk); + for (i = 0; i < n; i++) { + attr = sk_X509_ATTRIBUTE_value(*sk, i); + if (OBJ_obj2nid(X509_ATTRIBUTE_get0_object(attr)) == nid) + goto end; + } + if (!sk_X509_ATTRIBUTE_push(*sk, NULL)) + return 0; + end: + attr = X509_ATTRIBUTE_create(nid, atrtype, value); + if (attr == NULL) { + if (i == n) + sk_X509_ATTRIBUTE_pop(*sk); + return 0; + } + X509_ATTRIBUTE_free(sk_X509_ATTRIBUTE_value(*sk, i)); + (void) sk_X509_ATTRIBUTE_set(*sk, i, attr); return 1; } Index: src/crypto/external/bsd/openssl/dist/crypto/rand/randfile.c diff -u src/crypto/external/bsd/openssl/dist/crypto/rand/randfile.c:1.14 src/crypto/external/bsd/openssl/dist/crypto/rand/randfile.c:1.15 --- src/crypto/external/bsd/openssl/dist/crypto/rand/randfile.c:1.14 Sun May 7 14:40:21 2023 +++ src/crypto/external/bsd/openssl/dist/crypto/rand/randfile.c Sun Sep 8 09:09:20 2024 @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -16,6 +16,7 @@ # include <sys/stat.h> #endif +#include "e_os.h" #include "internal/cryptlib.h" #include <errno.h> @@ -208,8 +209,16 @@ int RAND_write_file(const char *file) * should be restrictive from the start */ int fd = open(file, O_WRONLY | O_CREAT | O_BINARY, 0600); - if (fd != -1) + + if (fd != -1) { out = fdopen(fd, "wb"); + if (out == NULL) { + close(fd); + ERR_raise_data(ERR_LIB_RAND, RAND_R_CANNOT_OPEN_FILE, + "Filename=%s", file); + return -1; + } + } } #endif Index: src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c diff -u src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c:1.12 src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c:1.13 --- src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c:1.12 Sun May 7 14:40:22 2023 +++ src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c Sun Sep 8 09:09:20 2024 @@ -1,5 +1,5 @@ /* - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -186,7 +186,7 @@ int RSA_padding_check_PKCS1_OAEP_mgf1(un mdlen = EVP_MD_get_size(md); - if (tlen <= 0 || flen <= 0) + if (tlen <= 0 || flen <= 0 || mdlen <= 0) return -1; /* * |num| is the length of the modulus; |flen| is the length of the Index: src/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c diff -u src/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c:1.25 src/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c:1.26 --- src/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c:1.25 Tue Jun 11 10:47:52 2024 +++ src/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c Sun Sep 8 09:09:20 2024 @@ -2952,37 +2952,54 @@ int SSL_select_next_proto(unsigned char unsigned int server_len, const unsigned char *client, unsigned int client_len) { - unsigned int i, j; - const unsigned char *result; - int status = OPENSSL_NPN_UNSUPPORTED; + PACKET cpkt, csubpkt, spkt, ssubpkt; + + if (!PACKET_buf_init(&cpkt, client, client_len) + || !PACKET_get_length_prefixed_1(&cpkt, &csubpkt) + || PACKET_remaining(&csubpkt) == 0) { + *out = NULL; + *outlen = 0; + return OPENSSL_NPN_NO_OVERLAP; + } + + /* + * Set the default opportunistic protocol. Will be overwritten if we find + * a match. + */ + *out = (unsigned char *)PACKET_data(&csubpkt); + *outlen = (unsigned char)PACKET_remaining(&csubpkt); /* * For each protocol in server preference order, see if we support it. */ - for (i = 0; i < server_len;) { - for (j = 0; j < client_len;) { - if (server[i] == client[j] && - memcmp(&server[i + 1], &client[j + 1], server[i]) == 0) { - /* We found a match */ - result = &server[i]; - status = OPENSSL_NPN_NEGOTIATED; - goto found; + if (PACKET_buf_init(&spkt, server, server_len)) { + while (PACKET_get_length_prefixed_1(&spkt, &ssubpkt)) { + if (PACKET_remaining(&ssubpkt) == 0) + continue; /* Invalid - ignore it */ + if (PACKET_buf_init(&cpkt, client, client_len)) { + while (PACKET_get_length_prefixed_1(&cpkt, &csubpkt)) { + if (PACKET_equal(&csubpkt, PACKET_data(&ssubpkt), + PACKET_remaining(&ssubpkt))) { + /* We found a match */ + *out = (unsigned char *)PACKET_data(&ssubpkt); + *outlen = (unsigned char)PACKET_remaining(&ssubpkt); + return OPENSSL_NPN_NEGOTIATED; + } + } + /* Ignore spurious trailing bytes in the client list */ + } else { + /* This should never happen */ + return OPENSSL_NPN_NO_OVERLAP; } - j += client[j]; - j++; } - i += server[i]; - i++; + /* Ignore spurious trailing bytes in the server list */ } - /* There's no overlap between our protocols and the server's list. */ - result = client; - status = OPENSSL_NPN_NO_OVERLAP; - - found: - *out = (unsigned char *)result + 1; - *outlen = result[0]; - return status; + /* + * There's no overlap between our protocols and the server's list. We use + * the default opportunistic protocol selected earlier + */ + return OPENSSL_NPN_NO_OVERLAP; } #ifndef OPENSSL_NO_NEXTPROTONEG Index: src/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c diff -u src/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c:1.14 src/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c:1.15 --- src/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c:1.14 Tue Jun 11 10:47:52 2024 +++ src/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c Sun Sep 8 09:09:21 2024 @@ -53,21 +53,36 @@ __owur static int timeoutcmp(SSL_SESSION return 0; } +#ifdef __DJGPP__ /* time_t is unsigned on djgpp, it's signed anywhere else */ +# define TMAX(_type_) ((time_t)-1) +#else +# define TMAX(_type_) ((time_t)(((_type_)-1) >> 1)) +#endif + +#define CALCULATE_TIMEOUT(_ss_, _type_) do { \ + _type_ overflow; \ + time_t tmax = TMAX(_type_); \ + overflow = (_type_)tmax - (_type_)(_ss_)->time; \ + if ((_ss_)->timeout > (time_t)overflow) { \ + (_ss_)->timeout_ovf = 1; \ + (_ss_)->calc_timeout = (_ss_)->timeout - (time_t)overflow; \ + } else { \ + (_ss_)->timeout_ovf = 0; \ + (_ss_)->calc_timeout = (_ss_)->time + (_ss_)->timeout; \ + } \ + } while (0) /* * Calculates effective timeout, saving overflow state * Locking must be done by the caller of this function */ void ssl_session_calculate_timeout(SSL_SESSION *ss) { - /* Force positive timeout */ - if (ss->timeout < 0) - ss->timeout = 0; - ss->calc_timeout = ss->time + ss->timeout; - /* - * |timeout| is always zero or positive, so the check for - * overflow only needs to consider if |time| is positive - */ - ss->timeout_ovf = ss->time > 0 && ss->calc_timeout < ss->time; + + if (sizeof(time_t) == 8) + CALCULATE_TIMEOUT(ss, uint64_t); + else + CALCULATE_TIMEOUT(ss, uint32_t); + /* * N.B. Realistic overflow can only occur in our lifetimes on a * 32-bit machine in January 2038. @@ -132,6 +147,7 @@ SSL_SESSION *SSL_SESSION_new(void) return NULL; } + ss->ext.max_fragment_len_mode = TLSEXT_max_fragment_length_UNSPECIFIED; ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */ ss->references = 1; ss->timeout = 60 * 5 + 4; /* 5 minute timeout by default */ Index: src/crypto/external/bsd/openssl/dist/ssl/t1_lib.c diff -u src/crypto/external/bsd/openssl/dist/ssl/t1_lib.c:1.39 src/crypto/external/bsd/openssl/dist/ssl/t1_lib.c:1.40 --- src/crypto/external/bsd/openssl/dist/ssl/t1_lib.c:1.39 Tue Jun 11 10:47:52 2024 +++ src/crypto/external/bsd/openssl/dist/ssl/t1_lib.c Sun Sep 8 09:09:21 2024 @@ -3401,6 +3401,8 @@ int SSL_set_tlsext_max_fragment_length(S uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *session) { + if (session->ext.max_fragment_len_mode == TLSEXT_max_fragment_length_UNSPECIFIED) + return TLSEXT_max_fragment_length_DISABLED; return session->ext.max_fragment_len_mode; } Index: src/crypto/external/bsd/openssl/dist/test/evp_extra_test.c diff -u src/crypto/external/bsd/openssl/dist/test/evp_extra_test.c:1.15 src/crypto/external/bsd/openssl/dist/test/evp_extra_test.c:1.16 --- src/crypto/external/bsd/openssl/dist/test/evp_extra_test.c:1.15 Tue Jun 11 10:47:52 2024 +++ src/crypto/external/bsd/openssl/dist/test/evp_extra_test.c Sun Sep 8 09:09:21 2024 @@ -5351,6 +5351,25 @@ static int test_aes_rc4_keylen_change_cv } #endif +static int test_invalid_ctx_for_digest(void) +{ + int ret; + EVP_MD_CTX *mdctx; + + mdctx = EVP_MD_CTX_new(); + if (!TEST_ptr(mdctx)) + return 0; + + if (!TEST_int_eq(EVP_DigestUpdate(mdctx, "test", sizeof("test") - 1), 0)) + ret = 0; + else + ret = 1; + + EVP_MD_CTX_free(mdctx); + + return ret; +} + int setup_tests(void) { OPTION_CHOICE o; @@ -5514,6 +5533,8 @@ int setup_tests(void) ADD_TEST(test_aes_rc4_keylen_change_cve_2023_5363); #endif + ADD_TEST(test_invalid_ctx_for_digest); + return 1; } Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S:1.4 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S:1.5 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S:1.4 Sat Mar 21 20:53:12 2020 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S Sun Sep 8 09:09:21 2024 @@ -8,11 +8,12 @@ rcon: .byte 0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00 .byte 0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe .Lconsts: mflr 0 bcl 20,31,$+4 mflr 6 - addi 6,6,-0x48 + addi 6,6,-0x58 mtlr 0 blr .long 0 @@ -2346,6 +2347,18 @@ _aesp8_xts_encrypt6x: li 31,0x70 mtspr 256,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -2388,69 +2401,77 @@ _aesp8_xts_encrypt6x: vperm 31,31,22,7 lvx 25,3,7 + + + + + + + + vperm 0,2,4,5 subi 10,10,31 vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -2476,6 +2497,8 @@ _aesp8_xts_encrypt6x: lvx 25,3,7 bc 16,0,.Loop_xts_enc6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C508 @@ -2485,7 +2508,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x11ADC508 .long 0x11CEC508 - vsldoi 11,11,11,15 .long 0x11EFC508 .long 0x1210C508 @@ -2493,7 +2515,8 @@ _aesp8_xts_encrypt6x: vand 11,11,10 .long 0x10E7CD08 .long 0x118CCD08 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD08 .long 0x11CECD08 vxor 1,18,31 @@ -2504,13 +2527,13 @@ _aesp8_xts_encrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D508 .long 0x118CD508 vand 11,11,10 .long 0x11ADD508 .long 0x11CED508 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD508 .long 0x1210D508 @@ -2524,7 +2547,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x10E7DD08 .long 0x118CDD08 - vsldoi 11,11,11,15 .long 0x11ADDD08 .long 0x11CEDD08 vand 11,11,10 @@ -2532,7 +2554,8 @@ _aesp8_xts_encrypt6x: .long 0x1210DD08 addi 7,1,32+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E508 .long 0x118CE508 vxor 3,20,31 @@ -2541,7 +2564,6 @@ _aesp8_xts_encrypt6x: .long 0x11ADE508 .long 0x11CEE508 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE508 .long 0x1210E508 lvx 24,0,7 @@ -2549,7 +2571,8 @@ _aesp8_xts_encrypt6x: .long 0x10E7ED08 .long 0x118CED08 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED08 .long 0x11CEED08 vxor 4,21,31 @@ -2559,14 +2582,14 @@ _aesp8_xts_encrypt6x: .long 0x1210ED08 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F508 .long 0x118CF508 vand 11,11,10 .long 0x11ADF508 .long 0x11CEF508 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF508 .long 0x1210F508 vxor 5,22,31 @@ -2576,7 +2599,6 @@ _aesp8_xts_encrypt6x: .long 0x10E70509 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D09 .long 0x7C235699 .long 0x11AD1509 @@ -2589,7 +2611,10 @@ _aesp8_xts_encrypt6x: .long 0x11EF2509 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x11702D09 @@ -2622,6 +2647,8 @@ _aesp8_xts_encrypt6x: mtctr 9 beq .Loop_xts_enc6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_enc6x_zero cmpwi 5,0x20 @@ -2998,6 +3025,18 @@ _aesp8_xts_decrypt6x: li 31,0x70 mtspr 256,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -3045,64 +3084,64 @@ _aesp8_xts_decrypt6x: vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -3128,6 +3167,8 @@ _aesp8_xts_decrypt6x: lvx 25,3,7 bc 16,0,.Loop_xts_dec6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C548 @@ -3137,7 +3178,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x11ADC548 .long 0x11CEC548 - vsldoi 11,11,11,15 .long 0x11EFC548 .long 0x1210C548 @@ -3145,7 +3185,8 @@ _aesp8_xts_decrypt6x: vand 11,11,10 .long 0x10E7CD48 .long 0x118CCD48 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD48 .long 0x11CECD48 vxor 1,18,31 @@ -3156,13 +3197,13 @@ _aesp8_xts_decrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D548 .long 0x118CD548 vand 11,11,10 .long 0x11ADD548 .long 0x11CED548 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD548 .long 0x1210D548 @@ -3176,7 +3217,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x10E7DD48 .long 0x118CDD48 - vsldoi 11,11,11,15 .long 0x11ADDD48 .long 0x11CEDD48 vand 11,11,10 @@ -3184,7 +3224,8 @@ _aesp8_xts_decrypt6x: .long 0x1210DD48 addi 7,1,32+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E548 .long 0x118CE548 vxor 3,20,31 @@ -3193,7 +3234,6 @@ _aesp8_xts_decrypt6x: .long 0x11ADE548 .long 0x11CEE548 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE548 .long 0x1210E548 lvx 24,0,7 @@ -3201,7 +3241,8 @@ _aesp8_xts_decrypt6x: .long 0x10E7ED48 .long 0x118CED48 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED48 .long 0x11CEED48 vxor 4,21,31 @@ -3211,14 +3252,14 @@ _aesp8_xts_decrypt6x: .long 0x1210ED48 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F548 .long 0x118CF548 vand 11,11,10 .long 0x11ADF548 .long 0x11CEF548 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF548 .long 0x1210F548 vxor 5,22,31 @@ -3228,7 +3269,6 @@ _aesp8_xts_decrypt6x: .long 0x10E70549 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D49 .long 0x7C235699 .long 0x11AD1549 @@ -3241,7 +3281,10 @@ _aesp8_xts_decrypt6x: .long 0x11EF2549 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x12102D49 .long 0x7CBD5699 @@ -3272,6 +3315,8 @@ _aesp8_xts_decrypt6x: mtctr 9 beq .Loop_xts_dec6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_dec6x_zero cmpwi 5,0x20 Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S:1.3 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S:1.4 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S:1.3 Tue May 9 13:21:17 2023 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S Sun Sep 8 09:09:21 2024 @@ -472,7 +472,7 @@ __poly1305_mul: .align 5 __poly1305_blocks_vsx: - stwu 1,-384(1) + stwu 1,-368(1) mflr 0 li 10,167 li 11,183 @@ -483,12 +483,12 @@ __poly1305_blocks_vsx: addi 11,11,32 stvx 22,10,1 addi 10,10,32 - stvx 23,10,1 - addi 10,10,32 - stvx 24,11,1 + stvx 23,11,1 addi 11,11,32 - stvx 25,10,1 + stvx 24,10,1 addi 10,10,32 + stvx 25,11,1 + addi 11,11,32 stvx 26,10,1 addi 10,10,32 stvx 27,11,1 @@ -499,15 +499,15 @@ __poly1305_blocks_vsx: addi 11,11,32 stvx 30,10,1 stvx 31,11,1 - stw 12,360(1) + stw 12,344(1) li 12,-1 mtspr 256,12 - stw 27,364(1) - stw 28,368(1) - stw 29,372(1) - stw 30,376(1) - stw 31,380(1) - stw 0,388(1) + stw 27,348(1) + stw 28,352(1) + stw 29,356(1) + stw 30,360(1) + stw 31,364(1) + stw 0,372(1) bl .LPICmeup @@ -1208,7 +1208,7 @@ __poly1305_blocks_vsx: .align 4 .Ldone_vsx: - lwz 0,388(1) + lwz 0,372(1) li 27,4 li 28,8 li 29,12 @@ -1219,39 +1219,39 @@ __poly1305_blocks_vsx: .long 0x7C7D1919 .long 0x7C9E1919 - lwz 12,360(1) + lwz 12,344(1) mtlr 0 li 10,167 li 11,183 mtspr 256,12 lvx 20,10,1 addi 10,10,32 - lvx 21,10,1 - addi 10,10,32 - lvx 22,11,1 + lvx 21,11,1 addi 11,11,32 - lvx 23,10,1 + lvx 22,10,1 addi 10,10,32 - lvx 24,11,1 + lvx 23,11,1 addi 11,11,32 - lvx 25,10,1 + lvx 24,10,1 addi 10,10,32 - lvx 26,11,1 + lvx 25,11,1 addi 11,11,32 - lvx 27,10,1 + lvx 26,10,1 addi 10,10,32 - lvx 28,11,1 + lvx 27,11,1 addi 11,11,32 - lvx 29,10,1 + lvx 28,10,1 addi 10,10,32 - lvx 30,11,1 - lvx 31,10,1 - lwz 27,364(1) - lwz 28,368(1) - lwz 29,372(1) - lwz 30,376(1) - lwz 31,380(1) - addi 1,1,384 + lvx 29,11,1 + addi 11,11,32 + lvx 30,10,1 + lvx 31,11,1 + lwz 27,348(1) + lwz 28,352(1) + lwz 29,356(1) + lwz 30,360(1) + lwz 31,364(1) + addi 1,1,368 blr .long 0 .byte 0,12,0x04,1,0x80,5,4,0 Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S:1.4 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S:1.5 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S:1.4 Sat Mar 21 20:53:12 2020 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S Sun Sep 8 09:09:21 2024 @@ -8,11 +8,12 @@ rcon: .byte 0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00 .byte 0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe .Lconsts: mflr 0 bcl 20,31,$+4 mflr 6 - addi 6,6,-0x48 + addi 6,6,-0x58 mtlr 0 blr .long 0 @@ -2386,6 +2387,18 @@ _aesp8_xts_encrypt6x: li 31,0x70 mtspr 256,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -2428,69 +2441,77 @@ _aesp8_xts_encrypt6x: vperm 31,31,22,7 lvx 25,3,7 + + + + + + + + vperm 0,2,4,5 subi 10,10,31 vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -2516,6 +2537,8 @@ _aesp8_xts_encrypt6x: lvx 25,3,7 bc 16,0,.Loop_xts_enc6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C508 @@ -2525,7 +2548,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x11ADC508 .long 0x11CEC508 - vsldoi 11,11,11,15 .long 0x11EFC508 .long 0x1210C508 @@ -2533,7 +2555,8 @@ _aesp8_xts_encrypt6x: vand 11,11,10 .long 0x10E7CD08 .long 0x118CCD08 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD08 .long 0x11CECD08 vxor 1,18,31 @@ -2544,13 +2567,13 @@ _aesp8_xts_encrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D508 .long 0x118CD508 vand 11,11,10 .long 0x11ADD508 .long 0x11CED508 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD508 .long 0x1210D508 @@ -2564,7 +2587,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x10E7DD08 .long 0x118CDD08 - vsldoi 11,11,11,15 .long 0x11ADDD08 .long 0x11CEDD08 vand 11,11,10 @@ -2572,7 +2594,8 @@ _aesp8_xts_encrypt6x: .long 0x1210DD08 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E508 .long 0x118CE508 vxor 3,20,31 @@ -2581,7 +2604,6 @@ _aesp8_xts_encrypt6x: .long 0x11ADE508 .long 0x11CEE508 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE508 .long 0x1210E508 lvx 24,0,7 @@ -2589,7 +2611,8 @@ _aesp8_xts_encrypt6x: .long 0x10E7ED08 .long 0x118CED08 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED08 .long 0x11CEED08 vxor 4,21,31 @@ -2599,14 +2622,14 @@ _aesp8_xts_encrypt6x: .long 0x1210ED08 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F508 .long 0x118CF508 vand 11,11,10 .long 0x11ADF508 .long 0x11CEF508 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF508 .long 0x1210F508 vxor 5,22,31 @@ -2616,7 +2639,6 @@ _aesp8_xts_encrypt6x: .long 0x10E70509 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D09 .long 0x7C235699 .long 0x11AD1509 @@ -2629,7 +2651,10 @@ _aesp8_xts_encrypt6x: .long 0x11EF2509 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x11702D09 @@ -2662,6 +2687,8 @@ _aesp8_xts_encrypt6x: mtctr 9 beq .Loop_xts_enc6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_enc6x_zero cmpwi 5,0x20 @@ -3038,6 +3065,18 @@ _aesp8_xts_decrypt6x: li 31,0x70 mtspr 256,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -3085,64 +3124,64 @@ _aesp8_xts_decrypt6x: vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -3168,6 +3207,8 @@ _aesp8_xts_decrypt6x: lvx 25,3,7 bc 16,0,.Loop_xts_dec6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C548 @@ -3177,7 +3218,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x11ADC548 .long 0x11CEC548 - vsldoi 11,11,11,15 .long 0x11EFC548 .long 0x1210C548 @@ -3185,7 +3225,8 @@ _aesp8_xts_decrypt6x: vand 11,11,10 .long 0x10E7CD48 .long 0x118CCD48 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD48 .long 0x11CECD48 vxor 1,18,31 @@ -3196,13 +3237,13 @@ _aesp8_xts_decrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D548 .long 0x118CD548 vand 11,11,10 .long 0x11ADD548 .long 0x11CED548 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD548 .long 0x1210D548 @@ -3216,7 +3257,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x10E7DD48 .long 0x118CDD48 - vsldoi 11,11,11,15 .long 0x11ADDD48 .long 0x11CEDD48 vand 11,11,10 @@ -3224,7 +3264,8 @@ _aesp8_xts_decrypt6x: .long 0x1210DD48 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E548 .long 0x118CE548 vxor 3,20,31 @@ -3233,7 +3274,6 @@ _aesp8_xts_decrypt6x: .long 0x11ADE548 .long 0x11CEE548 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE548 .long 0x1210E548 lvx 24,0,7 @@ -3241,7 +3281,8 @@ _aesp8_xts_decrypt6x: .long 0x10E7ED48 .long 0x118CED48 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED48 .long 0x11CEED48 vxor 4,21,31 @@ -3251,14 +3292,14 @@ _aesp8_xts_decrypt6x: .long 0x1210ED48 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F548 .long 0x118CF548 vand 11,11,10 .long 0x11ADF548 .long 0x11CEF548 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF548 .long 0x1210F548 vxor 5,22,31 @@ -3268,7 +3309,6 @@ _aesp8_xts_decrypt6x: .long 0x10E70549 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D49 .long 0x7C235699 .long 0x11AD1549 @@ -3281,7 +3321,10 @@ _aesp8_xts_decrypt6x: .long 0x11EF2549 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x12102D49 .long 0x7CBD5699 @@ -3312,6 +3355,8 @@ _aesp8_xts_decrypt6x: mtctr 9 beq .Loop_xts_dec6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_dec6x_zero cmpwi 5,0x20 Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/poly1305-ppc.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/poly1305-ppc.S:1.3 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/poly1305-ppc.S:1.4 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/poly1305-ppc.S:1.3 Tue May 9 13:21:17 2023 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/poly1305-ppc.S Sun Sep 8 09:09:21 2024 @@ -390,7 +390,7 @@ __poly1305_splat: .align 5 __poly1305_blocks_vsx: - stdu 1,-432(1) + stdu 1,-416(1) mflr 0 li 10,191 li 11,207 @@ -401,12 +401,12 @@ __poly1305_blocks_vsx: addi 11,11,32 stvx 22,10,1 addi 10,10,32 - stvx 23,10,1 - addi 10,10,32 - stvx 24,11,1 + stvx 23,11,1 addi 11,11,32 - stvx 25,10,1 + stvx 24,10,1 addi 10,10,32 + stvx 25,11,1 + addi 11,11,32 stvx 26,10,1 addi 10,10,32 stvx 27,11,1 @@ -417,15 +417,15 @@ __poly1305_blocks_vsx: addi 11,11,32 stvx 30,10,1 stvx 31,11,1 - stw 12,388(1) + stw 12,372(1) li 12,-1 mtspr 256,12 - std 27,392(1) - std 28,400(1) - std 29,408(1) - std 30,416(1) - std 31,424(1) - std 0,448(1) + std 27,376(1) + std 28,384(1) + std 29,392(1) + std 30,400(1) + std 31,408(1) + std 0,432(1) bl .LPICmeup @@ -1060,7 +1060,7 @@ __poly1305_blocks_vsx: .align 4 .Ldone_vsx: - ld 0,448(1) + ld 0,432(1) li 27,4 li 28,8 li 29,12 @@ -1071,39 +1071,39 @@ __poly1305_blocks_vsx: .long 0x7C7D1919 .long 0x7C9E1919 - lwz 12,388(1) + lwz 12,372(1) mtlr 0 li 10,191 li 11,207 mtspr 256,12 lvx 20,10,1 addi 10,10,32 - lvx 21,10,1 - addi 10,10,32 - lvx 22,11,1 + lvx 21,11,1 addi 11,11,32 - lvx 23,10,1 + lvx 22,10,1 addi 10,10,32 - lvx 24,11,1 + lvx 23,11,1 addi 11,11,32 - lvx 25,10,1 + lvx 24,10,1 addi 10,10,32 - lvx 26,11,1 + lvx 25,11,1 addi 11,11,32 - lvx 27,10,1 + lvx 26,10,1 addi 10,10,32 - lvx 28,11,1 + lvx 27,11,1 addi 11,11,32 - lvx 29,10,1 + lvx 28,10,1 addi 10,10,32 - lvx 30,11,1 - lvx 31,10,1 - ld 27,392(1) - ld 28,400(1) - ld 29,408(1) - ld 30,416(1) - ld 31,424(1) - addi 1,1,432 + lvx 29,11,1 + addi 11,11,32 + lvx 30,10,1 + lvx 31,11,1 + ld 27,376(1) + ld 28,384(1) + ld 29,392(1) + ld 30,400(1) + ld 31,408(1) + addi 1,1,416 blr .long 0 .byte 0,12,0x04,1,0x80,5,4,0