Я использую жесткие коды e c для проверки своего приложения. Вот пример для ecdsa:
const char pem_ecdsa_prv_key[] = {
"-----BEGIN EC PRIVATE KEY-----\n"
"MHcCAQEEIAGOaT3/9PJxSIFKPbvEhj61jY3CGPsgA46IVZlvIlnGoAoGCCqGSM49\n"
"AwEHoUQDQgAE6Dw87+AYjRQzNsb3RmANmNENCZArERfCKZ5M9+2S/yomA6fmFdeb\n"
"XNXeV066Nk4jnuwF1ZKqCBoMBjsnm0jlCw==\n"
"-----END EC PRIVATE KEY-----\n"
};
const char pem_ecdsa_pub_key[] = {
"-----BEGIN PUBLIC KEY-----\n"
"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6Dw87+AYjRQzNsb3RmANmNENCZAr\n"
"ERfCKZ5M9+2S/yomA6fmFdebXNXeV066Nk4jnuwF1ZKqCBoMBjsnm0jlCw==\n"
"-----END PUBLIC KEY-----\n"
};
Он был сгенерирован с помощью утилиты s sh -keygen. Мне нужно преобразовать эти pem-строки в формат openssl EC_KEY, чтобы использовать его с функциями sign / verify openssl. Я делаю преобразование следующим образом (проверка ошибок была опущена):
EC_KEY *ecdsa = NULL;
BIO *bio= NULL;
/* read pem string to openssl bio format */
bio = BIO_new_mem_buf(pem_ecdsa_prv_key,sizeof(pem_ecdsa_prv_key));
/* convert bio to ec_key */
ecdsa = EC_KEY_new();
PEM_read_bio_ECPrivateKey(bio, &ecdsa, NULL, NULL);
Теперь я делаю это преобразование для pem_ecdsa_prv_key
и pem_ecdsa_pub_key
. Должен ли я сделать это только для массива закрытых ключей, потому что он также содержит ключ publi c?