Но, как и в этом случае, файл содержит только закрытый ключ.
Файл ec256-key-pair.pem
на самом деле включает в себя как частную, так и общедоступную c части пары ключей. Вы можете убедиться в этом, напечатав его содержимое с помощью команды openssl ec
:
$ openssl ec -in ec256-key-pair.pem -noout -text
read EC key
Private-Key: (256 bit)
priv:
a3:0f:6e:0f:b1:18:69:22:83:e3:7e:94:bc:c2:27:
d9:89:d3:5f:72:aa:27:19:7b:39:5b:17:72:1e:b9:
09:14
pub:
04:a2:bd:8f:f8:d7:e6:40:3b:92:ee:67:12:54:6a:
7a:6f:80:22:31:79:30:94:a6:b2:25:c3:8b:30:58:
e8:be:e7:b5:66:c5:23:30:86:f0:e7:73:f7:00:5e:
7e:1b:a3:74:6a:b5:2a:fb:db:53:f3:b6:be:4d:34:
70:c6:25:d8:a8
ASN1 OID: secp256k1
Фактически, вы можете увидеть, что оно также содержит идентификатор кривой.
Я бы хотел чтобы получить файл, который выглядит следующим образом:
Если вы все еще хотите это, несмотря на информацию выше, вы можете извлечь три разных части с помощью команды openssl ec
. Используйте параметр -param_out
для параметров, никакой параметр для закрытого ключа (который фактически включает в себя часть publi c) и -pubout
только для части publi c.
$ openssl ec -in ec256-key-pair.pem -param_out > result.txt
$ openssl ec -in ec256-key-pair.pem >> result.txt
$ openssl ec -in ec256-key-pair.pem -pubout >> result.txt
С result.txt
будет содержать то, что вы просили. Для всего в одной строке, как вы просили:
$ KEY_PEM=$(openssl ecparam -genkey -name prime256v1 -noout) && for OPTION in -param_out "" -pubout; do openssl ec -in <(echo "${KEY_PEM}") ${OPTION}; done > result.txt
(при условии, что вы используете bash
в качестве оболочки)