/** *YGH 30 */ static void tobesigned_certificate_request_free(tobesigned_certificate_request* tobesigned_certificate_request){ cert_specific_data_free(&tobesigned_certificate_request->type_specific_data, tobesigned_certificate_request->holder_type); if((tobesigned_certificate_request->cf & 1<<2)!=0){ public_key_free(&tobesigned_certificate_request->flags_content.encryption_key); } if((tobesigned_certificate_request->cf & 0xf8)!=0){ if(NULL != tobesigned_certificate_request->flags_content.other_cert.buf) ARRAY_FREE(&tobesigned_certificate_request->flags_content.other_cert); } public_key_free(&tobesigned_certificate_request->verification_key); public_key_free(&tobesigned_certificate_request->response_encryption_key); }
/** *YGH 23 *@uint8 外部数据结构传入 */ static void tobesigned_certificate_free(tobesigned_certificate* tobesigned_certificate,u8 version_and_type){ cert_specific_data_free(&tobesigned_certificate->scope,tobesigned_certificate->holder_type); switch(version_and_type){ case 2: public_key_free(&tobesigned_certificate->version_and_type.verification_key); break; case 3: break; default: if(NULL!=tobesigned_certificate->version_and_type.other_key_material.buf) ARRAY_FREE(&tobesigned_certificate->version_and_type.other_key_material); } if((tobesigned_certificate->cf & 1<<2)!=0){ public_key_free(&tobesigned_certificate->flags_content.encryption_key); } if((tobesigned_certificate->cf & 0xf8)!=0){ if(NULL!=tobesigned_certificate->flags_content.other_cert_content.buf) ARRAY_FREE(&tobesigned_certificate->flags_content.other_cert_content); } }
/* * Free an X.509 certificate */ void x509_free_certificate(struct x509_certificate *cert) { if (cert) { public_key_free(cert->pub); public_key_signature_free(cert->sig); kfree(cert->issuer); kfree(cert->subject); kfree(cert->id); kfree(cert->skid); kfree(cert); } }