aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/certctl/tests/certctl.subr
blob: 841cc1781e69e5a4ea933f2d1c1a38d5aa14429d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#
# Copyright (c) 2025 Dag-Erling Smørgrav <des@FreeBSD.org>
#
# SPDX-License-Identifier: BSD-2-Clause
#

# Generate a random name
rand_name() {
	local length=${1:-32}

	jot -r -c -s '' ${length} A Z
}

# Generate a subject for a given name
subject() {
	local crtname=$1

	echo "/CN=${crtname}/O=FreeBSD/OU=Test/"
}

# Generate a key
gen_key() {
	local keyname=$1

	env -i PATH="${PATH}" OPENSSL_CONF=/dev/null \
	openssl genrsa -out ${keyname}.key
}

# Generate a certificate for a given name, key, and serial number
gen_crt() {
	local crtname=$1
	local keyname=${2:-${crtname}}
	local serial=${3:-1}

	if ! [ -f "${keyname}".key ]; then
		gen_key "${keyname}"
	fi
	env -i PATH="${PATH}" OPENSSL_CONF=/dev/null \
	openssl req -x509 -new \
	    -subj="$(subject ${crtname})" \
	    -set_serial ${serial} \
	    -key ${keyname}.key \
	    -out ${crtname}.crt
}