Cuando estoy generando una clave privada con openssl
, escribe los parámetros de la curva y la clave privada real:
❯ openssl ecparam -name secp256k1 -genkey
-----BEGIN EC PARAMETERS-----
BgUrgQQACg==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIKYV1xoz6smkpdMksfgI8/3465V02UZdaKj4JSH30bBhoAcGBSuBBAAK
oUQDQgAEO1O+/xRGEVJgBEAOQorBveXPTQS3c7MA+9R+HEMP7TkscI9FONPclcRb
5sXZJjYHNYWhvxuXdGl8QrFVRIVBYg==
-----END EC PRIVATE KEY-----
Tenga en cuenta que los parámetros no contienen datos reales, solo haga referencia al estándar utilizado:
❯ openssl ecparam -name secp256k1 | openssl asn1parse
0:d=0 hl=2 l= 5 prim: OBJECT :secp256k1
Sin embargo, cuando miro la clave privada, ¡puedo ver que contiene el tipo de curva utilizada! Mira la línea que comienza con 41:d
❯ openssl ecparam -name secp256k1 -genkey -noout | openssl asn1parse
0:d=0 hl=2 l= 116 cons: SEQUENCE
2:d=1 hl=2 l= 1 prim: INTEGER :01
5:d=1 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:872F67D0B852C6FE9BD1F5B93AF54B7555D21267200DA2F8ED735729BF32730A
39:d=1 hl=2 l= 7 cons: cont [ 0 ]
41:d=2 hl=2 l= 5 prim: OBJECT :secp256k1
48:d=1 hl=2 l= 68 cons: cont [ 1 ]
50:d=2 hl=2 l= 66 prim: BIT STRING
¿Hay alguna razón por la que necesito los parámetros EC? ¿Por qué los produce por defecto?
(La única razón por la que puedo pensar en necesitar esos parámetros de EC, es para usarlos como entrada cuando se genera una clave privada, pero ¿no es mejor dar su nombre en la línea de comandos?)