OVMS3-idf/components/openssl/library/ssl_pkey.c

51 lines
962 B
C
Raw Normal View History

#include "ssl_lib.h"
#include "ssl_pkey.h"
#include "ssl_dbg.h"
#include "ssl_pm.h"
EVP_PKEY *d2i_PrivateKey(int type,
EVP_PKEY **a,
const unsigned char **pp,
long length)
{
EVP_PKEY *pkey;
void *pkey_pm;
int ret;
SSL_ASSERT(pp);
SSL_ASSERT(*pp);
SSL_ASSERT(length);
pkey = ssl_malloc(sizeof(EVP_PKEY));
if (!pkey)
SSL_RET(failed1, "ssl_malloc\n");
pkey_pm = pkey_pm_new();
if (!pkey_pm)
SSL_RET(failed2, "pkey_pm_new\n");
ret = pkey_pm_load_crt(pkey_pm, *pp, length);
if (ret)
SSL_RET(failed3, "pkey_pm_load_crt\n");
pkey->pkey_pm = pkey_pm;
if (a)
*a = pkey;
return pkey;
failed3:
pkey_pm_free(pkey_pm);
failed2:
ssl_free(pkey);
failed1:
return NULL;
}
void EVP_PKEY_free(EVP_PKEY *x)
{
pkey_pm_unload_crt(x->pkey_pm);
pkey_pm_free(x->pkey_pm);
ssl_free(x);
}