diff options
| author | Enrico Jörns <ejo@pengutronix.de> | 2025-07-02 08:09:55 +0200 |
|---|---|---|
| committer | Khem Raj <raj.khem@gmail.com> | 2025-07-02 09:48:26 -0700 |
| commit | 2d1d128a41abb698874e2d0b8e59cb5ae0416937 (patch) | |
| tree | 54aade442e2054d8cd60efa65f4be951daddcc59 /meta-oe/classes | |
| parent | 7d23c8e09c4fc546b5424bec863ccbcac68b4f85 (diff) | |
| download | meta-openembedded-2d1d128a41abb698874e2d0b8e59cb5ae0416937.tar.gz | |
signing.bbclass: make PEM loading compatible with OpenSC 0.26.0
With https://github.com/OpenSC/OpenSC/pull/3174 which is part of 0.26.0,
OpenSC does not support reading the (DER-converted) object data from
stdin anymore.
However, OpenSC/pkcs11-tool also supports reading PEM files directly.
This we can use for simply replacing and simplifying the stdin piping in
signing_import_cert_from_pem().
Only for password-protected files we still have to use OpenSSL for
conversion, since OpenSC/pkcs11-tool currently doesn't have a mechanism
for providing passwords.
For these cases, we store the converted PEM into a simple temporary
file. This handling is sufficient, since SoftHSM import should be used
for example keys only and SoftHSM also doesn't protect the keys in any
way. Keys which actually need to be protected are stored in HSMs and
accessed via their PKCS#11 URIs.
Signed-off-by: Enrico Jörns <ejo@pengutronix.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe/classes')
| -rw-r--r-- | meta-oe/classes/signing.bbclass | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/meta-oe/classes/signing.bbclass b/meta-oe/classes/signing.bbclass index 5068360ca7..26d1b592e3 100644 --- a/meta-oe/classes/signing.bbclass +++ b/meta-oe/classes/signing.bbclass | |||
| @@ -250,9 +250,7 @@ signing_import_cert_from_pem() { | |||
| 250 | signing_import_define_role "$cert_name" | 250 | signing_import_define_role "$cert_name" |
| 251 | fi | 251 | fi |
| 252 | 252 | ||
| 253 | openssl x509 \ | 253 | signing_pkcs11_tool --type cert --write-object ${pem} --label "${cert_name}" |
| 254 | -in "${pem}" -inform pem -outform der | | ||
| 255 | signing_pkcs11_tool --type cert --write-object /proc/self/fd/0 --label "${cert_name}" | ||
| 256 | } | 254 | } |
| 257 | 255 | ||
| 258 | # signing_import_pubkey_from_der <role> <der> | 256 | # signing_import_pubkey_from_der <role> <der> |
| @@ -276,12 +274,12 @@ signing_import_pubkey_from_pem() { | |||
| 276 | if [ -n "${IMPORT_PASS_FILE}" ]; then | 274 | if [ -n "${IMPORT_PASS_FILE}" ]; then |
| 277 | openssl pkey \ | 275 | openssl pkey \ |
| 278 | -passin "file:${IMPORT_PASS_FILE}" \ | 276 | -passin "file:${IMPORT_PASS_FILE}" \ |
| 279 | -in "${pem}" -inform pem -pubout -outform der | 277 | -in "${pem}" -inform pem -pubout -outform pem -out ${B}/pubkey_out.pem |
| 280 | else | 278 | else |
| 281 | openssl pkey \ | 279 | openssl pkey \ |
| 282 | -in "${pem}" -inform pem -pubout -outform der | 280 | -in "${pem}" -inform pem -pubout -outform pem -out ${B}/pubkey_out.pem |
| 283 | fi | | 281 | fi |
| 284 | signing_pkcs11_tool --type pubkey --write-object /proc/self/fd/0 --label "${role}" | 282 | signing_pkcs11_tool --type pubkey --write-object ${B}/pubkey_out.pem --label "${role}" |
| 285 | } | 283 | } |
| 286 | 284 | ||
| 287 | # signing_import_privkey_from_der <role> <der> | 285 | # signing_import_privkey_from_der <role> <der> |
| @@ -304,12 +302,12 @@ signing_import_privkey_from_pem() { | |||
| 304 | if [ -n "${IMPORT_PASS_FILE}" ]; then | 302 | if [ -n "${IMPORT_PASS_FILE}" ]; then |
| 305 | openssl pkey \ | 303 | openssl pkey \ |
| 306 | -passin "file:${IMPORT_PASS_FILE}" \ | 304 | -passin "file:${IMPORT_PASS_FILE}" \ |
| 307 | -in "${pem}" -inform pem -outform der | 305 | -in "${pem}" -inform pem -outform dem -out ${B}/privkey_out.pem |
| 306 | signing_pkcs11_tool --type privkey --write-object ${B}/privkey_out.pem --label "${role}" | ||
| 308 | else | 307 | else |
| 309 | openssl pkey \ | 308 | signing_pkcs11_tool --type privkey --write-object ${pem} --label "${role}" |
| 310 | -in "${pem}" -inform pem -outform der | 309 | fi |
| 311 | fi | | 310 | |
| 312 | signing_pkcs11_tool --type privkey --write-object /proc/self/fd/0 --label "${role}" | ||
| 313 | } | 311 | } |
| 314 | 312 | ||
| 315 | # signing_import_key_from_pem <role> <pem> | 313 | # signing_import_key_from_pem <role> <pem> |
