RFC8292 contiene esta gema:
The "k" parameter includes an ECDSA public key [FIPS186] in
uncompressed form [X9.62] that is encoded using base64url encoding
[RFC7515].
Hay un ejemplo del uso de esta clave un poco más abajo:
Authorization: vapid
t=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwczovL3
B1c2guZXhhbXBsZS5uZXQiLCJleHAiOjE0NTM1MjM3NjgsInN1YiI6Im1ha
Wx0bzpwdXNoQGV4YW1wbGUuY29tIn0.i3CYb7t4xfxCDquptFOepC9GAu_H
LGkMlMuCGSK2rpiUfnK9ojFwDXb1JrErtmysazNjjvW2L9OkSSHzvoD1oA,
k=BA1Hxzyi1RUM1b5wjxsn7nGxAszw2u61m164i3MrAIxHF6YK5h4SDYic-dR
uU_RCPCfA5aq9ojSwk5Y2EmClBPs
La clave es el campo k=
en el ejemplo.
Esto no parece estar en 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:
¿Cómo puedo analizar este formato?
Desafortunadamente, el estándar X9.62 parece estar detrás de un muro de pago. Está bien, no necesito el estándar completo , solo necesito leer una clave y pasar los fragmentos relevantes a una biblioteca que sepa cómo manejarlo. Pero eso parece más difícil de lo que parece; Este formato no es comprendido inmediatamente por las bibliotecas que he probado, por lo que tendré que hacer algunas conversiones yo mismo. Sin embargo, es bastante difícil si no sé en qué formato están las claves.