/** * cdk_keygen_free: free the keygen object * @hd: the keygen object * **/ void cdk_keygen_free( cdk_keygen_ctx_t hd ) { if( hd ) { _cdk_free_pubkey( hd->key[0].pk ); _cdk_free_pubkey( hd->key[1].pk ); _cdk_free_seckey( hd->key[0].sk ); _cdk_free_seckey( hd->key[1].sk ); _cdk_free_userid( hd->id ); _cdk_free_signature( hd->sig ); cdk_free( hd->sym_prefs ); cdk_free( hd->hash_prefs ); cdk_free( hd->zip_prefs ); _cdk_sec_free( hd->pass, hd->pass_len ); _cdk_free_mpibuf( hd->key[0].n, hd->key[0].resarr ); _cdk_free_mpibuf( hd->key[1].n, hd->key[1].resarr ); cdk_free( hd ); } }
static void free_pubkey_enc(cdk_pkt_pubkey_enc_t enc) { size_t nenc; if (!enc) return; nenc = cdk_pk_get_nenc(enc->pubkey_algo); _cdk_free_mpibuf(nenc, enc->mpi); cdk_free(enc); }
void cdk_pk_release(cdk_pubkey_t pk) { size_t npkey; if (!pk) return; npkey = cdk_pk_get_npkey(pk->pubkey_algo); _cdk_free_userid(pk->uid); pk->uid = NULL; cdk_free(pk->prefs); pk->prefs = NULL; _cdk_free_mpibuf(npkey, pk->mpi); cdk_free(pk); }
void cdk_sk_release(cdk_seckey_t sk) { size_t nskey; if (!sk) return; nskey = cdk_pk_get_nskey(sk->pubkey_algo); _cdk_free_mpibuf(nskey, sk->mpi); cdk_free(sk->encdata); sk->encdata = NULL; cdk_pk_release(sk->pk); sk->pk = NULL; cdk_s2k_free(sk->protect.s2k); sk->protect.s2k = NULL; cdk_free(sk); }
void _cdk_free_signature(cdk_pkt_signature_t sig) { cdk_desig_revoker_t r; size_t nsig; if (!sig) return; nsig = cdk_pk_get_nsig(sig->pubkey_algo); _cdk_free_mpibuf(nsig, sig->mpi); cdk_subpkt_free(sig->hashed); sig->hashed = NULL; cdk_subpkt_free(sig->unhashed); sig->unhashed = NULL; while (sig->revkeys) { r = sig->revkeys->next; cdk_free(sig->revkeys); sig->revkeys = r; } cdk_free(sig); }