Problem/Motivation

I just struggled getting around to integrate the key algo with a service providing a X.509 certificate pem file as signature source.
The only thing missing was / is that keys with a -----BEGIN CERTIFICATE----- header are handled the same as Keys with a -----BEGIN PUBLIC KEY----- header.

This also could help when working with RFC7517 which seems to rely on X.509 certificates too.

Steps to reproduce

Set the following certificate as key:

-----BEGIN CERTIFICATE-----
MIIDkzCCAnugAwIBAgIUPJid/IedbX8iY2Y+A9zjK4RP/HYwDQYJKoZIhvcNAQEL
BQAwWTELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5
MRUwEwYDVQQKDAxPcmdhbml6YXRpb24xFDASBgNVBAMMC2V4YW1wbGUuY29tMB4X
DTI2MDMyNzEzNTAyNFoXDTI3MDMyNzEzNTAyNFowWTELMAkGA1UEBhMCVVMxDjAM
BgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRUwEwYDVQQKDAxPcmdhbml6YXRp
b24xFDASBgNVBAMMC2V4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAzVEth/66pqdJisyaQ9okQssncWOBrMw7PNtsRB1urbFqLcxHGIa5
uLuknc8K4di4yKT74hbJ7z4yQ5pUuS6HYCTdyMe3NzGyHyZ0sEsXVYeL2zcMWG71
phq3pjTmTT5e68XAUeeIXmko13GYyxnqnr7cRf+iakg00LHUJ4SxGZ8fnGiWBVK8
KIU4jjGrpWvgCU2B205FR/CkoKwUSCXBz9Nd1hAUJR7lXMzJO2hr4rtBmvpgNW88
Lg6c+LjRr+Fpp8uWbJMF8NUIjfgt+6hEt2CJDNSNbuCSBi9mlJqUff73mZvnCatX
2czH96jKVzRDdjb6ywxbO4vwl9q//PLXtwIDAQABo1MwUTAdBgNVHQ4EFgQU1i+A
pwOu5S/QQVP7KTJSMJGFzocwHwYDVR0jBBgwFoAU1i+ApwOu5S/QQVP7KTJSMJGF
zocwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEArdzT41oreQpI
xumCGvXDIawmN1hr2NEkDla1LvKAnnm8etsyccWWY9ghxdKRylPOaigElj5s6Kyg
Ssyg+wZq2JFylm4JnLAfL5lMQu35WhvOGz6qxupHm04J+4gDUvJwGkinntVRetzL
a00+WSYnBqJpSWOiCLDHOzyLzXcA+b3nQhUrksTfBqEsXNigZyVvutxDUmY0JVUK
0618NgoZC8mlispiPXgBGwQIt4IoOIL3lkWDEVwkQ9sGs//MVbdvqy8JHJ6H98lb
Zhxfr/6DtK+i9kU+TA6wp+Jc2SUMtDn2Ounwc6DilnbEkLiSdTg2U47iMwqJAnAG
x4XbP9o1KQ==
-----END CERTIFICATE-----

It actually contains the following public key but currently yields no key.

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzVEth/66pqdJisyaQ9ok
QssncWOBrMw7PNtsRB1urbFqLcxHGIa5uLuknc8K4di4yKT74hbJ7z4yQ5pUuS6H
YCTdyMe3NzGyHyZ0sEsXVYeL2zcMWG71phq3pjTmTT5e68XAUeeIXmko13GYyxnq
nr7cRf+iakg00LHUJ4SxGZ8fnGiWBVK8KIU4jjGrpWvgCU2B205FR/CkoKwUSCXB
z9Nd1hAUJR7lXMzJO2hr4rtBmvpgNW88Lg6c+LjRr+Fpp8uWbJMF8NUIjfgt+6hE
t2CJDNSNbuCSBi9mlJqUff73mZvnCatX2czH96jKVzRDdjb6ywxbO4vwl9q//PLX
twIDAQAB
-----END PUBLIC KEY-----

Proposed resolution

Check for -----BEGIN CERTIFICATE----- file header and handle it the same as key with the -----BEGIN PUBLIC KEY-----.
openssl_pkey_get_public() works just fine with that.

Remaining tasks

  1. Write Code & Test
  2. Review
  3. Profit

User interface changes

None

API changes

None

Data model changes

None

Issue fork jwt-3581908

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

das-peter created an issue. See original summary.

das-peter’s picture

Assigned: das-peter » Unassigned
Status: Active » Needs review