eclass/ssl-cert: Sync with Gentoo

It's from Gentoo commit f37f80a04ae26ee655325e7108de54718e0288aa.
This commit is contained in:
Flatcar Buildbot 2025-06-16 07:11:44 +00:00 committed by Krzesimir Nowak
parent a4df063c74
commit 2a3635727f

View File

@ -1,4 +1,4 @@
# Copyright 1999-2023 Gentoo Authors # Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# @ECLASS: ssl-cert.eclass # @ECLASS: ssl-cert.eclass
@ -22,6 +22,8 @@ esac
if [[ -z ${_SSL_CERT_ECLASS} ]]; then if [[ -z ${_SSL_CERT_ECLASS} ]]; then
_SSL_CERT_ECLASS=1 _SSL_CERT_ECLASS=1
inherit edo
# @ECLASS_VARIABLE: SSL_CERT_MANDATORY # @ECLASS_VARIABLE: SSL_CERT_MANDATORY
# @PRE_INHERIT # @PRE_INHERIT
# @DESCRIPTION: # @DESCRIPTION:
@ -42,10 +44,16 @@ _SSL_CERT_ECLASS=1
if [[ "${SSL_DEPS_SKIP}" == "0" ]]; then if [[ "${SSL_DEPS_SKIP}" == "0" ]]; then
if [[ "${SSL_CERT_MANDATORY}" == "0" ]]; then if [[ "${SSL_CERT_MANDATORY}" == "0" ]]; then
BDEPEND="${SSL_CERT_USE}? ( dev-libs/openssl )" RDEPEND="${SSL_CERT_USE}? ( dev-libs/openssl )"
if [[ ${EAPI} != 7 ]]; then
IDEPEND="${SSL_CERT_USE}? ( dev-libs/openssl )"
fi
IUSE="${SSL_CERT_USE}" IUSE="${SSL_CERT_USE}"
else else
BDEPEND="dev-libs/openssl" RDEPEND="dev-libs/openssl"
if [[ ${EAPI} != 7 ]]; then
IDEPEND="dev-libs/openssl"
fi
fi fi
fi fi
@ -61,9 +69,6 @@ gen_cnf() {
SSL_CONF="${T}/${$}ssl.cnf" SSL_CONF="${T}/${$}ssl.cnf"
# Location of the CA serial file # Location of the CA serial file
SSL_SERIAL="${T}/${$}ca.ser" SSL_SERIAL="${T}/${$}ca.ser"
# Location of some random files OpenSSL can use: don't use
# /dev/u?random here -- doesn't work properly on all platforms
SSL_RANDOM="${T}/environment:${T}/eclass-debug.log:/etc/resolv.conf"
# These can be overridden in the ebuild # These can be overridden in the ebuild
SSL_DAYS="${SSL_DAYS:-730}" SSL_DAYS="${SSL_DAYS:-730}"
@ -125,11 +130,8 @@ get_base() {
# #
gen_key() { gen_key() {
local base=$(get_base "$1") local base=$(get_base "$1")
ebegin "Generating ${SSL_BITS} bit RSA key${1:+ for CA}" nonfatal edob -m "Generating ${SSL_BITS} bit RSA key${1:+ for CA}" \
openssl genrsa -rand "${SSL_RANDOM}" \ openssl genrsa -out "${base}.key" "${SSL_BITS}"
-out "${base}.key" "${SSL_BITS}" &> /dev/null
eend $?
return $? return $?
} }
@ -142,11 +144,9 @@ gen_key() {
# #
gen_csr() { gen_csr() {
local base=$(get_base "$1") local base=$(get_base "$1")
ebegin "Generating Certificate Signing Request${1:+ for CA}" nonfatal edob -m "Generating Certificate Signing Request${1:+ for CA}" \
openssl req -config "${SSL_CONF}" -new \ openssl req -config "${SSL_CONF}" -new \
-key "${base}.key" -out "${base}.csr" &>/dev/null -key "${base}.key" -out "${base}.csr"
eend $?
return $? return $?
} }
@ -162,21 +162,19 @@ gen_csr() {
gen_crt() { gen_crt() {
local base=$(get_base "$1") local base=$(get_base "$1")
if [ "${1}" ] ; then if [ "${1}" ] ; then
ebegin "Generating self-signed X.509 Certificate for CA" nonfatal edob -m "Generating self-signed X.509 Certificate for CA" \
openssl x509 -extfile "${SSL_CONF}" \ openssl x509 -extfile "${SSL_CONF}" \
-${SSL_MD} \ -${SSL_MD} \
-days ${SSL_DAYS} -req -signkey "${base}.key" \ -days ${SSL_DAYS} -req -signkey "${base}.key" \
-in "${base}.csr" -out "${base}.crt" &>/dev/null -in "${base}.csr" -out "${base}.crt"
else else
local ca=$(get_base 1) local ca=$(get_base 1)
ebegin "Generating authority-signed X.509 Certificate" nonfatal edob -m "Generating authority-signed X.509 Certificate" \
openssl x509 -extfile "${SSL_CONF}" \ openssl x509 -extfile "${SSL_CONF}" \
-days ${SSL_DAYS} -req -CAserial "${SSL_SERIAL}" \ -days ${SSL_DAYS} -req -CAserial "${SSL_SERIAL}" \
-CAkey "${ca}.key" -CA "${ca}.crt" -${SSL_MD} \ -CAkey "${ca}.key" -CA "${ca}.crt" -${SSL_MD} \
-in "${base}.csr" -out "${base}.crt" &>/dev/null -in "${base}.csr" -out "${base}.crt"
fi fi
eend $?
return $? return $?
} }
@ -212,9 +210,8 @@ install_cert() {
fi fi
case ${EBUILD_PHASE} in case ${EBUILD_PHASE} in
unpack|prepare|configure|compile|test|install) config|preinst|postinst) ;;
die "install_cert cannot be called in ${EBUILD_PHASE}" *) die "install_cert cannot be called in ${EBUILD_PHASE}" ;;
;;
esac esac
# Generate a CA environment #164601 # Generate a CA environment #164601