openssl: add openssl_pkey_from_pem()

Add function to create EVP_PKEY from PEM buffer.
This commit is contained in:
Dan Streetman
2023-08-04 10:57:07 -04:00
parent b4a6fcd5c5
commit 4af788c70c
2 changed files with 21 additions and 0 deletions
+19
View File
@@ -1,10 +1,29 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "openssl-util.h"
#include "alloc-util.h"
#include "hexdecoct.h"
#if HAVE_OPENSSL
int openssl_pkey_from_pem(const void *pem, size_t pem_size, EVP_PKEY **ret) {
assert(pem);
assert(ret);
_cleanup_fclose_ FILE *f = NULL;
f = fmemopen((void*) pem, pem_size, "r");
if (!f)
return log_oom_debug();
_cleanup_(EVP_PKEY_freep) EVP_PKEY *pkey = PEM_read_PUBKEY(f, NULL, NULL, NULL);
if (!pkey)
return log_debug_errno(SYNTHETIC_ERRNO(EIO), "Failed to parse PEM.");
*ret = TAKE_PTR(pkey);
return 0;
}
int openssl_hash(const EVP_MD *alg,
const void *msg,
size_t msg_len,
+2
View File
@@ -43,6 +43,8 @@ static inline void sk_X509_free_allp(STACK_OF(X509) **sk) {
sk_X509_pop_free(*sk, X509_free);
}
int openssl_pkey_from_pem(const void *pem, size_t pem_size, EVP_PKEY **ret);
int openssl_hash(const EVP_MD *alg, const void *msg, size_t msg_len, uint8_t *ret_hash, size_t *ret_hash_len);
int rsa_encrypt_bytes(EVP_PKEY *pkey, const void *decrypted_key, size_t decrypted_key_size, void **ret_encrypt_key, size_t *ret_encrypt_key_size);