1
0
mirror of https://git.code.sf.net/p/linux-ima/ima-evm-utils synced 2025-04-28 22:53:37 +02:00

ima-evm-utils: Convert read_priv_key to EVP_PKEY API

Introduce read_priv_pkey() to read keys using EVP_PKEY, and change
read_priv_key() to be wrapper for it.

Signed-off-by: Vitaly Chikunov <vt@altlinux.org>
Acked-by: Dmitry Kasatkin <dmitry.kasatkin@gmail.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
This commit is contained in:
Vitaly Chikunov 2019-07-03 18:50:08 +03:00 committed by Mimi Zohar
parent 71c1be47e7
commit 3df7b5d779

View File

@ -753,10 +753,10 @@ void calc_keyid_v2(uint32_t *keyid, char *str, RSA *key)
free(pkey); free(pkey);
} }
static RSA *read_priv_key(const char *keyfile, const char *keypass) static EVP_PKEY *read_priv_pkey(const char *keyfile, const char *keypass)
{ {
FILE *fp; FILE *fp;
RSA *key; EVP_PKEY *pkey;
fp = fopen(keyfile, "r"); fp = fopen(keyfile, "r");
if (!fp) { if (!fp) {
@ -764,15 +764,32 @@ static RSA *read_priv_key(const char *keyfile, const char *keypass)
return NULL; return NULL;
} }
ERR_load_crypto_strings(); ERR_load_crypto_strings();
key = PEM_read_RSAPrivateKey(fp, NULL, NULL, (void *)keypass); pkey = PEM_read_PrivateKey(fp, NULL, NULL, (void *)keypass);
if (!key) { if (!pkey) {
char str[256]; char str[256];
ERR_error_string(ERR_get_error(), str); ERR_error_string(ERR_get_error(), str);
log_err("PEM_read_RSAPrivateKey() failed: %s\n", str); log_err("PEM_read_PrivateKey() failed: %s\n", str);
} }
fclose(fp); fclose(fp);
return pkey;
}
static RSA *read_priv_key(const char *keyfile, const char *keypass)
{
EVP_PKEY *pkey;
RSA *key;
pkey = read_priv_pkey(keyfile, keypass);
if (!pkey)
return NULL;
key = EVP_PKEY_get1_RSA(pkey);
EVP_PKEY_free(pkey);
if (!key) {
log_err("read_priv_key: unsupported key type\n");
return NULL;
}
return key; return key;
} }