summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Schneider <johannes.schneider@leica-geosystems.com>2025-06-27 14:18:20 +0200
committerKhem Raj <raj.khem@gmail.com>2025-06-28 11:04:24 -0700
commitb6915f63998e17655c6d4cb094ba8880fed7fb9f (patch)
treee6aed60d26f8cfa1c50695b3cabc23666f3de77f
parentf642526db57a0cd22879f23c046471ff7c1effb1 (diff)
downloadmeta-openembedded-b6915f63998e17655c6d4cb094ba8880fed7fb9f.tar.gz
signing.bbclass: add signing_get_intermediate_certs
Add a method that returns a list of intermediary CA roles. When using a complex PKI structure with for example "openssl cms", these roles can then be iterated over adding in turn a '-certificate'. Pseudo-code example: for intermediate in $(signing_get_intermediate_certs 'FooBaa'); do signing_extract_cert_pem $intermediate $intermediate.pem CMD+=" --certificate=$intermediate.pem" done The typical use-case would be adding these intermediate certificates to the CMS structure so that the relying party can build the chain from the signing leaf certificate to the locally stored trusted CA certificate. Reviewed-by: Jan Luebbe <jlu@pengutronix.de> Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-oe/classes/signing.bbclass21
1 files changed, 21 insertions, 0 deletions
diff --git a/meta-oe/classes/signing.bbclass b/meta-oe/classes/signing.bbclass
index 2a94f5f5b3..248c6400ed 100644
--- a/meta-oe/classes/signing.bbclass
+++ b/meta-oe/classes/signing.bbclass
@@ -194,6 +194,27 @@ signing_has_ca() {
194 return $? 194 return $?
195} 195}
196 196
197# signing_get_intermediate_certs <cert_name>
198#
199# return a list of role/name intermediary CA certificates for a given
200# <cert_name> by walking the chain setup with signing_import_set_ca.
201#
202# The returned list will not include the the root CA, and can
203# potentially be empty.
204#
205# To be used with SoftHSM.
206signing_get_intermediate_certs() {
207 local cert_name="${1}"
208 local intermediary=""
209 while signing_has_ca "${cert_name}"; do
210 cert_name="$(signing_get_ca ${cert_name})"
211 if signing_has_ca "${cert_name}"; then
212 intermediary="${intermediary} ${cert_name}"
213 fi
214 done
215 echo "${intermediary}"
216}
217
197# signing_get_root_cert <cert_name> 218# signing_get_root_cert <cert_name>
198# 219#
199# return the role/name of the CA root certificate for a given 220# return the role/name of the CA root certificate for a given