Я только начинаю с ржавчины и играю с игрушечной библиотекой шифрования, следуя документам на https://docs.rs/openssl/0.10.28/openssl/. Я хотел бы сгенерировать пару ключей ellipti c -curve private + publi c и распечатать их в форматах der или pem. Я обнаружил, что это довольно просто сделать с закрытым ключом
use openssl::ec::{EcKey,EcGroup};
use openssl::nid::Nid;
pub fn generate_keypair() {
let group = EcGroup::from_curve_name(Nid::SECP256K1).unwrap();
let key = EcKey::generate(&group).unwrap();
println!("{:?}", key.private_key_to_der().unwrap()); // can use pem instead and print as utf8-string
}
Однако, похоже, не существует метода, подобного public_key_to_der
для EcKey
, для экспорта открытого ключа c, даже для отладки. печать не работает:
let public = key.public_key();
println!("{:?}", public);
выдает ошибку компиляции
openssl::ec::EcPointRef` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`