RFC8292 contiene questo gioiello:
The "k" parameter includes an ECDSA public key [FIPS186] in
uncompressed form [X9.62] that is encoded using base64url encoding
[RFC7515].
C'è un esempio dell'uso di tale chiave un po 'più in basso:
Authorization: vapid
t=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwczovL3
B1c2guZXhhbXBsZS5uZXQiLCJleHAiOjE0NTM1MjM3NjgsInN1YiI6Im1ha
Wx0bzpwdXNoQGV4YW1wbGUuY29tIn0.i3CYb7t4xfxCDquptFOepC9GAu_H
LGkMlMuCGSK2rpiUfnK9ojFwDXb1JrErtmysazNjjvW2L9OkSSHzvoD1oA,
k=BA1Hxzyi1RUM1b5wjxsn7nGxAszw2u61m164i3MrAIxHF6YK5h4SDYic-dR
uU_RCPCfA5aq9ojSwk5Y2EmClBPs
La chiave è il campo k=
nell'esempio.
Questo non sembra essere nel formato ASN.1:
$ cat vapidkey
-----BEGIN PUBLIC KEY-----
BA1Hxzyi1RUM1b5wjxsn7nGxAszw2u61m164i3MrAIxHF6YK5h4SDYic-dRuU_RCPCfA5aq9ojSwk5Y2EmClBPs
-----END PUBLIC KEY-----
$ openssl asn1parse -in vapidkey -i
0:d=0 hl=2 l= 13 prim: OCTET STRING [HEX DUMP]:47C73CA2D5150CD5BE708F1B27
Error in encoding
139686682194112:error:0D07209B:asn1 encoding routines:ASN1_get_object:too long:../crypto/asn1/asn1_lib.c:91:
Come analizzo questo formato?
Sfortunatamente, lo standard X9.62 sembra essere dietro un paywall. Va bene, non ho bisogno dello standard completo , ho solo bisogno di leggere una chiave e passare i relativi bit in una libreria che sa come gestirla. Ma sembra più difficile di quanto sembri; questo formato non è compreso immediatamente dalle librerie che ho provato, quindi dovrò fare una conversione da solo. Questo è piuttosto difficile se non so in che formato sono i tasti, però.