1=pod 2 3=head1 NAME 4 5DECLARE_ASN1_FUNCTIONS, 6IMPLEMENT_ASN1_FUNCTIONS, 7ASN1_ITEM, 8ACCESS_DESCRIPTION_free, 9ACCESS_DESCRIPTION_new, 10ADMISSIONS_free, 11ADMISSIONS_new, 12ADMISSION_SYNTAX_free, 13ADMISSION_SYNTAX_new, 14ASIdOrRange_free, 15ASIdOrRange_new, 16ASIdentifierChoice_free, 17ASIdentifierChoice_new, 18ASIdentifiers_free, 19ASIdentifiers_new, 20ASRange_free, 21ASRange_new, 22AUTHORITY_INFO_ACCESS_free, 23AUTHORITY_INFO_ACCESS_new, 24AUTHORITY_KEYID_free, 25AUTHORITY_KEYID_new, 26BASIC_CONSTRAINTS_free, 27BASIC_CONSTRAINTS_new, 28CERTIFICATEPOLICIES_free, 29CERTIFICATEPOLICIES_new, 30CMS_ContentInfo_free, 31CMS_ContentInfo_new, 32CMS_ContentInfo_new_ex, 33CMS_ContentInfo_print_ctx, 34CMS_EnvelopedData_it, 35CMS_ReceiptRequest_free, 36CMS_ReceiptRequest_new, 37CMS_SignedData_free, 38CMS_SignedData_new, 39CRL_DIST_POINTS_free, 40CRL_DIST_POINTS_new, 41DIRECTORYSTRING_free, 42DIRECTORYSTRING_new, 43DISPLAYTEXT_free, 44DISPLAYTEXT_new, 45DIST_POINT_NAME_free, 46DIST_POINT_NAME_new, 47DIST_POINT_NAME_dup, 48DIST_POINT_free, 49DIST_POINT_new, 50DSAparams_dup, 51ECPARAMETERS_free, 52ECPARAMETERS_new, 53ECPKPARAMETERS_free, 54ECPKPARAMETERS_new, 55EDIPARTYNAME_free, 56EDIPARTYNAME_new, 57ESS_CERT_ID_dup, 58ESS_CERT_ID_free, 59ESS_CERT_ID_new, 60ESS_CERT_ID_V2_dup, 61ESS_CERT_ID_V2_free, 62ESS_CERT_ID_V2_new, 63ESS_ISSUER_SERIAL_dup, 64ESS_ISSUER_SERIAL_free, 65ESS_ISSUER_SERIAL_new, 66ESS_SIGNING_CERT_dup, 67ESS_SIGNING_CERT_free, 68ESS_SIGNING_CERT_it, 69ESS_SIGNING_CERT_new, 70ESS_SIGNING_CERT_V2_dup, 71ESS_SIGNING_CERT_V2_free, 72ESS_SIGNING_CERT_V2_it, 73ESS_SIGNING_CERT_V2_new, 74EXTENDED_KEY_USAGE_free, 75EXTENDED_KEY_USAGE_new, 76GENERAL_NAMES_free, 77GENERAL_NAMES_new, 78GENERAL_NAME_dup, 79GENERAL_NAME_free, 80GENERAL_NAME_new, 81GENERAL_SUBTREE_free, 82GENERAL_SUBTREE_new, 83OSSL_IETF_ATTR_SYNTAX_free, 84OSSL_IETF_ATTR_SYNTAX_it, 85OSSL_IETF_ATTR_SYNTAX_new, 86IPAddressChoice_free, 87IPAddressChoice_new, 88IPAddressFamily_free, 89IPAddressFamily_new, 90IPAddressOrRange_free, 91IPAddressOrRange_new, 92IPAddressRange_free, 93IPAddressRange_new, 94ISSUER_SIGN_TOOL_free, 95ISSUER_SIGN_TOOL_it, 96ISSUER_SIGN_TOOL_new, 97ISSUING_DIST_POINT_free, 98ISSUING_DIST_POINT_it, 99ISSUING_DIST_POINT_new, 100NAME_CONSTRAINTS_free, 101NAME_CONSTRAINTS_new, 102NAMING_AUTHORITY_free, 103NAMING_AUTHORITY_new, 104NETSCAPE_CERT_SEQUENCE_free, 105NETSCAPE_CERT_SEQUENCE_new, 106NETSCAPE_SPKAC_free, 107NETSCAPE_SPKAC_new, 108NETSCAPE_SPKI_free, 109NETSCAPE_SPKI_new, 110NOTICEREF_free, 111NOTICEREF_new, 112OCSP_BASICRESP_free, 113OCSP_BASICRESP_new, 114OCSP_CERTID_dup, 115OCSP_CERTID_new, 116OCSP_CERTSTATUS_free, 117OCSP_CERTSTATUS_new, 118OCSP_CRLID_free, 119OCSP_CRLID_new, 120OCSP_ONEREQ_free, 121OCSP_ONEREQ_new, 122OCSP_REQINFO_free, 123OCSP_REQINFO_new, 124OCSP_RESPBYTES_free, 125OCSP_RESPBYTES_new, 126OCSP_RESPDATA_free, 127OCSP_RESPDATA_new, 128OCSP_RESPID_free, 129OCSP_RESPID_new, 130OCSP_RESPONSE_new, 131OCSP_REVOKEDINFO_free, 132OCSP_REVOKEDINFO_new, 133OCSP_SERVICELOC_free, 134OCSP_SERVICELOC_new, 135OCSP_SIGNATURE_free, 136OCSP_SIGNATURE_new, 137OCSP_SINGLERESP_free, 138OCSP_SINGLERESP_new, 139OSSL_ATTRIBUTES_SYNTAX_free, 140OSSL_ATTRIBUTES_SYNTAX_it, 141OSSL_ATTRIBUTES_SYNTAX_new, 142OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_free, 143OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_it, 144OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_new, 145OSSL_BASIC_ATTR_CONSTRAINTS_free, 146OSSL_BASIC_ATTR_CONSTRAINTS_it, 147OSSL_BASIC_ATTR_CONSTRAINTS_new, 148OSSL_CMP_ATAVS_new, 149OSSL_CMP_ATAVS_free, 150OSSL_CMP_ATAVS_it, 151OSSL_CMP_CRLSTATUS_free, 152OSSL_CMP_ITAV_dup, 153OSSL_CMP_ITAV_free, 154OSSL_CMP_MSG_dup, 155OSSL_CMP_MSG_it, 156OSSL_CMP_MSG_free, 157OSSL_CMP_PKIHEADER_free, 158OSSL_CMP_PKIHEADER_it, 159OSSL_CMP_PKIHEADER_new, 160OSSL_CMP_PKISI_dup, 161OSSL_CMP_PKISI_free, 162OSSL_CMP_PKISI_it, 163OSSL_CMP_PKISI_new, 164OSSL_CMP_PKISTATUS_it, 165OSSL_CRMF_CERTID_dup, 166OSSL_CRMF_CERTID_free, 167OSSL_CRMF_CERTID_it, 168OSSL_CRMF_CERTID_new, 169OSSL_CRMF_CERTTEMPLATE_free, 170OSSL_CRMF_CERTTEMPLATE_it, 171OSSL_CRMF_CERTTEMPLATE_new, 172OSSL_CRMF_CERTTEMPLATE_dup, 173OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup, 174OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free, 175OSSL_CRMF_ENCRYPTEDVALUE_free, 176OSSL_CRMF_ENCRYPTEDVALUE_it, 177OSSL_CRMF_ENCRYPTEDVALUE_new, 178OSSL_CRMF_MSGS_free, 179OSSL_CRMF_MSGS_it, 180OSSL_CRMF_MSGS_new, 181OSSL_CRMF_MSG_dup, 182OSSL_CRMF_MSG_free, 183OSSL_CRMF_MSG_it, 184OSSL_CRMF_MSG_new, 185OSSL_CRMF_PBMPARAMETER_free, 186OSSL_CRMF_PBMPARAMETER_it, 187OSSL_CRMF_PBMPARAMETER_new, 188OSSL_CRMF_PKIPUBLICATIONINFO_free, 189OSSL_CRMF_PKIPUBLICATIONINFO_it, 190OSSL_CRMF_PKIPUBLICATIONINFO_new, 191OSSL_CRMF_SINGLEPUBINFO_free, 192OSSL_CRMF_SINGLEPUBINFO_it, 193OSSL_CRMF_SINGLEPUBINFO_new, 194OSSL_TARGET_CERT_free, 195OSSL_TARGET_CERT_it, 196OSSL_TARGET_CERT_new, 197OSSL_TARGET_free, 198OSSL_TARGET_it, 199OSSL_TARGET_new, 200OSSL_TARGETING_INFORMATION_free, 201OSSL_TARGETING_INFORMATION_it, 202OSSL_TARGETING_INFORMATION_new, 203OSSL_TARGETS_free, 204OSSL_TARGETS_it, 205OSSL_TARGETS_new, 206OSSL_IETF_ATTR_SYNTAX_VALUE_free, 207OSSL_IETF_ATTR_SYNTAX_VALUE_it, 208OSSL_IETF_ATTR_SYNTAX_VALUE_new, 209OSSL_ISSUER_SERIAL_free, 210OSSL_ISSUER_SERIAL_new, 211OSSL_OBJECT_DIGEST_INFO_free, 212OSSL_OBJECT_DIGEST_INFO_new, 213OSSL_ROLE_SPEC_CERT_ID_free, 214OSSL_ROLE_SPEC_CERT_ID_new, 215OSSL_ROLE_SPEC_CERT_ID_it, 216OSSL_ROLE_SPEC_CERT_ID_SYNTAX_free, 217OSSL_ROLE_SPEC_CERT_ID_SYNTAX_new, 218OSSL_ROLE_SPEC_CERT_ID_SYNTAX_it, 219OSSL_USER_NOTICE_SYNTAX_free, 220OSSL_USER_NOTICE_SYNTAX_new, 221OSSL_USER_NOTICE_SYNTAX_it, 222OTHERNAME_free, 223OTHERNAME_new, 224PBE2PARAM_free, 225PBE2PARAM_new, 226PBEPARAM_free, 227PBEPARAM_new, 228PBKDF2PARAM_free, 229PBKDF2PARAM_new, 230PBMAC1PARAM_free, 231PBMAC1PARAM_it, 232PBMAC1PARAM_new, 233PKCS12_BAGS_free, 234PKCS12_BAGS_new, 235PKCS12_MAC_DATA_free, 236PKCS12_MAC_DATA_new, 237PKCS12_SAFEBAG_free, 238PKCS12_SAFEBAG_new, 239PKCS12_free, 240PKCS12_new, 241PKCS7_DIGEST_free, 242PKCS7_DIGEST_new, 243PKCS7_ENCRYPT_free, 244PKCS7_ENCRYPT_new, 245PKCS7_ENC_CONTENT_free, 246PKCS7_ENC_CONTENT_new, 247PKCS7_ENVELOPE_free, 248PKCS7_ENVELOPE_new, 249PKCS7_ISSUER_AND_SERIAL_free, 250PKCS7_ISSUER_AND_SERIAL_new, 251PKCS7_RECIP_INFO_free, 252PKCS7_RECIP_INFO_new, 253PKCS7_SIGNED_free, 254PKCS7_SIGNED_new, 255PKCS7_SIGNER_INFO_free, 256PKCS7_SIGNER_INFO_new, 257PKCS7_SIGN_ENVELOPE_free, 258PKCS7_SIGN_ENVELOPE_new, 259PKCS7_dup, 260PKCS7_free, 261PKCS7_new_ex, 262PKCS7_new, 263PKCS7_print_ctx, 264PKCS8_PRIV_KEY_INFO_free, 265PKCS8_PRIV_KEY_INFO_new, 266PKEY_USAGE_PERIOD_free, 267PKEY_USAGE_PERIOD_new, 268POLICYINFO_free, 269POLICYINFO_new, 270POLICYQUALINFO_free, 271POLICYQUALINFO_new, 272POLICY_CONSTRAINTS_free, 273POLICY_CONSTRAINTS_new, 274POLICY_MAPPING_free, 275POLICY_MAPPING_new, 276PROFESSION_INFOS_free, 277PROFESSION_INFOS_new, 278PROFESSION_INFO_free, 279PROFESSION_INFO_new, 280PROXY_CERT_INFO_EXTENSION_free, 281PROXY_CERT_INFO_EXTENSION_new, 282PROXY_POLICY_free, 283PROXY_POLICY_new, 284RSAPrivateKey_dup, 285RSAPublicKey_dup, 286RSA_OAEP_PARAMS_free, 287RSA_OAEP_PARAMS_new, 288RSA_PSS_PARAMS_free, 289RSA_PSS_PARAMS_new, 290RSA_PSS_PARAMS_dup, 291SCRYPT_PARAMS_free, 292SCRYPT_PARAMS_new, 293SXNETID_free, 294SXNETID_new, 295SXNET_free, 296SXNET_new, 297TLS_FEATURE_free, 298TLS_FEATURE_new, 299TS_ACCURACY_dup, 300TS_ACCURACY_free, 301TS_ACCURACY_new, 302TS_MSG_IMPRINT_dup, 303TS_MSG_IMPRINT_free, 304TS_MSG_IMPRINT_new, 305TS_REQ_dup, 306TS_REQ_free, 307TS_REQ_new, 308TS_RESP_dup, 309TS_RESP_free, 310TS_RESP_new, 311TS_STATUS_INFO_dup, 312TS_STATUS_INFO_free, 313TS_STATUS_INFO_new, 314TS_TST_INFO_dup, 315TS_TST_INFO_free, 316TS_TST_INFO_new, 317USERNOTICE_free, 318USERNOTICE_new, 319X509_ACERT_dup, 320X509_ACERT_free, 321X509_ACERT_it, 322X509_ACERT_new, 323X509_ACERT_INFO_free, 324X509_ACERT_INFO_it, 325X509_ACERT_INFO_new, 326X509_ACERT_ISSUER_V2FORM_free, 327X509_ACERT_ISSUER_V2FORM_new, 328X509_ALGOR_free, 329X509_ALGOR_it, 330X509_ALGOR_new, 331X509_ATTRIBUTE_dup, 332X509_ATTRIBUTE_free, 333X509_ATTRIBUTE_new, 334X509_CERT_AUX_free, 335X509_CERT_AUX_new, 336X509_CINF_free, 337X509_CINF_new, 338X509_CRL_INFO_free, 339X509_CRL_INFO_new, 340X509_CRL_dup, 341X509_CRL_free, 342X509_CRL_new_ex, 343X509_CRL_new, 344X509_EXTENSION_dup, 345X509_EXTENSION_free, 346X509_EXTENSION_new, 347X509_NAME_ENTRY_dup, 348X509_NAME_ENTRY_free, 349X509_NAME_ENTRY_new, 350X509_NAME_dup, 351X509_NAME_free, 352X509_NAME_new, 353X509_REQ_INFO_free, 354X509_REQ_INFO_new, 355X509_REQ_dup, 356X509_REQ_free, 357X509_REQ_new, 358X509_REQ_new_ex, 359X509_REVOKED_dup, 360X509_REVOKED_free, 361X509_REVOKED_new, 362X509_SIG_free, 363X509_SIG_new, 364X509_VAL_free, 365X509_VAL_new, 366X509_dup, 367- ASN1 object utilities 368 369=head1 SYNOPSIS 370 371=for openssl generic 372 373 #include <openssl/asn1t.h> 374 375 DECLARE_ASN1_FUNCTIONS(type) 376 IMPLEMENT_ASN1_FUNCTIONS(stname) 377 378 typedef struct ASN1_ITEM_st ASN1_ITEM; 379 380 extern const ASN1_ITEM TYPE_it; 381 TYPE *TYPE_new(void); 382 TYPE *TYPE_dup(const TYPE *a); 383 void TYPE_free(TYPE *a); 384 int TYPE_print_ctx(BIO *out, TYPE *a, int indent, const ASN1_PCTX *pctx); 385 386The following functions have been deprecated since OpenSSL 3.0, and can be 387hidden entirely by defining B<OPENSSL_API_COMPAT> with a suitable version value, 388see L<openssl_user_macros(7)>: 389 390 DSA *DSAparams_dup(const DSA *dsa); 391 RSA *RSAPrivateKey_dup(const RSA *rsa); 392 RSA *RSAPublicKey_dup(const RSA *rsa); 393 394=head1 DESCRIPTION 395 396In the description below, B<I<TYPE>> is used 397as a placeholder for any of the OpenSSL datatypes, such as B<X509>. 398 399The OpenSSL ASN1 parsing library templates are like a data-driven bytecode 400interpreter. 401Every ASN1 object as a global variable, TYPE_it, that describes the item 402such as its fields. (On systems which cannot export variables from shared 403libraries, the global is instead a function which returns a pointer to a 404static variable. 405 406The macro DECLARE_ASN1_FUNCTIONS() is typically used in header files 407to generate the function declarations. 408 409The macro IMPLEMENT_ASN1_FUNCTIONS() is used once in a source file 410to generate the function bodies. 411 412 413B<I<TYPE>_new>() allocates an empty object of the indicated type. 414The object returned must be released by calling B<I<TYPE>_free>(). 415 416B<I<TYPE>_new_ex>() is similar to B<I<TYPE>_new>() but also passes the 417library context I<libctx> and the property query I<propq> to use when retrieving 418algorithms from providers. This created object can then be used when loading 419binary data using B<d2i_I<TYPE>>(). 420 421B<I<TYPE>_dup>() copies an existing object, leaving it untouched. 422Note, however, that the internal representation of the object 423may contain (besides the ASN.1 structure) further data, which is not copied. 424For instance, an B<X509> object usually is augmented by cached information 425on X.509v3 extensions, etc., and losing it can lead to wrong validation results. 426To avoid such situations, better use B<I<TYPE>_up_ref>() if available. 427For the case of B<X509> objects, an alternative to using L<X509_up_ref(3)> 428may be to still call B<I<TYPE>_dup>(), e.g., I<copied_cert = X509_dup(cert)>, 429followed by I<X509_check_purpose(copied_cert, -1, 0)>, 430which re-builds the cached data. 431 432B<I<TYPE>_free>() releases the object and all pointers and sub-objects 433within it. If the argument is NULL, nothing is done. 434 435B<I<TYPE>_print_ctx>() prints the object I<a> on the specified BIO I<out>. 436Each line will be prefixed with I<indent> spaces. 437The I<pctx> specifies the printing context and is for internal 438use; use NULL to get the default behavior. If a print function is 439user-defined, then pass in any I<pctx> down to any nested calls. 440 441=head1 RETURN VALUES 442 443B<I<TYPE>_new>(), B<I<TYPE>_new_ex>() and B<I<TYPE>_dup>() return a pointer to 444the object or NULL on failure. 445 446B<I<TYPE>_print_ctx>() returns 1 on success or zero on failure. 447 448=head1 SEE ALSO 449 450L<X509_up_ref(3)> 451 452=head1 HISTORY 453 454The functions X509_REQ_new_ex(), X509_CRL_new_ex(), PKCS7_new_ex() and 455CMS_ContentInfo_new_ex() were added in OpenSSL 3.0. 456 457The functions DSAparams_dup(), RSAPrivateKey_dup() and RSAPublicKey_dup() were 458deprecated in 3.0. 459 460=head1 COPYRIGHT 461 462Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. 463 464Licensed under the Apache License 2.0 (the "License"). You may not use 465this file except in compliance with the License. You can obtain a copy 466in the file LICENSE in the source distribution or at 467L<https://www.openssl.org/source/license.html>. 468 469=cut 470