1e71b7053SJung-uk Kim=pod 2e71b7053SJung-uk Kim 3e71b7053SJung-uk Kim=head1 NAME 4e71b7053SJung-uk Kim 5e71b7053SJung-uk KimDECLARE_ASN1_FUNCTIONS, 6e71b7053SJung-uk KimIMPLEMENT_ASN1_FUNCTIONS, 7e71b7053SJung-uk KimASN1_ITEM, 8e71b7053SJung-uk KimACCESS_DESCRIPTION_free, 9e71b7053SJung-uk KimACCESS_DESCRIPTION_new, 10e71b7053SJung-uk KimADMISSIONS_free, 11e71b7053SJung-uk KimADMISSIONS_new, 12e71b7053SJung-uk KimADMISSION_SYNTAX_free, 13e71b7053SJung-uk KimADMISSION_SYNTAX_new, 14e71b7053SJung-uk KimASIdOrRange_free, 15e71b7053SJung-uk KimASIdOrRange_new, 16e71b7053SJung-uk KimASIdentifierChoice_free, 17e71b7053SJung-uk KimASIdentifierChoice_new, 18e71b7053SJung-uk KimASIdentifiers_free, 19e71b7053SJung-uk KimASIdentifiers_new, 20e71b7053SJung-uk KimASRange_free, 21e71b7053SJung-uk KimASRange_new, 22e71b7053SJung-uk KimAUTHORITY_INFO_ACCESS_free, 23e71b7053SJung-uk KimAUTHORITY_INFO_ACCESS_new, 24e71b7053SJung-uk KimAUTHORITY_KEYID_free, 25e71b7053SJung-uk KimAUTHORITY_KEYID_new, 26e71b7053SJung-uk KimBASIC_CONSTRAINTS_free, 27e71b7053SJung-uk KimBASIC_CONSTRAINTS_new, 28e71b7053SJung-uk KimCERTIFICATEPOLICIES_free, 29e71b7053SJung-uk KimCERTIFICATEPOLICIES_new, 30e71b7053SJung-uk KimCMS_ContentInfo_free, 31e71b7053SJung-uk KimCMS_ContentInfo_new, 32b077aed3SPierre ProncheryCMS_ContentInfo_new_ex, 33e71b7053SJung-uk KimCMS_ContentInfo_print_ctx, 34e71b7053SJung-uk KimCMS_ReceiptRequest_free, 35e71b7053SJung-uk KimCMS_ReceiptRequest_new, 36e71b7053SJung-uk KimCRL_DIST_POINTS_free, 37e71b7053SJung-uk KimCRL_DIST_POINTS_new, 38e71b7053SJung-uk KimDIRECTORYSTRING_free, 39e71b7053SJung-uk KimDIRECTORYSTRING_new, 40e71b7053SJung-uk KimDISPLAYTEXT_free, 41e71b7053SJung-uk KimDISPLAYTEXT_new, 42e71b7053SJung-uk KimDIST_POINT_NAME_free, 43e71b7053SJung-uk KimDIST_POINT_NAME_new, 44e71b7053SJung-uk KimDIST_POINT_free, 45e71b7053SJung-uk KimDIST_POINT_new, 46e71b7053SJung-uk KimDSAparams_dup, 47e71b7053SJung-uk KimECPARAMETERS_free, 48e71b7053SJung-uk KimECPARAMETERS_new, 49e71b7053SJung-uk KimECPKPARAMETERS_free, 50e71b7053SJung-uk KimECPKPARAMETERS_new, 51e71b7053SJung-uk KimEDIPARTYNAME_free, 52e71b7053SJung-uk KimEDIPARTYNAME_new, 53e71b7053SJung-uk KimESS_CERT_ID_dup, 54e71b7053SJung-uk KimESS_CERT_ID_free, 55e71b7053SJung-uk KimESS_CERT_ID_new, 56b077aed3SPierre ProncheryESS_CERT_ID_V2_dup, 57b077aed3SPierre ProncheryESS_CERT_ID_V2_free, 58b077aed3SPierre ProncheryESS_CERT_ID_V2_new, 59e71b7053SJung-uk KimESS_ISSUER_SERIAL_dup, 60e71b7053SJung-uk KimESS_ISSUER_SERIAL_free, 61e71b7053SJung-uk KimESS_ISSUER_SERIAL_new, 62e71b7053SJung-uk KimESS_SIGNING_CERT_dup, 63e71b7053SJung-uk KimESS_SIGNING_CERT_free, 64b077aed3SPierre ProncheryESS_SIGNING_CERT_it, 65e71b7053SJung-uk KimESS_SIGNING_CERT_new, 66b077aed3SPierre ProncheryESS_SIGNING_CERT_V2_dup, 67b077aed3SPierre ProncheryESS_SIGNING_CERT_V2_free, 68b077aed3SPierre ProncheryESS_SIGNING_CERT_V2_it, 69b077aed3SPierre ProncheryESS_SIGNING_CERT_V2_new, 70e71b7053SJung-uk KimEXTENDED_KEY_USAGE_free, 71e71b7053SJung-uk KimEXTENDED_KEY_USAGE_new, 72e71b7053SJung-uk KimGENERAL_NAMES_free, 73e71b7053SJung-uk KimGENERAL_NAMES_new, 74e71b7053SJung-uk KimGENERAL_NAME_dup, 75e71b7053SJung-uk KimGENERAL_NAME_free, 76e71b7053SJung-uk KimGENERAL_NAME_new, 77e71b7053SJung-uk KimGENERAL_SUBTREE_free, 78e71b7053SJung-uk KimGENERAL_SUBTREE_new, 79e71b7053SJung-uk KimIPAddressChoice_free, 80e71b7053SJung-uk KimIPAddressChoice_new, 81e71b7053SJung-uk KimIPAddressFamily_free, 82e71b7053SJung-uk KimIPAddressFamily_new, 83e71b7053SJung-uk KimIPAddressOrRange_free, 84e71b7053SJung-uk KimIPAddressOrRange_new, 85e71b7053SJung-uk KimIPAddressRange_free, 86e71b7053SJung-uk KimIPAddressRange_new, 87b077aed3SPierre ProncheryISSUER_SIGN_TOOL_free, 88b077aed3SPierre ProncheryISSUER_SIGN_TOOL_it, 89b077aed3SPierre ProncheryISSUER_SIGN_TOOL_new, 90e71b7053SJung-uk KimISSUING_DIST_POINT_free, 91b077aed3SPierre ProncheryISSUING_DIST_POINT_it, 92e71b7053SJung-uk KimISSUING_DIST_POINT_new, 93e71b7053SJung-uk KimNAME_CONSTRAINTS_free, 94e71b7053SJung-uk KimNAME_CONSTRAINTS_new, 95e71b7053SJung-uk KimNAMING_AUTHORITY_free, 96e71b7053SJung-uk KimNAMING_AUTHORITY_new, 97e71b7053SJung-uk KimNETSCAPE_CERT_SEQUENCE_free, 98e71b7053SJung-uk KimNETSCAPE_CERT_SEQUENCE_new, 99e71b7053SJung-uk KimNETSCAPE_SPKAC_free, 100e71b7053SJung-uk KimNETSCAPE_SPKAC_new, 101e71b7053SJung-uk KimNETSCAPE_SPKI_free, 102e71b7053SJung-uk KimNETSCAPE_SPKI_new, 103e71b7053SJung-uk KimNOTICEREF_free, 104e71b7053SJung-uk KimNOTICEREF_new, 105e71b7053SJung-uk KimOCSP_BASICRESP_free, 106e71b7053SJung-uk KimOCSP_BASICRESP_new, 107e71b7053SJung-uk KimOCSP_CERTID_dup, 108e71b7053SJung-uk KimOCSP_CERTID_new, 109e71b7053SJung-uk KimOCSP_CERTSTATUS_free, 110e71b7053SJung-uk KimOCSP_CERTSTATUS_new, 111e71b7053SJung-uk KimOCSP_CRLID_free, 112e71b7053SJung-uk KimOCSP_CRLID_new, 113e71b7053SJung-uk KimOCSP_ONEREQ_free, 114e71b7053SJung-uk KimOCSP_ONEREQ_new, 115e71b7053SJung-uk KimOCSP_REQINFO_free, 116e71b7053SJung-uk KimOCSP_REQINFO_new, 117e71b7053SJung-uk KimOCSP_RESPBYTES_free, 118e71b7053SJung-uk KimOCSP_RESPBYTES_new, 119e71b7053SJung-uk KimOCSP_RESPDATA_free, 120e71b7053SJung-uk KimOCSP_RESPDATA_new, 121e71b7053SJung-uk KimOCSP_RESPID_free, 122e71b7053SJung-uk KimOCSP_RESPID_new, 123e71b7053SJung-uk KimOCSP_RESPONSE_new, 124e71b7053SJung-uk KimOCSP_REVOKEDINFO_free, 125e71b7053SJung-uk KimOCSP_REVOKEDINFO_new, 126e71b7053SJung-uk KimOCSP_SERVICELOC_free, 127e71b7053SJung-uk KimOCSP_SERVICELOC_new, 128e71b7053SJung-uk KimOCSP_SIGNATURE_free, 129e71b7053SJung-uk KimOCSP_SIGNATURE_new, 130e71b7053SJung-uk KimOCSP_SINGLERESP_free, 131e71b7053SJung-uk KimOCSP_SINGLERESP_new, 132b077aed3SPierre ProncheryOSSL_CMP_ITAV_dup, 133b077aed3SPierre ProncheryOSSL_CMP_ITAV_free, 134b077aed3SPierre ProncheryOSSL_CMP_MSG_dup, 135b077aed3SPierre ProncheryOSSL_CMP_MSG_it, 136b077aed3SPierre ProncheryOSSL_CMP_MSG_free, 137b077aed3SPierre ProncheryOSSL_CMP_PKIHEADER_free, 138b077aed3SPierre ProncheryOSSL_CMP_PKIHEADER_it, 139b077aed3SPierre ProncheryOSSL_CMP_PKIHEADER_new, 140b077aed3SPierre ProncheryOSSL_CMP_PKISI_dup, 141b077aed3SPierre ProncheryOSSL_CMP_PKISI_free, 142b077aed3SPierre ProncheryOSSL_CMP_PKISI_it, 143b077aed3SPierre ProncheryOSSL_CMP_PKISI_new, 144b077aed3SPierre ProncheryOSSL_CMP_PKISTATUS_it, 145b077aed3SPierre ProncheryOSSL_CRMF_CERTID_dup, 146b077aed3SPierre ProncheryOSSL_CRMF_CERTID_free, 147b077aed3SPierre ProncheryOSSL_CRMF_CERTID_it, 148b077aed3SPierre ProncheryOSSL_CRMF_CERTID_new, 149b077aed3SPierre ProncheryOSSL_CRMF_CERTTEMPLATE_free, 150b077aed3SPierre ProncheryOSSL_CRMF_CERTTEMPLATE_it, 151b077aed3SPierre ProncheryOSSL_CRMF_CERTTEMPLATE_new, 152b077aed3SPierre ProncheryOSSL_CRMF_ENCRYPTEDVALUE_free, 153b077aed3SPierre ProncheryOSSL_CRMF_ENCRYPTEDVALUE_it, 154b077aed3SPierre ProncheryOSSL_CRMF_ENCRYPTEDVALUE_new, 155b077aed3SPierre ProncheryOSSL_CRMF_MSGS_free, 156b077aed3SPierre ProncheryOSSL_CRMF_MSGS_it, 157b077aed3SPierre ProncheryOSSL_CRMF_MSGS_new, 158b077aed3SPierre ProncheryOSSL_CRMF_MSG_dup, 159b077aed3SPierre ProncheryOSSL_CRMF_MSG_free, 160b077aed3SPierre ProncheryOSSL_CRMF_MSG_it, 161b077aed3SPierre ProncheryOSSL_CRMF_MSG_new, 162b077aed3SPierre ProncheryOSSL_CRMF_PBMPARAMETER_free, 163b077aed3SPierre ProncheryOSSL_CRMF_PBMPARAMETER_it, 164b077aed3SPierre ProncheryOSSL_CRMF_PBMPARAMETER_new, 165b077aed3SPierre ProncheryOSSL_CRMF_PKIPUBLICATIONINFO_free, 166b077aed3SPierre ProncheryOSSL_CRMF_PKIPUBLICATIONINFO_it, 167b077aed3SPierre ProncheryOSSL_CRMF_PKIPUBLICATIONINFO_new, 168b077aed3SPierre ProncheryOSSL_CRMF_SINGLEPUBINFO_free, 169b077aed3SPierre ProncheryOSSL_CRMF_SINGLEPUBINFO_it, 170b077aed3SPierre ProncheryOSSL_CRMF_SINGLEPUBINFO_new, 171e71b7053SJung-uk KimOTHERNAME_free, 172e71b7053SJung-uk KimOTHERNAME_new, 173e71b7053SJung-uk KimPBE2PARAM_free, 174e71b7053SJung-uk KimPBE2PARAM_new, 175e71b7053SJung-uk KimPBEPARAM_free, 176e71b7053SJung-uk KimPBEPARAM_new, 177e71b7053SJung-uk KimPBKDF2PARAM_free, 178e71b7053SJung-uk KimPBKDF2PARAM_new, 179e71b7053SJung-uk KimPKCS12_BAGS_free, 180e71b7053SJung-uk KimPKCS12_BAGS_new, 181e71b7053SJung-uk KimPKCS12_MAC_DATA_free, 182e71b7053SJung-uk KimPKCS12_MAC_DATA_new, 183e71b7053SJung-uk KimPKCS12_SAFEBAG_free, 184e71b7053SJung-uk KimPKCS12_SAFEBAG_new, 185e71b7053SJung-uk KimPKCS12_free, 186e71b7053SJung-uk KimPKCS12_new, 187e71b7053SJung-uk KimPKCS7_DIGEST_free, 188e71b7053SJung-uk KimPKCS7_DIGEST_new, 189e71b7053SJung-uk KimPKCS7_ENCRYPT_free, 190e71b7053SJung-uk KimPKCS7_ENCRYPT_new, 191e71b7053SJung-uk KimPKCS7_ENC_CONTENT_free, 192e71b7053SJung-uk KimPKCS7_ENC_CONTENT_new, 193e71b7053SJung-uk KimPKCS7_ENVELOPE_free, 194e71b7053SJung-uk KimPKCS7_ENVELOPE_new, 195e71b7053SJung-uk KimPKCS7_ISSUER_AND_SERIAL_free, 196e71b7053SJung-uk KimPKCS7_ISSUER_AND_SERIAL_new, 197e71b7053SJung-uk KimPKCS7_RECIP_INFO_free, 198e71b7053SJung-uk KimPKCS7_RECIP_INFO_new, 199e71b7053SJung-uk KimPKCS7_SIGNED_free, 200e71b7053SJung-uk KimPKCS7_SIGNED_new, 201e71b7053SJung-uk KimPKCS7_SIGNER_INFO_free, 202e71b7053SJung-uk KimPKCS7_SIGNER_INFO_new, 203e71b7053SJung-uk KimPKCS7_SIGN_ENVELOPE_free, 204e71b7053SJung-uk KimPKCS7_SIGN_ENVELOPE_new, 205e71b7053SJung-uk KimPKCS7_dup, 206e71b7053SJung-uk KimPKCS7_free, 207b077aed3SPierre ProncheryPKCS7_new_ex, 208e71b7053SJung-uk KimPKCS7_new, 209e71b7053SJung-uk KimPKCS7_print_ctx, 210e71b7053SJung-uk KimPKCS8_PRIV_KEY_INFO_free, 211e71b7053SJung-uk KimPKCS8_PRIV_KEY_INFO_new, 212e71b7053SJung-uk KimPKEY_USAGE_PERIOD_free, 213e71b7053SJung-uk KimPKEY_USAGE_PERIOD_new, 214e71b7053SJung-uk KimPOLICYINFO_free, 215e71b7053SJung-uk KimPOLICYINFO_new, 216e71b7053SJung-uk KimPOLICYQUALINFO_free, 217e71b7053SJung-uk KimPOLICYQUALINFO_new, 218e71b7053SJung-uk KimPOLICY_CONSTRAINTS_free, 219e71b7053SJung-uk KimPOLICY_CONSTRAINTS_new, 220e71b7053SJung-uk KimPOLICY_MAPPING_free, 221e71b7053SJung-uk KimPOLICY_MAPPING_new, 222e71b7053SJung-uk KimPROFESSION_INFOS_free, 223e71b7053SJung-uk KimPROFESSION_INFOS_new, 224b077aed3SPierre ProncheryPROFESSION_INFO_free, 225b077aed3SPierre ProncheryPROFESSION_INFO_new, 226e71b7053SJung-uk KimPROXY_CERT_INFO_EXTENSION_free, 227e71b7053SJung-uk KimPROXY_CERT_INFO_EXTENSION_new, 228e71b7053SJung-uk KimPROXY_POLICY_free, 229e71b7053SJung-uk KimPROXY_POLICY_new, 230e71b7053SJung-uk KimRSAPrivateKey_dup, 231e71b7053SJung-uk KimRSAPublicKey_dup, 232e71b7053SJung-uk KimRSA_OAEP_PARAMS_free, 233e71b7053SJung-uk KimRSA_OAEP_PARAMS_new, 234e71b7053SJung-uk KimRSA_PSS_PARAMS_free, 235e71b7053SJung-uk KimRSA_PSS_PARAMS_new, 236b077aed3SPierre ProncheryRSA_PSS_PARAMS_dup, 237e71b7053SJung-uk KimSCRYPT_PARAMS_free, 238e71b7053SJung-uk KimSCRYPT_PARAMS_new, 239e71b7053SJung-uk KimSXNETID_free, 240e71b7053SJung-uk KimSXNETID_new, 241e71b7053SJung-uk KimSXNET_free, 242e71b7053SJung-uk KimSXNET_new, 243e71b7053SJung-uk KimTLS_FEATURE_free, 244e71b7053SJung-uk KimTLS_FEATURE_new, 245e71b7053SJung-uk KimTS_ACCURACY_dup, 246e71b7053SJung-uk KimTS_ACCURACY_free, 247e71b7053SJung-uk KimTS_ACCURACY_new, 248e71b7053SJung-uk KimTS_MSG_IMPRINT_dup, 249e71b7053SJung-uk KimTS_MSG_IMPRINT_free, 250e71b7053SJung-uk KimTS_MSG_IMPRINT_new, 251e71b7053SJung-uk KimTS_REQ_dup, 252e71b7053SJung-uk KimTS_REQ_free, 253e71b7053SJung-uk KimTS_REQ_new, 254e71b7053SJung-uk KimTS_RESP_dup, 255e71b7053SJung-uk KimTS_RESP_free, 256e71b7053SJung-uk KimTS_RESP_new, 257e71b7053SJung-uk KimTS_STATUS_INFO_dup, 258e71b7053SJung-uk KimTS_STATUS_INFO_free, 259e71b7053SJung-uk KimTS_STATUS_INFO_new, 260e71b7053SJung-uk KimTS_TST_INFO_dup, 261e71b7053SJung-uk KimTS_TST_INFO_free, 262e71b7053SJung-uk KimTS_TST_INFO_new, 263e71b7053SJung-uk KimUSERNOTICE_free, 264e71b7053SJung-uk KimUSERNOTICE_new, 265e71b7053SJung-uk KimX509_ALGOR_free, 266b077aed3SPierre ProncheryX509_ALGOR_it, 267e71b7053SJung-uk KimX509_ALGOR_new, 268e71b7053SJung-uk KimX509_ATTRIBUTE_dup, 269e71b7053SJung-uk KimX509_ATTRIBUTE_free, 270e71b7053SJung-uk KimX509_ATTRIBUTE_new, 271e71b7053SJung-uk KimX509_CERT_AUX_free, 272e71b7053SJung-uk KimX509_CERT_AUX_new, 273e71b7053SJung-uk KimX509_CINF_free, 274e71b7053SJung-uk KimX509_CINF_new, 275e71b7053SJung-uk KimX509_CRL_INFO_free, 276e71b7053SJung-uk KimX509_CRL_INFO_new, 277e71b7053SJung-uk KimX509_CRL_dup, 278e71b7053SJung-uk KimX509_CRL_free, 279b077aed3SPierre ProncheryX509_CRL_new_ex, 280e71b7053SJung-uk KimX509_CRL_new, 281e71b7053SJung-uk KimX509_EXTENSION_dup, 282e71b7053SJung-uk KimX509_EXTENSION_free, 283e71b7053SJung-uk KimX509_EXTENSION_new, 284e71b7053SJung-uk KimX509_NAME_ENTRY_dup, 285e71b7053SJung-uk KimX509_NAME_ENTRY_free, 286e71b7053SJung-uk KimX509_NAME_ENTRY_new, 287e71b7053SJung-uk KimX509_NAME_dup, 288e71b7053SJung-uk KimX509_NAME_free, 289e71b7053SJung-uk KimX509_NAME_new, 290e71b7053SJung-uk KimX509_REQ_INFO_free, 291e71b7053SJung-uk KimX509_REQ_INFO_new, 292e71b7053SJung-uk KimX509_REQ_dup, 293e71b7053SJung-uk KimX509_REQ_free, 294e71b7053SJung-uk KimX509_REQ_new, 295b077aed3SPierre ProncheryX509_REQ_new_ex, 296e71b7053SJung-uk KimX509_REVOKED_dup, 297e71b7053SJung-uk KimX509_REVOKED_free, 298e71b7053SJung-uk KimX509_REVOKED_new, 299e71b7053SJung-uk KimX509_SIG_free, 300e71b7053SJung-uk KimX509_SIG_new, 301e71b7053SJung-uk KimX509_VAL_free, 302e71b7053SJung-uk KimX509_VAL_new, 303e71b7053SJung-uk KimX509_dup, 304e71b7053SJung-uk Kim- ASN1 object utilities 305e71b7053SJung-uk Kim 306e71b7053SJung-uk Kim=head1 SYNOPSIS 307e71b7053SJung-uk Kim 308b077aed3SPierre Pronchery=for openssl generic 309e71b7053SJung-uk Kim 310e71b7053SJung-uk Kim #include <openssl/asn1t.h> 311e71b7053SJung-uk Kim 312e71b7053SJung-uk Kim DECLARE_ASN1_FUNCTIONS(type) 313e71b7053SJung-uk Kim IMPLEMENT_ASN1_FUNCTIONS(stname) 314e71b7053SJung-uk Kim 315e71b7053SJung-uk Kim typedef struct ASN1_ITEM_st ASN1_ITEM; 316e71b7053SJung-uk Kim 317e71b7053SJung-uk Kim extern const ASN1_ITEM TYPE_it; 318e71b7053SJung-uk Kim TYPE *TYPE_new(void); 319b077aed3SPierre Pronchery TYPE *TYPE_dup(const TYPE *a); 320e71b7053SJung-uk Kim void TYPE_free(TYPE *a); 321e71b7053SJung-uk Kim int TYPE_print_ctx(BIO *out, TYPE *a, int indent, const ASN1_PCTX *pctx); 322e71b7053SJung-uk Kim 323b077aed3SPierre ProncheryThe following functions have been deprecated since OpenSSL 3.0, and can be 324b077aed3SPierre Proncheryhidden entirely by defining B<OPENSSL_API_COMPAT> with a suitable version value, 325b077aed3SPierre Proncherysee L<openssl_user_macros(7)>: 326b077aed3SPierre Pronchery 327b077aed3SPierre Pronchery DSA *DSAparams_dup(const DSA *dsa); 328b077aed3SPierre Pronchery RSA *RSAPrivateKey_dup(const RSA *rsa); 329b077aed3SPierre Pronchery RSA *RSAPublicKey_dup(const RSA *rsa); 330b077aed3SPierre Pronchery 331e71b7053SJung-uk Kim=head1 DESCRIPTION 332e71b7053SJung-uk Kim 333b077aed3SPierre ProncheryIn the description below, B<I<TYPE>> is used 334b077aed3SPierre Proncheryas a placeholder for any of the OpenSSL datatypes, such as B<X509>. 335e71b7053SJung-uk Kim 336e71b7053SJung-uk KimThe OpenSSL ASN1 parsing library templates are like a data-driven bytecode 337e71b7053SJung-uk Kiminterpreter. 338e71b7053SJung-uk KimEvery ASN1 object as a global variable, TYPE_it, that describes the item 339e71b7053SJung-uk Kimsuch as its fields. (On systems which cannot export variables from shared 340e71b7053SJung-uk Kimlibraries, the global is instead a function which returns a pointer to a 341e71b7053SJung-uk Kimstatic variable. 342e71b7053SJung-uk Kim 343e71b7053SJung-uk KimThe macro DECLARE_ASN1_FUNCTIONS() is typically used in header files 344e71b7053SJung-uk Kimto generate the function declarations. 345e71b7053SJung-uk Kim 346e71b7053SJung-uk KimThe macro IMPLEMENT_ASN1_FUNCTIONS() is used once in a source file 347e71b7053SJung-uk Kimto generate the function bodies. 348e71b7053SJung-uk Kim 349e71b7053SJung-uk Kim 350b077aed3SPierre ProncheryB<I<TYPE>_new>() allocates an empty object of the indicated type. 351b077aed3SPierre ProncheryThe object returned must be released by calling B<I<TYPE>_free>(). 352e71b7053SJung-uk Kim 353aa795734SPierre ProncheryB<I<TYPE>_new_ex>() is similar to B<I<TYPE>_new>() but also passes the 354b077aed3SPierre Proncherylibrary context I<libctx> and the property query I<propq> to use when retrieving 355b077aed3SPierre Proncheryalgorithms from providers. This created object can then be used when loading 356b077aed3SPierre Proncherybinary data using B<d2i_I<TYPE>>(). 357e71b7053SJung-uk Kim 358b077aed3SPierre ProncheryB<I<TYPE>_dup>() copies an existing object, leaving it untouched. 359e0c4386eSCy SchubertNote, however, that the internal representation of the object 360e0c4386eSCy Schubertmay contain (besides the ASN.1 structure) further data, which is not copied. 361e0c4386eSCy SchubertFor instance, an B<X509> object usually is augmented by cached information 362e0c4386eSCy Schuberton X.509v3 extensions, etc., and losing it can lead to wrong validation results. 363e0c4386eSCy SchubertTo avoid such situations, better use B<I<TYPE>_up_ref>() if available. 364e0c4386eSCy SchubertFor the case of B<X509> objects, an alternative to using L<X509_up_ref(3)> 365e0c4386eSCy Schubertmay be to still call B<I<TYPE>_dup>(), e.g., I<copied_cert = X509_dup(cert)>, 366e0c4386eSCy Schubertfollowed by I<X509_check_purpose(copied_cert, -1, 0)>, 367e0c4386eSCy Schubertwhich re-builds the cached data. 368b077aed3SPierre Pronchery 369b077aed3SPierre ProncheryB<I<TYPE>_free>() releases the object and all pointers and sub-objects 370*a7148ab3SEnji Cooperwithin it. If the argument is NULL, nothing is done. 371e71b7053SJung-uk Kim 372b077aed3SPierre ProncheryB<I<TYPE>_print_ctx>() prints the object I<a> on the specified BIO I<out>. 373b077aed3SPierre ProncheryEach line will be prefixed with I<indent> spaces. 374b077aed3SPierre ProncheryThe I<pctx> specifies the printing context and is for internal 375e71b7053SJung-uk Kimuse; use NULL to get the default behavior. If a print function is 376b077aed3SPierre Proncheryuser-defined, then pass in any I<pctx> down to any nested calls. 377e71b7053SJung-uk Kim 378e71b7053SJung-uk Kim=head1 RETURN VALUES 379e71b7053SJung-uk Kim 380b077aed3SPierre ProncheryB<I<TYPE>_new>(), B<I<TYPE>_new_ex>() and B<I<TYPE>_dup>() return a pointer to 381b077aed3SPierre Proncherythe object or NULL on failure. 382e71b7053SJung-uk Kim 383b077aed3SPierre ProncheryB<I<TYPE>_print_ctx>() returns 1 on success or zero on failure. 384b077aed3SPierre Pronchery 385e0c4386eSCy Schubert=head1 SEE ALSO 386e0c4386eSCy Schubert 387e0c4386eSCy SchubertL<X509_up_ref(3)> 388e0c4386eSCy Schubert 389b077aed3SPierre Pronchery=head1 HISTORY 390b077aed3SPierre Pronchery 391b077aed3SPierre ProncheryThe functions X509_REQ_new_ex(), X509_CRL_new_ex(), PKCS7_new_ex() and 392b077aed3SPierre ProncheryCMS_ContentInfo_new_ex() were added in OpenSSL 3.0. 393b077aed3SPierre Pronchery 394b077aed3SPierre ProncheryThe functions DSAparams_dup(), RSAPrivateKey_dup() and RSAPublicKey_dup() were 395b077aed3SPierre Proncherydeprecated in 3.0. 396e71b7053SJung-uk Kim 397e71b7053SJung-uk Kim=head1 COPYRIGHT 398e71b7053SJung-uk Kim 399e0c4386eSCy SchubertCopyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. 400e71b7053SJung-uk Kim 401b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License"). You may not use 402e71b7053SJung-uk Kimthis file except in compliance with the License. You can obtain a copy 403e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at 404e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>. 405e71b7053SJung-uk Kim 406e71b7053SJung-uk Kim=cut 407