Update the sources accordingly to its native counter part (1.1.1c)
Four patches are not being applied due to failures in the build and/or applying them: - openssl-1.1.1-fips.patch - openssl-1.1.1-fips-post-rand.patch - openssl-1.1.1-evp-kdf.patch - openssl-1.1.1-ssh-kdf.patch Mind that fips related patches were not applied in the previously version either. Resolves: rhbz#1740772 Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
This commit is contained in:
parent
4698bb5726
commit
3505ea6700
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,3 +9,4 @@ openssl-1.0.0a-usa.tar.bz2
|
|||||||
/openssl-1.0.2f-hobbled.tar.xz
|
/openssl-1.0.2f-hobbled.tar.xz
|
||||||
/openssl-1.0.2h-hobbled.tar.xz
|
/openssl-1.0.2h-hobbled.tar.xz
|
||||||
/openssl-1.1.0h-hobbled.tar.xz
|
/openssl-1.1.0h-hobbled.tar.xz
|
||||||
|
/openssl-1.1.1c-hobbled.tar.xz
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
UTF8 := $(shell locale -c LC_CTYPE -k | grep -q charmap.*UTF-8 && echo -utf8)
|
UTF8 := $(shell locale -c LC_CTYPE -k | grep -q charmap.*UTF-8 && echo -utf8)
|
||||||
SERIAL=0
|
|
||||||
DAYS=365
|
DAYS=365
|
||||||
KEYLEN=2048
|
KEYLEN=2048
|
||||||
TYPE=rsa:$(KEYLEN)
|
TYPE=rsa:$(KEYLEN)
|
||||||
|
EXTRA_FLAGS=
|
||||||
|
ifdef SERIAL
|
||||||
|
EXTRA_FLAGS+=-set_serial $(SERIAL)
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: usage
|
.PHONY: usage
|
||||||
.SUFFIXES: .key .csr .crt .pem
|
.SUFFIXES: .key .csr .crt .pem
|
||||||
@ -23,8 +26,9 @@ usage:
|
|||||||
@echo "To create a CSR for use with Apache, run \"make certreq\"."
|
@echo "To create a CSR for use with Apache, run \"make certreq\"."
|
||||||
@echo "To create a test certificate for use with Apache, run \"make testcert\"."
|
@echo "To create a test certificate for use with Apache, run \"make testcert\"."
|
||||||
@echo
|
@echo
|
||||||
@echo "To create a test certificate with serial number other than zero, add SERIAL=num"
|
@echo "To create a test certificate with serial number other than random, add SERIAL=num"
|
||||||
@echo "You can also specify key length with KEYLEN=n and expiration in days with DAYS=n"
|
@echo "You can also specify key length with KEYLEN=n and expiration in days with DAYS=n"
|
||||||
|
@echo "Any additional options can be passed to openssl req via EXTRA_FLAGS"
|
||||||
@echo
|
@echo
|
||||||
@echo Examples:
|
@echo Examples:
|
||||||
@echo " make server.key"
|
@echo " make server.key"
|
||||||
@ -35,14 +39,14 @@ usage:
|
|||||||
@echo " make certreq"
|
@echo " make certreq"
|
||||||
@echo " make testcert"
|
@echo " make testcert"
|
||||||
@echo " make server.crt SERIAL=1"
|
@echo " make server.crt SERIAL=1"
|
||||||
@echo " make stunnel.pem SERIAL=2"
|
@echo " make stunnel.pem EXTRA_FLAGS=-sha384"
|
||||||
@echo " make testcert SERIAL=3"
|
@echo " make testcert DAYS=600"
|
||||||
|
|
||||||
%.pem:
|
%.pem:
|
||||||
umask 77 ; \
|
umask 77 ; \
|
||||||
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
|
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
|
||||||
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
|
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
|
||||||
/usr/bin/openssl req $(UTF8) -newkey $(TYPE) -keyout $$PEM1 -nodes -x509 -days $(DAYS) -out $$PEM2 -set_serial $(SERIAL) ; \
|
/usr/bin/openssl req $(UTF8) -newkey $(TYPE) -keyout $$PEM1 -nodes -x509 -days $(DAYS) -out $$PEM2 $(EXTRA_FLAGS) ; \
|
||||||
cat $$PEM1 > $@ ; \
|
cat $$PEM1 > $@ ; \
|
||||||
echo "" >> $@ ; \
|
echo "" >> $@ ; \
|
||||||
cat $$PEM2 >> $@ ; \
|
cat $$PEM2 >> $@ ; \
|
||||||
@ -58,7 +62,7 @@ usage:
|
|||||||
|
|
||||||
%.crt: %.key
|
%.crt: %.key
|
||||||
umask 77 ; \
|
umask 77 ; \
|
||||||
/usr/bin/openssl req $(UTF8) -new -key $^ -x509 -days $(DAYS) -out $@ -set_serial $(SERIAL)
|
/usr/bin/openssl req $(UTF8) -new -key $^ -x509 -days $(DAYS) -out $@ $(EXTRA_FLAGS)
|
||||||
|
|
||||||
TLSROOT=/etc/pki/tls
|
TLSROOT=/etc/pki/tls
|
||||||
KEY=$(TLSROOT)/private/localhost.key
|
KEY=$(TLSROOT)/private/localhost.key
|
||||||
@ -75,4 +79,4 @@ $(CSR): $(KEY)
|
|||||||
|
|
||||||
$(CRT): $(KEY)
|
$(CRT): $(KEY)
|
||||||
umask 77 ; \
|
umask 77 ; \
|
||||||
/usr/bin/openssl req $(UTF8) -new -key $(KEY) -x509 -days $(DAYS) -out $(CRT) -set_serial $(SERIAL)
|
/usr/bin/openssl req $(UTF8) -new -key $(KEY) -x509 -days $(DAYS) -out $(CRT) $(EXTRA_FLAGS)
|
||||||
|
25
ec_curve.c
25
ec_curve.c
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
|
* Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||||
*
|
*
|
||||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||||
* this file except in compliance with the License. You can obtain a copy
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
@ -7,26 +8,12 @@
|
|||||||
* https://www.openssl.org/source/license.html
|
* https://www.openssl.org/source/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* ====================================================================
|
|
||||||
* Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
|
|
||||||
*
|
|
||||||
* Portions of the attached software ("Contribution") are developed by
|
|
||||||
* SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
|
|
||||||
*
|
|
||||||
* The Contribution is licensed pursuant to the OpenSSL open source
|
|
||||||
* license provided above.
|
|
||||||
*
|
|
||||||
* The elliptic curve binary polynomial software is originally written by
|
|
||||||
* Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "ec_lcl.h"
|
#include "ec_lcl.h"
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
#include <openssl/obj_mac.h>
|
#include <openssl/obj_mac.h>
|
||||||
#include <openssl/opensslconf.h>
|
#include <openssl/opensslconf.h>
|
||||||
#include "e_os.h"
|
#include "internal/nelem.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int field_type, /* either NID_X9_62_prime_field or
|
int field_type, /* either NID_X9_62_prime_field or
|
||||||
@ -350,6 +337,8 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
EC_GROUP_set_curve_name(group, curve.nid);
|
||||||
|
|
||||||
if ((P = EC_POINT_new(group)) == NULL) {
|
if ((P = EC_POINT_new(group)) == NULL) {
|
||||||
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
|
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
|
||||||
goto err;
|
goto err;
|
||||||
@ -360,7 +349,7 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
|
|||||||
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
|
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (!EC_POINT_set_affine_coordinates_GFp(group, P, x, y, ctx)) {
|
if (!EC_POINT_set_affine_coordinates(group, P, x, y, ctx)) {
|
||||||
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
|
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
@ -415,8 +404,6 @@ EC_GROUP *EC_GROUP_new_by_curve_name(int nid)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EC_GROUP_set_curve_name(ret, nid);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
%global run_tests 0
|
%global run_tests 0
|
||||||
|
|
||||||
Name: mingw-openssl
|
Name: mingw-openssl
|
||||||
Version: 1.1.0h
|
Version: 1.1.1c
|
||||||
Release: 3%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: MinGW port of the OpenSSL toolkit
|
Summary: MinGW port of the OpenSSL toolkit
|
||||||
|
|
||||||
License: OpenSSL
|
License: OpenSSL
|
||||||
@ -45,30 +45,35 @@ Source12: ec_curve.c
|
|||||||
Source13: ectest.c
|
Source13: ectest.c
|
||||||
|
|
||||||
# Build changes
|
# Build changes
|
||||||
Patch1: openssl-1.1.0-build.patch
|
Patch1: openssl-1.1.1-build.patch
|
||||||
Patch2: openssl-1.1.0-defaults.patch
|
Patch2: openssl-1.1.1-defaults.patch
|
||||||
Patch3: openssl-1.1.0-no-html.patch
|
Patch3: openssl-1.1.0-no-html.patch
|
||||||
|
Patch4: openssl-1.1.1-man-rename.patch
|
||||||
# Bug fixes
|
# Bug fixes
|
||||||
Patch21: openssl-1.1.0-issuer-hash.patch
|
Patch21: openssl-1.1.0-issuer-hash.patch
|
||||||
Patch22: openssl-1.1.0-algo-doc.patch
|
|
||||||
Patch23: openssl-1.1.0-manfix.patch
|
|
||||||
# Functionality changes
|
# Functionality changes
|
||||||
Patch31: openssl-1.1.0-ca-dir.patch
|
Patch31: openssl-1.1.1-conf-paths.patch
|
||||||
Patch32: openssl-1.1.0-version-add-engines.patch
|
Patch32: openssl-1.1.1-version-add-engines.patch
|
||||||
Patch33: openssl-1.1.0-apps-dgst.patch
|
Patch33: openssl-1.1.1-apps-dgst.patch
|
||||||
Patch35: openssl-1.1.0-chil-fixes.patch
|
Patch36: openssl-1.1.1-no-brainpool.patch
|
||||||
Patch36: openssl-1.1.0-secure-getenv.patch
|
Patch37: openssl-1.1.1-ec-curves.patch
|
||||||
Patch37: openssl-1.1.0-ec-curves.patch
|
Patch38: openssl-1.1.1-no-weak-verify.patch
|
||||||
Patch38: openssl-1.1.0-no-weak-verify.patch
|
Patch40: openssl-1.1.1-disable-ssl3.patch
|
||||||
Patch39: openssl-1.1.0-cc-reqs.patch
|
Patch41: openssl-1.1.1-system-cipherlist.patch
|
||||||
Patch40: openssl-1.1.0-disable-ssl3.patch
|
Patch42: openssl-1.1.1-fips.patch
|
||||||
Patch41: openssl-1.1.0-system-cipherlist.patch
|
Patch43: openssl-1.1.1-ignore-bound.patch
|
||||||
Patch42: openssl-1.1.0-fips.patch
|
Patch44: openssl-1.1.1-version-override.patch
|
||||||
Patch44: openssl-1.1.0-bio-fd-preserve-nl.patch
|
Patch45: openssl-1.1.1-weak-ciphers.patch
|
||||||
Patch45: openssl-1.1.0-weak-ciphers.patch
|
Patch46: openssl-1.1.1-seclevel.patch
|
||||||
Patch46: openssl-1.1.0-silent-rnd-write.patch
|
Patch47: openssl-1.1.1-ts-sha256-default.patch
|
||||||
|
Patch48: openssl-1.1.1-fips-post-rand.patch
|
||||||
|
Patch49: openssl-1.1.1-evp-kdf.patch
|
||||||
|
Patch50: openssl-1.1.1-ssh-kdf.patch
|
||||||
# Backported fixes including security fixes
|
# Backported fixes including security fixes
|
||||||
Patch70: openssl-1.1.0-missing-quotes.patch
|
Patch51: openssl-1.1.1-upstream-sync.patch
|
||||||
|
Patch52: openssl-1.1.1-s390x-update.patch
|
||||||
|
Patch53: openssl-1.1.1-fips-crng-test.patch
|
||||||
|
Patch54: openssl-1.1.1-regression-fixes.patch
|
||||||
|
|
||||||
# MinGW-specific patches.
|
# MinGW-specific patches.
|
||||||
# The function secure_getenv is a GNU extension which isn't available on Windows
|
# The function secure_getenv is a GNU extension which isn't available on Windows
|
||||||
@ -173,27 +178,31 @@ cp %{SOURCE13} test/
|
|||||||
%patch1 -p1 -b .build %{?_rawbuild}
|
%patch1 -p1 -b .build %{?_rawbuild}
|
||||||
%patch2 -p1 -b .defaults
|
%patch2 -p1 -b .defaults
|
||||||
%patch3 -p1 -b .no-html %{?_rawbuild}
|
%patch3 -p1 -b .no-html %{?_rawbuild}
|
||||||
|
%patch4 -p1 -b .man-rename
|
||||||
|
|
||||||
%patch21 -p1 -b .issuer-hash
|
%patch21 -p1 -b .issuer-hash
|
||||||
%patch22 -p1 -b .algo-doc
|
|
||||||
%patch23 -p1 -b .manfix
|
|
||||||
|
|
||||||
%patch31 -p1 -b .ca-dir
|
%patch31 -p1 -b .conf-paths
|
||||||
%patch32 -p1 -b .version-add-engines
|
%patch32 -p1 -b .version-add-engines
|
||||||
%patch33 -p1 -b .dgst
|
%patch33 -p1 -b .dgst
|
||||||
%patch35 -p1 -b .chil
|
%patch36 -p1 -b .no-brainpool
|
||||||
#patch36 -p1 -b .secure-getenv
|
|
||||||
%patch37 -p1 -b .curves
|
%patch37 -p1 -b .curves
|
||||||
%patch38 -p1 -b .no-weak-verify
|
%patch38 -p1 -b .no-weak-verify
|
||||||
%patch39 -p1 -b .cc-reqs
|
|
||||||
%patch40 -p1 -b .disable-ssl3
|
%patch40 -p1 -b .disable-ssl3
|
||||||
%patch41 -p1 -b .system-cipherlist
|
%patch41 -p1 -b .system-cipherlist
|
||||||
#patch42 -p1 -b .fips
|
#%patch42 -p1 -b .fips
|
||||||
%patch44 -p1 -b .preserve-nl
|
%patch43 -p1 -b .ignore-bound
|
||||||
|
%patch44 -p1 -b .version-override
|
||||||
%patch45 -p1 -b .weak-ciphers
|
%patch45 -p1 -b .weak-ciphers
|
||||||
%patch46 -p1 -b .silent-rnd-write
|
%patch46 -p1 -b .seclevel
|
||||||
|
%patch47 -p1 -b .ts-sha256-default
|
||||||
%patch70 -p1 -b .missing-quotes
|
#%patch48 -p1 -b .fips-post-rand
|
||||||
|
#%patch49 -p1 -b .evp-kdf
|
||||||
|
#%patch50 -p1 -b .ssh-kdf
|
||||||
|
%patch51 -p1 -b .upstream-sync
|
||||||
|
%patch52 -p1 -b .s390x-update
|
||||||
|
%patch53 -p1 -b .crng-test
|
||||||
|
%patch54 -p1 -b .regression
|
||||||
|
|
||||||
# MinGW specific patches
|
# MinGW specific patches
|
||||||
%patch101 -p1 -b .secure_getenv_mingw
|
%patch101 -p1 -b .secure_getenv_mingw
|
||||||
@ -413,6 +422,9 @@ find %{buildroot}%{mingw64_prefix} | grep -E '.(exe|dll|pyd)$' | sed 's|^%{build
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 14 2019 Fabiano Fidêncio <fidencio@redhat.com> - 1.1.1c-1
|
||||||
|
- Update the sources accordingly to its native counter part, rhbz#1740772
|
||||||
|
|
||||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0h-3
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0h-3
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
diff -up openssl-1.1.0d/doc/crypto/EVP_DigestInit.pod.algo-doc openssl-1.1.0d/doc/crypto/EVP_DigestInit.pod
|
|
||||||
--- openssl-1.1.0d/doc/crypto/EVP_DigestInit.pod.algo-doc 2017-01-26 15:49:18.784947229 +0100
|
|
||||||
+++ openssl-1.1.0d/doc/crypto/EVP_DigestInit.pod 2017-01-26 15:52:46.458556068 +0100
|
|
||||||
@@ -152,7 +152,7 @@ corresponding OBJECT IDENTIFIER or NID_u
|
|
||||||
EVP_MD_size(), EVP_MD_block_size(), EVP_MD_CTX_size() and
|
|
||||||
EVP_MD_CTX_block_size() return the digest or block size in bytes.
|
|
||||||
|
|
||||||
-EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha1(),
|
|
||||||
+EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha1(), EVP_sha224(), EVP_sha256(), EVP_sha384(), EVP_sha512(),
|
|
||||||
EVP_mdc2(), EVP_ripemd160(), EVP_blake2b512(), and EVP_blake2s256() return
|
|
||||||
pointers to the corresponding EVP_MD structures.
|
|
||||||
|
|
||||||
diff -up openssl-1.1.0d/doc/crypto/EVP_EncryptInit.pod.algo-doc openssl-1.1.0d/doc/crypto/EVP_EncryptInit.pod
|
|
||||||
--- openssl-1.1.0d/doc/crypto/EVP_EncryptInit.pod.algo-doc 2017-01-26 14:10:24.000000000 +0100
|
|
||||||
+++ openssl-1.1.0d/doc/crypto/EVP_EncryptInit.pod 2017-01-26 15:49:18.784947229 +0100
|
|
||||||
@@ -108,6 +108,32 @@ EVP_chacha20, EVP_chacha20_poly1305 - EV
|
|
||||||
int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
|
|
||||||
int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
|
|
||||||
|
|
||||||
+ const EVP_CIPHER *EVP_des_ede3(void);
|
|
||||||
+ const EVP_CIPHER *EVP_des_ede3_ecb(void);
|
|
||||||
+ const EVP_CIPHER *EVP_des_ede3_cfb64(void);
|
|
||||||
+ const EVP_CIPHER *EVP_des_ede3_cfb1(void);
|
|
||||||
+ const EVP_CIPHER *EVP_des_ede3_cfb8(void);
|
|
||||||
+ const EVP_CIPHER *EVP_des_ede3_ofb(void);
|
|
||||||
+ const EVP_CIPHER *EVP_des_ede3_cbc(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_128_ecb(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_128_cbc(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_128_cfb1(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_128_cfb8(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_128_cfb128(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_128_ofb(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_192_ecb(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_192_cbc(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_192_cfb1(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_192_cfb8(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_192_cfb128(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_192_ofb(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_256_ecb(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_256_cbc(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_256_cfb1(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_256_cfb8(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_256_cfb128(void);
|
|
||||||
+ const EVP_CIPHER *EVP_aes_256_ofb(void);
|
|
||||||
+
|
|
||||||
=head1 DESCRIPTION
|
|
||||||
|
|
||||||
The EVP cipher routines are a high level interface to certain
|
|
@ -1,29 +0,0 @@
|
|||||||
diff -up openssl-1.1.0c/crypto/bio/bss_fd.c.preserve-nl openssl-1.1.0c/crypto/bio/bss_fd.c
|
|
||||||
--- openssl-1.1.0c/crypto/bio/bss_fd.c.preserve-nl 2016-11-10 15:03:44.000000000 +0100
|
|
||||||
+++ openssl-1.1.0c/crypto/bio/bss_fd.c 2016-12-22 14:36:16.730740423 +0100
|
|
||||||
@@ -202,8 +202,10 @@ static int fd_gets(BIO *bp, char *buf, i
|
|
||||||
char *ptr = buf;
|
|
||||||
char *end = buf + size - 1;
|
|
||||||
|
|
||||||
- while ((ptr < end) && (fd_read(bp, ptr, 1) > 0) && (ptr[0] != '\n'))
|
|
||||||
- ptr++;
|
|
||||||
+ while (ptr < end && fd_read(bp, ptr, 1) > 0) {
|
|
||||||
+ if (*ptr++ == '\n')
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
ptr[0] = '\0';
|
|
||||||
|
|
||||||
diff -up openssl-1.1.0c/doc/crypto/BIO_read.pod.preserve-nl openssl-1.1.0c/doc/crypto/BIO_read.pod
|
|
||||||
--- openssl-1.1.0c/doc/crypto/BIO_read.pod.preserve-nl 2016-11-10 15:03:45.000000000 +0100
|
|
||||||
+++ openssl-1.1.0c/doc/crypto/BIO_read.pod 2016-12-22 14:37:22.731245197 +0100
|
|
||||||
@@ -23,7 +23,8 @@ in B<buf>. Usually this operation will a
|
|
||||||
from the BIO of maximum length B<len-1>. There are exceptions to this,
|
|
||||||
however; for example, BIO_gets() on a digest BIO will calculate and
|
|
||||||
return the digest and other BIOs may not support BIO_gets() at all.
|
|
||||||
-The returned string is always NUL-terminated.
|
|
||||||
+The returned string is always NUL-terminated and the '\n' is preserved
|
|
||||||
+if present in the input data.
|
|
||||||
|
|
||||||
BIO_write() attempts to write B<len> bytes from B<buf> to BIO B<b>.
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
|||||||
diff -up openssl-1.1.0f/Configurations/unix-Makefile.tmpl.build openssl-1.1.0f/Configurations/unix-Makefile.tmpl
|
|
||||||
--- openssl-1.1.0f/Configurations/unix-Makefile.tmpl.build 2017-06-02 13:51:39.621289504 +0200
|
|
||||||
+++ openssl-1.1.0f/Configurations/unix-Makefile.tmpl 2017-06-02 13:54:45.298654812 +0200
|
|
||||||
@@ -553,7 +553,7 @@ uninstall_runtime:
|
|
||||||
install_man_docs:
|
|
||||||
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
|
|
||||||
@echo "*** Installing manpages"
|
|
||||||
- $(PERL) $(SRCDIR)/util/process_docs.pl \
|
|
||||||
+ TZ=UTC $(PERL) $(SRCDIR)/util/process_docs.pl \
|
|
||||||
--destdir=$(DESTDIR)$(MANDIR) --type=man --suffix=$(MANSUFFIX)
|
|
||||||
|
|
||||||
uninstall_man_docs:
|
|
||||||
@@ -565,7 +565,7 @@ uninstall_man_docs:
|
|
||||||
install_html_docs:
|
|
||||||
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
|
|
||||||
@echo "*** Installing HTML manpages"
|
|
||||||
- $(PERL) $(SRCDIR)/util/process_docs.pl \
|
|
||||||
+ TZ=UTC $(PERL) $(SRCDIR)/util/process_docs.pl \
|
|
||||||
--destdir=$(DESTDIR)$(HTMLDIR) --type=html
|
|
||||||
|
|
||||||
uninstall_html_docs:
|
|
||||||
diff -up openssl-1.1.0f/Configurations/10-main.conf.build openssl-1.1.0f/Configurations/10-main.conf
|
|
||||||
--- openssl-1.1.0f/Configurations/10-main.conf.build 2017-05-25 14:46:17.000000000 +0200
|
|
||||||
+++ openssl-1.1.0f/Configurations/10-main.conf 2017-06-02 13:51:39.622289528 +0200
|
|
||||||
@@ -662,6 +662,7 @@ sub vms_info {
|
|
||||||
cflags => add("-m64 -DL_ENDIAN"),
|
|
||||||
perlasm_scheme => "linux64le",
|
|
||||||
shared_ldflag => add("-m64"),
|
|
||||||
+ multilib => "64",
|
|
||||||
},
|
|
||||||
|
|
||||||
"linux-armv4" => {
|
|
||||||
@@ -702,6 +703,7 @@ sub vms_info {
|
|
||||||
"linux-aarch64" => {
|
|
||||||
inherit_from => [ "linux-generic64", asm("aarch64_asm") ],
|
|
||||||
perlasm_scheme => "linux64",
|
|
||||||
+ multilib => "64",
|
|
||||||
},
|
|
||||||
"linux-arm64ilp32" => { # https://wiki.linaro.org/Platform/arm64-ilp32
|
|
||||||
inherit_from => [ "linux-generic32", asm("aarch64_asm") ],
|
|
||||||
diff -up openssl-1.1.0g/test/evptests.txt.build openssl-1.1.0g/test/evptests.txt
|
|
||||||
--- openssl-1.1.0g/test/evptests.txt.build 2017-11-02 15:29:05.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/test/evptests.txt 2017-11-03 16:37:01.253671494 +0100
|
|
||||||
@@ -3707,14 +3707,6 @@ MCowBQYDK2VuAyEA3p7bfXt9wbTTW2HC7OQ1Nz+D
|
|
||||||
|
|
||||||
PrivPubKeyPair = Bob-25519:Bob-25519-PUBLIC
|
|
||||||
|
|
||||||
-Derive=Alice-25519
|
|
||||||
-PeerKey=Bob-25519-PUBLIC
|
|
||||||
-SharedSecret=4A5D9D5BA4CE2DE1728E3BF480350F25E07E21C947D19E3376F09B3C1E161742
|
|
||||||
-
|
|
||||||
-Derive=Bob-25519
|
|
||||||
-PeerKey=Alice-25519-PUBLIC
|
|
||||||
-SharedSecret=4A5D9D5BA4CE2DE1728E3BF480350F25E07E21C947D19E3376F09B3C1E161742
|
|
||||||
-
|
|
||||||
# Illegal sign/verify operations with X25519 key
|
|
||||||
|
|
||||||
Sign=Alice-25519
|
|
||||||
@@ -3727,6 +3719,14 @@ Result = KEYOP_INIT_ERROR
|
|
||||||
Function = EVP_PKEY_verify_init
|
|
||||||
Reason = operation not supported for this keytype
|
|
||||||
|
|
||||||
+Derive=Alice-25519
|
|
||||||
+PeerKey=Bob-25519-PUBLIC
|
|
||||||
+SharedSecret=4A5D9D5BA4CE2DE1728E3BF480350F25E07E21C947D19E3376F09B3C1E161742
|
|
||||||
+
|
|
||||||
+Derive=Bob-25519
|
|
||||||
+PeerKey=Alice-25519-PUBLIC
|
|
||||||
+SharedSecret=4A5D9D5BA4CE2DE1728E3BF480350F25E07E21C947D19E3376F09B3C1E161742
|
|
||||||
+
|
|
||||||
## ECDH Tests: test with randomly generated keys for all the listed curves
|
|
||||||
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
|||||||
diff -up openssl-1.1.0-pre5/apps/CA.pl.in.ca-dir openssl-1.1.0-pre5/apps/CA.pl.in
|
|
||||||
--- openssl-1.1.0-pre5/apps/CA.pl.in.ca-dir 2016-07-18 15:19:40.118110405 +0200
|
|
||||||
+++ openssl-1.1.0-pre5/apps/CA.pl.in 2016-07-18 15:21:06.531061337 +0200
|
|
||||||
@@ -26,7 +26,7 @@ my $X509 = "$openssl x509";
|
|
||||||
my $PKCS12 = "$openssl pkcs12";
|
|
||||||
|
|
||||||
# default openssl.cnf file has setup as per the following
|
|
||||||
-my $CATOP = "./demoCA";
|
|
||||||
+my $CATOP = "/etc/pki/CA";
|
|
||||||
my $CAKEY = "cakey.pem";
|
|
||||||
my $CAREQ = "careq.pem";
|
|
||||||
my $CACERT = "cacert.pem";
|
|
||||||
diff -up openssl-1.1.0-pre5/apps/openssl.cnf.ca-dir openssl-1.1.0-pre5/apps/openssl.cnf
|
|
||||||
--- openssl-1.1.0-pre5/apps/openssl.cnf.ca-dir 2016-07-18 15:19:40.114110315 +0200
|
|
||||||
+++ openssl-1.1.0-pre5/apps/openssl.cnf 2016-07-18 15:19:48.492299467 +0200
|
|
||||||
@@ -39,7 +39,7 @@ default_ca = CA_default # The default c
|
|
||||||
####################################################################
|
|
||||||
[ CA_default ]
|
|
||||||
|
|
||||||
-dir = ./demoCA # Where everything is kept
|
|
||||||
+dir = /etc/pki/CA # Where everything is kept
|
|
||||||
certs = $dir/certs # Where the issued certs are kept
|
|
||||||
crl_dir = $dir/crl # Where the issued crl are kept
|
|
||||||
database = $dir/index.txt # database index file.
|
|
@ -1,27 +0,0 @@
|
|||||||
diff -up openssl-1.1.0h/crypto/rsa/rsa_gen.c.cc-reqs openssl-1.1.0h/crypto/rsa/rsa_gen.c
|
|
||||||
--- openssl-1.1.0h/crypto/rsa/rsa_gen.c.cc-reqs 2018-03-27 15:50:39.000000000 +0200
|
|
||||||
+++ openssl-1.1.0h/crypto/rsa/rsa_gen.c 2018-03-29 14:37:53.405048562 +0200
|
|
||||||
@@ -86,6 +86,12 @@ static int rsa_builtin_keygen(RSA *rsa,
|
|
||||||
if (!rsa->iqmp && ((rsa->iqmp = BN_secure_new()) == NULL))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
+ /* prepare minimum p and q difference */
|
|
||||||
+ if (!BN_one(r3))
|
|
||||||
+ goto err;
|
|
||||||
+ if (bitsp > 100 && !BN_lshift(r3, r3, bitsp - 100))
|
|
||||||
+ goto err;
|
|
||||||
+
|
|
||||||
if (BN_copy(rsa->e, e_value) == NULL)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
@@ -118,7 +124,9 @@ static int rsa_builtin_keygen(RSA *rsa,
|
|
||||||
do {
|
|
||||||
if (!BN_generate_prime_ex(rsa->q, bitsq, 0, NULL, NULL, cb))
|
|
||||||
goto err;
|
|
||||||
- } while (BN_cmp(rsa->p, rsa->q) == 0);
|
|
||||||
+ if (!BN_sub(r2, rsa->q, rsa->p))
|
|
||||||
+ goto err;
|
|
||||||
+ } while (BN_ucmp(r2, r3) <= 0);
|
|
||||||
if (!BN_sub(r2, rsa->q, BN_value_one()))
|
|
||||||
goto err;
|
|
||||||
ERR_set_mark();
|
|
@ -1,15 +0,0 @@
|
|||||||
diff -up openssl-1.1.0-pre6/engines/e_chil.c.chil openssl-1.1.0-pre6/engines/e_chil.c
|
|
||||||
--- openssl-1.1.0-pre6/engines/e_chil.c.chil 2016-08-04 16:00:47.000000000 +0200
|
|
||||||
+++ openssl-1.1.0-pre6/engines/e_chil.c 2016-08-05 16:50:13.860588775 +0200
|
|
||||||
@@ -1195,6 +1195,11 @@ static int hwcrhk_insert_card(const char
|
|
||||||
UI *ui;
|
|
||||||
void *callback_data = NULL;
|
|
||||||
UI_METHOD *ui_method = NULL;
|
|
||||||
+ /* Despite what the documentation says prompt_info can be
|
|
||||||
+ * an empty string.
|
|
||||||
+ */
|
|
||||||
+ if (prompt_info && !*prompt_info)
|
|
||||||
+ prompt_info = NULL;
|
|
||||||
|
|
||||||
if (cactx) {
|
|
||||||
if (cactx->ui_method)
|
|
@ -1,85 +0,0 @@
|
|||||||
diff -up openssl-1.1.0h/apps/s_client.c.disable-ssl3 openssl-1.1.0h/apps/s_client.c
|
|
||||||
--- openssl-1.1.0h/apps/s_client.c.disable-ssl3 2018-03-29 14:38:39.612133765 +0200
|
|
||||||
+++ openssl-1.1.0h/apps/s_client.c 2018-03-29 14:41:51.309635904 +0200
|
|
||||||
@@ -1489,6 +1489,9 @@ int s_client_main(int argc, char **argv)
|
|
||||||
if (!config_ctx(cctx, ssl_args, ctx))
|
|
||||||
goto end;
|
|
||||||
|
|
||||||
+ if (min_version == SSL3_VERSION && max_version == SSL3_VERSION)
|
|
||||||
+ SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv3);
|
|
||||||
+
|
|
||||||
if (ssl_config) {
|
|
||||||
if (SSL_CTX_config(ctx, ssl_config) == 0) {
|
|
||||||
BIO_printf(bio_err, "Error using configuration \"%s\"\n",
|
|
||||||
diff -up openssl-1.1.0h/apps/s_server.c.disable-ssl3 openssl-1.1.0h/apps/s_server.c
|
|
||||||
--- openssl-1.1.0h/apps/s_server.c.disable-ssl3 2018-03-29 14:38:39.613133788 +0200
|
|
||||||
+++ openssl-1.1.0h/apps/s_server.c 2018-03-29 14:42:27.313481477 +0200
|
|
||||||
@@ -1619,6 +1619,9 @@ int s_server_main(int argc, char *argv[]
|
|
||||||
if (!config_ctx(cctx, ssl_args, ctx))
|
|
||||||
goto end;
|
|
||||||
|
|
||||||
+ if (min_version == SSL3_VERSION && max_version == SSL3_VERSION)
|
|
||||||
+ SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv3);
|
|
||||||
+
|
|
||||||
if (ssl_config) {
|
|
||||||
if (SSL_CTX_config(ctx, ssl_config) == 0) {
|
|
||||||
BIO_printf(bio_err, "Error using configuration \"%s\"\n",
|
|
||||||
diff -up openssl-1.1.0h/ssl/ssl_lib.c.disable-ssl3 openssl-1.1.0h/ssl/ssl_lib.c
|
|
||||||
--- openssl-1.1.0h/ssl/ssl_lib.c.disable-ssl3 2018-03-27 15:50:40.000000000 +0200
|
|
||||||
+++ openssl-1.1.0h/ssl/ssl_lib.c 2018-03-29 14:38:39.614133811 +0200
|
|
||||||
@@ -2653,6 +2653,13 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *m
|
|
||||||
* or by using the SSL_CONF library.
|
|
||||||
*/
|
|
||||||
ret->options |= SSL_OP_NO_COMPRESSION;
|
|
||||||
+ /*
|
|
||||||
+ * Disable SSLv3 by default. Applications can
|
|
||||||
+ * re-enable it by configuring
|
|
||||||
+ * SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv3);
|
|
||||||
+ * or by using the SSL_CONF library.
|
|
||||||
+ */
|
|
||||||
+ ret->options |= SSL_OP_NO_SSLv3;
|
|
||||||
|
|
||||||
ret->tlsext_status_type = -1;
|
|
||||||
|
|
||||||
diff -up openssl-1.1.0h/test/ssl_test.c.disable-ssl3 openssl-1.1.0h/test/ssl_test.c
|
|
||||||
--- openssl-1.1.0h/test/ssl_test.c.disable-ssl3 2018-03-29 14:38:39.615133835 +0200
|
|
||||||
+++ openssl-1.1.0h/test/ssl_test.c 2018-03-29 14:43:37.893139086 +0200
|
|
||||||
@@ -277,6 +277,7 @@ static int execute_test(SSL_TEST_FIXTURE
|
|
||||||
SSL_TEST_SERVERNAME_CB_NONE) {
|
|
||||||
server2_ctx = SSL_CTX_new(TLS_server_method());
|
|
||||||
TEST_check(server2_ctx != NULL);
|
|
||||||
+ SSL_CTX_clear_options(server2_ctx, SSL_OP_NO_SSLv3);
|
|
||||||
}
|
|
||||||
client_ctx = SSL_CTX_new(TLS_client_method());
|
|
||||||
TEST_check(SSL_CTX_set_max_proto_version(client_ctx, TLS_MAX_VERSION));
|
|
||||||
@@ -290,11 +291,15 @@ static int execute_test(SSL_TEST_FIXTURE
|
|
||||||
TLS_MAX_VERSION));
|
|
||||||
TEST_check(resume_server_ctx != NULL);
|
|
||||||
TEST_check(resume_client_ctx != NULL);
|
|
||||||
+ SSL_CTX_clear_options(resume_server_ctx, SSL_OP_NO_SSLv3);
|
|
||||||
+ SSL_CTX_clear_options(resume_client_ctx, SSL_OP_NO_SSLv3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_check(server_ctx != NULL);
|
|
||||||
TEST_check(client_ctx != NULL);
|
|
||||||
+ SSL_CTX_clear_options(server_ctx, SSL_OP_NO_SSLv3);
|
|
||||||
+ SSL_CTX_clear_options(client_ctx, SSL_OP_NO_SSLv3);
|
|
||||||
|
|
||||||
TEST_check(CONF_modules_load(conf, fixture.test_app, 0) > 0);
|
|
||||||
|
|
||||||
diff -up openssl-1.1.0h/test/ssltest_old.c.disable-ssl3 openssl-1.1.0h/test/ssltest_old.c
|
|
||||||
--- openssl-1.1.0h/test/ssltest_old.c.disable-ssl3 2018-03-27 15:50:41.000000000 +0200
|
|
||||||
+++ openssl-1.1.0h/test/ssltest_old.c 2018-03-29 14:38:39.615133835 +0200
|
|
||||||
@@ -1460,6 +1460,11 @@ int main(int argc, char *argv[])
|
|
||||||
ERR_print_errors(bio_err);
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ SSL_CTX_clear_options(c_ctx, SSL_OP_NO_SSLv3);
|
|
||||||
+ SSL_CTX_clear_options(s_ctx, SSL_OP_NO_SSLv3);
|
|
||||||
+ SSL_CTX_clear_options(s_ctx2, SSL_OP_NO_SSLv3);
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Since we will use low security ciphersuites and keys for testing set
|
|
||||||
* security level to zero by default. Tests can override this by adding
|
|
@ -1,80 +0,0 @@
|
|||||||
diff -up openssl-1.1.0e/apps/speed.c.curves openssl-1.1.0e/apps/speed.c
|
|
||||||
--- openssl-1.1.0e/apps/speed.c.curves 2017-02-16 12:58:20.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/apps/speed.c 2017-02-16 15:46:22.271504354 +0100
|
|
||||||
@@ -536,42 +536,18 @@ static OPT_PAIR rsa_choices[] = {
|
|
||||||
#define R_EC_X25519 16
|
|
||||||
#ifndef OPENSSL_NO_EC
|
|
||||||
static OPT_PAIR ecdsa_choices[] = {
|
|
||||||
- {"ecdsap160", R_EC_P160},
|
|
||||||
- {"ecdsap192", R_EC_P192},
|
|
||||||
{"ecdsap224", R_EC_P224},
|
|
||||||
{"ecdsap256", R_EC_P256},
|
|
||||||
{"ecdsap384", R_EC_P384},
|
|
||||||
{"ecdsap521", R_EC_P521},
|
|
||||||
- {"ecdsak163", R_EC_K163},
|
|
||||||
- {"ecdsak233", R_EC_K233},
|
|
||||||
- {"ecdsak283", R_EC_K283},
|
|
||||||
- {"ecdsak409", R_EC_K409},
|
|
||||||
- {"ecdsak571", R_EC_K571},
|
|
||||||
- {"ecdsab163", R_EC_B163},
|
|
||||||
- {"ecdsab233", R_EC_B233},
|
|
||||||
- {"ecdsab283", R_EC_B283},
|
|
||||||
- {"ecdsab409", R_EC_B409},
|
|
||||||
- {"ecdsab571", R_EC_B571},
|
|
||||||
{NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
static OPT_PAIR ecdh_choices[] = {
|
|
||||||
- {"ecdhp160", R_EC_P160},
|
|
||||||
- {"ecdhp192", R_EC_P192},
|
|
||||||
{"ecdhp224", R_EC_P224},
|
|
||||||
{"ecdhp256", R_EC_P256},
|
|
||||||
{"ecdhp384", R_EC_P384},
|
|
||||||
{"ecdhp521", R_EC_P521},
|
|
||||||
- {"ecdhk163", R_EC_K163},
|
|
||||||
- {"ecdhk233", R_EC_K233},
|
|
||||||
- {"ecdhk283", R_EC_K283},
|
|
||||||
- {"ecdhk409", R_EC_K409},
|
|
||||||
- {"ecdhk571", R_EC_K571},
|
|
||||||
- {"ecdhb163", R_EC_B163},
|
|
||||||
- {"ecdhb233", R_EC_B233},
|
|
||||||
- {"ecdhb283", R_EC_B283},
|
|
||||||
- {"ecdhb409", R_EC_B409},
|
|
||||||
- {"ecdhb571", R_EC_B571},
|
|
||||||
{"ecdhx25519", R_EC_X25519},
|
|
||||||
{NULL}
|
|
||||||
};
|
|
||||||
diff -up openssl-1.1.0e/crypto/ec/ecp_smpl.c.curves openssl-1.1.0e/crypto/ec/ecp_smpl.c
|
|
||||||
--- openssl-1.1.0e/crypto/ec/ecp_smpl.c.curves 2017-02-16 12:58:21.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/crypto/ec/ecp_smpl.c 2017-02-16 15:46:22.264504188 +0100
|
|
||||||
@@ -144,6 +144,11 @@ int ec_GFp_simple_group_set_curve(EC_GRO
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (BN_num_bits(p) < 224) {
|
|
||||||
+ ECerr(EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE, EC_R_UNSUPPORTED_FIELD);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (ctx == NULL) {
|
|
||||||
ctx = new_ctx = BN_CTX_new();
|
|
||||||
if (ctx == NULL)
|
|
||||||
diff -up openssl-1.1.0e/test/ecdsatest.c.curves openssl-1.1.0e/test/ecdsatest.c
|
|
||||||
--- openssl-1.1.0e/test/ecdsatest.c.curves 2017-02-16 12:58:24.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/test/ecdsatest.c 2017-02-16 15:46:22.250503857 +0100
|
|
||||||
@@ -216,6 +216,7 @@ int x9_62_tests(BIO *out)
|
|
||||||
if (!change_rand())
|
|
||||||
goto x962_err;
|
|
||||||
|
|
||||||
+#if 0
|
|
||||||
if (!x9_62_test_internal(out, NID_X9_62_prime192v1,
|
|
||||||
"3342403536405981729393488334694600415596881826869351677613",
|
|
||||||
"5735822328888155254683894997897571951568553642892029982342"))
|
|
||||||
@@ -226,6 +227,7 @@ int x9_62_tests(BIO *out)
|
|
||||||
"3238135532097973577080787768312505059318910517550078427819"
|
|
||||||
"78505179448783"))
|
|
||||||
goto x962_err;
|
|
||||||
+#endif
|
|
||||||
# ifndef OPENSSL_NO_EC2M
|
|
||||||
if (!x9_62_test_internal(out, NID_X9_62_c2tnb191v1,
|
|
||||||
"87194383164871543355722284926904419997237591535066528048",
|
|
@ -1,51 +0,0 @@
|
|||||||
diff -up openssl-1.1.0g/doc/apps/ec.pod.manfix openssl-1.1.0g/doc/apps/ec.pod
|
|
||||||
--- openssl-1.1.0g/doc/apps/ec.pod.manfix 2017-11-02 15:29:04.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/doc/apps/ec.pod 2017-11-03 16:09:31.714027145 +0100
|
|
||||||
@@ -101,10 +101,6 @@ prints out the public, private key compo
|
|
||||||
|
|
||||||
this option prevents output of the encoded version of the key.
|
|
||||||
|
|
||||||
-=item B<-modulus>
|
|
||||||
-
|
|
||||||
-this option prints out the value of the public key component of the key.
|
|
||||||
-
|
|
||||||
=item B<-pubin>
|
|
||||||
|
|
||||||
by default a private key is read from the input file: with this option a
|
|
||||||
diff -up openssl-1.1.0g/doc/apps/openssl.pod.manfix openssl-1.1.0g/doc/apps/openssl.pod
|
|
||||||
--- openssl-1.1.0g/doc/apps/openssl.pod.manfix 2017-11-02 15:29:04.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/doc/apps/openssl.pod 2017-11-03 16:11:48.478245311 +0100
|
|
||||||
@@ -170,7 +170,7 @@ Create or examine a Netscape certificate
|
|
||||||
|
|
||||||
Online Certificate Status Protocol utility.
|
|
||||||
|
|
||||||
-=item L<B<passwd>|passwd(1)>
|
|
||||||
+=item L<B<passwd>|sslpasswd(1)>
|
|
||||||
|
|
||||||
Generation of hashed passwords.
|
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ Public key algorithm parameter managemen
|
|
||||||
|
|
||||||
Public key algorithm cryptographic operation utility.
|
|
||||||
|
|
||||||
-=item L<B<rand>|rand(1)>
|
|
||||||
+=item L<B<rand>|sslrand(1)>
|
|
||||||
|
|
||||||
Generate pseudo-random bytes.
|
|
||||||
|
|
||||||
@@ -432,13 +432,13 @@ L<dhparam(1)>, L<dsa(1)>, L<dsaparam(1)>
|
|
||||||
L<ec(1)>, L<ecparam(1)>,
|
|
||||||
L<enc(1)>, L<engine(1)>, L<errstr(1)>, L<gendsa(1)>, L<genpkey(1)>,
|
|
||||||
L<genrsa(1)>, L<nseq(1)>, L<ocsp(1)>,
|
|
||||||
-L<passwd(1)>,
|
|
||||||
L<pkcs12(1)>, L<pkcs7(1)>, L<pkcs8(1)>,
|
|
||||||
L<pkey(1)>, L<pkeyparam(1)>, L<pkeyutl(1)>,
|
|
||||||
-L<rand(1)>, L<rehash(1)>, L<req(1)>, L<rsa(1)>,
|
|
||||||
+L<rehash(1)>, L<req(1)>, L<rsa(1)>,
|
|
||||||
L<rsautl(1)>, L<s_client(1)>,
|
|
||||||
L<s_server(1)>, L<s_time(1)>, L<sess_id(1)>,
|
|
||||||
L<smime(1)>, L<speed(1)>, L<spkac(1)>,
|
|
||||||
+L<sslpasswd(1)>, L<sslrand(1)>,
|
|
||||||
L<ts(1)>,
|
|
||||||
L<verify(1)>, L<version(1)>, L<x509(1)>,
|
|
||||||
L<crypto(7)>, L<ssl(7)>, L<x509v3_config(5)>
|
|
@ -1,15 +0,0 @@
|
|||||||
diff -up openssl-1.1.0h/util/dofile.pl.missing-quotes openssl-1.1.0h/util/dofile.pl
|
|
||||||
--- openssl-1.1.0h/util/dofile.pl.missing-quotes 2018-03-27 15:50:41.000000000 +0200
|
|
||||||
+++ openssl-1.1.0h/util/dofile.pl 2018-04-03 11:59:36.742091742 +0200
|
|
||||||
@@ -99,9 +99,9 @@ package main;
|
|
||||||
# This adds quotes (") around the given string, and escapes any $, @, \,
|
|
||||||
# " and ' by prepending a \ to them.
|
|
||||||
sub quotify1 {
|
|
||||||
- my $s = my $orig = shift @_;
|
|
||||||
+ my $s = shift @_;
|
|
||||||
$s =~ s/([\$\@\\"'])/\\$1/g;
|
|
||||||
- $s ne $orig || $s =~ /\s/ ? '"'.$s.'"' : $s;
|
|
||||||
+ '"'.$s.'"';
|
|
||||||
}
|
|
||||||
|
|
||||||
# quotify_l LIST
|
|
@ -1,139 +0,0 @@
|
|||||||
diff -up openssl-1.1.0g/crypto/conf/conf_api.c.secure-getenv openssl-1.1.0g/crypto/conf/conf_api.c
|
|
||||||
--- openssl-1.1.0g/crypto/conf/conf_api.c.secure-getenv 2017-11-02 15:29:02.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/crypto/conf/conf_api.c 2017-11-03 16:12:31.826265323 +0100
|
|
||||||
@@ -9,6 +9,8 @@
|
|
||||||
|
|
||||||
/* Part of the code in here was originally in conf.c, which is now removed */
|
|
||||||
|
|
||||||
+/* for secure_getenv */
|
|
||||||
+#define _GNU_SOURCE
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <openssl/conf.h>
|
|
||||||
@@ -82,7 +84,7 @@ char *_CONF_get_string(const CONF *conf,
|
|
||||||
if (v != NULL)
|
|
||||||
return (v->value);
|
|
||||||
if (strcmp(section, "ENV") == 0) {
|
|
||||||
- p = getenv(name);
|
|
||||||
+ p = secure_getenv(name);
|
|
||||||
if (p != NULL)
|
|
||||||
return (p);
|
|
||||||
}
|
|
||||||
@@ -95,7 +97,7 @@ char *_CONF_get_string(const CONF *conf,
|
|
||||||
else
|
|
||||||
return (NULL);
|
|
||||||
} else
|
|
||||||
- return (getenv(name));
|
|
||||||
+ return (secure_getenv(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long conf_value_hash(const CONF_VALUE *v)
|
|
||||||
diff -up openssl-1.1.0g/crypto/conf/conf_mod.c.secure-getenv openssl-1.1.0g/crypto/conf/conf_mod.c
|
|
||||||
--- openssl-1.1.0g/crypto/conf/conf_mod.c.secure-getenv 2017-11-02 15:29:02.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/crypto/conf/conf_mod.c 2017-11-03 16:12:31.827265347 +0100
|
|
||||||
@@ -7,6 +7,8 @@
|
|
||||||
* https://www.openssl.org/source/license.html
|
|
||||||
*/
|
|
||||||
|
|
||||||
+/* for secure_getenv */
|
|
||||||
+#define _GNU_SOURCE
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <openssl/crypto.h>
|
|
||||||
@@ -478,7 +480,7 @@ char *CONF_get1_default_config_file(void
|
|
||||||
char *file;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
- file = getenv("OPENSSL_CONF");
|
|
||||||
+ file = secure_getenv("OPENSSL_CONF");
|
|
||||||
if (file)
|
|
||||||
return OPENSSL_strdup(file);
|
|
||||||
|
|
||||||
diff -up openssl-1.1.0g/crypto/engine/eng_list.c.secure-getenv openssl-1.1.0g/crypto/engine/eng_list.c
|
|
||||||
--- openssl-1.1.0g/crypto/engine/eng_list.c.secure-getenv 2017-11-02 15:29:03.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/crypto/engine/eng_list.c 2017-11-03 16:12:31.827265347 +0100
|
|
||||||
@@ -13,6 +13,8 @@
|
|
||||||
* SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
|
|
||||||
*/
|
|
||||||
|
|
||||||
+/* for secure_getenv */
|
|
||||||
+#define _GNU_SOURCE
|
|
||||||
#include "eng_int.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -322,7 +324,7 @@ ENGINE *ENGINE_by_id(const char *id)
|
|
||||||
* Prevent infinite recursion if we're looking for the dynamic engine.
|
|
||||||
*/
|
|
||||||
if (strcmp(id, "dynamic")) {
|
|
||||||
- if ((load_dir = getenv("OPENSSL_ENGINES")) == 0)
|
|
||||||
+ if ((load_dir = secure_getenv("OPENSSL_ENGINES")) == 0)
|
|
||||||
load_dir = ENGINESDIR;
|
|
||||||
iterator = ENGINE_by_id("dynamic");
|
|
||||||
if (!iterator || !ENGINE_ctrl_cmd_string(iterator, "ID", id, 0) ||
|
|
||||||
diff -up openssl-1.1.0g/crypto/rand/randfile.c.secure-getenv openssl-1.1.0g/crypto/rand/randfile.c
|
|
||||||
--- openssl-1.1.0g/crypto/rand/randfile.c.secure-getenv 2017-11-02 15:29:03.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/crypto/rand/randfile.c 2017-11-03 16:12:31.827265347 +0100
|
|
||||||
@@ -7,6 +7,8 @@
|
|
||||||
* https://www.openssl.org/source/license.html
|
|
||||||
*/
|
|
||||||
|
|
||||||
+/* for secure_getenv */
|
|
||||||
+#define _GNU_SOURCE
|
|
||||||
#include "internal/cryptlib.h"
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
@@ -317,10 +319,10 @@ const char *RAND_file_name(char *buf, si
|
|
||||||
if (OPENSSL_issetugid() != 0) {
|
|
||||||
use_randfile = 0;
|
|
||||||
} else {
|
|
||||||
- s = getenv("RANDFILE");
|
|
||||||
+ s = secure_getenv("RANDFILE");
|
|
||||||
if (s == NULL || *s == '\0') {
|
|
||||||
use_randfile = 0;
|
|
||||||
- s = getenv("HOME");
|
|
||||||
+ s = secure_getenv("HOME");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff -up openssl-1.1.0g/crypto/x509/by_dir.c.secure-getenv openssl-1.1.0g/crypto/x509/by_dir.c
|
|
||||||
--- openssl-1.1.0g/crypto/x509/by_dir.c.secure-getenv 2017-11-02 15:29:04.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/crypto/x509/by_dir.c 2017-11-03 16:12:31.827265347 +0100
|
|
||||||
@@ -7,6 +7,8 @@
|
|
||||||
* https://www.openssl.org/source/license.html
|
|
||||||
*/
|
|
||||||
|
|
||||||
+/* for secure_getenv */
|
|
||||||
+#define _GNU_SOURCE
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <errno.h>
|
|
||||||
@@ -78,7 +80,7 @@ static int dir_ctrl(X509_LOOKUP *ctx, in
|
|
||||||
switch (cmd) {
|
|
||||||
case X509_L_ADD_DIR:
|
|
||||||
if (argl == X509_FILETYPE_DEFAULT) {
|
|
||||||
- dir = (char *)getenv(X509_get_default_cert_dir_env());
|
|
||||||
+ dir = (char *)secure_getenv(X509_get_default_cert_dir_env());
|
|
||||||
if (dir)
|
|
||||||
ret = add_cert_dir(ld, dir, X509_FILETYPE_PEM);
|
|
||||||
else
|
|
||||||
diff -up openssl-1.1.0g/crypto/x509/by_file.c.secure-getenv openssl-1.1.0g/crypto/x509/by_file.c
|
|
||||||
--- openssl-1.1.0g/crypto/x509/by_file.c.secure-getenv 2017-11-02 15:29:04.000000000 +0100
|
|
||||||
+++ openssl-1.1.0g/crypto/x509/by_file.c 2017-11-03 16:14:13.230649686 +0100
|
|
||||||
@@ -7,6 +7,8 @@
|
|
||||||
* https://www.openssl.org/source/license.html
|
|
||||||
*/
|
|
||||||
|
|
||||||
+/* for secure_getenv */
|
|
||||||
+#define _GNU_SOURCE
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <errno.h>
|
|
||||||
@@ -47,7 +49,7 @@ static int by_file_ctrl(X509_LOOKUP *ctx
|
|
||||||
switch (cmd) {
|
|
||||||
case X509_L_FILE_LOAD:
|
|
||||||
if (argl == X509_FILETYPE_DEFAULT) {
|
|
||||||
- file = getenv(X509_get_default_cert_file_env());
|
|
||||||
+ file = secure_getenv(X509_get_default_cert_file_env());
|
|
||||||
if (file)
|
|
||||||
ok = (X509_load_cert_crl_file(ctx, file,
|
|
||||||
X509_FILETYPE_PEM) != 0);
|
|
@ -1,24 +0,0 @@
|
|||||||
diff -up openssl-1.1.0h/apps/app_rand.c.silent-rnd-write openssl-1.1.0h/apps/app_rand.c
|
|
||||||
--- openssl-1.1.0h/apps/app_rand.c.silent-rnd-write 2018-03-27 15:50:37.000000000 +0200
|
|
||||||
+++ openssl-1.1.0h/apps/app_rand.c 2018-03-29 15:27:24.597891091 +0200
|
|
||||||
@@ -91,6 +91,7 @@ long app_RAND_load_files(char *name)
|
|
||||||
int app_RAND_write_file(const char *file)
|
|
||||||
{
|
|
||||||
char buffer[200];
|
|
||||||
+ const char *origfile = file;
|
|
||||||
|
|
||||||
if (egdsocket || !seeded)
|
|
||||||
/*
|
|
||||||
@@ -103,8 +104,10 @@ int app_RAND_write_file(const char *file
|
|
||||||
if (file == NULL)
|
|
||||||
file = RAND_file_name(buffer, sizeof(buffer));
|
|
||||||
if (file == NULL || !RAND_write_file(file)) {
|
|
||||||
- BIO_printf(bio_err, "unable to write 'random state'\n");
|
|
||||||
- return 0;
|
|
||||||
+ if (origfile != NULL) {
|
|
||||||
+ BIO_printf(bio_err, "unable to write 'random state'\n");
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
@ -1,317 +0,0 @@
|
|||||||
diff -up openssl-1.1.0e/Configurations/unix-Makefile.tmpl.system-cipherlist openssl-1.1.0e/Configurations/unix-Makefile.tmpl
|
|
||||||
--- openssl-1.1.0e/Configurations/unix-Makefile.tmpl.system-cipherlist 2017-02-16 16:15:38.658931413 +0100
|
|
||||||
+++ openssl-1.1.0e/Configurations/unix-Makefile.tmpl 2017-02-16 16:15:38.675931806 +0100
|
|
||||||
@@ -161,6 +161,10 @@ MANDIR=$(INSTALLTOP)/share/man
|
|
||||||
DOCDIR=$(INSTALLTOP)/share/doc/$(BASENAME)
|
|
||||||
HTMLDIR=$(DOCDIR)/html
|
|
||||||
|
|
||||||
+{- output_off() if $config{system_ciphers_file} eq ""; "" -}
|
|
||||||
+SYSTEM_CIPHERS_FILE_DEFINE=-DSYSTEM_CIPHERS_FILE="\"{- $config{system_ciphers_file} -}\""
|
|
||||||
+{- output_on() if $config{system_ciphers_file} eq ""; "" -}
|
|
||||||
+
|
|
||||||
# MANSUFFIX is for the benefit of anyone who may want to have a suffix
|
|
||||||
# appended after the manpage file section number. "ssl" is popular,
|
|
||||||
# resulting in files such as config.5ssl rather than config.5.
|
|
||||||
@@ -171,7 +175,7 @@ HTMLSUFFIX=html
|
|
||||||
|
|
||||||
CROSS_COMPILE= {- $config{cross_compile_prefix} -}
|
|
||||||
CC= $(CROSS_COMPILE){- $target{cc} -}
|
|
||||||
-CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $target{cflags} -} {- $config{cflags} -}
|
|
||||||
+CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}}),"\$(SYSTEM_CIPHERS_FILE_DEFINE)","-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $target{cflags} -} {- $config{cflags} -}
|
|
||||||
CFLAGS_Q={- $cflags2 =~ s|([\\"])|\\$1|g; $cflags2 -} {- $config{cflags} -}
|
|
||||||
LDFLAGS= {- $target{lflags} -}
|
|
||||||
PLIB_LDFLAGS= {- $target{plib_lflags} -}
|
|
||||||
diff -up openssl-1.1.0e/Configure.system-cipherlist openssl-1.1.0e/Configure
|
|
||||||
--- openssl-1.1.0e/Configure.system-cipherlist 2017-02-16 12:58:20.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/Configure 2017-02-16 16:15:38.679931899 +0100
|
|
||||||
@@ -18,7 +18,7 @@ use if $^O ne "VMS", 'File::Glob' => qw/
|
|
||||||
|
|
||||||
# see INSTALL for instructions.
|
|
||||||
|
|
||||||
-my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]\n";
|
|
||||||
+my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--system-ciphers-file=SYSTEMCIPHERFILE] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]\n";
|
|
||||||
|
|
||||||
# Options:
|
|
||||||
#
|
|
||||||
@@ -35,6 +35,9 @@ my $usage="Usage: Configure [no-<cipher>
|
|
||||||
# This becomes the value of OPENSSLDIR in Makefile and in C.
|
|
||||||
# (Default: PREFIX/ssl)
|
|
||||||
#
|
|
||||||
+# --system-ciphers-file A file to read cipher string from when the PROFILE=SYSTEM
|
|
||||||
+# cipher is specified (default).
|
|
||||||
+#
|
|
||||||
# --cross-compile-prefix Add specified prefix to binutils components.
|
|
||||||
#
|
|
||||||
# --api One of 0.9.8, 1.0.0 or 1.1.0. Do not compile support for
|
|
||||||
@@ -293,6 +296,7 @@ $config{openssldir}="";
|
|
||||||
$config{processor}="";
|
|
||||||
$config{libdir}="";
|
|
||||||
$config{cross_compile_prefix}="";
|
|
||||||
+$config{system_ciphers_file}="";
|
|
||||||
$config{fipslibdir}="/usr/local/ssl/fips-2.0/lib/";
|
|
||||||
my $nofipscanistercheck=0;
|
|
||||||
$config{baseaddr}="0xFB00000";
|
|
||||||
@@ -718,6 +722,10 @@ while (@argvcopy)
|
|
||||||
{
|
|
||||||
$config{baseaddr}="$1";
|
|
||||||
}
|
|
||||||
+ elsif (/^--system-ciphers-file=(.*)$/)
|
|
||||||
+ {
|
|
||||||
+ $config{system_ciphers_file}=$1;
|
|
||||||
+ }
|
|
||||||
elsif (/^--cross-compile-prefix=(.*)$/)
|
|
||||||
{
|
|
||||||
$config{cross_compile_prefix}=$1;
|
|
||||||
@@ -851,6 +859,8 @@ if ($target =~ m/^CygWin32(-.*)$/) {
|
|
||||||
$target = "Cygwin".$1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+chop $config{system_ciphers_file} if $config{system_ciphers_file} =~ /\/$/;
|
|
||||||
+
|
|
||||||
foreach (sort (keys %disabled))
|
|
||||||
{
|
|
||||||
$config{options} .= " no-$_";
|
|
||||||
diff -up openssl-1.1.0e/doc/apps/ciphers.pod.system-cipherlist openssl-1.1.0e/doc/apps/ciphers.pod
|
|
||||||
--- openssl-1.1.0e/doc/apps/ciphers.pod.system-cipherlist 2017-02-16 12:58:22.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/doc/apps/ciphers.pod 2017-02-16 16:37:14.043219953 +0100
|
|
||||||
@@ -181,6 +181,15 @@ As of OpenSSL 1.0.0, the B<ALL> cipher s
|
|
||||||
|
|
||||||
The cipher suites not enabled by B<ALL>, currently B<eNULL>.
|
|
||||||
|
|
||||||
+=item B<PROFILE=SYSTEM>
|
|
||||||
+
|
|
||||||
+The list of enabled cipher suites will be loaded from the system crypto policy
|
|
||||||
+configuration file B</etc/crypto-policies/back-ends/openssl.config>.
|
|
||||||
+See also L<update-crypto-policies(8)>.
|
|
||||||
+This is the default behavior unless an application explicitly sets a cipher
|
|
||||||
+list. If used in a cipher list configuration value this string must be at the
|
|
||||||
+beginning of the cipher list, otherwise it will not be recognized.
|
|
||||||
+
|
|
||||||
=item B<HIGH>
|
|
||||||
|
|
||||||
"high" encryption cipher suites. This currently means those with key lengths
|
|
||||||
diff -up openssl-1.1.0e/include/openssl/ssl.h.system-cipherlist openssl-1.1.0e/include/openssl/ssl.h
|
|
||||||
--- openssl-1.1.0e/include/openssl/ssl.h.system-cipherlist 2017-02-16 12:58:23.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/include/openssl/ssl.h 2017-02-16 16:15:38.676931830 +0100
|
|
||||||
@@ -201,6 +201,11 @@ extern "C" {
|
|
||||||
* throwing out anonymous and unencrypted ciphersuites! (The latter are not
|
|
||||||
* actually enabled by ALL, but "ALL:RSA" would enable some of them.)
|
|
||||||
*/
|
|
||||||
+# ifdef SYSTEM_CIPHERS_FILE
|
|
||||||
+# define SSL_SYSTEM_DEFAULT_CIPHER_LIST "PROFILE=SYSTEM"
|
|
||||||
+# else
|
|
||||||
+# define SSL_SYSTEM_DEFAULT_CIPHER_LIST SSL_DEFAULT_CIPHER_LIST
|
|
||||||
+# endif
|
|
||||||
|
|
||||||
/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
|
|
||||||
# define SSL_SENT_SHUTDOWN 1
|
|
||||||
diff -up openssl-1.1.0e/ssl/ssl_ciph.c.system-cipherlist openssl-1.1.0e/ssl/ssl_ciph.c
|
|
||||||
--- openssl-1.1.0e/ssl/ssl_ciph.c.system-cipherlist 2017-02-16 12:58:23.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/ssl/ssl_ciph.c 2017-02-16 16:15:38.691932177 +0100
|
|
||||||
@@ -1289,6 +1289,50 @@ static int check_suiteb_cipher_list(cons
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifdef SYSTEM_CIPHERS_FILE
|
|
||||||
+static char *load_system_str(const char *suffix)
|
|
||||||
+{
|
|
||||||
+ FILE *fp;
|
|
||||||
+ char buf[1024];
|
|
||||||
+ char *new_rules;
|
|
||||||
+ unsigned len, slen;
|
|
||||||
+
|
|
||||||
+ fp = fopen(SYSTEM_CIPHERS_FILE, "r");
|
|
||||||
+ if (fp == NULL || fgets(buf, sizeof(buf), fp) == NULL) {
|
|
||||||
+ /* cannot open or file is empty */
|
|
||||||
+ snprintf(buf, sizeof(buf), "%s", SSL_DEFAULT_CIPHER_LIST);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (fp)
|
|
||||||
+ fclose(fp);
|
|
||||||
+
|
|
||||||
+ slen = strlen(suffix);
|
|
||||||
+ len = strlen(buf);
|
|
||||||
+
|
|
||||||
+ if (buf[len - 1] == '\n') {
|
|
||||||
+ len--;
|
|
||||||
+ buf[len] = 0;
|
|
||||||
+ }
|
|
||||||
+ if (buf[len - 1] == '\r') {
|
|
||||||
+ len--;
|
|
||||||
+ buf[len] = 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ new_rules = OPENSSL_malloc(len + slen + 1);
|
|
||||||
+ if (new_rules == 0)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ memcpy(new_rules, buf, len);
|
|
||||||
+ if (slen > 0) {
|
|
||||||
+ memcpy(&new_rules[len], suffix, slen);
|
|
||||||
+ len += slen;
|
|
||||||
+ }
|
|
||||||
+ new_rules[len] = 0;
|
|
||||||
+
|
|
||||||
+ return new_rules;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method, STACK_OF(SSL_CIPHER)
|
|
||||||
**cipher_list, STACK_OF(SSL_CIPHER)
|
|
||||||
**cipher_list_by_id,
|
|
||||||
@@ -1296,19 +1341,29 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
{
|
|
||||||
int ok, num_of_ciphers, num_of_alias_max, num_of_group_aliases;
|
|
||||||
uint32_t disabled_mkey, disabled_auth, disabled_enc, disabled_mac;
|
|
||||||
- STACK_OF(SSL_CIPHER) *cipherstack, *tmp_cipher_list;
|
|
||||||
+ STACK_OF(SSL_CIPHER) *cipherstack = NULL, *tmp_cipher_list;
|
|
||||||
const char *rule_p;
|
|
||||||
CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr;
|
|
||||||
const SSL_CIPHER **ca_list = NULL;
|
|
||||||
+#ifdef SYSTEM_CIPHERS_FILE
|
|
||||||
+ char *new_rules = NULL;
|
|
||||||
+
|
|
||||||
+ if (rule_str != NULL && strncmp(rule_str, "PROFILE=SYSTEM", 14) == 0) {
|
|
||||||
+ char *p = rule_str + 14;
|
|
||||||
+
|
|
||||||
+ new_rules = load_system_str(p);
|
|
||||||
+ rule_str = new_rules;
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return with error if nothing to do.
|
|
||||||
*/
|
|
||||||
if (rule_str == NULL || cipher_list == NULL || cipher_list_by_id == NULL)
|
|
||||||
- return NULL;
|
|
||||||
+ goto end;
|
|
||||||
#ifndef OPENSSL_NO_EC
|
|
||||||
if (!check_suiteb_cipher_list(ssl_method, c, &rule_str))
|
|
||||||
- return NULL;
|
|
||||||
+ goto end;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1331,7 +1386,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
co_list = OPENSSL_malloc(sizeof(*co_list) * num_of_ciphers);
|
|
||||||
if (co_list == NULL) {
|
|
||||||
SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST, ERR_R_MALLOC_FAILURE);
|
|
||||||
- return (NULL); /* Failure */
|
|
||||||
+ goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
ssl_cipher_collect_ciphers(ssl_method, num_of_ciphers,
|
|
||||||
@@ -1401,8 +1456,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
* in force within each class
|
|
||||||
*/
|
|
||||||
if (!ssl_cipher_strength_sort(&head, &tail)) {
|
|
||||||
- OPENSSL_free(co_list);
|
|
||||||
- return NULL;
|
|
||||||
+ goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1447,9 +1501,8 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
num_of_alias_max = num_of_ciphers + num_of_group_aliases + 1;
|
|
||||||
ca_list = OPENSSL_malloc(sizeof(*ca_list) * num_of_alias_max);
|
|
||||||
if (ca_list == NULL) {
|
|
||||||
- OPENSSL_free(co_list);
|
|
||||||
SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST, ERR_R_MALLOC_FAILURE);
|
|
||||||
- return (NULL); /* Failure */
|
|
||||||
+ goto end;
|
|
||||||
}
|
|
||||||
ssl_cipher_collect_aliases(ca_list, num_of_group_aliases,
|
|
||||||
disabled_mkey, disabled_auth, disabled_enc,
|
|
||||||
@@ -1475,8 +1528,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
OPENSSL_free(ca_list); /* Not needed anymore */
|
|
||||||
|
|
||||||
if (!ok) { /* Rule processing failure */
|
|
||||||
- OPENSSL_free(co_list);
|
|
||||||
- return (NULL);
|
|
||||||
+ goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1484,8 +1536,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
* if we cannot get one.
|
|
||||||
*/
|
|
||||||
if ((cipherstack = sk_SSL_CIPHER_new_null()) == NULL) {
|
|
||||||
- OPENSSL_free(co_list);
|
|
||||||
- return (NULL);
|
|
||||||
+ goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1496,21 +1547,21 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
if (curr->active
|
|
||||||
&& (!FIPS_mode() || curr->cipher->algo_strength & SSL_FIPS)) {
|
|
||||||
if (!sk_SSL_CIPHER_push(cipherstack, curr->cipher)) {
|
|
||||||
- OPENSSL_free(co_list);
|
|
||||||
sk_SSL_CIPHER_free(cipherstack);
|
|
||||||
- return NULL;
|
|
||||||
+ cipherstack = NULL;
|
|
||||||
+ goto end;
|
|
||||||
}
|
|
||||||
#ifdef CIPHER_DEBUG
|
|
||||||
fprintf(stderr, "<%s>\n", curr->cipher->name);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- OPENSSL_free(co_list); /* Not needed any longer */
|
|
||||||
|
|
||||||
tmp_cipher_list = sk_SSL_CIPHER_dup(cipherstack);
|
|
||||||
if (tmp_cipher_list == NULL) {
|
|
||||||
sk_SSL_CIPHER_free(cipherstack);
|
|
||||||
- return NULL;
|
|
||||||
+ cipherstack = NULL;
|
|
||||||
+ goto end;
|
|
||||||
}
|
|
||||||
sk_SSL_CIPHER_free(*cipher_list);
|
|
||||||
*cipher_list = cipherstack;
|
|
||||||
@@ -1520,6 +1571,12 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
|
||||||
(void)sk_SSL_CIPHER_set_cmp_func(*cipher_list_by_id, ssl_cipher_ptr_id_cmp);
|
|
||||||
|
|
||||||
sk_SSL_CIPHER_sort(*cipher_list_by_id);
|
|
||||||
+
|
|
||||||
+ end:
|
|
||||||
+ OPENSSL_free(co_list);
|
|
||||||
+#ifdef SYSTEM_CIPHERS_FILE
|
|
||||||
+ OPENSSL_free(new_rules);
|
|
||||||
+#endif
|
|
||||||
return (cipherstack);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff -up openssl-1.1.0e/ssl/ssl_lib.c.system-cipherlist openssl-1.1.0e/ssl/ssl_lib.c
|
|
||||||
--- openssl-1.1.0e/ssl/ssl_lib.c.system-cipherlist 2017-02-16 16:15:38.673931760 +0100
|
|
||||||
+++ openssl-1.1.0e/ssl/ssl_lib.c 2017-02-16 16:15:38.692932200 +0100
|
|
||||||
@@ -509,7 +509,7 @@ int SSL_CTX_set_ssl_version(SSL_CTX *ctx
|
|
||||||
|
|
||||||
sk = ssl_create_cipher_list(ctx->method, &(ctx->cipher_list),
|
|
||||||
&(ctx->cipher_list_by_id),
|
|
||||||
- SSL_DEFAULT_CIPHER_LIST, ctx->cert);
|
|
||||||
+ SSL_SYSTEM_DEFAULT_CIPHER_LIST, ctx->cert);
|
|
||||||
if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0)) {
|
|
||||||
SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION, SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS);
|
|
||||||
return (0);
|
|
||||||
@@ -2403,7 +2403,7 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *m
|
|
||||||
#endif
|
|
||||||
if (!ssl_create_cipher_list(ret->method,
|
|
||||||
&ret->cipher_list, &ret->cipher_list_by_id,
|
|
||||||
- SSL_DEFAULT_CIPHER_LIST, ret->cert)
|
|
||||||
+ SSL_SYSTEM_DEFAULT_CIPHER_LIST, ret->cert)
|
|
||||||
|| sk_SSL_CIPHER_num(ret->cipher_list) <= 0) {
|
|
||||||
SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_LIBRARY_HAS_NO_CIPHERS);
|
|
||||||
goto err2;
|
|
||||||
diff -up openssl-1.1.0e/test/cipherlist_test.c.system-cipherlist openssl-1.1.0e/test/cipherlist_test.c
|
|
||||||
--- openssl-1.1.0e/test/cipherlist_test.c.system-cipherlist 2017-02-16 12:58:24.000000000 +0100
|
|
||||||
+++ openssl-1.1.0e/test/cipherlist_test.c 2017-02-16 16:15:38.677931853 +0100
|
|
||||||
@@ -190,7 +190,9 @@ int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int result = 0;
|
|
||||||
|
|
||||||
+#ifndef SYSTEM_CIPHERS_FILE
|
|
||||||
ADD_TEST(test_default_cipherlist_implicit);
|
|
||||||
+#endif
|
|
||||||
ADD_TEST(test_default_cipherlist_explicit);
|
|
||||||
|
|
||||||
result = run_tests(argv[0]);
|
|
@ -1,38 +0,0 @@
|
|||||||
diff -up openssl-1.1.0h/apps/version.c.version-add-engines openssl-1.1.0h/apps/version.c
|
|
||||||
--- openssl-1.1.0h/apps/version.c.version-add-engines 2018-03-27 15:50:37.000000000 +0200
|
|
||||||
+++ openssl-1.1.0h/apps/version.c 2018-03-29 14:33:30.732879537 +0200
|
|
||||||
@@ -52,7 +52,7 @@ int version_main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int ret = 1, dirty = 0;
|
|
||||||
int cflags = 0, version = 0, date = 0, options = 0, platform = 0, dir = 0;
|
|
||||||
- int engdir = 0;
|
|
||||||
+ int engdir = 0, engines = 0;
|
|
||||||
char *prog;
|
|
||||||
OPTION_CHOICE o;
|
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ opthelp:
|
|
||||||
dirty = version = 1;
|
|
||||||
break;
|
|
||||||
case OPT_A:
|
|
||||||
- options = cflags = version = date = platform = dir = engdir = 1;
|
|
||||||
+ options = cflags = version = date = platform = dir = engdir = engines = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -139,6 +139,16 @@ opthelp:
|
|
||||||
printf("%s\n", OpenSSL_version(OPENSSL_DIR));
|
|
||||||
if (engdir)
|
|
||||||
printf("%s\n", OpenSSL_version(OPENSSL_ENGINES_DIR));
|
|
||||||
+ if (engines) {
|
|
||||||
+ ENGINE *e;
|
|
||||||
+ printf("engines: ");
|
|
||||||
+ e = ENGINE_get_first();
|
|
||||||
+ while (e) {
|
|
||||||
+ printf("%s ", ENGINE_get_id(e));
|
|
||||||
+ e = ENGINE_get_next(e);
|
|
||||||
+ }
|
|
||||||
+ printf("\n");
|
|
||||||
+ }
|
|
||||||
ret = 0;
|
|
||||||
end:
|
|
||||||
return (ret);
|
|
@ -1,30 +0,0 @@
|
|||||||
diff -up openssl-1.1.0f/ssl/s3_lib.c.weak-ciphers openssl-1.1.0f/ssl/s3_lib.c
|
|
||||||
--- openssl-1.1.0f/ssl/s3_lib.c.weak-ciphers 2017-05-25 14:46:20.000000000 +0200
|
|
||||||
+++ openssl-1.1.0f/ssl/s3_lib.c 2017-06-15 15:12:51.555142528 +0200
|
|
||||||
@@ -2425,7 +2425,7 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
|
||||||
SSL_GOST89MAC,
|
|
||||||
TLS1_VERSION, TLS1_2_VERSION,
|
|
||||||
0, 0,
|
|
||||||
- SSL_HIGH,
|
|
||||||
+ SSL_MEDIUM,
|
|
||||||
SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94 | TLS1_STREAM_MAC,
|
|
||||||
256,
|
|
||||||
256,
|
|
||||||
@@ -2455,7 +2455,7 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
|
||||||
SSL_GOST89MAC12,
|
|
||||||
TLS1_VERSION, TLS1_2_VERSION,
|
|
||||||
0, 0,
|
|
||||||
- SSL_HIGH,
|
|
||||||
+ SSL_MEDIUM,
|
|
||||||
SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
|
|
||||||
256,
|
|
||||||
256,
|
|
||||||
@@ -2558,7 +2558,7 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
|
||||||
},
|
|
||||||
#endif /* OPENSSL_NO_SEED */
|
|
||||||
|
|
||||||
-#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
|
|
||||||
+#if 0 /* No RC4 */
|
|
||||||
{
|
|
||||||
1,
|
|
||||||
SSL3_TXT_RSA_RC4_128_MD5,
|
|
@ -1,12 +1,12 @@
|
|||||||
diff -up openssl-1.1.0-pre5/apps/ca.c.dgst openssl-1.1.0-pre5/apps/ca.c
|
diff -up openssl-1.1.1b/apps/ca.c.dgst openssl-1.1.1b/apps/ca.c
|
||||||
--- openssl-1.1.0-pre5/apps/ca.c.dgst 2016-04-19 16:57:52.000000000 +0200
|
--- openssl-1.1.1b/apps/ca.c.dgst 2019-02-26 15:15:30.000000000 +0100
|
||||||
+++ openssl-1.1.0-pre5/apps/ca.c 2016-07-18 15:58:18.516742682 +0200
|
+++ openssl-1.1.1b/apps/ca.c 2019-03-15 15:53:46.622267688 +0100
|
||||||
@@ -216,7 +216,7 @@ OPTIONS ca_options[] = {
|
@@ -169,7 +169,7 @@ const OPTIONS ca_options[] = {
|
||||||
{"enddate", OPT_ENDDATE, 's',
|
{"enddate", OPT_ENDDATE, 's',
|
||||||
"YYMMDDHHMMSSZ cert notAfter (overrides -days)"},
|
"YYMMDDHHMMSSZ cert notAfter (overrides -days)"},
|
||||||
{"days", OPT_DAYS, 'p', "Number of days to certify the cert for"},
|
{"days", OPT_DAYS, 'p', "Number of days to certify the cert for"},
|
||||||
- {"md", OPT_MD, 's', "md to use; one of md2, md5, sha or sha1"},
|
- {"md", OPT_MD, 's', "md to use; one of md2, md5, sha or sha1"},
|
||||||
+ {"md", OPT_MD, 's', "md to use; see openssl dgst -h for list"},
|
+ {"md", OPT_MD, 's', "md to use; see openssl help for list"},
|
||||||
{"policy", OPT_POLICY, 's', "The CA 'policy' to support"},
|
{"policy", OPT_POLICY, 's', "The CA 'policy' to support"},
|
||||||
{"keyfile", OPT_KEYFILE, 's', "Private key"},
|
{"keyfile", OPT_KEYFILE, 's', "Private key"},
|
||||||
{"keyform", OPT_KEYFORM, 'f', "Private key file format (PEM or ENGINE)"},
|
{"keyform", OPT_KEYFORM, 'f', "Private key file format (PEM or ENGINE)"},
|
40
openssl-1.1.1-build.patch
Normal file
40
openssl-1.1.1-build.patch
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
diff -up openssl-1.1.1-pre8/Configurations/unix-Makefile.tmpl.build openssl-1.1.1-pre8/Configurations/unix-Makefile.tmpl
|
||||||
|
--- openssl-1.1.1-pre8/Configurations/unix-Makefile.tmpl.build 2018-06-20 16:48:09.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/Configurations/unix-Makefile.tmpl 2018-07-16 17:15:38.108831031 +0200
|
||||||
|
@@ -680,7 +680,7 @@ uninstall_runtime:
|
||||||
|
install_man_docs:
|
||||||
|
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
|
||||||
|
@$(ECHO) "*** Installing manpages"
|
||||||
|
- $(PERL) $(SRCDIR)/util/process_docs.pl \
|
||||||
|
+ TZ=UTC $(PERL) $(SRCDIR)/util/process_docs.pl \
|
||||||
|
--destdir=$(DESTDIR)$(MANDIR) --type=man --suffix=$(MANSUFFIX)
|
||||||
|
|
||||||
|
uninstall_man_docs:
|
||||||
|
@@ -692,7 +692,7 @@ uninstall_man_docs:
|
||||||
|
install_html_docs:
|
||||||
|
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
|
||||||
|
@$(ECHO) "*** Installing HTML manpages"
|
||||||
|
- $(PERL) $(SRCDIR)/util/process_docs.pl \
|
||||||
|
+ TZ=UTC $(PERL) $(SRCDIR)/util/process_docs.pl \
|
||||||
|
--destdir=$(DESTDIR)$(HTMLDIR) --type=html
|
||||||
|
|
||||||
|
uninstall_html_docs:
|
||||||
|
diff -up openssl-1.1.1-pre8/Configurations/10-main.conf.build openssl-1.1.1-pre8/Configurations/10-main.conf
|
||||||
|
--- openssl-1.1.1-pre8/Configurations/10-main.conf.build 2018-06-20 16:48:09.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/Configurations/10-main.conf 2018-07-16 17:17:10.312045203 +0200
|
||||||
|
@@ -693,6 +693,7 @@ my %targets = (
|
||||||
|
cxxflags => add("-m64"),
|
||||||
|
lib_cppflags => add("-DL_ENDIAN"),
|
||||||
|
perlasm_scheme => "linux64le",
|
||||||
|
+ multilib => "64",
|
||||||
|
},
|
||||||
|
|
||||||
|
"linux-armv4" => {
|
||||||
|
@@ -733,6 +734,7 @@ my %targets = (
|
||||||
|
"linux-aarch64" => {
|
||||||
|
inherit_from => [ "linux-generic64", asm("aarch64_asm") ],
|
||||||
|
perlasm_scheme => "linux64",
|
||||||
|
+ multilib => "64",
|
||||||
|
},
|
||||||
|
"linux-arm64ilp32" => { # https://wiki.linaro.org/Platform/arm64-ilp32
|
||||||
|
inherit_from => [ "linux-generic32", asm("aarch64_asm") ],
|
56
openssl-1.1.1-conf-paths.patch
Normal file
56
openssl-1.1.1-conf-paths.patch
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
diff -up openssl-1.1.1-pre8/apps/CA.pl.in.conf-paths openssl-1.1.1-pre8/apps/CA.pl.in
|
||||||
|
--- openssl-1.1.1-pre8/apps/CA.pl.in.conf-paths 2018-06-20 16:48:09.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/apps/CA.pl.in 2018-07-25 17:26:58.388624296 +0200
|
||||||
|
@@ -33,7 +33,7 @@ my $X509 = "$openssl x509";
|
||||||
|
my $PKCS12 = "$openssl pkcs12";
|
||||||
|
|
||||||
|
# default openssl.cnf file has setup as per the following
|
||||||
|
-my $CATOP = "./demoCA";
|
||||||
|
+my $CATOP = "/etc/pki/CA";
|
||||||
|
my $CAKEY = "cakey.pem";
|
||||||
|
my $CAREQ = "careq.pem";
|
||||||
|
my $CACERT = "cacert.pem";
|
||||||
|
diff -up openssl-1.1.1-pre8/apps/openssl.cnf.conf-paths openssl-1.1.1-pre8/apps/openssl.cnf
|
||||||
|
--- openssl-1.1.1-pre8/apps/openssl.cnf.conf-paths 2018-07-25 17:26:58.378624057 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/apps/openssl.cnf 2018-07-27 13:20:08.198513471 +0200
|
||||||
|
@@ -23,6 +23,22 @@ oid_section = new_oids
|
||||||
|
# (Alternatively, use a configuration file that has only
|
||||||
|
# X.509v3 extensions in its main [= default] section.)
|
||||||
|
|
||||||
|
+# Load default TLS policy configuration
|
||||||
|
+
|
||||||
|
+openssl_conf = default_modules
|
||||||
|
+
|
||||||
|
+[ default_modules ]
|
||||||
|
+
|
||||||
|
+ssl_conf = ssl_module
|
||||||
|
+
|
||||||
|
+[ ssl_module ]
|
||||||
|
+
|
||||||
|
+system_default = crypto_policy
|
||||||
|
+
|
||||||
|
+[ crypto_policy ]
|
||||||
|
+
|
||||||
|
+.include = /etc/crypto-policies/back-ends/opensslcnf.config
|
||||||
|
+
|
||||||
|
[ new_oids ]
|
||||||
|
|
||||||
|
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
|
||||||
|
@@ -43,7 +59,7 @@ default_ca = CA_default # The default c
|
||||||
|
####################################################################
|
||||||
|
[ CA_default ]
|
||||||
|
|
||||||
|
-dir = ./demoCA # Where everything is kept
|
||||||
|
+dir = /etc/pki/CA # Where everything is kept
|
||||||
|
certs = $dir/certs # Where the issued certs are kept
|
||||||
|
crl_dir = $dir/crl # Where the issued crl are kept
|
||||||
|
database = $dir/index.txt # database index file.
|
||||||
|
@@ -329,7 +345,7 @@ default_tsa = tsa_config1 # the default
|
||||||
|
[ tsa_config1 ]
|
||||||
|
|
||||||
|
# These are used by the TSA reply generation only.
|
||||||
|
-dir = ./demoCA # TSA root directory
|
||||||
|
+dir = /etc/pki/CA # TSA root directory
|
||||||
|
serial = $dir/tsaserial # The current serial number (mandatory)
|
||||||
|
crypto_device = builtin # OpenSSL engine to use for signing
|
||||||
|
signer_cert = $dir/tsacert.pem # The TSA signing certificate
|
@ -1,7 +1,7 @@
|
|||||||
diff -up openssl-1.1.0-pre5/apps/openssl.cnf.defaults openssl-1.1.0-pre5/apps/openssl.cnf
|
diff -up openssl-1.1.1a/apps/openssl.cnf.defaults openssl-1.1.1a/apps/openssl.cnf
|
||||||
--- openssl-1.1.0-pre5/apps/openssl.cnf.defaults 2016-04-19 16:57:52.000000000 +0200
|
--- openssl-1.1.1a/apps/openssl.cnf.defaults 2018-11-20 14:35:37.000000000 +0100
|
||||||
+++ openssl-1.1.0-pre5/apps/openssl.cnf 2016-07-18 14:22:08.252691017 +0200
|
+++ openssl-1.1.1a/apps/openssl.cnf 2019-01-15 13:56:50.841719776 +0100
|
||||||
@@ -72,7 +72,7 @@ cert_opt = ca_default # Certificate fi
|
@@ -74,7 +74,7 @@ cert_opt = ca_default # Certificate fi
|
||||||
|
|
||||||
default_days = 365 # how long to certify for
|
default_days = 365 # how long to certify for
|
||||||
default_crl_days= 30 # how long before next CRL
|
default_crl_days= 30 # how long before next CRL
|
||||||
@ -10,7 +10,7 @@ diff -up openssl-1.1.0-pre5/apps/openssl.cnf.defaults openssl-1.1.0-pre5/apps/op
|
|||||||
preserve = no # keep passed DN ordering
|
preserve = no # keep passed DN ordering
|
||||||
|
|
||||||
# A few difference way of specifying how similar the request should look
|
# A few difference way of specifying how similar the request should look
|
||||||
@@ -104,6 +104,7 @@ emailAddress = optional
|
@@ -106,6 +106,7 @@ emailAddress = optional
|
||||||
####################################################################
|
####################################################################
|
||||||
[ req ]
|
[ req ]
|
||||||
default_bits = 2048
|
default_bits = 2048
|
||||||
@ -18,7 +18,7 @@ diff -up openssl-1.1.0-pre5/apps/openssl.cnf.defaults openssl-1.1.0-pre5/apps/op
|
|||||||
default_keyfile = privkey.pem
|
default_keyfile = privkey.pem
|
||||||
distinguished_name = req_distinguished_name
|
distinguished_name = req_distinguished_name
|
||||||
attributes = req_attributes
|
attributes = req_attributes
|
||||||
@@ -126,17 +127,18 @@ string_mask = utf8only
|
@@ -128,17 +129,18 @@ string_mask = utf8only
|
||||||
|
|
||||||
[ req_distinguished_name ]
|
[ req_distinguished_name ]
|
||||||
countryName = Country Name (2 letter code)
|
countryName = Country Name (2 letter code)
|
||||||
@ -40,7 +40,7 @@ diff -up openssl-1.1.0-pre5/apps/openssl.cnf.defaults openssl-1.1.0-pre5/apps/op
|
|||||||
|
|
||||||
# we can do this but it is not needed normally :-)
|
# we can do this but it is not needed normally :-)
|
||||||
#1.organizationName = Second Organization Name (eg, company)
|
#1.organizationName = Second Organization Name (eg, company)
|
||||||
@@ -145,7 +147,7 @@ localityName = Locality Name (eg, city
|
@@ -147,7 +149,7 @@ localityName = Locality Name (eg, city
|
||||||
organizationalUnitName = Organizational Unit Name (eg, section)
|
organizationalUnitName = Organizational Unit Name (eg, section)
|
||||||
#organizationalUnitName_default =
|
#organizationalUnitName_default =
|
||||||
|
|
91
openssl-1.1.1-disable-ssl3.patch
Normal file
91
openssl-1.1.1-disable-ssl3.patch
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
diff -up openssl-1.1.1-pre8/apps/s_client.c.disable-ssl3 openssl-1.1.1-pre8/apps/s_client.c
|
||||||
|
--- openssl-1.1.1-pre8/apps/s_client.c.disable-ssl3 2018-07-16 18:08:20.000487628 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/apps/s_client.c 2018-07-16 18:16:40.070186323 +0200
|
||||||
|
@@ -1681,6 +1681,9 @@ int s_client_main(int argc, char **argv)
|
||||||
|
if (sdebug)
|
||||||
|
ssl_ctx_security_debug(ctx, sdebug);
|
||||||
|
|
||||||
|
+ if (min_version == SSL3_VERSION && max_version == SSL3_VERSION)
|
||||||
|
+ SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+
|
||||||
|
if (!config_ctx(cctx, ssl_args, ctx))
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
diff -up openssl-1.1.1-pre8/apps/s_server.c.disable-ssl3 openssl-1.1.1-pre8/apps/s_server.c
|
||||||
|
--- openssl-1.1.1-pre8/apps/s_server.c.disable-ssl3 2018-07-16 18:08:20.000487628 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/apps/s_server.c 2018-07-16 18:17:17.300055551 +0200
|
||||||
|
@@ -1760,6 +1760,9 @@ int s_server_main(int argc, char *argv[]
|
||||||
|
if (sdebug)
|
||||||
|
ssl_ctx_security_debug(ctx, sdebug);
|
||||||
|
|
||||||
|
+ if (min_version == SSL3_VERSION && max_version == SSL3_VERSION)
|
||||||
|
+ SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+
|
||||||
|
if (!config_ctx(cctx, ssl_args, ctx))
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
diff -up openssl-1.1.1-pre8/ssl/ssl_lib.c.disable-ssl3 openssl-1.1.1-pre8/ssl/ssl_lib.c
|
||||||
|
--- openssl-1.1.1-pre8/ssl/ssl_lib.c.disable-ssl3 2018-06-20 16:48:13.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/ssl/ssl_lib.c 2018-07-16 18:08:20.001487652 +0200
|
||||||
|
@@ -3016,6 +3016,16 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *m
|
||||||
|
*/
|
||||||
|
ret->options |= SSL_OP_NO_COMPRESSION | SSL_OP_ENABLE_MIDDLEBOX_COMPAT;
|
||||||
|
|
||||||
|
+ if (meth->version != SSL3_VERSION) {
|
||||||
|
+ /*
|
||||||
|
+ * Disable SSLv3 by default. Applications can
|
||||||
|
+ * re-enable it by configuring
|
||||||
|
+ * SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+ * or by using the SSL_CONF API.
|
||||||
|
+ */
|
||||||
|
+ ret->options |= SSL_OP_NO_SSLv3;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ret->ext.status_type = TLSEXT_STATUSTYPE_nothing;
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff -up openssl-1.1.1-pre8/test/ssl_test.c.disable-ssl3 openssl-1.1.1-pre8/test/ssl_test.c
|
||||||
|
--- openssl-1.1.1-pre8/test/ssl_test.c.disable-ssl3 2018-06-20 16:48:15.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/test/ssl_test.c 2018-07-16 18:18:34.806865121 +0200
|
||||||
|
@@ -443,6 +443,7 @@ static int test_handshake(int idx)
|
||||||
|
SSL_TEST_SERVERNAME_CB_NONE) {
|
||||||
|
if (!TEST_ptr(server2_ctx = SSL_CTX_new(TLS_server_method())))
|
||||||
|
goto err;
|
||||||
|
+ SSL_CTX_clear_options(server2_ctx, SSL_OP_NO_SSLv3);
|
||||||
|
if (!TEST_true(SSL_CTX_set_max_proto_version(server2_ctx,
|
||||||
|
TLS_MAX_VERSION)))
|
||||||
|
goto err;
|
||||||
|
@@ -464,6 +465,8 @@ static int test_handshake(int idx)
|
||||||
|
if (!TEST_ptr(resume_server_ctx)
|
||||||
|
|| !TEST_ptr(resume_client_ctx))
|
||||||
|
goto err;
|
||||||
|
+ SSL_CTX_clear_options(resume_server_ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+ SSL_CTX_clear_options(resume_client_ctx, SSL_OP_NO_SSLv3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -477,6 +480,9 @@ static int test_handshake(int idx)
|
||||||
|
|| !TEST_int_gt(CONF_modules_load(conf, test_app, 0), 0))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
+ SSL_CTX_clear_options(server_ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+ SSL_CTX_clear_options(client_ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+
|
||||||
|
if (!SSL_CTX_config(server_ctx, "server")
|
||||||
|
|| !SSL_CTX_config(client_ctx, "client")) {
|
||||||
|
goto err;
|
||||||
|
diff -up openssl-1.1.1-pre8/test/ssltest_old.c.disable-ssl3 openssl-1.1.1-pre8/test/ssltest_old.c
|
||||||
|
--- openssl-1.1.1-pre8/test/ssltest_old.c.disable-ssl3 2018-06-20 16:48:15.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/test/ssltest_old.c 2018-07-16 18:08:20.002487676 +0200
|
||||||
|
@@ -1358,6 +1358,11 @@ int main(int argc, char *argv[])
|
||||||
|
ERR_print_errors(bio_err);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ SSL_CTX_clear_options(c_ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+ SSL_CTX_clear_options(s_ctx, SSL_OP_NO_SSLv3);
|
||||||
|
+ SSL_CTX_clear_options(s_ctx2, SSL_OP_NO_SSLv3);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Since we will use low security ciphersuites and keys for testing set
|
||||||
|
* security level to zero by default. Tests can override this by adding
|
210
openssl-1.1.1-ec-curves.patch
Normal file
210
openssl-1.1.1-ec-curves.patch
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
diff -up openssl-1.1.1c/apps/speed.c.curves openssl-1.1.1c/apps/speed.c
|
||||||
|
--- openssl-1.1.1c/apps/speed.c.curves 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/apps/speed.c 2019-05-29 15:36:53.332224470 +0200
|
||||||
|
@@ -490,90 +490,30 @@ static double rsa_results[RSA_NUM][2];
|
||||||
|
#endif /* OPENSSL_NO_RSA */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
- R_EC_P160,
|
||||||
|
- R_EC_P192,
|
||||||
|
R_EC_P224,
|
||||||
|
R_EC_P256,
|
||||||
|
R_EC_P384,
|
||||||
|
R_EC_P521,
|
||||||
|
-#ifndef OPENSSL_NO_EC2M
|
||||||
|
- R_EC_K163,
|
||||||
|
- R_EC_K233,
|
||||||
|
- R_EC_K283,
|
||||||
|
- R_EC_K409,
|
||||||
|
- R_EC_K571,
|
||||||
|
- R_EC_B163,
|
||||||
|
- R_EC_B233,
|
||||||
|
- R_EC_B283,
|
||||||
|
- R_EC_B409,
|
||||||
|
- R_EC_B571,
|
||||||
|
-#endif
|
||||||
|
- R_EC_BRP256R1,
|
||||||
|
- R_EC_BRP256T1,
|
||||||
|
- R_EC_BRP384R1,
|
||||||
|
- R_EC_BRP384T1,
|
||||||
|
- R_EC_BRP512R1,
|
||||||
|
- R_EC_BRP512T1,
|
||||||
|
R_EC_X25519,
|
||||||
|
R_EC_X448
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_EC
|
||||||
|
static OPT_PAIR ecdsa_choices[] = {
|
||||||
|
- {"ecdsap160", R_EC_P160},
|
||||||
|
- {"ecdsap192", R_EC_P192},
|
||||||
|
{"ecdsap224", R_EC_P224},
|
||||||
|
{"ecdsap256", R_EC_P256},
|
||||||
|
{"ecdsap384", R_EC_P384},
|
||||||
|
{"ecdsap521", R_EC_P521},
|
||||||
|
-# ifndef OPENSSL_NO_EC2M
|
||||||
|
- {"ecdsak163", R_EC_K163},
|
||||||
|
- {"ecdsak233", R_EC_K233},
|
||||||
|
- {"ecdsak283", R_EC_K283},
|
||||||
|
- {"ecdsak409", R_EC_K409},
|
||||||
|
- {"ecdsak571", R_EC_K571},
|
||||||
|
- {"ecdsab163", R_EC_B163},
|
||||||
|
- {"ecdsab233", R_EC_B233},
|
||||||
|
- {"ecdsab283", R_EC_B283},
|
||||||
|
- {"ecdsab409", R_EC_B409},
|
||||||
|
- {"ecdsab571", R_EC_B571},
|
||||||
|
-# endif
|
||||||
|
- {"ecdsabrp256r1", R_EC_BRP256R1},
|
||||||
|
- {"ecdsabrp256t1", R_EC_BRP256T1},
|
||||||
|
- {"ecdsabrp384r1", R_EC_BRP384R1},
|
||||||
|
- {"ecdsabrp384t1", R_EC_BRP384T1},
|
||||||
|
- {"ecdsabrp512r1", R_EC_BRP512R1},
|
||||||
|
- {"ecdsabrp512t1", R_EC_BRP512T1}
|
||||||
|
};
|
||||||
|
# define ECDSA_NUM OSSL_NELEM(ecdsa_choices)
|
||||||
|
|
||||||
|
static double ecdsa_results[ECDSA_NUM][2]; /* 2 ops: sign then verify */
|
||||||
|
|
||||||
|
static const OPT_PAIR ecdh_choices[] = {
|
||||||
|
- {"ecdhp160", R_EC_P160},
|
||||||
|
- {"ecdhp192", R_EC_P192},
|
||||||
|
{"ecdhp224", R_EC_P224},
|
||||||
|
{"ecdhp256", R_EC_P256},
|
||||||
|
{"ecdhp384", R_EC_P384},
|
||||||
|
{"ecdhp521", R_EC_P521},
|
||||||
|
-# ifndef OPENSSL_NO_EC2M
|
||||||
|
- {"ecdhk163", R_EC_K163},
|
||||||
|
- {"ecdhk233", R_EC_K233},
|
||||||
|
- {"ecdhk283", R_EC_K283},
|
||||||
|
- {"ecdhk409", R_EC_K409},
|
||||||
|
- {"ecdhk571", R_EC_K571},
|
||||||
|
- {"ecdhb163", R_EC_B163},
|
||||||
|
- {"ecdhb233", R_EC_B233},
|
||||||
|
- {"ecdhb283", R_EC_B283},
|
||||||
|
- {"ecdhb409", R_EC_B409},
|
||||||
|
- {"ecdhb571", R_EC_B571},
|
||||||
|
-# endif
|
||||||
|
- {"ecdhbrp256r1", R_EC_BRP256R1},
|
||||||
|
- {"ecdhbrp256t1", R_EC_BRP256T1},
|
||||||
|
- {"ecdhbrp384r1", R_EC_BRP384R1},
|
||||||
|
- {"ecdhbrp384t1", R_EC_BRP384T1},
|
||||||
|
- {"ecdhbrp512r1", R_EC_BRP512R1},
|
||||||
|
- {"ecdhbrp512t1", R_EC_BRP512T1},
|
||||||
|
{"ecdhx25519", R_EC_X25519},
|
||||||
|
{"ecdhx448", R_EC_X448}
|
||||||
|
};
|
||||||
|
@@ -1504,31 +1444,10 @@ int speed_main(int argc, char **argv)
|
||||||
|
unsigned int bits;
|
||||||
|
} test_curves[] = {
|
||||||
|
/* Prime Curves */
|
||||||
|
- {"secp160r1", NID_secp160r1, 160},
|
||||||
|
- {"nistp192", NID_X9_62_prime192v1, 192},
|
||||||
|
{"nistp224", NID_secp224r1, 224},
|
||||||
|
{"nistp256", NID_X9_62_prime256v1, 256},
|
||||||
|
{"nistp384", NID_secp384r1, 384},
|
||||||
|
{"nistp521", NID_secp521r1, 521},
|
||||||
|
-# ifndef OPENSSL_NO_EC2M
|
||||||
|
- /* Binary Curves */
|
||||||
|
- {"nistk163", NID_sect163k1, 163},
|
||||||
|
- {"nistk233", NID_sect233k1, 233},
|
||||||
|
- {"nistk283", NID_sect283k1, 283},
|
||||||
|
- {"nistk409", NID_sect409k1, 409},
|
||||||
|
- {"nistk571", NID_sect571k1, 571},
|
||||||
|
- {"nistb163", NID_sect163r2, 163},
|
||||||
|
- {"nistb233", NID_sect233r1, 233},
|
||||||
|
- {"nistb283", NID_sect283r1, 283},
|
||||||
|
- {"nistb409", NID_sect409r1, 409},
|
||||||
|
- {"nistb571", NID_sect571r1, 571},
|
||||||
|
-# endif
|
||||||
|
- {"brainpoolP256r1", NID_brainpoolP256r1, 256},
|
||||||
|
- {"brainpoolP256t1", NID_brainpoolP256t1, 256},
|
||||||
|
- {"brainpoolP384r1", NID_brainpoolP384r1, 384},
|
||||||
|
- {"brainpoolP384t1", NID_brainpoolP384t1, 384},
|
||||||
|
- {"brainpoolP512r1", NID_brainpoolP512r1, 512},
|
||||||
|
- {"brainpoolP512t1", NID_brainpoolP512t1, 512},
|
||||||
|
/* Other and ECDH only ones */
|
||||||
|
{"X25519", NID_X25519, 253},
|
||||||
|
{"X448", NID_X448, 448}
|
||||||
|
@@ -2028,9 +1947,9 @@ int speed_main(int argc, char **argv)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_EC
|
||||||
|
- ecdsa_c[R_EC_P160][0] = count / 1000;
|
||||||
|
- ecdsa_c[R_EC_P160][1] = count / 1000 / 2;
|
||||||
|
- for (i = R_EC_P192; i <= R_EC_P521; i++) {
|
||||||
|
+ ecdsa_c[R_EC_P224][0] = count / 1000;
|
||||||
|
+ ecdsa_c[R_EC_P224][1] = count / 1000 / 2;
|
||||||
|
+ for (i = R_EC_P256; i <= R_EC_P521; i++) {
|
||||||
|
ecdsa_c[i][0] = ecdsa_c[i - 1][0] / 2;
|
||||||
|
ecdsa_c[i][1] = ecdsa_c[i - 1][1] / 2;
|
||||||
|
if (ecdsa_doit[i] <= 1 && ecdsa_c[i][0] == 0)
|
||||||
|
@@ -2042,7 +1961,7 @@ int speed_main(int argc, char **argv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-# ifndef OPENSSL_NO_EC2M
|
||||||
|
+# if 0
|
||||||
|
ecdsa_c[R_EC_K163][0] = count / 1000;
|
||||||
|
ecdsa_c[R_EC_K163][1] = count / 1000 / 2;
|
||||||
|
for (i = R_EC_K233; i <= R_EC_K571; i++) {
|
||||||
|
@@ -2073,8 +1992,8 @@ int speed_main(int argc, char **argv)
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
- ecdh_c[R_EC_P160][0] = count / 1000;
|
||||||
|
- for (i = R_EC_P192; i <= R_EC_P521; i++) {
|
||||||
|
+ ecdh_c[R_EC_P224][0] = count / 1000;
|
||||||
|
+ for (i = R_EC_P256; i <= R_EC_P521; i++) {
|
||||||
|
ecdh_c[i][0] = ecdh_c[i - 1][0] / 2;
|
||||||
|
if (ecdh_doit[i] <= 1 && ecdh_c[i][0] == 0)
|
||||||
|
ecdh_doit[i] = 0;
|
||||||
|
@@ -2084,7 +2003,7 @@ int speed_main(int argc, char **argv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-# ifndef OPENSSL_NO_EC2M
|
||||||
|
+# if 0
|
||||||
|
ecdh_c[R_EC_K163][0] = count / 1000;
|
||||||
|
for (i = R_EC_K233; i <= R_EC_K571; i++) {
|
||||||
|
ecdh_c[i][0] = ecdh_c[i - 1][0] / 2;
|
||||||
|
diff -up openssl-1.1.1c/crypto/ec/ecp_smpl.c.curves openssl-1.1.1c/crypto/ec/ecp_smpl.c
|
||||||
|
--- openssl-1.1.1c/crypto/ec/ecp_smpl.c.curves 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/crypto/ec/ecp_smpl.c 2019-05-29 15:30:09.071349520 +0200
|
||||||
|
@@ -145,6 +145,11 @@ int ec_GFp_simple_group_set_curve(EC_GRO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (BN_num_bits(p) < 224) {
|
||||||
|
+ ECerr(EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE, EC_R_UNSUPPORTED_FIELD);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (ctx == NULL) {
|
||||||
|
ctx = new_ctx = BN_CTX_new();
|
||||||
|
if (ctx == NULL)
|
||||||
|
diff -up openssl-1.1.1c/test/ecdsatest.h.curves openssl-1.1.1c/test/ecdsatest.h
|
||||||
|
--- openssl-1.1.1c/test/ecdsatest.h.curves 2019-05-29 15:30:09.010350595 +0200
|
||||||
|
+++ openssl-1.1.1c/test/ecdsatest.h 2019-05-29 15:41:24.586444294 +0200
|
||||||
|
@@ -32,23 +32,6 @@ typedef struct {
|
||||||
|
} ecdsa_cavs_kat_t;
|
||||||
|
|
||||||
|
static const ecdsa_cavs_kat_t ecdsa_cavs_kats[] = {
|
||||||
|
- /* prime KATs from X9.62 */
|
||||||
|
- {NID_X9_62_prime192v1, NID_sha1,
|
||||||
|
- "616263", /* "abc" */
|
||||||
|
- "1a8d598fc15bf0fd89030b5cb1111aeb92ae8baf5ea475fb",
|
||||||
|
- "0462b12d60690cdcf330babab6e69763b471f994dd702d16a563bf5ec08069705ffff65e"
|
||||||
|
- "5ca5c0d69716dfcb3474373902",
|
||||||
|
- "fa6de29746bbeb7f8bb1e761f85f7dfb2983169d82fa2f4e",
|
||||||
|
- "885052380ff147b734c330c43d39b2c4a89f29b0f749fead",
|
||||||
|
- "e9ecc78106def82bf1070cf1d4d804c3cb390046951df686"},
|
||||||
|
- {NID_X9_62_prime239v1, NID_sha1,
|
||||||
|
- "616263", /* "abc" */
|
||||||
|
- "7ef7c6fabefffdea864206e80b0b08a9331ed93e698561b64ca0f7777f3d",
|
||||||
|
- "045b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c707fd9f1ed2e"
|
||||||
|
- "65f09f6ce0893baf5e8e31e6ae82ea8c3592335be906d38dee",
|
||||||
|
- "656c7196bf87dcc5d1f1020906df2782360d36b2de7a17ece37d503784af",
|
||||||
|
- "2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0",
|
||||||
|
- "2eeae988104e9c2234a3c2beb1f53bfa5dc11ff36a875d1e3ccb1f7e45cf"},
|
||||||
|
/* prime KATs from NIST CAVP */
|
||||||
|
{NID_secp224r1, NID_sha224,
|
||||||
|
"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc1"
|
5262
openssl-1.1.1-evp-kdf.patch
Normal file
5262
openssl-1.1.1-evp-kdf.patch
Normal file
File diff suppressed because it is too large
Load Diff
407
openssl-1.1.1-fips-crng-test.patch
Normal file
407
openssl-1.1.1-fips-crng-test.patch
Normal file
@ -0,0 +1,407 @@
|
|||||||
|
diff -up openssl-1.1.1b/crypto/include/internal/rand_int.h.crng-test openssl-1.1.1b/crypto/include/internal/rand_int.h
|
||||||
|
--- openssl-1.1.1b/crypto/include/internal/rand_int.h.crng-test 2019-05-07 08:56:33.242179136 +0200
|
||||||
|
+++ openssl-1.1.1b/crypto/include/internal/rand_int.h 2019-05-07 09:54:14.920204875 +0200
|
||||||
|
@@ -49,6 +49,14 @@ size_t rand_drbg_get_additional_data(RAN
|
||||||
|
|
||||||
|
void rand_drbg_cleanup_additional_data(RAND_POOL *pool, unsigned char *out);
|
||||||
|
|
||||||
|
+/* CRNG test entropy filter callbacks. */
|
||||||
|
+size_t rand_crngt_get_entropy(RAND_DRBG *drbg,
|
||||||
|
+ unsigned char **pout,
|
||||||
|
+ int entropy, size_t min_len, size_t max_len,
|
||||||
|
+ int prediction_resistance);
|
||||||
|
+void rand_crngt_cleanup_entropy(RAND_DRBG *drbg,
|
||||||
|
+ unsigned char *out, size_t outlen);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* RAND_POOL functions
|
||||||
|
*/
|
||||||
|
diff -up openssl-1.1.1b/crypto/rand/build.info.crng-test openssl-1.1.1b/crypto/rand/build.info
|
||||||
|
--- openssl-1.1.1b/crypto/rand/build.info.crng-test 2019-05-07 09:54:14.921204857 +0200
|
||||||
|
+++ openssl-1.1.1b/crypto/rand/build.info 2019-05-07 09:55:22.730014705 +0200
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
LIBS=../../libcrypto
|
||||||
|
SOURCE[../../libcrypto]=\
|
||||||
|
- randfile.c rand_lib.c rand_err.c rand_egd.c \
|
||||||
|
+ randfile.c rand_lib.c rand_err.c rand_crng_test.c rand_egd.c \
|
||||||
|
rand_win.c rand_unix.c rand_vms.c drbg_lib.c drbg_ctr.c
|
||||||
|
diff -up openssl-1.1.1b/crypto/rand/drbg_lib.c.crng-test openssl-1.1.1b/crypto/rand/drbg_lib.c
|
||||||
|
--- openssl-1.1.1b/crypto/rand/drbg_lib.c.crng-test 2019-02-26 15:15:30.000000000 +0100
|
||||||
|
+++ openssl-1.1.1b/crypto/rand/drbg_lib.c 2019-05-07 10:04:51.753157224 +0200
|
||||||
|
@@ -67,7 +67,7 @@ static CRYPTO_THREAD_LOCAL private_drbg;
|
||||||
|
|
||||||
|
|
||||||
|
/* NIST SP 800-90A DRBG recommends the use of a personalization string. */
|
||||||
|
-static const char ossl_pers_string[] = "OpenSSL NIST SP 800-90A DRBG";
|
||||||
|
+static const char ossl_pers_string[] = DRBG_DEFAULT_PERS_STRING;
|
||||||
|
|
||||||
|
static CRYPTO_ONCE rand_drbg_init = CRYPTO_ONCE_STATIC_INIT;
|
||||||
|
|
||||||
|
@@ -201,8 +201,13 @@ static RAND_DRBG *rand_drbg_new(int secu
|
||||||
|
drbg->parent = parent;
|
||||||
|
|
||||||
|
if (parent == NULL) {
|
||||||
|
+#ifdef OPENSSL_FIPS
|
||||||
|
+ drbg->get_entropy = rand_crngt_get_entropy;
|
||||||
|
+ drbg->cleanup_entropy = rand_crngt_cleanup_entropy;
|
||||||
|
+#else
|
||||||
|
drbg->get_entropy = rand_drbg_get_entropy;
|
||||||
|
drbg->cleanup_entropy = rand_drbg_cleanup_entropy;
|
||||||
|
+#endif
|
||||||
|
#ifndef RAND_DRBG_GET_RANDOM_NONCE
|
||||||
|
drbg->get_nonce = rand_drbg_get_nonce;
|
||||||
|
drbg->cleanup_nonce = rand_drbg_cleanup_nonce;
|
||||||
|
diff -up openssl-1.1.1b/crypto/rand/rand_crng_test.c.crng-test openssl-1.1.1b/crypto/rand/rand_crng_test.c
|
||||||
|
--- openssl-1.1.1b/crypto/rand/rand_crng_test.c.crng-test 2019-05-07 09:54:14.925204787 +0200
|
||||||
|
+++ openssl-1.1.1b/crypto/rand/rand_crng_test.c 2019-05-07 09:54:14.932204664 +0200
|
||||||
|
@@ -0,0 +1,118 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
+ * Copyright (c) 2019, Oracle and/or its affiliates. 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
|
||||||
|
+ * in the file LICENSE in the source distribution or at
|
||||||
|
+ * https://www.openssl.org/source/license.html
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Implementation of the FIPS 140-2 section 4.9.2 Conditional Tests.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <openssl/evp.h>
|
||||||
|
+#include "internal/rand_int.h"
|
||||||
|
+#include "internal/thread_once.h"
|
||||||
|
+#include "rand_lcl.h"
|
||||||
|
+
|
||||||
|
+static RAND_POOL *crngt_pool;
|
||||||
|
+static unsigned char crngt_prev[EVP_MAX_MD_SIZE];
|
||||||
|
+
|
||||||
|
+int (*crngt_get_entropy)(unsigned char *, unsigned char *, unsigned int *)
|
||||||
|
+ = &rand_crngt_get_entropy_cb;
|
||||||
|
+
|
||||||
|
+int rand_crngt_get_entropy_cb(unsigned char *buf, unsigned char *md,
|
||||||
|
+ unsigned int *md_size)
|
||||||
|
+{
|
||||||
|
+ int r;
|
||||||
|
+ size_t n;
|
||||||
|
+ unsigned char *p;
|
||||||
|
+
|
||||||
|
+ n = rand_pool_acquire_entropy(crngt_pool);
|
||||||
|
+ if (n >= CRNGT_BUFSIZ) {
|
||||||
|
+ p = rand_pool_detach(crngt_pool);
|
||||||
|
+ r = EVP_Digest(p, CRNGT_BUFSIZ, md, md_size, EVP_sha256(), NULL);
|
||||||
|
+ if (r != 0)
|
||||||
|
+ memcpy(buf, p, CRNGT_BUFSIZ);
|
||||||
|
+ rand_pool_reattach(crngt_pool, p);
|
||||||
|
+ return r;
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void rand_crngt_cleanup(void)
|
||||||
|
+{
|
||||||
|
+ rand_pool_free(crngt_pool);
|
||||||
|
+ crngt_pool = NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int rand_crngt_init(void)
|
||||||
|
+{
|
||||||
|
+ unsigned char buf[CRNGT_BUFSIZ];
|
||||||
|
+
|
||||||
|
+ if ((crngt_pool = rand_pool_new(0, CRNGT_BUFSIZ, CRNGT_BUFSIZ)) == NULL)
|
||||||
|
+ return 0;
|
||||||
|
+ if (crngt_get_entropy(buf, crngt_prev, NULL)) {
|
||||||
|
+ OPENSSL_cleanse(buf, sizeof(buf));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ rand_crngt_cleanup();
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static CRYPTO_ONCE rand_crngt_init_flag = CRYPTO_ONCE_STATIC_INIT;
|
||||||
|
+DEFINE_RUN_ONCE_STATIC(do_rand_crngt_init)
|
||||||
|
+{
|
||||||
|
+ return OPENSSL_init_crypto(0, NULL)
|
||||||
|
+ && rand_crngt_init()
|
||||||
|
+ && OPENSSL_atexit(&rand_crngt_cleanup);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int rand_crngt_single_init(void)
|
||||||
|
+{
|
||||||
|
+ return RUN_ONCE(&rand_crngt_init_flag, do_rand_crngt_init);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+size_t rand_crngt_get_entropy(RAND_DRBG *drbg,
|
||||||
|
+ unsigned char **pout,
|
||||||
|
+ int entropy, size_t min_len, size_t max_len,
|
||||||
|
+ int prediction_resistance)
|
||||||
|
+{
|
||||||
|
+ unsigned char buf[CRNGT_BUFSIZ], md[EVP_MAX_MD_SIZE];
|
||||||
|
+ unsigned int sz;
|
||||||
|
+ RAND_POOL *pool;
|
||||||
|
+ size_t q, r = 0, s, t = 0;
|
||||||
|
+ int attempts = 3;
|
||||||
|
+
|
||||||
|
+ if (!RUN_ONCE(&rand_crngt_init_flag, do_rand_crngt_init))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if ((pool = rand_pool_new(entropy, min_len, max_len)) == NULL)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ while ((q = rand_pool_bytes_needed(pool, 1)) > 0 && attempts-- > 0) {
|
||||||
|
+ s = q > sizeof(buf) ? sizeof(buf) : q;
|
||||||
|
+ if (!crngt_get_entropy(buf, md, &sz)
|
||||||
|
+ || memcmp(crngt_prev, md, sz) == 0
|
||||||
|
+ || !rand_pool_add(pool, buf, s, s * 8))
|
||||||
|
+ goto err;
|
||||||
|
+ memcpy(crngt_prev, md, sz);
|
||||||
|
+ t += s;
|
||||||
|
+ attempts++;
|
||||||
|
+ }
|
||||||
|
+ r = t;
|
||||||
|
+ *pout = rand_pool_detach(pool);
|
||||||
|
+err:
|
||||||
|
+ OPENSSL_cleanse(buf, sizeof(buf));
|
||||||
|
+ rand_pool_free(pool);
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void rand_crngt_cleanup_entropy(RAND_DRBG *drbg,
|
||||||
|
+ unsigned char *out, size_t outlen)
|
||||||
|
+{
|
||||||
|
+ OPENSSL_secure_clear_free(out, outlen);
|
||||||
|
+}
|
||||||
|
diff -up openssl-1.1.1b/crypto/rand/rand_lcl.h.crng-test openssl-1.1.1b/crypto/rand/rand_lcl.h
|
||||||
|
--- openssl-1.1.1b/crypto/rand/rand_lcl.h.crng-test 2019-05-07 08:56:33.330177674 +0200
|
||||||
|
+++ openssl-1.1.1b/crypto/rand/rand_lcl.h 2019-05-07 09:54:14.933204647 +0200
|
||||||
|
@@ -33,7 +33,15 @@
|
||||||
|
# define MASTER_RESEED_TIME_INTERVAL (60*60) /* 1 hour */
|
||||||
|
# define SLAVE_RESEED_TIME_INTERVAL (7*60) /* 7 minutes */
|
||||||
|
|
||||||
|
-
|
||||||
|
+/*
|
||||||
|
+ * The number of bytes that constitutes an atomic lump of entropy with respect
|
||||||
|
+ * to the FIPS 140-2 section 4.9.2 Conditional Tests. The size is somewhat
|
||||||
|
+ * arbitrary, the smaller the value, the less entropy is consumed on first
|
||||||
|
+ * read but the higher the probability of the test failing by accident.
|
||||||
|
+ *
|
||||||
|
+ * The value is in bytes.
|
||||||
|
+ */
|
||||||
|
+#define CRNGT_BUFSIZ 16
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maximum input size for the DRBG (entropy, nonce, personalization string)
|
||||||
|
@@ -44,7 +52,8 @@
|
||||||
|
*/
|
||||||
|
# define DRBG_MAX_LENGTH INT32_MAX
|
||||||
|
|
||||||
|
-
|
||||||
|
+/* The default nonce */
|
||||||
|
+# define DRBG_DEFAULT_PERS_STRING "OpenSSL NIST SP 800-90A DRBG"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maximum allocation size for RANDOM_POOL buffers
|
||||||
|
@@ -290,4 +299,22 @@ int rand_drbg_enable_locking(RAND_DRBG *
|
||||||
|
/* initializes the AES-CTR DRBG implementation */
|
||||||
|
int drbg_ctr_init(RAND_DRBG *drbg);
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Entropy call back for the FIPS 140-2 section 4.9.2 Conditional Tests.
|
||||||
|
+ * These need to be exposed for the unit tests.
|
||||||
|
+ */
|
||||||
|
+int rand_crngt_get_entropy_cb(unsigned char *buf, unsigned char *md,
|
||||||
|
+ unsigned int *md_size);
|
||||||
|
+extern int (*crngt_get_entropy)(unsigned char *buf, unsigned char *md,
|
||||||
|
+ unsigned int *md_size);
|
||||||
|
+int rand_crngt_init(void);
|
||||||
|
+void rand_crngt_cleanup(void);
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Expose the run once initialisation function for the unit tests because.
|
||||||
|
+ * they need to restart from scratch to validate the first block is skipped
|
||||||
|
+ * properly.
|
||||||
|
+ */
|
||||||
|
+int rand_crngt_single_init(void);
|
||||||
|
+
|
||||||
|
#endif
|
||||||
|
diff -up openssl-1.1.1b/test/drbgtest.c.crng-test openssl-1.1.1b/test/drbgtest.c
|
||||||
|
--- openssl-1.1.1b/test/drbgtest.c.crng-test 2019-02-26 15:15:30.000000000 +0100
|
||||||
|
+++ openssl-1.1.1b/test/drbgtest.c 2019-05-07 10:06:24.706551561 +0200
|
||||||
|
@@ -143,6 +143,31 @@ static size_t kat_nonce(RAND_DRBG *drbg,
|
||||||
|
return t->noncelen;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Disable CRNG testing if it is enabled.
|
||||||
|
+ * If the DRBG is ready or in an error state, this means an instantiate cycle
|
||||||
|
+ * for which the default personalisation string is used.
|
||||||
|
+ */
|
||||||
|
+static int disable_crngt(RAND_DRBG *drbg)
|
||||||
|
+{
|
||||||
|
+ static const char pers[] = DRBG_DEFAULT_PERS_STRING;
|
||||||
|
+ const int instantiate = drbg->state != DRBG_UNINITIALISED;
|
||||||
|
+
|
||||||
|
+ if (drbg->get_entropy != rand_crngt_get_entropy)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ if ((instantiate && !RAND_DRBG_uninstantiate(drbg))
|
||||||
|
+ || !TEST_true(RAND_DRBG_set_callbacks(drbg, &rand_drbg_get_entropy,
|
||||||
|
+ &rand_drbg_cleanup_entropy,
|
||||||
|
+ &rand_drbg_get_nonce,
|
||||||
|
+ &rand_drbg_cleanup_nonce))
|
||||||
|
+ || (instantiate
|
||||||
|
+ && !RAND_DRBG_instantiate(drbg, (const unsigned char *)pers,
|
||||||
|
+ sizeof(pers) - 1)))
|
||||||
|
+ return 0;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int uninstantiate(RAND_DRBG *drbg)
|
||||||
|
{
|
||||||
|
int ret = drbg == NULL ? 1 : RAND_DRBG_uninstantiate(drbg);
|
||||||
|
@@ -168,7 +193,8 @@ static int single_kat(DRBG_SELFTEST_DATA
|
||||||
|
if (!TEST_ptr(drbg = RAND_DRBG_new(td->nid, td->flags, NULL)))
|
||||||
|
return 0;
|
||||||
|
if (!TEST_true(RAND_DRBG_set_callbacks(drbg, kat_entropy, NULL,
|
||||||
|
- kat_nonce, NULL))) {
|
||||||
|
+ kat_nonce, NULL))
|
||||||
|
+ || !TEST_true(disable_crngt(drbg))) {
|
||||||
|
failures++;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
@@ -286,7 +312,8 @@ static int error_check(DRBG_SELFTEST_DAT
|
||||||
|
unsigned int reseed_counter_tmp;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
- if (!TEST_ptr(drbg = RAND_DRBG_new(0, 0, NULL)))
|
||||||
|
+ if (!TEST_ptr(drbg = RAND_DRBG_new(0, 0, NULL))
|
||||||
|
+ || !TEST_true(disable_crngt(drbg)))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -699,6 +726,10 @@ static int test_rand_drbg_reseed(void)
|
||||||
|
|| !TEST_ptr_eq(private->parent, master))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
+ /* Disable CRNG testing for the master DRBG */
|
||||||
|
+ if (!TEST_true(disable_crngt(master)))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
/* uninstantiate the three global DRBGs */
|
||||||
|
RAND_DRBG_uninstantiate(private);
|
||||||
|
RAND_DRBG_uninstantiate(public);
|
||||||
|
@@ -919,7 +950,8 @@ static int test_rand_seed(void)
|
||||||
|
size_t rand_buflen;
|
||||||
|
size_t required_seed_buflen = 0;
|
||||||
|
|
||||||
|
- if (!TEST_ptr(master = RAND_DRBG_get0_master()))
|
||||||
|
+ if (!TEST_ptr(master = RAND_DRBG_get0_master())
|
||||||
|
+ || !TEST_true(disable_crngt(master)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
#ifdef OPENSSL_RAND_SEED_NONE
|
||||||
|
@@ -968,6 +1000,95 @@ static int test_rand_add(void)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * A list of the FIPS DRGB types.
|
||||||
|
+ */
|
||||||
|
+static const struct s_drgb_types {
|
||||||
|
+ int nid;
|
||||||
|
+ int flags;
|
||||||
|
+} drgb_types[] = {
|
||||||
|
+ { NID_aes_128_ctr, 0 },
|
||||||
|
+ { NID_aes_192_ctr, 0 },
|
||||||
|
+ { NID_aes_256_ctr, 0 },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/* Six cases for each covers seed sizes up to 32 bytes */
|
||||||
|
+static const size_t crngt_num_cases = 6;
|
||||||
|
+
|
||||||
|
+static size_t crngt_case, crngt_idx;
|
||||||
|
+
|
||||||
|
+static int crngt_entropy_cb(unsigned char *buf, unsigned char *md,
|
||||||
|
+ unsigned int *md_size)
|
||||||
|
+{
|
||||||
|
+ size_t i, z;
|
||||||
|
+
|
||||||
|
+ if (!TEST_int_lt(crngt_idx, crngt_num_cases))
|
||||||
|
+ return 0;
|
||||||
|
+ /* Generate a block of unique data unless this is the duplication point */
|
||||||
|
+ z = crngt_idx++;
|
||||||
|
+ if (z > 0 && crngt_case == z)
|
||||||
|
+ z--;
|
||||||
|
+ for (i = 0; i < CRNGT_BUFSIZ; i++)
|
||||||
|
+ buf[i] = (unsigned char)(i + 'A' + z);
|
||||||
|
+ return EVP_Digest(buf, CRNGT_BUFSIZ, md, md_size, EVP_sha256(), NULL);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int test_crngt(int n)
|
||||||
|
+{
|
||||||
|
+ const struct s_drgb_types *dt = drgb_types + n / crngt_num_cases;
|
||||||
|
+ RAND_DRBG *drbg = NULL;
|
||||||
|
+ unsigned char buff[100];
|
||||||
|
+ size_t ent;
|
||||||
|
+ int res = 0;
|
||||||
|
+ int expect;
|
||||||
|
+
|
||||||
|
+ if (!TEST_true(rand_crngt_single_init()))
|
||||||
|
+ return 0;
|
||||||
|
+ rand_crngt_cleanup();
|
||||||
|
+
|
||||||
|
+ if (!TEST_ptr(drbg = RAND_DRBG_new(dt->nid, dt->flags, NULL)))
|
||||||
|
+ return 0;
|
||||||
|
+ ent = (drbg->min_entropylen + CRNGT_BUFSIZ - 1) / CRNGT_BUFSIZ;
|
||||||
|
+ crngt_case = n % crngt_num_cases;
|
||||||
|
+ crngt_idx = 0;
|
||||||
|
+ crngt_get_entropy = &crngt_entropy_cb;
|
||||||
|
+ if (!TEST_true(rand_crngt_init()))
|
||||||
|
+ goto err;
|
||||||
|
+#ifndef OPENSSL_FIPS
|
||||||
|
+ if (!TEST_true(RAND_DRBG_set_callbacks(drbg, &rand_crngt_get_entropy,
|
||||||
|
+ &rand_crngt_cleanup_entropy,
|
||||||
|
+ &rand_drbg_get_nonce,
|
||||||
|
+ &rand_drbg_cleanup_nonce)))
|
||||||
|
+ goto err;
|
||||||
|
+#endif
|
||||||
|
+ expect = crngt_case == 0 || crngt_case > ent;
|
||||||
|
+ if (!TEST_int_eq(RAND_DRBG_instantiate(drbg, NULL, 0), expect))
|
||||||
|
+ goto err;
|
||||||
|
+ if (!expect)
|
||||||
|
+ goto fin;
|
||||||
|
+ if (!TEST_true(RAND_DRBG_generate(drbg, buff, sizeof(buff), 0, NULL, 0)))
|
||||||
|
+ goto err;
|
||||||
|
+
|
||||||
|
+ expect = crngt_case == 0 || crngt_case > 2 * ent;
|
||||||
|
+ if (!TEST_int_eq(RAND_DRBG_reseed(drbg, NULL, 0, 0), expect))
|
||||||
|
+ goto err;
|
||||||
|
+ if (!expect)
|
||||||
|
+ goto fin;
|
||||||
|
+ if (!TEST_true(RAND_DRBG_generate(drbg, buff, sizeof(buff), 0, NULL, 0)))
|
||||||
|
+ goto err;
|
||||||
|
+
|
||||||
|
+fin:
|
||||||
|
+ res = 1;
|
||||||
|
+err:
|
||||||
|
+ if (!res)
|
||||||
|
+ TEST_note("DRBG %zd case %zd block %zd", n / crngt_num_cases,
|
||||||
|
+ crngt_case, crngt_idx);
|
||||||
|
+ uninstantiate(drbg);
|
||||||
|
+ RAND_DRBG_free(drbg);
|
||||||
|
+ crngt_get_entropy = &rand_crngt_get_entropy_cb;
|
||||||
|
+ return res;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int setup_tests(void)
|
||||||
|
{
|
||||||
|
app_data_index = RAND_DRBG_get_ex_new_index(0L, NULL, NULL, NULL, NULL);
|
||||||
|
@@ -980,5 +1101,6 @@ int setup_tests(void)
|
||||||
|
#if defined(OPENSSL_THREADS)
|
||||||
|
ADD_TEST(test_multi_thread);
|
||||||
|
#endif
|
||||||
|
+ ADD_ALL_TESTS(test_crngt, crngt_num_cases * OSSL_NELEM(drgb_types));
|
||||||
|
return 1;
|
||||||
|
}
|
157
openssl-1.1.1-fips-post-rand.patch
Normal file
157
openssl-1.1.1-fips-post-rand.patch
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
diff -up openssl-1.1.1c/crypto/fips/fips.c.fips-post-rand openssl-1.1.1c/crypto/fips/fips.c
|
||||||
|
--- openssl-1.1.1c/crypto/fips/fips.c.fips-post-rand 2019-05-29 15:53:56.328216002 +0200
|
||||||
|
+++ openssl-1.1.1c/crypto/fips/fips.c 2019-05-29 15:53:56.359215457 +0200
|
||||||
|
@@ -68,6 +68,7 @@
|
||||||
|
|
||||||
|
# include <openssl/fips.h>
|
||||||
|
# include "internal/thread_once.h"
|
||||||
|
+# include "internal/rand_int.h"
|
||||||
|
|
||||||
|
# ifndef PATH_MAX
|
||||||
|
# define PATH_MAX 1024
|
||||||
|
@@ -76,6 +77,7 @@
|
||||||
|
static int fips_selftest_fail = 0;
|
||||||
|
static int fips_mode = 0;
|
||||||
|
static int fips_started = 0;
|
||||||
|
+static int fips_post = 0;
|
||||||
|
|
||||||
|
static int fips_is_owning_thread(void);
|
||||||
|
static int fips_set_owning_thread(void);
|
||||||
|
@@ -158,6 +160,11 @@ void fips_set_selftest_fail(void)
|
||||||
|
fips_selftest_fail = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int fips_in_post(void)
|
||||||
|
+{
|
||||||
|
+ return fips_post;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* we implement what libfipscheck does ourselves */
|
||||||
|
|
||||||
|
static int
|
||||||
|
@@ -445,6 +452,8 @@ int FIPS_module_mode_set(int onoff)
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
+ fips_post = 1;
|
||||||
|
+
|
||||||
|
if (!FIPS_selftest()) {
|
||||||
|
fips_selftest_fail = 1;
|
||||||
|
ret = 0;
|
||||||
|
@@ -459,7 +468,12 @@ int FIPS_module_mode_set(int onoff)
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ fips_post = 0;
|
||||||
|
+
|
||||||
|
fips_set_mode(onoff);
|
||||||
|
+ /* force RNG reseed with entropy from getrandom() on next call */
|
||||||
|
+ rand_fork();
|
||||||
|
+
|
||||||
|
ret = 1;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
diff -up openssl-1.1.1c/crypto/include/internal/fips_int.h.fips-post-rand openssl-1.1.1c/crypto/include/internal/fips_int.h
|
||||||
|
--- openssl-1.1.1c/crypto/include/internal/fips_int.h.fips-post-rand 2019-05-29 15:53:56.337215844 +0200
|
||||||
|
+++ openssl-1.1.1c/crypto/include/internal/fips_int.h 2019-05-29 15:53:56.359215457 +0200
|
||||||
|
@@ -77,6 +77,8 @@ int FIPS_selftest_hmac(void);
|
||||||
|
int FIPS_selftest_drbg(void);
|
||||||
|
int FIPS_selftest_cmac(void);
|
||||||
|
|
||||||
|
+int fips_in_post(void);
|
||||||
|
+
|
||||||
|
int fips_pkey_signature_test(EVP_PKEY *pkey,
|
||||||
|
const unsigned char *tbs, int tbslen,
|
||||||
|
const unsigned char *kat,
|
||||||
|
diff -up openssl-1.1.1c/crypto/rand/rand_unix.c.fips-post-rand openssl-1.1.1c/crypto/rand/rand_unix.c
|
||||||
|
--- openssl-1.1.1c/crypto/rand/rand_unix.c.fips-post-rand 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/crypto/rand/rand_unix.c 2019-05-29 16:54:16.471391802 +0200
|
||||||
|
@@ -16,10 +16,12 @@
|
||||||
|
#include <openssl/rand.h>
|
||||||
|
#include "rand_lcl.h"
|
||||||
|
#include "internal/rand_int.h"
|
||||||
|
+#include "internal/fips_int.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "internal/dso.h"
|
||||||
|
#if defined(__linux)
|
||||||
|
-# include <asm/unistd.h>
|
||||||
|
+# include <sys/syscall.h>
|
||||||
|
+# include <sys/random.h>
|
||||||
|
#endif
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
# include <sys/types.h>
|
||||||
|
@@ -279,7 +281,7 @@ static ssize_t sysctl_random(char *buf,
|
||||||
|
* syscall_random(): Try to get random data using a system call
|
||||||
|
* returns the number of bytes returned in buf, or < 0 on error.
|
||||||
|
*/
|
||||||
|
-static ssize_t syscall_random(void *buf, size_t buflen)
|
||||||
|
+static ssize_t syscall_random(void *buf, size_t buflen, int nonblock)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Note: 'buflen' equals the size of the buffer which is used by the
|
||||||
|
@@ -301,6 +303,7 @@ static ssize_t syscall_random(void *buf,
|
||||||
|
* - Linux since 3.17 with glibc 2.25
|
||||||
|
* - FreeBSD since 12.0 (1200061)
|
||||||
|
*/
|
||||||
|
+# if 0
|
||||||
|
# if defined(__GNUC__) && __GNUC__>=2 && defined(__ELF__) && !defined(__hpux)
|
||||||
|
extern int getentropy(void *buffer, size_t length) __attribute__((weak));
|
||||||
|
|
||||||
|
@@ -322,10 +325,10 @@ static ssize_t syscall_random(void *buf,
|
||||||
|
if (p_getentropy.p != NULL)
|
||||||
|
return p_getentropy.f(buf, buflen) == 0 ? (ssize_t)buflen : -1;
|
||||||
|
# endif
|
||||||
|
-
|
||||||
|
+# endif
|
||||||
|
/* Linux supports this since version 3.17 */
|
||||||
|
-# if defined(__linux) && defined(__NR_getrandom)
|
||||||
|
- return syscall(__NR_getrandom, buf, buflen, 0);
|
||||||
|
+# if defined(__linux) && defined(SYS_getrandom)
|
||||||
|
+ return syscall(SYS_getrandom, buf, buflen, nonblock?GRND_NONBLOCK:0);
|
||||||
|
# elif (defined(__FreeBSD__) || defined(__NetBSD__)) && defined(KERN_ARND)
|
||||||
|
return sysctl_random(buf, buflen);
|
||||||
|
# else
|
||||||
|
@@ -475,8 +478,10 @@ size_t rand_pool_acquire_entropy(RAND_PO
|
||||||
|
size_t bytes_needed;
|
||||||
|
size_t entropy_available = 0;
|
||||||
|
unsigned char *buffer;
|
||||||
|
-
|
||||||
|
# if defined(OPENSSL_RAND_SEED_GETRANDOM)
|
||||||
|
+ int in_post;
|
||||||
|
+
|
||||||
|
+ for (in_post = fips_in_post(); in_post >= 0; --in_post) {
|
||||||
|
{
|
||||||
|
ssize_t bytes;
|
||||||
|
/* Maximum allowed number of consecutive unsuccessful attempts */
|
||||||
|
@@ -485,7 +490,7 @@ size_t rand_pool_acquire_entropy(RAND_PO
|
||||||
|
bytes_needed = rand_pool_bytes_needed(pool, 1 /*entropy_factor*/);
|
||||||
|
while (bytes_needed != 0 && attempts-- > 0) {
|
||||||
|
buffer = rand_pool_add_begin(pool, bytes_needed);
|
||||||
|
- bytes = syscall_random(buffer, bytes_needed);
|
||||||
|
+ bytes = syscall_random(buffer, bytes_needed, in_post);
|
||||||
|
if (bytes > 0) {
|
||||||
|
rand_pool_add_end(pool, bytes, 8 * bytes);
|
||||||
|
bytes_needed -= bytes;
|
||||||
|
@@ -540,8 +545,10 @@ size_t rand_pool_acquire_entropy(RAND_PO
|
||||||
|
int attempts = 3;
|
||||||
|
const int fd = get_random_device(i);
|
||||||
|
|
||||||
|
- if (fd == -1)
|
||||||
|
+ if (fd == -1) {
|
||||||
|
+ OPENSSL_showfatal("Random device %s cannot be opened.\n", random_device_paths[i]);
|
||||||
|
continue;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
while (bytes_needed != 0 && attempts-- > 0) {
|
||||||
|
buffer = rand_pool_add_begin(pool, bytes_needed);
|
||||||
|
@@ -601,7 +608,9 @@ size_t rand_pool_acquire_entropy(RAND_PO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
-
|
||||||
|
+# ifdef OPENSSL_RAND_SEED_GETRANDOM
|
||||||
|
+ }
|
||||||
|
+# endif
|
||||||
|
return rand_pool_entropy_available(pool);
|
||||||
|
# endif
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
14
openssl-1.1.1-ignore-bound.patch
Normal file
14
openssl-1.1.1-ignore-bound.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
Do not return failure when setting version bound on fixed protocol
|
||||||
|
version method.
|
||||||
|
diff -up openssl-1.1.1-pre8/ssl/statem/statem_lib.c.ignore-bound openssl-1.1.1-pre8/ssl/statem/statem_lib.c
|
||||||
|
--- openssl-1.1.1-pre8/ssl/statem/statem_lib.c.ignore-bound 2018-06-20 16:48:13.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/ssl/statem/statem_lib.c 2018-08-13 11:07:52.826304045 +0200
|
||||||
|
@@ -1595,7 +1595,7 @@ int ssl_set_version_bound(int method_ver
|
||||||
|
* methods are not subject to controls that disable individual protocol
|
||||||
|
* versions.
|
||||||
|
*/
|
||||||
|
- return 0;
|
||||||
|
+ return 1;
|
||||||
|
|
||||||
|
case TLS_ANY_VERSION:
|
||||||
|
if (version < SSL3_VERSION || version > TLS_MAX_VERSION)
|
19
openssl-1.1.1-man-rename.patch
Normal file
19
openssl-1.1.1-man-rename.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
diff -up openssl-1.1.1-pre9/doc/man1/openssl.pod.man-rename openssl-1.1.1-pre9/doc/man1/openssl.pod
|
||||||
|
--- openssl-1.1.1-pre9/doc/man1/openssl.pod.man-rename 2018-08-21 14:14:13.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre9/doc/man1/openssl.pod 2018-08-22 12:13:04.092568064 +0200
|
||||||
|
@@ -482,13 +482,13 @@ L<dhparam(1)>, L<dsa(1)>, L<dsaparam(1)>
|
||||||
|
L<ec(1)>, L<ecparam(1)>,
|
||||||
|
L<enc(1)>, L<engine(1)>, L<errstr(1)>, L<gendsa(1)>, L<genpkey(1)>,
|
||||||
|
L<genrsa(1)>, L<nseq(1)>, L<ocsp(1)>,
|
||||||
|
-L<passwd(1)>,
|
||||||
|
L<pkcs12(1)>, L<pkcs7(1)>, L<pkcs8(1)>,
|
||||||
|
L<pkey(1)>, L<pkeyparam(1)>, L<pkeyutl(1)>, L<prime(1)>,
|
||||||
|
-L<rand(1)>, L<rehash(1)>, L<req(1)>, L<rsa(1)>,
|
||||||
|
+L<rehash(1)>, L<req(1)>, L<rsa(1)>,
|
||||||
|
L<rsautl(1)>, L<s_client(1)>,
|
||||||
|
L<s_server(1)>, L<s_time(1)>, L<sess_id(1)>,
|
||||||
|
L<smime(1)>, L<speed(1)>, L<spkac(1)>, L<srp(1)>, L<storeutl(1)>,
|
||||||
|
+L<sslpasswd(1)>, L<sslrand(1)>,
|
||||||
|
L<ts(1)>,
|
||||||
|
L<verify(1)>, L<version(1)>, L<x509(1)>,
|
||||||
|
L<crypto(7)>, L<ssl(7)>, L<x509v3_config(5)>
|
116
openssl-1.1.1-no-brainpool.patch
Normal file
116
openssl-1.1.1-no-brainpool.patch
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
diff -up openssl-1.1.1b/test/ssl-tests/20-cert-select.conf.in.no-brainpool openssl-1.1.1b/test/ssl-tests/20-cert-select.conf.in
|
||||||
|
--- openssl-1.1.1b/test/ssl-tests/20-cert-select.conf.in.no-brainpool 2019-02-26 15:15:30.000000000 +0100
|
||||||
|
+++ openssl-1.1.1b/test/ssl-tests/20-cert-select.conf.in 2019-05-07 11:52:35.885597934 +0200
|
||||||
|
@@ -141,22 +141,23 @@ our @tests = (
|
||||||
|
{
|
||||||
|
name => "ECDSA with brainpool",
|
||||||
|
server => {
|
||||||
|
- "Certificate" => test_pem("server-ecdsa-brainpoolP256r1-cert.pem"),
|
||||||
|
- "PrivateKey" => test_pem("server-ecdsa-brainpoolP256r1-key.pem"),
|
||||||
|
- "Groups" => "brainpoolP256r1",
|
||||||
|
+# "Certificate" => test_pem("server-ecdsa-brainpoolP256r1-cert.pem"),
|
||||||
|
+# "PrivateKey" => test_pem("server-ecdsa-brainpoolP256r1-key.pem"),
|
||||||
|
+# "Groups" => "brainpoolP256r1",
|
||||||
|
+ "CipherString" => "aNULL",
|
||||||
|
},
|
||||||
|
client => {
|
||||||
|
#We don't restrict this to TLSv1.2, although use of brainpool
|
||||||
|
#should force this anyway so that this should succeed
|
||||||
|
"CipherString" => "aECDSA",
|
||||||
|
"RequestCAFile" => test_pem("root-cert.pem"),
|
||||||
|
- "Groups" => "brainpoolP256r1",
|
||||||
|
+# "Groups" => "brainpoolP256r1",
|
||||||
|
},
|
||||||
|
test => {
|
||||||
|
- "ExpectedServerCertType" =>, "brainpoolP256r1",
|
||||||
|
- "ExpectedServerSignType" =>, "EC",
|
||||||
|
+# "ExpectedServerCertType" =>, "brainpoolP256r1",
|
||||||
|
+# "ExpectedServerSignType" =>, "EC",
|
||||||
|
# Note: certificate_authorities not sent for TLS < 1.3
|
||||||
|
- "ExpectedServerCANames" =>, "empty",
|
||||||
|
+# "ExpectedServerCANames" =>, "empty",
|
||||||
|
"ExpectedResult" => "Success"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
@@ -787,18 +788,19 @@ my @tests_tls_1_3 = (
|
||||||
|
{
|
||||||
|
name => "TLS 1.3 ECDSA with brainpool",
|
||||||
|
server => {
|
||||||
|
- "Certificate" => test_pem("server-ecdsa-brainpoolP256r1-cert.pem"),
|
||||||
|
- "PrivateKey" => test_pem("server-ecdsa-brainpoolP256r1-key.pem"),
|
||||||
|
- "Groups" => "brainpoolP256r1",
|
||||||
|
+# "Certificate" => test_pem("server-ecdsa-brainpoolP256r1-cert.pem"),
|
||||||
|
+# "PrivateKey" => test_pem("server-ecdsa-brainpoolP256r1-key.pem"),
|
||||||
|
+# "Groups" => "brainpoolP256r1",
|
||||||
|
+ "CipherString" => "aNULL",
|
||||||
|
},
|
||||||
|
client => {
|
||||||
|
"RequestCAFile" => test_pem("root-cert.pem"),
|
||||||
|
- "Groups" => "brainpoolP256r1",
|
||||||
|
+# "Groups" => "brainpoolP256r1",
|
||||||
|
"MinProtocol" => "TLSv1.3",
|
||||||
|
"MaxProtocol" => "TLSv1.3"
|
||||||
|
},
|
||||||
|
test => {
|
||||||
|
- "ExpectedResult" => "ServerFail"
|
||||||
|
+ "ExpectedResult" => "Success"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
diff -up openssl-1.1.1b/test/ssl-tests/20-cert-select.conf.no-brainpool openssl-1.1.1b/test/ssl-tests/20-cert-select.conf
|
||||||
|
--- openssl-1.1.1b/test/ssl-tests/20-cert-select.conf.no-brainpool 2019-02-26 15:15:30.000000000 +0100
|
||||||
|
+++ openssl-1.1.1b/test/ssl-tests/20-cert-select.conf 2019-05-07 12:15:12.762907496 +0200
|
||||||
|
@@ -233,23 +233,18 @@ server = 5-ECDSA with brainpool-server
|
||||||
|
client = 5-ECDSA with brainpool-client
|
||||||
|
|
||||||
|
[5-ECDSA with brainpool-server]
|
||||||
|
-Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-brainpoolP256r1-cert.pem
|
||||||
|
-CipherString = DEFAULT
|
||||||
|
-Groups = brainpoolP256r1
|
||||||
|
-PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ecdsa-brainpoolP256r1-key.pem
|
||||||
|
+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
|
||||||
|
+CipherString = aNULL
|
||||||
|
+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
|
||||||
|
|
||||||
|
[5-ECDSA with brainpool-client]
|
||||||
|
CipherString = aECDSA
|
||||||
|
-Groups = brainpoolP256r1
|
||||||
|
RequestCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
|
||||||
|
VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
|
||||||
|
VerifyMode = Peer
|
||||||
|
|
||||||
|
[test-5]
|
||||||
|
ExpectedResult = Success
|
||||||
|
-ExpectedServerCANames = empty
|
||||||
|
-ExpectedServerCertType = brainpoolP256r1
|
||||||
|
-ExpectedServerSignType = EC
|
||||||
|
|
||||||
|
|
||||||
|
# ===========================================================
|
||||||
|
@@ -1577,14 +1572,12 @@ server = 47-TLS 1.3 ECDSA with brainpool
|
||||||
|
client = 47-TLS 1.3 ECDSA with brainpool-client
|
||||||
|
|
||||||
|
[47-TLS 1.3 ECDSA with brainpool-server]
|
||||||
|
-Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-brainpoolP256r1-cert.pem
|
||||||
|
-CipherString = DEFAULT
|
||||||
|
-Groups = brainpoolP256r1
|
||||||
|
-PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ecdsa-brainpoolP256r1-key.pem
|
||||||
|
+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
|
||||||
|
+CipherString = aNULL
|
||||||
|
+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
|
||||||
|
|
||||||
|
[47-TLS 1.3 ECDSA with brainpool-client]
|
||||||
|
CipherString = DEFAULT
|
||||||
|
-Groups = brainpoolP256r1
|
||||||
|
MaxProtocol = TLSv1.3
|
||||||
|
MinProtocol = TLSv1.3
|
||||||
|
RequestCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
|
||||||
|
@@ -1592,7 +1585,7 @@ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/ro
|
||||||
|
VerifyMode = Peer
|
||||||
|
|
||||||
|
[test-47]
|
||||||
|
-ExpectedResult = ServerFail
|
||||||
|
+ExpectedResult = Success
|
||||||
|
|
||||||
|
|
||||||
|
# ===========================================================
|
@ -1,6 +1,6 @@
|
|||||||
diff -up openssl-1.1.0g/crypto/asn1/a_verify.c.no-md5-verify openssl-1.1.0g/crypto/asn1/a_verify.c
|
diff -up openssl-1.1.1b/crypto/asn1/a_verify.c.no-weak-verify openssl-1.1.1b/crypto/asn1/a_verify.c
|
||||||
--- openssl-1.1.0g/crypto/asn1/a_verify.c.no-md5-verify 2017-11-02 15:29:02.000000000 +0100
|
--- openssl-1.1.1b/crypto/asn1/a_verify.c.no-weak-verify 2019-02-26 15:15:30.000000000 +0100
|
||||||
+++ openssl-1.1.0g/crypto/asn1/a_verify.c 2017-11-03 16:15:46.125801341 +0100
|
+++ openssl-1.1.1b/crypto/asn1/a_verify.c 2019-02-28 11:25:31.531862873 +0100
|
||||||
@@ -7,6 +7,9 @@
|
@@ -7,6 +7,9 @@
|
||||||
* https://www.openssl.org/source/license.html
|
* https://www.openssl.org/source/license.html
|
||||||
*/
|
*/
|
||||||
@ -11,7 +11,7 @@ diff -up openssl-1.1.0g/crypto/asn1/a_verify.c.no-md5-verify openssl-1.1.0g/cryp
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@@ -126,6 +129,12 @@ int ASN1_item_verify(const ASN1_ITEM *it
|
@@ -130,6 +133,12 @@ int ASN1_item_verify(const ASN1_ITEM *it
|
||||||
if (ret != 2)
|
if (ret != 2)
|
||||||
goto err;
|
goto err;
|
||||||
ret = -1;
|
ret = -1;
|
||||||
@ -22,5 +22,5 @@ diff -up openssl-1.1.0g/crypto/asn1/a_verify.c.no-md5-verify openssl-1.1.0g/cryp
|
|||||||
+ ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM);
|
+ ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM);
|
||||||
+ goto err;
|
+ goto err;
|
||||||
} else {
|
} else {
|
||||||
const EVP_MD *type;
|
const EVP_MD *type = EVP_get_digestbynid(mdnid);
|
||||||
type = EVP_get_digestbynid(mdnid);
|
|
16
openssl-1.1.1-regression-fixes.patch
Normal file
16
openssl-1.1.1-regression-fixes.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff -up openssl-1.1.1b/crypto/conf/conf_lib.c.regression openssl-1.1.1b/crypto/conf/conf_lib.c
|
||||||
|
--- openssl-1.1.1b/crypto/conf/conf_lib.c.regression 2019-02-26 15:15:30.000000000 +0100
|
||||||
|
+++ openssl-1.1.1b/crypto/conf/conf_lib.c 2019-05-10 14:28:57.718049429 +0200
|
||||||
|
@@ -356,8 +356,10 @@ OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(
|
||||||
|
{
|
||||||
|
OPENSSL_INIT_SETTINGS *ret = malloc(sizeof(*ret));
|
||||||
|
|
||||||
|
- if (ret != NULL)
|
||||||
|
- memset(ret, 0, sizeof(*ret));
|
||||||
|
+ if (ret == NULL)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ memset(ret, 0, sizeof(*ret));
|
||||||
|
ret->flags = DEFAULT_CONF_MFLAGS;
|
||||||
|
|
||||||
|
return ret;
|
5509
openssl-1.1.1-s390x-update.patch
Normal file
5509
openssl-1.1.1-s390x-update.patch
Normal file
File diff suppressed because it is too large
Load Diff
65
openssl-1.1.1-seclevel.patch
Normal file
65
openssl-1.1.1-seclevel.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
diff -up openssl-1.1.1/crypto/x509/x509_vfy.c.seclevel openssl-1.1.1/crypto/x509/x509_vfy.c
|
||||||
|
--- openssl-1.1.1/crypto/x509/x509_vfy.c.seclevel 2018-09-11 14:48:22.000000000 +0200
|
||||||
|
+++ openssl-1.1.1/crypto/x509/x509_vfy.c 2018-10-01 09:52:23.535298908 +0200
|
||||||
|
@@ -3220,6 +3220,7 @@ static int build_chain(X509_STORE_CTX *c
|
||||||
|
}
|
||||||
|
|
||||||
|
static const int minbits_table[] = { 80, 112, 128, 192, 256 };
|
||||||
|
+static const int minbits_digest_table[] = { 80, 80, 128, 192, 256 };
|
||||||
|
static const int NUM_AUTH_LEVELS = OSSL_NELEM(minbits_table);
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -3264,6 +3265,8 @@ static int check_sig_level(X509_STORE_CT
|
||||||
|
|
||||||
|
if (!X509_get_signature_info(cert, NULL, NULL, &secbits, NULL))
|
||||||
|
return 0;
|
||||||
|
-
|
||||||
|
- return secbits >= minbits_table[level - 1];
|
||||||
|
+ /* Allow SHA1 in SECLEVEL 2 in non-FIPS mode */
|
||||||
|
+ if (FIPS_mode())
|
||||||
|
+ return secbits >= minbits_table[level - 1];
|
||||||
|
+ return secbits >= minbits_digest_table[level - 1];
|
||||||
|
}
|
||||||
|
diff -up openssl-1.1.1/doc/man3/SSL_CTX_set_security_level.pod.seclevel openssl-1.1.1/doc/man3/SSL_CTX_set_security_level.pod
|
||||||
|
--- openssl-1.1.1/doc/man3/SSL_CTX_set_security_level.pod.seclevel 2018-09-11 14:48:22.000000000 +0200
|
||||||
|
+++ openssl-1.1.1/doc/man3/SSL_CTX_set_security_level.pod 2018-10-01 09:52:23.535298908 +0200
|
||||||
|
@@ -81,8 +81,10 @@ using MD5 for the MAC is also prohibited
|
||||||
|
|
||||||
|
=item B<Level 2>
|
||||||
|
|
||||||
|
-Security level set to 112 bits of security. As a result RSA, DSA and DH keys
|
||||||
|
-shorter than 2048 bits and ECC keys shorter than 224 bits are prohibited.
|
||||||
|
+Security level set to 112 bits of security with the exception of SHA1 allowed
|
||||||
|
+for signatures.
|
||||||
|
+As a result RSA, DSA and DH keys shorter than 2048 bits and ECC keys
|
||||||
|
+shorter than 224 bits are prohibited.
|
||||||
|
In addition to the level 1 exclusions any cipher suite using RC4 is also
|
||||||
|
prohibited. SSL version 3 is also not allowed. Compression is disabled.
|
||||||
|
|
||||||
|
diff -up openssl-1.1.1/ssl/ssl_cert.c.seclevel openssl-1.1.1/ssl/ssl_cert.c
|
||||||
|
--- openssl-1.1.1/ssl/ssl_cert.c.seclevel 2018-09-11 14:48:23.000000000 +0200
|
||||||
|
+++ openssl-1.1.1/ssl/ssl_cert.c 2018-10-12 15:29:12.673799305 +0200
|
||||||
|
@@ -983,6 +983,9 @@ static int ssl_security_default_callback
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
+ /* allow SHA1 in SECLEVEL 2 in non FIPS mode */
|
||||||
|
+ if (nid == NID_sha1 && minbits == 112 && !FIPS_mode())
|
||||||
|
+ break;
|
||||||
|
if (bits < minbits)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff -up openssl-1.1.1/test/recipes/25-test_verify.t.seclevel openssl-1.1.1/test/recipes/25-test_verify.t
|
||||||
|
--- openssl-1.1.1/test/recipes/25-test_verify.t.seclevel 2018-09-11 14:48:24.000000000 +0200
|
||||||
|
+++ openssl-1.1.1/test/recipes/25-test_verify.t 2018-10-01 09:52:23.535298908 +0200
|
||||||
|
@@ -342,8 +342,8 @@ ok(verify("ee-pss-sha1-cert", "sslserver
|
||||||
|
ok(verify("ee-pss-sha256-cert", "sslserver", ["root-cert"], ["ca-cert"], ),
|
||||||
|
"CA with PSS signature using SHA256");
|
||||||
|
|
||||||
|
-ok(!verify("ee-pss-sha1-cert", "sslserver", ["root-cert"], ["ca-cert"], "-auth_level", "2"),
|
||||||
|
- "Reject PSS signature using SHA1 and auth level 2");
|
||||||
|
+ok(!verify("ee-pss-sha1-cert", "sslserver", ["root-cert"], ["ca-cert"], "-auth_level", "3"),
|
||||||
|
+ "Reject PSS signature using SHA1 and auth level 3");
|
||||||
|
|
||||||
|
ok(verify("ee-pss-sha256-cert", "sslserver", ["root-cert"], ["ca-cert"], "-auth_level", "2"),
|
||||||
|
"PSS signature using SHA256 and auth level 2");
|
5612
openssl-1.1.1-ssh-kdf.patch
Normal file
5612
openssl-1.1.1-ssh-kdf.patch
Normal file
File diff suppressed because it is too large
Load Diff
310
openssl-1.1.1-system-cipherlist.patch
Normal file
310
openssl-1.1.1-system-cipherlist.patch
Normal file
@ -0,0 +1,310 @@
|
|||||||
|
diff -up openssl-1.1.1c/Configurations/unix-Makefile.tmpl.system-cipherlist openssl-1.1.1c/Configurations/unix-Makefile.tmpl
|
||||||
|
--- openssl-1.1.1c/Configurations/unix-Makefile.tmpl.system-cipherlist 2019-05-29 15:42:27.951329271 +0200
|
||||||
|
+++ openssl-1.1.1c/Configurations/unix-Makefile.tmpl 2019-05-29 15:42:27.974328867 +0200
|
||||||
|
@@ -180,6 +180,10 @@ MANDIR=$(INSTALLTOP)/share/man
|
||||||
|
DOCDIR=$(INSTALLTOP)/share/doc/$(BASENAME)
|
||||||
|
HTMLDIR=$(DOCDIR)/html
|
||||||
|
|
||||||
|
+{- output_off() if $config{system_ciphers_file} eq ""; "" -}
|
||||||
|
+SYSTEM_CIPHERS_FILE_DEFINE=-DSYSTEM_CIPHERS_FILE="\"{- $config{system_ciphers_file} -}\""
|
||||||
|
+{- output_on() if $config{system_ciphers_file} eq ""; "" -}
|
||||||
|
+
|
||||||
|
# MANSUFFIX is for the benefit of anyone who may want to have a suffix
|
||||||
|
# appended after the manpage file section number. "ssl" is popular,
|
||||||
|
# resulting in files such as config.5ssl rather than config.5.
|
||||||
|
@@ -203,6 +207,7 @@ CC=$(CROSS_COMPILE){- $config{CC} -}
|
||||||
|
CXX={- $config{CXX} ? "\$(CROSS_COMPILE)$config{CXX}" : '' -}
|
||||||
|
CPPFLAGS={- our $cppflags1 = join(" ",
|
||||||
|
(map { "-D".$_} @{$config{CPPDEFINES}}),
|
||||||
|
+ "\$(SYSTEM_CIPHERS_FILE_DEFINE)",
|
||||||
|
(map { "-I".$_} @{$config{CPPINCLUDES}}),
|
||||||
|
@{$config{CPPFLAGS}}) -}
|
||||||
|
CFLAGS={- join(' ', @{$config{CFLAGS}}) -}
|
||||||
|
diff -up openssl-1.1.1c/Configure.system-cipherlist openssl-1.1.1c/Configure
|
||||||
|
--- openssl-1.1.1c/Configure.system-cipherlist 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/Configure 2019-05-29 15:45:10.465469533 +0200
|
||||||
|
@@ -24,7 +24,7 @@ use OpenSSL::Glob;
|
||||||
|
my $orig_death_handler = $SIG{__DIE__};
|
||||||
|
$SIG{__DIE__} = \&death_handler;
|
||||||
|
|
||||||
|
-my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]\n";
|
||||||
|
+my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--system-ciphers-file=SYSTEMCIPHERFILE] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]\n";
|
||||||
|
|
||||||
|
# Options:
|
||||||
|
#
|
||||||
|
@@ -41,6 +41,9 @@ my $usage="Usage: Configure [no-<cipher>
|
||||||
|
# This becomes the value of OPENSSLDIR in Makefile and in C.
|
||||||
|
# (Default: PREFIX/ssl)
|
||||||
|
#
|
||||||
|
+# --system-ciphers-file A file to read cipher string from when the PROFILE=SYSTEM
|
||||||
|
+# cipher is specified (default).
|
||||||
|
+#
|
||||||
|
# --cross-compile-prefix Add specified prefix to binutils components.
|
||||||
|
#
|
||||||
|
# --api One of 0.9.8, 1.0.0 or 1.1.0. Do not compile support for
|
||||||
|
@@ -295,6 +298,7 @@ $config{prefix}="";
|
||||||
|
$config{openssldir}="";
|
||||||
|
$config{processor}="";
|
||||||
|
$config{libdir}="";
|
||||||
|
+$config{system_ciphers_file}="";
|
||||||
|
my $auto_threads=1; # enable threads automatically? true by default
|
||||||
|
my $default_ranlib;
|
||||||
|
|
||||||
|
@@ -824,6 +828,10 @@ while (@argvcopy)
|
||||||
|
push @seed_sources, $x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ elsif (/^--system-ciphers-file=(.*)$/)
|
||||||
|
+ {
|
||||||
|
+ $config{system_ciphers_file}=$1;
|
||||||
|
+ }
|
||||||
|
elsif (/^--cross-compile-prefix=(.*)$/)
|
||||||
|
{
|
||||||
|
$user{CROSS_COMPILE}=$1;
|
||||||
|
@@ -1016,6 +1024,8 @@ if ($target eq "HASH") {
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+chop $config{system_ciphers_file} if $config{system_ciphers_file} =~ /\/$/;
|
||||||
|
+
|
||||||
|
print "Configuring OpenSSL version $config{version} ($config{version_num}) ";
|
||||||
|
print "for $target\n";
|
||||||
|
|
||||||
|
diff -up openssl-1.1.1c/doc/man1/ciphers.pod.system-cipherlist openssl-1.1.1c/doc/man1/ciphers.pod
|
||||||
|
--- openssl-1.1.1c/doc/man1/ciphers.pod.system-cipherlist 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/doc/man1/ciphers.pod 2019-05-29 15:42:27.975328849 +0200
|
||||||
|
@@ -182,6 +182,15 @@ As of OpenSSL 1.0.0, the B<ALL> cipher s
|
||||||
|
|
||||||
|
The cipher suites not enabled by B<ALL>, currently B<eNULL>.
|
||||||
|
|
||||||
|
+=item B<PROFILE=SYSTEM>
|
||||||
|
+
|
||||||
|
+The list of enabled cipher suites will be loaded from the system crypto policy
|
||||||
|
+configuration file B</etc/crypto-policies/back-ends/openssl.config>.
|
||||||
|
+See also L<update-crypto-policies(8)>.
|
||||||
|
+This is the default behavior unless an application explicitly sets a cipher
|
||||||
|
+list. If used in a cipher list configuration value this string must be at the
|
||||||
|
+beginning of the cipher list, otherwise it will not be recognized.
|
||||||
|
+
|
||||||
|
=item B<HIGH>
|
||||||
|
|
||||||
|
"High" encryption cipher suites. This currently means those with key lengths
|
||||||
|
diff -up openssl-1.1.1c/include/openssl/ssl.h.system-cipherlist openssl-1.1.1c/include/openssl/ssl.h
|
||||||
|
--- openssl-1.1.1c/include/openssl/ssl.h.system-cipherlist 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/include/openssl/ssl.h 2019-05-29 15:42:27.975328849 +0200
|
||||||
|
@@ -186,6 +186,11 @@ extern "C" {
|
||||||
|
* throwing out anonymous and unencrypted ciphersuites! (The latter are not
|
||||||
|
* actually enabled by ALL, but "ALL:RSA" would enable some of them.)
|
||||||
|
*/
|
||||||
|
+# ifdef SYSTEM_CIPHERS_FILE
|
||||||
|
+# define SSL_SYSTEM_DEFAULT_CIPHER_LIST "PROFILE=SYSTEM"
|
||||||
|
+# else
|
||||||
|
+# define SSL_SYSTEM_DEFAULT_CIPHER_LIST SSL_DEFAULT_CIPHER_LIST
|
||||||
|
+# endif
|
||||||
|
|
||||||
|
/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
|
||||||
|
# define SSL_SENT_SHUTDOWN 1
|
||||||
|
diff -up openssl-1.1.1c/ssl/ssl_ciph.c.system-cipherlist openssl-1.1.1c/ssl/ssl_ciph.c
|
||||||
|
--- openssl-1.1.1c/ssl/ssl_ciph.c.system-cipherlist 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/ssl/ssl_ciph.c 2019-05-29 15:42:27.976328831 +0200
|
||||||
|
@@ -9,6 +9,8 @@
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
+/* for secure_getenv */
|
||||||
|
+#define _GNU_SOURCE
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <openssl/objects.h>
|
||||||
|
@@ -1399,6 +1401,53 @@ int SSL_set_ciphersuites(SSL *s, const c
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef SYSTEM_CIPHERS_FILE
|
||||||
|
+static char *load_system_str(const char *suffix)
|
||||||
|
+{
|
||||||
|
+ FILE *fp;
|
||||||
|
+ char buf[1024];
|
||||||
|
+ char *new_rules;
|
||||||
|
+ const char *ciphers_path;
|
||||||
|
+ unsigned len, slen;
|
||||||
|
+
|
||||||
|
+ if ((ciphers_path = secure_getenv("OPENSSL_SYSTEM_CIPHERS_OVERRIDE")) == NULL)
|
||||||
|
+ ciphers_path = SYSTEM_CIPHERS_FILE;
|
||||||
|
+ fp = fopen(ciphers_path, "r");
|
||||||
|
+ if (fp == NULL || fgets(buf, sizeof(buf), fp) == NULL) {
|
||||||
|
+ /* cannot open or file is empty */
|
||||||
|
+ snprintf(buf, sizeof(buf), "%s", SSL_DEFAULT_CIPHER_LIST);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (fp)
|
||||||
|
+ fclose(fp);
|
||||||
|
+
|
||||||
|
+ slen = strlen(suffix);
|
||||||
|
+ len = strlen(buf);
|
||||||
|
+
|
||||||
|
+ if (buf[len - 1] == '\n') {
|
||||||
|
+ len--;
|
||||||
|
+ buf[len] = 0;
|
||||||
|
+ }
|
||||||
|
+ if (buf[len - 1] == '\r') {
|
||||||
|
+ len--;
|
||||||
|
+ buf[len] = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ new_rules = OPENSSL_malloc(len + slen + 1);
|
||||||
|
+ if (new_rules == 0)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ memcpy(new_rules, buf, len);
|
||||||
|
+ if (slen > 0) {
|
||||||
|
+ memcpy(&new_rules[len], suffix, slen);
|
||||||
|
+ len += slen;
|
||||||
|
+ }
|
||||||
|
+ new_rules[len] = 0;
|
||||||
|
+
|
||||||
|
+ return new_rules;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
|
||||||
|
STACK_OF(SSL_CIPHER) *tls13_ciphersuites,
|
||||||
|
STACK_OF(SSL_CIPHER) **cipher_list,
|
||||||
|
@@ -1412,15 +1461,25 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
||||||
|
const char *rule_p;
|
||||||
|
CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr;
|
||||||
|
const SSL_CIPHER **ca_list = NULL;
|
||||||
|
+#ifdef SYSTEM_CIPHERS_FILE
|
||||||
|
+ char *new_rules = NULL;
|
||||||
|
+
|
||||||
|
+ if (rule_str != NULL && strncmp(rule_str, "PROFILE=SYSTEM", 14) == 0) {
|
||||||
|
+ char *p = rule_str + 14;
|
||||||
|
+
|
||||||
|
+ new_rules = load_system_str(p);
|
||||||
|
+ rule_str = new_rules;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return with error if nothing to do.
|
||||||
|
*/
|
||||||
|
if (rule_str == NULL || cipher_list == NULL || cipher_list_by_id == NULL)
|
||||||
|
- return NULL;
|
||||||
|
+ goto err;
|
||||||
|
#ifndef OPENSSL_NO_EC
|
||||||
|
if (!check_suiteb_cipher_list(ssl_method, c, &rule_str))
|
||||||
|
- return NULL;
|
||||||
|
+ goto err;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -1443,7 +1502,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
||||||
|
co_list = OPENSSL_malloc(sizeof(*co_list) * num_of_ciphers);
|
||||||
|
if (co_list == NULL) {
|
||||||
|
SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST, ERR_R_MALLOC_FAILURE);
|
||||||
|
- return NULL; /* Failure */
|
||||||
|
+ goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
ssl_cipher_collect_ciphers(ssl_method, num_of_ciphers,
|
||||||
|
@@ -1509,8 +1568,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
||||||
|
* in force within each class
|
||||||
|
*/
|
||||||
|
if (!ssl_cipher_strength_sort(&head, &tail)) {
|
||||||
|
- OPENSSL_free(co_list);
|
||||||
|
- return NULL;
|
||||||
|
+ goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -1555,9 +1613,8 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
||||||
|
num_of_alias_max = num_of_ciphers + num_of_group_aliases + 1;
|
||||||
|
ca_list = OPENSSL_malloc(sizeof(*ca_list) * num_of_alias_max);
|
||||||
|
if (ca_list == NULL) {
|
||||||
|
- OPENSSL_free(co_list);
|
||||||
|
SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST, ERR_R_MALLOC_FAILURE);
|
||||||
|
- return NULL; /* Failure */
|
||||||
|
+ goto err;
|
||||||
|
}
|
||||||
|
ssl_cipher_collect_aliases(ca_list, num_of_group_aliases,
|
||||||
|
disabled_mkey, disabled_auth, disabled_enc,
|
||||||
|
@@ -1583,8 +1640,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
||||||
|
OPENSSL_free(ca_list); /* Not needed anymore */
|
||||||
|
|
||||||
|
if (!ok) { /* Rule processing failure */
|
||||||
|
- OPENSSL_free(co_list);
|
||||||
|
- return NULL;
|
||||||
|
+ goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -1592,14 +1648,18 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
||||||
|
* if we cannot get one.
|
||||||
|
*/
|
||||||
|
if ((cipherstack = sk_SSL_CIPHER_new_null()) == NULL) {
|
||||||
|
- OPENSSL_free(co_list);
|
||||||
|
- return NULL;
|
||||||
|
+ goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef SYSTEM_CIPHERS_FILE
|
||||||
|
+ OPENSSL_free(new_rules); /* Not needed anymore */
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* Add TLSv1.3 ciphers first - we always prefer those if possible */
|
||||||
|
for (i = 0; i < sk_SSL_CIPHER_num(tls13_ciphersuites); i++) {
|
||||||
|
if (!sk_SSL_CIPHER_push(cipherstack,
|
||||||
|
sk_SSL_CIPHER_value(tls13_ciphersuites, i))) {
|
||||||
|
+ OPENSSL_free(co_list);
|
||||||
|
sk_SSL_CIPHER_free(cipherstack);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@@ -1631,6 +1691,14 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
|
||||||
|
*cipher_list = cipherstack;
|
||||||
|
|
||||||
|
return cipherstack;
|
||||||
|
+
|
||||||
|
+err:
|
||||||
|
+ OPENSSL_free(co_list);
|
||||||
|
+#ifdef SYSTEM_CIPHERS_FILE
|
||||||
|
+ OPENSSL_free(new_rules);
|
||||||
|
+#endif
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
|
||||||
|
diff -up openssl-1.1.1c/ssl/ssl_lib.c.system-cipherlist openssl-1.1.1c/ssl/ssl_lib.c
|
||||||
|
--- openssl-1.1.1c/ssl/ssl_lib.c.system-cipherlist 2019-05-29 15:42:27.970328937 +0200
|
||||||
|
+++ openssl-1.1.1c/ssl/ssl_lib.c 2019-05-29 15:42:27.977328814 +0200
|
||||||
|
@@ -662,7 +662,7 @@ int SSL_CTX_set_ssl_version(SSL_CTX *ctx
|
||||||
|
ctx->tls13_ciphersuites,
|
||||||
|
&(ctx->cipher_list),
|
||||||
|
&(ctx->cipher_list_by_id),
|
||||||
|
- SSL_DEFAULT_CIPHER_LIST, ctx->cert);
|
||||||
|
+ SSL_SYSTEM_DEFAULT_CIPHER_LIST, ctx->cert);
|
||||||
|
if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0)) {
|
||||||
|
SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION, SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS);
|
||||||
|
return 0;
|
||||||
|
@@ -2954,7 +2954,7 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *m
|
||||||
|
if (!ssl_create_cipher_list(ret->method,
|
||||||
|
ret->tls13_ciphersuites,
|
||||||
|
&ret->cipher_list, &ret->cipher_list_by_id,
|
||||||
|
- SSL_DEFAULT_CIPHER_LIST, ret->cert)
|
||||||
|
+ SSL_SYSTEM_DEFAULT_CIPHER_LIST, ret->cert)
|
||||||
|
|| sk_SSL_CIPHER_num(ret->cipher_list) <= 0) {
|
||||||
|
SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_LIBRARY_HAS_NO_CIPHERS);
|
||||||
|
goto err2;
|
||||||
|
diff -up openssl-1.1.1c/test/cipherlist_test.c.system-cipherlist openssl-1.1.1c/test/cipherlist_test.c
|
||||||
|
--- openssl-1.1.1c/test/cipherlist_test.c.system-cipherlist 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/test/cipherlist_test.c 2019-05-29 15:42:27.977328814 +0200
|
||||||
|
@@ -251,7 +251,9 @@ end:
|
||||||
|
|
||||||
|
int setup_tests(void)
|
||||||
|
{
|
||||||
|
+#ifndef SYSTEM_CIPHERS_FILE
|
||||||
|
ADD_TEST(test_default_cipherlist_implicit);
|
||||||
|
+#endif
|
||||||
|
ADD_TEST(test_default_cipherlist_explicit);
|
||||||
|
ADD_TEST(test_default_cipherlist_clear);
|
||||||
|
return 1;
|
50
openssl-1.1.1-ts-sha256-default.patch
Normal file
50
openssl-1.1.1-ts-sha256-default.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
diff --git a/apps/ts.c b/apps/ts.c
|
||||||
|
index 63c5210183..4ef8a72eef 100644
|
||||||
|
--- a/apps/ts.c
|
||||||
|
+++ b/apps/ts.c
|
||||||
|
@@ -425,7 +425,7 @@ static TS_REQ *create_query(BIO *data_bio, const char *digest, const EVP_MD *md,
|
||||||
|
ASN1_OBJECT *policy_obj = NULL;
|
||||||
|
ASN1_INTEGER *nonce_asn1 = NULL;
|
||||||
|
|
||||||
|
- if (md == NULL && (md = EVP_get_digestbyname("sha1")) == NULL)
|
||||||
|
+ if (md == NULL && (md = EVP_get_digestbyname("sha256")) == NULL)
|
||||||
|
goto err;
|
||||||
|
if ((ts_req = TS_REQ_new()) == NULL)
|
||||||
|
goto err;
|
||||||
|
diff --git a/doc/man1/ts.pod b/doc/man1/ts.pod
|
||||||
|
index 078905a845..83b8fe4350 100644
|
||||||
|
--- a/doc/man1/ts.pod
|
||||||
|
+++ b/doc/man1/ts.pod
|
||||||
|
@@ -517,7 +517,7 @@ included. Default is no. (Optional)
|
||||||
|
=item B<ess_cert_id_alg>
|
||||||
|
|
||||||
|
This option specifies the hash function to be used to calculate the TSA's
|
||||||
|
-public key certificate identifier. Default is sha1. (Optional)
|
||||||
|
+public key certificate identifier. Default is sha256. (Optional)
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
@@ -529,7 +529,7 @@ openssl/apps/openssl.cnf will do.
|
||||||
|
|
||||||
|
=head2 Time Stamp Request
|
||||||
|
|
||||||
|
-To create a time stamp request for design1.txt with SHA-1
|
||||||
|
+To create a time stamp request for design1.txt with SHA-256
|
||||||
|
without nonce and policy and no certificate is required in the response:
|
||||||
|
|
||||||
|
openssl ts -query -data design1.txt -no_nonce \
|
||||||
|
@@ -545,12 +545,12 @@ To print the content of the previous request in human readable format:
|
||||||
|
|
||||||
|
openssl ts -query -in design1.tsq -text
|
||||||
|
|
||||||
|
-To create a time stamp request which includes the MD-5 digest
|
||||||
|
+To create a time stamp request which includes the SHA-512 digest
|
||||||
|
of design2.txt, requests the signer certificate and nonce,
|
||||||
|
specifies a policy id (assuming the tsa_policy1 name is defined in the
|
||||||
|
OID section of the config file):
|
||||||
|
|
||||||
|
- openssl ts -query -data design2.txt -md5 \
|
||||||
|
+ openssl ts -query -data design2.txt -sha512 \
|
||||||
|
-tspolicy tsa_policy1 -cert -out design2.tsq
|
||||||
|
|
||||||
|
=head2 Time Stamp Response
|
534
openssl-1.1.1-upstream-sync.patch
Normal file
534
openssl-1.1.1-upstream-sync.patch
Normal file
@ -0,0 +1,534 @@
|
|||||||
|
diff -up openssl-1.1.1c/crypto/dsa/dsa_ameth.c.sync openssl-1.1.1c/crypto/dsa/dsa_ameth.c
|
||||||
|
--- openssl-1.1.1c/crypto/dsa/dsa_ameth.c.sync 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/crypto/dsa/dsa_ameth.c 2019-05-29 17:10:39.768187283 +0200
|
||||||
|
@@ -503,7 +503,7 @@ static int dsa_pkey_ctrl(EVP_PKEY *pkey,
|
||||||
|
|
||||||
|
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
|
||||||
|
*(int *)arg2 = NID_sha256;
|
||||||
|
- return 2;
|
||||||
|
+ return 1;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return -2;
|
||||||
|
diff -up openssl-1.1.1c/crypto/err/err.c.sync openssl-1.1.1c/crypto/err/err.c
|
||||||
|
--- openssl-1.1.1c/crypto/err/err.c.sync 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/crypto/err/err.c 2019-05-29 17:07:13.345793792 +0200
|
||||||
|
@@ -184,8 +184,8 @@ static ERR_STRING_DATA *int_err_get_item
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_ERR
|
||||||
|
-/* A measurement on Linux 2018-11-21 showed about 3.5kib */
|
||||||
|
-# define SPACE_SYS_STR_REASONS 4 * 1024
|
||||||
|
+/* 2019-05-21: Russian and Ukrainian locales on Linux require more than 6,5 kB */
|
||||||
|
+# define SPACE_SYS_STR_REASONS 8 * 1024
|
||||||
|
# define NUM_SYS_STR_REASONS 127
|
||||||
|
|
||||||
|
static ERR_STRING_DATA SYS_str_reasons[NUM_SYS_STR_REASONS + 1];
|
||||||
|
@@ -219,21 +219,23 @@ static void build_SYS_str_reasons(void)
|
||||||
|
ERR_STRING_DATA *str = &SYS_str_reasons[i - 1];
|
||||||
|
|
||||||
|
str->error = ERR_PACK(ERR_LIB_SYS, 0, i);
|
||||||
|
- if (str->string == NULL) {
|
||||||
|
+ /*
|
||||||
|
+ * If we have used up all the space in strerror_pool,
|
||||||
|
+ * there's no point in calling openssl_strerror_r()
|
||||||
|
+ */
|
||||||
|
+ if (str->string == NULL && cnt < sizeof(strerror_pool)) {
|
||||||
|
if (openssl_strerror_r(i, cur, sizeof(strerror_pool) - cnt)) {
|
||||||
|
size_t l = strlen(cur);
|
||||||
|
|
||||||
|
str->string = cur;
|
||||||
|
cnt += l;
|
||||||
|
- if (cnt > sizeof(strerror_pool))
|
||||||
|
- cnt = sizeof(strerror_pool);
|
||||||
|
cur += l;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VMS has an unusual quirk of adding spaces at the end of
|
||||||
|
- * some (most? all?) messages. Lets trim them off.
|
||||||
|
+ * some (most? all?) messages. Lets trim them off.
|
||||||
|
*/
|
||||||
|
- while (ossl_isspace(cur[-1])) {
|
||||||
|
+ while (cur > strerror_pool && ossl_isspace(cur[-1])) {
|
||||||
|
cur--;
|
||||||
|
cnt--;
|
||||||
|
}
|
||||||
|
diff -up openssl-1.1.1c/crypto/rand/rand_lib.c.sync openssl-1.1.1c/crypto/rand/rand_lib.c
|
||||||
|
--- openssl-1.1.1c/crypto/rand/rand_lib.c.sync 2019-05-29 17:20:17.175099183 +0200
|
||||||
|
+++ openssl-1.1.1c/crypto/rand/rand_lib.c 2019-05-30 11:51:20.784850208 +0200
|
||||||
|
@@ -239,8 +239,9 @@ size_t rand_drbg_get_nonce(RAND_DRBG *dr
|
||||||
|
struct {
|
||||||
|
void * instance;
|
||||||
|
int count;
|
||||||
|
- } data = { NULL, 0 };
|
||||||
|
+ } data;
|
||||||
|
|
||||||
|
+ memset(&data, 0, sizeof(data));
|
||||||
|
pool = rand_pool_new(0, min_len, max_len);
|
||||||
|
if (pool == NULL)
|
||||||
|
return 0;
|
||||||
|
From 6c2f347c78a530407b5310497080810094427920 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matt Caswell <matt@openssl.org>
|
||||||
|
Date: Wed, 17 Apr 2019 11:09:05 +0100
|
||||||
|
Subject: [PATCH 1/2] Defer sending a KeyUpdate until after pending writes are
|
||||||
|
complete
|
||||||
|
|
||||||
|
If we receive a KeyUpdate message (update requested) from the peer while
|
||||||
|
we are in the middle of a write, we should defer sending the responding
|
||||||
|
KeyUpdate message until after the current write is complete. We do this
|
||||||
|
by waiting to send the KeyUpdate until the next time we write and there is
|
||||||
|
no pending write data.
|
||||||
|
|
||||||
|
This does imply a subtle change in behaviour. Firstly the responding
|
||||||
|
KeyUpdate message won't be sent straight away as it is now. Secondly if
|
||||||
|
the peer sends multiple KeyUpdates without us doing any writing then we
|
||||||
|
will only send one response, as opposed to previously where we sent a
|
||||||
|
response for each KeyUpdate received.
|
||||||
|
|
||||||
|
Fixes #8677
|
||||||
|
|
||||||
|
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
|
||||||
|
(Merged from https://github.com/openssl/openssl/pull/8773)
|
||||||
|
|
||||||
|
(cherry picked from commit feb9e31c40c49de6384dd0413685e9b5a15adc99)
|
||||||
|
---
|
||||||
|
ssl/record/rec_layer_s3.c | 7 +++++++
|
||||||
|
ssl/statem/statem_clnt.c | 6 ------
|
||||||
|
ssl/statem/statem_lib.c | 7 ++-----
|
||||||
|
ssl/statem/statem_srvr.c | 6 ------
|
||||||
|
4 files changed, 9 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c
|
||||||
|
index b2f97ef905..b65137c332 100644
|
||||||
|
--- a/ssl/record/rec_layer_s3.c
|
||||||
|
+++ b/ssl/record/rec_layer_s3.c
|
||||||
|
@@ -373,6 +373,13 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, size_t len,
|
||||||
|
|
||||||
|
s->rlayer.wnum = 0;
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * If we are supposed to be sending a KeyUpdate then go into init unless we
|
||||||
|
+ * have writes pending - in which case we should finish doing that first.
|
||||||
|
+ */
|
||||||
|
+ if (wb->left == 0 && s->key_update != SSL_KEY_UPDATE_NONE)
|
||||||
|
+ ossl_statem_set_in_init(s, 1);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* When writing early data on the server side we could be "in_init" in
|
||||||
|
* between receiving the EoED and the CF - but we don't want to handle those
|
||||||
|
diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c
|
||||||
|
index 87800cd835..6410414fb6 100644
|
||||||
|
--- a/ssl/statem/statem_clnt.c
|
||||||
|
+++ b/ssl/statem/statem_clnt.c
|
||||||
|
@@ -473,12 +473,6 @@ static WRITE_TRAN ossl_statem_client13_write_transition(SSL *s)
|
||||||
|
return WRITE_TRAN_CONTINUE;
|
||||||
|
|
||||||
|
case TLS_ST_CR_KEY_UPDATE:
|
||||||
|
- if (s->key_update != SSL_KEY_UPDATE_NONE) {
|
||||||
|
- st->hand_state = TLS_ST_CW_KEY_UPDATE;
|
||||||
|
- return WRITE_TRAN_CONTINUE;
|
||||||
|
- }
|
||||||
|
- /* Fall through */
|
||||||
|
-
|
||||||
|
case TLS_ST_CW_KEY_UPDATE:
|
||||||
|
case TLS_ST_CR_SESSION_TICKET:
|
||||||
|
case TLS_ST_CW_FINISHED:
|
||||||
|
diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c
|
||||||
|
index c0482b0a90..2960dafa52 100644
|
||||||
|
--- a/ssl/statem/statem_lib.c
|
||||||
|
+++ b/ssl/statem/statem_lib.c
|
||||||
|
@@ -645,12 +645,9 @@ MSG_PROCESS_RETURN tls_process_key_update(SSL *s, PACKET *pkt)
|
||||||
|
/*
|
||||||
|
* If we get a request for us to update our sending keys too then, we need
|
||||||
|
* to additionally send a KeyUpdate message. However that message should
|
||||||
|
- * not also request an update (otherwise we get into an infinite loop). We
|
||||||
|
- * ignore a request for us to update our sending keys too if we already
|
||||||
|
- * sent close_notify.
|
||||||
|
+ * not also request an update (otherwise we get into an infinite loop).
|
||||||
|
*/
|
||||||
|
- if (updatetype == SSL_KEY_UPDATE_REQUESTED
|
||||||
|
- && (s->shutdown & SSL_SENT_SHUTDOWN) == 0)
|
||||||
|
+ if (updatetype == SSL_KEY_UPDATE_REQUESTED)
|
||||||
|
s->key_update = SSL_KEY_UPDATE_NOT_REQUESTED;
|
||||||
|
|
||||||
|
if (!tls13_update_key(s, 0)) {
|
||||||
|
diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c
|
||||||
|
index d454326a99..04a23320fc 100644
|
||||||
|
--- a/ssl/statem/statem_srvr.c
|
||||||
|
+++ b/ssl/statem/statem_srvr.c
|
||||||
|
@@ -502,12 +502,6 @@ static WRITE_TRAN ossl_statem_server13_write_transition(SSL *s)
|
||||||
|
return WRITE_TRAN_CONTINUE;
|
||||||
|
|
||||||
|
case TLS_ST_SR_KEY_UPDATE:
|
||||||
|
- if (s->key_update != SSL_KEY_UPDATE_NONE) {
|
||||||
|
- st->hand_state = TLS_ST_SW_KEY_UPDATE;
|
||||||
|
- return WRITE_TRAN_CONTINUE;
|
||||||
|
- }
|
||||||
|
- /* Fall through */
|
||||||
|
-
|
||||||
|
case TLS_ST_SW_KEY_UPDATE:
|
||||||
|
st->hand_state = TLS_ST_OK;
|
||||||
|
return WRITE_TRAN_CONTINUE;
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
||||||
|
From c8feb1039ccc4cd11e6db084df1446bf863bee1e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matt Caswell <matt@openssl.org>
|
||||||
|
Date: Wed, 17 Apr 2019 10:30:53 +0100
|
||||||
|
Subject: [PATCH 2/2] Write a test for receiving a KeyUpdate (update requested)
|
||||||
|
while writing
|
||||||
|
|
||||||
|
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
|
||||||
|
(Merged from https://github.com/openssl/openssl/pull/8773)
|
||||||
|
|
||||||
|
(cherry picked from commit a77b4dba237d001073d2d1c5d55c674a196c949f)
|
||||||
|
---
|
||||||
|
test/sslapitest.c | 92 +++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
test/ssltestlib.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
test/ssltestlib.h | 3 ++
|
||||||
|
3 files changed, 191 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/test/sslapitest.c b/test/sslapitest.c
|
||||||
|
index 2261fe4a7a..577342644d 100644
|
||||||
|
--- a/test/sslapitest.c
|
||||||
|
+++ b/test/sslapitest.c
|
||||||
|
@@ -4290,6 +4290,11 @@ static int test_key_update(void)
|
||||||
|
|| !TEST_int_eq(SSL_read(serverssl, buf, sizeof(buf)),
|
||||||
|
strlen(mess)))
|
||||||
|
goto end;
|
||||||
|
+
|
||||||
|
+ if (!TEST_int_eq(SSL_write(serverssl, mess, strlen(mess)), strlen(mess))
|
||||||
|
+ || !TEST_int_eq(SSL_read(clientssl, buf, sizeof(buf)),
|
||||||
|
+ strlen(mess)))
|
||||||
|
+ goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
testresult = 1;
|
||||||
|
@@ -4302,6 +4307,91 @@ static int test_key_update(void)
|
||||||
|
|
||||||
|
return testresult;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Test we can handle a KeyUpdate (update requested) message while write data
|
||||||
|
+ * is pending.
|
||||||
|
+ * Test 0: Client sends KeyUpdate while Server is writing
|
||||||
|
+ * Test 1: Server sends KeyUpdate while Client is writing
|
||||||
|
+ */
|
||||||
|
+static int test_key_update_in_write(int tst)
|
||||||
|
+{
|
||||||
|
+ SSL_CTX *cctx = NULL, *sctx = NULL;
|
||||||
|
+ SSL *clientssl = NULL, *serverssl = NULL;
|
||||||
|
+ int testresult = 0;
|
||||||
|
+ char buf[20];
|
||||||
|
+ static char *mess = "A test message";
|
||||||
|
+ BIO *bretry = BIO_new(bio_s_always_retry());
|
||||||
|
+ BIO *tmp = NULL;
|
||||||
|
+ SSL *peerupdate = NULL, *peerwrite = NULL;
|
||||||
|
+
|
||||||
|
+ if (!TEST_ptr(bretry)
|
||||||
|
+ || !TEST_true(create_ssl_ctx_pair(TLS_server_method(),
|
||||||
|
+ TLS_client_method(),
|
||||||
|
+ TLS1_3_VERSION,
|
||||||
|
+ 0,
|
||||||
|
+ &sctx, &cctx, cert, privkey))
|
||||||
|
+ || !TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl,
|
||||||
|
+ NULL, NULL))
|
||||||
|
+ || !TEST_true(create_ssl_connection(serverssl, clientssl,
|
||||||
|
+ SSL_ERROR_NONE)))
|
||||||
|
+ goto end;
|
||||||
|
+
|
||||||
|
+ peerupdate = tst == 0 ? clientssl : serverssl;
|
||||||
|
+ peerwrite = tst == 0 ? serverssl : clientssl;
|
||||||
|
+
|
||||||
|
+ if (!TEST_true(SSL_key_update(peerupdate, SSL_KEY_UPDATE_REQUESTED))
|
||||||
|
+ || !TEST_true(SSL_do_handshake(peerupdate)))
|
||||||
|
+ goto end;
|
||||||
|
+
|
||||||
|
+ /* Swap the writing endpoint's write BIO to force a retry */
|
||||||
|
+ tmp = SSL_get_wbio(peerwrite);
|
||||||
|
+ if (!TEST_ptr(tmp) || !TEST_true(BIO_up_ref(tmp))) {
|
||||||
|
+ tmp = NULL;
|
||||||
|
+ goto end;
|
||||||
|
+ }
|
||||||
|
+ SSL_set0_wbio(peerwrite, bretry);
|
||||||
|
+ bretry = NULL;
|
||||||
|
+
|
||||||
|
+ /* Write data that we know will fail with SSL_ERROR_WANT_WRITE */
|
||||||
|
+ if (!TEST_int_eq(SSL_write(peerwrite, mess, strlen(mess)), -1)
|
||||||
|
+ || !TEST_int_eq(SSL_get_error(peerwrite, 0), SSL_ERROR_WANT_WRITE))
|
||||||
|
+ goto end;
|
||||||
|
+
|
||||||
|
+ /* Reinstate the original writing endpoint's write BIO */
|
||||||
|
+ SSL_set0_wbio(peerwrite, tmp);
|
||||||
|
+ tmp = NULL;
|
||||||
|
+
|
||||||
|
+ /* Now read some data - we will read the key update */
|
||||||
|
+ if (!TEST_int_eq(SSL_read(peerwrite, buf, sizeof(buf)), -1)
|
||||||
|
+ || !TEST_int_eq(SSL_get_error(peerwrite, 0), SSL_ERROR_WANT_READ))
|
||||||
|
+ goto end;
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Complete the write we started previously and read it from the other
|
||||||
|
+ * endpoint
|
||||||
|
+ */
|
||||||
|
+ if (!TEST_int_eq(SSL_write(peerwrite, mess, strlen(mess)), strlen(mess))
|
||||||
|
+ || !TEST_int_eq(SSL_read(peerupdate, buf, sizeof(buf)), strlen(mess)))
|
||||||
|
+ goto end;
|
||||||
|
+
|
||||||
|
+ /* Write more data to ensure we send the KeyUpdate message back */
|
||||||
|
+ if (!TEST_int_eq(SSL_write(peerwrite, mess, strlen(mess)), strlen(mess))
|
||||||
|
+ || !TEST_int_eq(SSL_read(peerupdate, buf, sizeof(buf)), strlen(mess)))
|
||||||
|
+ goto end;
|
||||||
|
+
|
||||||
|
+ testresult = 1;
|
||||||
|
+
|
||||||
|
+ end:
|
||||||
|
+ SSL_free(serverssl);
|
||||||
|
+ SSL_free(clientssl);
|
||||||
|
+ SSL_CTX_free(sctx);
|
||||||
|
+ SSL_CTX_free(cctx);
|
||||||
|
+ BIO_free(bretry);
|
||||||
|
+ BIO_free(tmp);
|
||||||
|
+
|
||||||
|
+ return testresult;
|
||||||
|
+}
|
||||||
|
#endif /* OPENSSL_NO_TLS1_3 */
|
||||||
|
|
||||||
|
static int test_ssl_clear(int idx)
|
||||||
|
@@ -5982,6 +6072,7 @@ int setup_tests(void)
|
||||||
|
#ifndef OPENSSL_NO_TLS1_3
|
||||||
|
ADD_ALL_TESTS(test_export_key_mat_early, 3);
|
||||||
|
ADD_TEST(test_key_update);
|
||||||
|
+ ADD_ALL_TESTS(test_key_update_in_write, 2);
|
||||||
|
#endif
|
||||||
|
ADD_ALL_TESTS(test_ssl_clear, 2);
|
||||||
|
ADD_ALL_TESTS(test_max_fragment_len_ext, OSSL_NELEM(max_fragment_len_test));
|
||||||
|
@@ -6002,4 +6093,5 @@ int setup_tests(void)
|
||||||
|
void cleanup_tests(void)
|
||||||
|
{
|
||||||
|
bio_s_mempacket_test_free();
|
||||||
|
+ bio_s_always_retry_free();
|
||||||
|
}
|
||||||
|
diff --git a/test/ssltestlib.c b/test/ssltestlib.c
|
||||||
|
index 05139be750..e1038620ac 100644
|
||||||
|
--- a/test/ssltestlib.c
|
||||||
|
+++ b/test/ssltestlib.c
|
||||||
|
@@ -62,9 +62,11 @@ static int tls_dump_puts(BIO *bp, const char *str);
|
||||||
|
/* Choose a sufficiently large type likely to be unused for this custom BIO */
|
||||||
|
#define BIO_TYPE_TLS_DUMP_FILTER (0x80 | BIO_TYPE_FILTER)
|
||||||
|
#define BIO_TYPE_MEMPACKET_TEST 0x81
|
||||||
|
+#define BIO_TYPE_ALWAYS_RETRY 0x82
|
||||||
|
|
||||||
|
static BIO_METHOD *method_tls_dump = NULL;
|
||||||
|
static BIO_METHOD *meth_mem = NULL;
|
||||||
|
+static BIO_METHOD *meth_always_retry = NULL;
|
||||||
|
|
||||||
|
/* Note: Not thread safe! */
|
||||||
|
const BIO_METHOD *bio_f_tls_dump_filter(void)
|
||||||
|
@@ -612,6 +614,100 @@ static int mempacket_test_puts(BIO *bio, const char *str)
|
||||||
|
return mempacket_test_write(bio, str, strlen(str));
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int always_retry_new(BIO *bi);
|
||||||
|
+static int always_retry_free(BIO *a);
|
||||||
|
+static int always_retry_read(BIO *b, char *out, int outl);
|
||||||
|
+static int always_retry_write(BIO *b, const char *in, int inl);
|
||||||
|
+static long always_retry_ctrl(BIO *b, int cmd, long num, void *ptr);
|
||||||
|
+static int always_retry_gets(BIO *bp, char *buf, int size);
|
||||||
|
+static int always_retry_puts(BIO *bp, const char *str);
|
||||||
|
+
|
||||||
|
+const BIO_METHOD *bio_s_always_retry(void)
|
||||||
|
+{
|
||||||
|
+ if (meth_always_retry == NULL) {
|
||||||
|
+ if (!TEST_ptr(meth_always_retry = BIO_meth_new(BIO_TYPE_ALWAYS_RETRY,
|
||||||
|
+ "Always Retry"))
|
||||||
|
+ || !TEST_true(BIO_meth_set_write(meth_always_retry,
|
||||||
|
+ always_retry_write))
|
||||||
|
+ || !TEST_true(BIO_meth_set_read(meth_always_retry,
|
||||||
|
+ always_retry_read))
|
||||||
|
+ || !TEST_true(BIO_meth_set_puts(meth_always_retry,
|
||||||
|
+ always_retry_puts))
|
||||||
|
+ || !TEST_true(BIO_meth_set_gets(meth_always_retry,
|
||||||
|
+ always_retry_gets))
|
||||||
|
+ || !TEST_true(BIO_meth_set_ctrl(meth_always_retry,
|
||||||
|
+ always_retry_ctrl))
|
||||||
|
+ || !TEST_true(BIO_meth_set_create(meth_always_retry,
|
||||||
|
+ always_retry_new))
|
||||||
|
+ || !TEST_true(BIO_meth_set_destroy(meth_always_retry,
|
||||||
|
+ always_retry_free)))
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ return meth_always_retry;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void bio_s_always_retry_free(void)
|
||||||
|
+{
|
||||||
|
+ BIO_meth_free(meth_always_retry);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int always_retry_new(BIO *bio)
|
||||||
|
+{
|
||||||
|
+ BIO_set_init(bio, 1);
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int always_retry_free(BIO *bio)
|
||||||
|
+{
|
||||||
|
+ BIO_set_data(bio, NULL);
|
||||||
|
+ BIO_set_init(bio, 0);
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int always_retry_read(BIO *bio, char *out, int outl)
|
||||||
|
+{
|
||||||
|
+ BIO_set_retry_read(bio);
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int always_retry_write(BIO *bio, const char *in, int inl)
|
||||||
|
+{
|
||||||
|
+ BIO_set_retry_write(bio);
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static long always_retry_ctrl(BIO *bio, int cmd, long num, void *ptr)
|
||||||
|
+{
|
||||||
|
+ long ret = 1;
|
||||||
|
+
|
||||||
|
+ switch (cmd) {
|
||||||
|
+ case BIO_CTRL_FLUSH:
|
||||||
|
+ BIO_set_retry_write(bio);
|
||||||
|
+ /* fall through */
|
||||||
|
+ case BIO_CTRL_EOF:
|
||||||
|
+ case BIO_CTRL_RESET:
|
||||||
|
+ case BIO_CTRL_DUP:
|
||||||
|
+ case BIO_CTRL_PUSH:
|
||||||
|
+ case BIO_CTRL_POP:
|
||||||
|
+ default:
|
||||||
|
+ ret = 0;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int always_retry_gets(BIO *bio, char *buf, int size)
|
||||||
|
+{
|
||||||
|
+ BIO_set_retry_read(bio);
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int always_retry_puts(BIO *bio, const char *str)
|
||||||
|
+{
|
||||||
|
+ BIO_set_retry_write(bio);
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int create_ssl_ctx_pair(const SSL_METHOD *sm, const SSL_METHOD *cm,
|
||||||
|
int min_proto_version, int max_proto_version,
|
||||||
|
SSL_CTX **sctx, SSL_CTX **cctx, char *certfile,
|
||||||
|
diff --git a/test/ssltestlib.h b/test/ssltestlib.h
|
||||||
|
index fa19e7d80d..56e323f5bc 100644
|
||||||
|
--- a/test/ssltestlib.h
|
||||||
|
+++ b/test/ssltestlib.h
|
||||||
|
@@ -30,6 +30,9 @@ void bio_f_tls_dump_filter_free(void);
|
||||||
|
const BIO_METHOD *bio_s_mempacket_test(void);
|
||||||
|
void bio_s_mempacket_test_free(void);
|
||||||
|
|
||||||
|
+const BIO_METHOD *bio_s_always_retry(void);
|
||||||
|
+void bio_s_always_retry_free(void);
|
||||||
|
+
|
||||||
|
/* Packet types - value 0 is reserved */
|
||||||
|
#define INJECT_PACKET 1
|
||||||
|
#define INJECT_PACKET_IGNORE_REC_SEQ 2
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
||||||
|
diff -up openssl-1.1.1c/include/internal/constant_time_locl.h.valgrind openssl-1.1.1c/include/internal/constant_time_locl.h
|
||||||
|
--- openssl-1.1.1c/include/internal/constant_time_locl.h.valgrind 2019-05-28 15:12:21.000000000 +0200
|
||||||
|
+++ openssl-1.1.1c/include/internal/constant_time_locl.h 2019-06-24 15:02:12.796053536 +0200
|
||||||
|
@@ -213,18 +213,66 @@ static ossl_inline unsigned char constan
|
||||||
|
return constant_time_eq_8((unsigned)(a), (unsigned)(b));
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Returns the value unmodified, but avoids optimizations. */
|
||||||
|
+static ossl_inline unsigned int value_barrier(unsigned int a)
|
||||||
|
+{
|
||||||
|
+#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
|
||||||
|
+ unsigned int r;
|
||||||
|
+ __asm__("" : "=r"(r) : "0"(a));
|
||||||
|
+#else
|
||||||
|
+ volatile unsigned int r = a;
|
||||||
|
+#endif
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* Convenience method for uint32_t. */
|
||||||
|
+static ossl_inline uint32_t value_barrier_32(uint32_t a)
|
||||||
|
+{
|
||||||
|
+#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
|
||||||
|
+ uint32_t r;
|
||||||
|
+ __asm__("" : "=r"(r) : "0"(a));
|
||||||
|
+#else
|
||||||
|
+ volatile uint32_t r = a;
|
||||||
|
+#endif
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* Convenience method for uint64_t. */
|
||||||
|
+static ossl_inline uint64_t value_barrier_64(uint64_t a)
|
||||||
|
+{
|
||||||
|
+#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
|
||||||
|
+ uint64_t r;
|
||||||
|
+ __asm__("" : "=r"(r) : "0"(a));
|
||||||
|
+#else
|
||||||
|
+ volatile uint64_t r = a;
|
||||||
|
+#endif
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* Convenience method for size_t. */
|
||||||
|
+static ossl_inline size_t value_barrier_s(size_t a)
|
||||||
|
+{
|
||||||
|
+#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
|
||||||
|
+ size_t r;
|
||||||
|
+ __asm__("" : "=r"(r) : "0"(a));
|
||||||
|
+#else
|
||||||
|
+ volatile size_t r = a;
|
||||||
|
+#endif
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static ossl_inline unsigned int constant_time_select(unsigned int mask,
|
||||||
|
unsigned int a,
|
||||||
|
unsigned int b)
|
||||||
|
{
|
||||||
|
- return (mask & a) | (~mask & b);
|
||||||
|
+ return (value_barrier(mask) & a) | (value_barrier(~mask) & b);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ossl_inline size_t constant_time_select_s(size_t mask,
|
||||||
|
size_t a,
|
||||||
|
size_t b)
|
||||||
|
{
|
||||||
|
- return (mask & a) | (~mask & b);
|
||||||
|
+ return (value_barrier_s(mask) & a) | (value_barrier_s(~mask) & b);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ossl_inline unsigned char constant_time_select_8(unsigned char mask,
|
||||||
|
@@ -249,13 +297,13 @@ static ossl_inline int constant_time_sel
|
||||||
|
static ossl_inline uint32_t constant_time_select_32(uint32_t mask, uint32_t a,
|
||||||
|
uint32_t b)
|
||||||
|
{
|
||||||
|
- return (mask & a) | (~mask & b);
|
||||||
|
+ return (value_barrier_32(mask) & a) | (value_barrier_32(~mask) & b);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ossl_inline uint64_t constant_time_select_64(uint64_t mask, uint64_t a,
|
||||||
|
uint64_t b)
|
||||||
|
{
|
||||||
|
- return (mask & a) | (~mask & b);
|
||||||
|
+ return (value_barrier_64(mask) & a) | (value_barrier_64(~mask) & b);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
38
openssl-1.1.1-version-add-engines.patch
Normal file
38
openssl-1.1.1-version-add-engines.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
diff -up openssl-1.1.1-pre8/apps/version.c.version-add-engines openssl-1.1.1-pre8/apps/version.c
|
||||||
|
--- openssl-1.1.1-pre8/apps/version.c.version-add-engines 2018-06-20 16:48:09.000000000 +0200
|
||||||
|
+++ openssl-1.1.1-pre8/apps/version.c 2018-07-16 18:00:40.608624346 +0200
|
||||||
|
@@ -64,7 +64,7 @@ int version_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int ret = 1, dirty = 0, seed = 0;
|
||||||
|
int cflags = 0, version = 0, date = 0, options = 0, platform = 0, dir = 0;
|
||||||
|
- int engdir = 0;
|
||||||
|
+ int engdir = 0, engines = 0;
|
||||||
|
char *prog;
|
||||||
|
OPTION_CHOICE o;
|
||||||
|
|
||||||
|
@@ -106,7 +106,7 @@ opthelp:
|
||||||
|
break;
|
||||||
|
case OPT_A:
|
||||||
|
seed = options = cflags = version = date = platform = dir = engdir
|
||||||
|
- = 1;
|
||||||
|
+ = engines = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -188,6 +188,16 @@ opthelp:
|
||||||
|
#endif
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
+ if (engines) {
|
||||||
|
+ ENGINE *e;
|
||||||
|
+ printf("engines: ");
|
||||||
|
+ e = ENGINE_get_first();
|
||||||
|
+ while (e) {
|
||||||
|
+ printf("%s ", ENGINE_get_id(e));
|
||||||
|
+ e = ENGINE_get_next(e);
|
||||||
|
+ }
|
||||||
|
+ printf("\n");
|
||||||
|
+ }
|
||||||
|
ret = 0;
|
||||||
|
end:
|
||||||
|
return ret;
|
12
openssl-1.1.1-version-override.patch
Normal file
12
openssl-1.1.1-version-override.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up openssl-1.1.1c/include/openssl/opensslv.h.version-override openssl-1.1.1c/include/openssl/opensslv.h
|
||||||
|
--- openssl-1.1.1c/include/openssl/opensslv.h.version-override 2019-05-29 15:52:30.014734859 +0200
|
||||||
|
+++ openssl-1.1.1c/include/openssl/opensslv.h 2019-05-29 15:53:23.093800831 +0200
|
||||||
|
@@ -40,7 +40,7 @@ extern "C" {
|
||||||
|
* major minor fix final patch/beta)
|
||||||
|
*/
|
||||||
|
# define OPENSSL_VERSION_NUMBER 0x1010103fL
|
||||||
|
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1c 28 May 2019"
|
||||||
|
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1c FIPS 28 May 2019"
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* The macros below are to be used for shared library (.so, .dll, ...)
|
57
openssl-1.1.1-weak-ciphers.patch
Normal file
57
openssl-1.1.1-weak-ciphers.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
diff -up openssl-1.1.1/ssl/s3_lib.c.weak-ciphers openssl-1.1.1/ssl/s3_lib.c
|
||||||
|
--- openssl-1.1.1/ssl/s3_lib.c.weak-ciphers 2018-09-11 14:48:23.000000000 +0200
|
||||||
|
+++ openssl-1.1.1/ssl/s3_lib.c 2018-09-17 12:53:33.850637181 +0200
|
||||||
|
@@ -2612,7 +2612,7 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
||||||
|
SSL_GOST89MAC,
|
||||||
|
TLS1_VERSION, TLS1_2_VERSION,
|
||||||
|
0, 0,
|
||||||
|
- SSL_HIGH,
|
||||||
|
+ SSL_MEDIUM,
|
||||||
|
SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94 | TLS1_STREAM_MAC,
|
||||||
|
256,
|
||||||
|
256,
|
||||||
|
@@ -2644,7 +2644,7 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
||||||
|
SSL_GOST89MAC12,
|
||||||
|
TLS1_VERSION, TLS1_2_VERSION,
|
||||||
|
0, 0,
|
||||||
|
- SSL_HIGH,
|
||||||
|
+ SSL_MEDIUM,
|
||||||
|
SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
|
||||||
|
256,
|
||||||
|
256,
|
||||||
|
@@ -2753,7 +2753,7 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
||||||
|
},
|
||||||
|
#endif /* OPENSSL_NO_SEED */
|
||||||
|
|
||||||
|
-#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
|
||||||
|
+#if 0 /* No MD5 ciphersuites */
|
||||||
|
{
|
||||||
|
1,
|
||||||
|
SSL3_TXT_RSA_RC4_128_MD5,
|
||||||
|
@@ -2770,6 +2770,8 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
||||||
|
128,
|
||||||
|
128,
|
||||||
|
},
|
||||||
|
+#endif
|
||||||
|
+#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
|
||||||
|
{
|
||||||
|
1,
|
||||||
|
SSL3_TXT_RSA_RC4_128_SHA,
|
||||||
|
@@ -2786,6 +2788,8 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
||||||
|
128,
|
||||||
|
128,
|
||||||
|
},
|
||||||
|
+#endif
|
||||||
|
+#if 0
|
||||||
|
{
|
||||||
|
1,
|
||||||
|
SSL3_TXT_ADH_RC4_128_MD5,
|
||||||
|
@@ -2802,6 +2806,8 @@ static SSL_CIPHER ssl3_ciphers[] = {
|
||||||
|
128,
|
||||||
|
128,
|
||||||
|
},
|
||||||
|
+#endif
|
||||||
|
+#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
|
||||||
|
{
|
||||||
|
1,
|
||||||
|
TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA,
|
@ -18,16 +18,13 @@ if [ ! -f $PEM ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
let -a SERIAL=0x$(openssl x509 -in $PEM -noout -serial | cut -d= -f2)
|
|
||||||
let SERIAL++
|
|
||||||
|
|
||||||
umask 077
|
umask 077
|
||||||
|
|
||||||
OWNER=`ls -l $PEM | awk '{ printf "%s.%s", $3, $4; }'`
|
OWNER=`ls -l $PEM | awk '{ printf "%s.%s", $3, $4; }'`
|
||||||
|
|
||||||
openssl rsa -inform pem -in $PEM -out $KEY
|
openssl rsa -inform pem -in $PEM -out $KEY
|
||||||
openssl x509 -x509toreq -in $PEM -signkey $KEY -out $REQ
|
openssl x509 -x509toreq -in $PEM -signkey $KEY -out $REQ
|
||||||
openssl x509 -req -in $REQ -signkey $KEY -set_serial $SERIAL -days 365 \
|
openssl x509 -req -in $REQ -signkey $KEY -days 365 \
|
||||||
-extfile /etc/pki/tls/openssl.cnf -extensions v3_ca -out $CRT
|
-extfile /etc/pki/tls/openssl.cnf -extensions v3_ca -out $CRT
|
||||||
|
|
||||||
(cat $KEY ; echo "" ; cat $CRT) > $NEW
|
(cat $KEY ; echo "" ; cat $CRT) > $NEW
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (openssl-1.1.0h-hobbled.tar.xz) = cba4641956d6593f5cf5164bed12fb3acfaa9c24a69d5642cc0267d0918555450a12ddeac6e02b246afa64e7019f35baa0d9302d1f06e3be5555d8340319c5e4
|
SHA512 (openssl-1.1.1c-hobbled.tar.xz) = e6476209366d284bd02dca7e59a7ba2562aa7c58c91f0063b1e2b0f1a7f96fcff000e26d9c6f59b944e047b3305d237ed442f702ddd2e8c6c7a4d5b12e23c8db
|
||||||
|
Loading…
Reference in New Issue
Block a user