/* LibTomCrypt, modular cryptographic library -- Tom St Denis */
/* SPDX-License-Identifier: Unlicense */
#include "tomcrypt_private.h"

void pka_key_destroy(ltc_pka_key **key)
{
   LTC_ARGCHKVD(key != NULL);

   if (!*key)
      return;

   pka_key_free(*key);
   zeromem(*key, sizeof(**key));
   XFREE(*key);
   *key = NULL;
}

void pka_key_free(ltc_pka_key *key)
{
   LTC_ARGCHKVD(key != NULL);
   switch (key->id) {
      case LTC_PKA_DH:
#if defined(LTC_MDH)
         dh_free(&key->u.dh);
#endif
         break;
      case LTC_PKA_DSA:
#if defined(LTC_MDSA)
         dsa_free(&key->u.dsa);
#endif
         break;
      case LTC_PKA_RSA:
      case LTC_PKA_RSA_PSS:
#if defined(LTC_MRSA)
         rsa_free(&key->u.rsa);
#endif
         break;
      case LTC_PKA_EC:
#if defined(LTC_MECC)
         ecc_free(&key->u.ecc);
#endif
         break;
      default:
         break;
   }
}
