I have a JWE and in header an ephemeral public key. So I have coordinate X and Y.
My question in shell mode how to convert the JWK to ECC public key in pem format.
For example, here a jwk
{"epk":{"kty":"EC","crv":"P-256","x":"GCl--lQHb7NKYU3jXpKVI_BYaTlALT5JFPdl3sbB9mY","y":"ADRX25PBSlZJE79drET0ARtRqZAkUIMNt9aa2bbjBYY"}}
After I do this
> # I convert the x coordonate from base64url to base64
> echo -n -e "GCl++lQHb7NKYU3jXpKVI/BYaTlALT5JFPdl3sbB9mY" | base64 -d | hexdump
0000000 2918 fa7e 0754 b36f 614a e34d 925e 2395
0000010 58f0 3969 2d40 493e f714 de65 c1c6 66f6
0000020
> echo -n -e "ADRX25PBSlZJE79drET0ARtRqZAkUIMNt9aa2bbjBYY" | base64 -d | hexdump
0000000 3400 db57 c193 564a 1349 5dbf 44ac 01f4
0000010 511b 90a9 5024 0d83 d6b7 d99a e3b6 8605
0000020
So the public key is 04 2918 fa7e 0754 b36f 614a e34d 925e 2395 58f0 3969 2d40 493e f714 de65 c1c6 66f6 3400 db57 c193 564a 1349 5dbf 44ac 01f4 511b 90a9 5024 0d83 d6b7 d99a e3b6 8605
But I have the curve, the public key, I want to know how to generate a pem?
In other words,
I have a file mykey.pub which contains this:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETGUwowNEfqQ0LtHiMXJPY+Os5pXc
lsYCRPOi3F6K0n4k1RjJ7PGp/9RhZy3XS1yn1Qlu4hoCClHcc9rPXPn4fQ==
-----END PUBLIC KEY-----
I execute this command to display the public key:
> openssl ec -in mykey.pub -pubin -text -noout
read EC key
Public-Key: (256 bit)
pub:
04:4c:65:30:a3:03:44:7e:a4:34:2e:d1:e2:31:72:
4f:63:e3:ac:e6:95:dc:96:c6:02:44:f3:a2:dc:5e:
8a:d2:7e:24:d5:18:c9:ec:f1:a9:ff:d4:61:67:2d:
d7:4b:5c:a7:d5:09:6e:e2:1a:02:0a:51:dc:73:da:
cf:5c:f9:f8:7d
ASN1 OID: prime256v1
NIST CURVE: P-256
So my question is if I have this data
> openssl ec -in mykey.pub -pubin -text -noout
read EC key
Public-Key: (256 bit)
pub:
04:4c:65:30:a3:03:44:7e:a4:34:2e:d1:e2:31:72:
4f:63:e3:ac:e6:95:dc:96:c6:02:44:f3:a2:dc:5e:
8a:d2:7e:24:d5:18:c9:ec:f1:a9:ff:d4:61:67:2d:
d7:4b:5c:a7:d5:09:6e:e2:1a:02:0a:51:dc:73:da:
cf:5c:f9:f8:7d
ASN1 OID: prime256v1
NIST CURVE: P-256
how to retrieve this in shell mode
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETGUwowNEfqQ0LtHiMXJPY+Os5pXc
lsYCRPOi3F6K0n4k1RjJ7PGp/9RhZy3XS1yn1Qlu4hoCClHcc9rPXPn4fQ==
-----END PUBLIC KEY-----