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