X509_DUP(3ossl)
π X509_DUP (3ossl) π
ok so real talk: this is the OpenSSL manual page for ASN1 object utilities, and the file is literally called X509_DUP but it's about, like, everything. It's the group chat where all the _new, _free, _dup, _print_ctx and _it friends live π«Ά It's long enough that we're splitting it β this is part 1, so don't close the tab, bestie.
β¨ NAME β¨
bestie. the NAME section is a wall. it's giving phone book. But we do not gatekeep, so here is the entire squad, character for character, no edits, no cap π Every single one of these is covered by this page, and the last line (- ASN1 object utilities) is part of the original list too, so it stays.
DECLARE_ASN1_FUNCTIONS, IMPLEMENT_ASN1_FUNCTIONS, ASN1_ITEM,
ACCESS_DESCRIPTION_free, ACCESS_DESCRIPTION_new, ADMISSIONS_free,
ADMISSIONS_new, ADMISSION_SYNTAX_free, ADMISSION_SYNTAX_new,
ASIdOrRange_free, ASIdOrRange_new, ASIdentifierChoice_free,
ASIdentifierChoice_new, ASIdentifiers_free, ASIdentifiers_new,
ASRange_free, ASRange_new, AUTHORITY_INFO_ACCESS_free,
AUTHORITY_INFO_ACCESS_new, AUTHORITY_KEYID_free, AUTHORITY_KEYID_new,
BASIC_CONSTRAINTS_free, BASIC_CONSTRAINTS_new, CERTIFICATEPOLICIES_free,
CERTIFICATEPOLICIES_new, CMS_ContentInfo_free, CMS_ContentInfo_new,
CMS_ContentInfo_new_ex, CMS_ContentInfo_print_ctx, CMS_EnvelopedData_it,
CMS_EnvelopedData_dup, CMS_ReceiptRequest_free, CMS_ReceiptRequest_new,
CMS_SignedData_free, CMS_SignedData_new, CRL_DIST_POINTS_free,
CRL_DIST_POINTS_new, DIRECTORYSTRING_free, DIRECTORYSTRING_new,
DISPLAYTEXT_free, DISPLAYTEXT_new, DIST_POINT_NAME_free,
DIST_POINT_NAME_new, DIST_POINT_NAME_dup, DIST_POINT_free,
DIST_POINT_new, DSAparams_dup, ECPARAMETERS_free, ECPARAMETERS_new,
ECPKPARAMETERS_free, ECPKPARAMETERS_new, EDIPARTYNAME_free,
EDIPARTYNAME_new, ESS_CERT_ID_dup, ESS_CERT_ID_free, ESS_CERT_ID_new,
ESS_CERT_ID_V2_dup, ESS_CERT_ID_V2_free, ESS_CERT_ID_V2_new,
ESS_ISSUER_SERIAL_dup, ESS_ISSUER_SERIAL_free, ESS_ISSUER_SERIAL_new,
ESS_SIGNING_CERT_dup, ESS_SIGNING_CERT_free, ESS_SIGNING_CERT_it,
ESS_SIGNING_CERT_new, ESS_SIGNING_CERT_V2_dup, ESS_SIGNING_CERT_V2_free,
ESS_SIGNING_CERT_V2_it, ESS_SIGNING_CERT_V2_new,
EXTENDED_KEY_USAGE_free, EXTENDED_KEY_USAGE_new, GENERAL_NAMES_free,
GENERAL_NAMES_new, GENERAL_NAME_dup, GENERAL_NAME_free,
GENERAL_NAME_new, GENERAL_SUBTREE_free, GENERAL_SUBTREE_new,
OSSL_IETF_ATTR_SYNTAX_free, OSSL_IETF_ATTR_SYNTAX_it,
OSSL_IETF_ATTR_SYNTAX_new, IPAddressChoice_free, IPAddressChoice_new,
IPAddressFamily_free, IPAddressFamily_new, IPAddressOrRange_free,
IPAddressOrRange_new, IPAddressRange_free, IPAddressRange_new,
ISSUER_SIGN_TOOL_free, ISSUER_SIGN_TOOL_it, ISSUER_SIGN_TOOL_new,
ISSUING_DIST_POINT_free, ISSUING_DIST_POINT_it, ISSUING_DIST_POINT_new,
NAME_CONSTRAINTS_free, NAME_CONSTRAINTS_new, NAMING_AUTHORITY_free,
NAMING_AUTHORITY_new, NETSCAPE_CERT_SEQUENCE_free,
NETSCAPE_CERT_SEQUENCE_new, NETSCAPE_SPKAC_free, NETSCAPE_SPKAC_new,
NETSCAPE_SPKI_free, NETSCAPE_SPKI_new, NOTICEREF_free, NOTICEREF_new,
OCSP_BASICRESP_free, OCSP_BASICRESP_new, OCSP_CERTID_dup,
OCSP_CERTID_new, OCSP_CERTSTATUS_free, OCSP_CERTSTATUS_new,
OCSP_CRLID_free, OCSP_CRLID_new, OCSP_ONEREQ_free, OCSP_ONEREQ_new,
OCSP_REQINFO_free, OCSP_REQINFO_new, OCSP_RESPBYTES_free,
OCSP_RESPBYTES_new, OCSP_RESPDATA_free, OCSP_RESPDATA_new,
OCSP_RESPID_free, OCSP_RESPID_new, OCSP_RESPONSE_new,
OCSP_REVOKEDINFO_free, OCSP_REVOKEDINFO_new, OCSP_SERVICELOC_free,
OCSP_SERVICELOC_new, OCSP_SIGNATURE_free, OCSP_SIGNATURE_new,
OCSP_SINGLERESP_free, OCSP_SINGLERESP_new, OSSL_AA_DIST_POINT_free,
OSSL_AA_DIST_POINT_new, OSSL_AA_DIST_POINT_it,
OSSL_ALLOWED_ATTRIBUTES_CHOICE_free, OSSL_ALLOWED_ATTRIBUTES_CHOICE_new,
OSSL_ALLOWED_ATTRIBUTES_CHOICE_it, OSSL_ALLOWED_ATTRIBUTES_ITEM_free,
OSSL_ALLOWED_ATTRIBUTES_ITEM_new, OSSL_ALLOWED_ATTRIBUTES_ITEM_it,
OSSL_ALLOWED_ATTRIBUTES_SYNTAX_free, OSSL_ALLOWED_ATTRIBUTES_SYNTAX_new,
OSSL_ALLOWED_ATTRIBUTES_SYNTAX_it, OSSL_ATAV_free, OSSL_ATAV_new,
OSSL_ATAV_it, OSSL_ATTRIBUTE_DESCRIPTOR_free,
OSSL_ATTRIBUTE_DESCRIPTOR_new, OSSL_ATTRIBUTE_DESCRIPTOR_it,
OSSL_ATTRIBUTE_MAPPING_free, OSSL_ATTRIBUTE_MAPPING_new,
OSSL_ATTRIBUTE_MAPPING_it, OSSL_ATTRIBUTE_MAPPINGS_free,
OSSL_ATTRIBUTE_MAPPINGS_new, OSSL_ATTRIBUTE_MAPPINGS_it,
OSSL_ATTRIBUTE_TYPE_MAPPING_free, OSSL_ATTRIBUTE_TYPE_MAPPING_new,
OSSL_ATTRIBUTE_TYPE_MAPPING_it, OSSL_ATTRIBUTE_VALUE_MAPPING_free,
OSSL_ATTRIBUTE_VALUE_MAPPING_new, OSSL_ATTRIBUTE_VALUE_MAPPING_it,
OSSL_ATTRIBUTES_SYNTAX_free, OSSL_ATTRIBUTES_SYNTAX_it,
OSSL_ATTRIBUTES_SYNTAX_new, OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_free,
OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_it,
OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_new,
OSSL_BASIC_ATTR_CONSTRAINTS_free, OSSL_BASIC_ATTR_CONSTRAINTS_it,
OSSL_BASIC_ATTR_CONSTRAINTS_new, OSSL_CMP_ATAVS_new,
OSSL_CMP_ATAVS_free, OSSL_CMP_ATAVS_it, OSSL_CMP_CRLSTATUS_free,
OSSL_CMP_ITAV_dup, OSSL_CMP_ITAV_free, OSSL_CMP_MSG_dup,
OSSL_CMP_MSG_it, OSSL_CMP_MSG_free, OSSL_CMP_PKIHEADER_free,
OSSL_CMP_PKIHEADER_it, OSSL_CMP_PKIHEADER_new, OSSL_CMP_PKISI_dup,
OSSL_CMP_PKISI_free, OSSL_CMP_PKISI_it, OSSL_CMP_PKISI_new,
OSSL_CMP_PKISTATUS_it, OSSL_CRMF_CERTID_dup, OSSL_CRMF_CERTID_free,
OSSL_CRMF_CERTID_it, OSSL_CRMF_CERTID_new, OSSL_CRMF_CERTTEMPLATE_free,
OSSL_CRMF_CERTTEMPLATE_it, OSSL_CRMF_CERTTEMPLATE_new,
OSSL_CRMF_CERTTEMPLATE_dup, OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup,
OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free, OSSL_CRMF_ENCRYPTEDKEY_free,
OSSL_CRMF_ENCRYPTEDKEY_it, OSSL_CRMF_ENCRYPTEDKEY_new,
OSSL_CRMF_ENCRYPTEDVALUE_free, OSSL_CRMF_ENCRYPTEDVALUE_it,
OSSL_CRMF_ENCRYPTEDVALUE_new, OSSL_CRMF_MSGS_free, OSSL_CRMF_MSGS_it,
OSSL_CRMF_MSGS_new, OSSL_CRMF_MSG_dup, OSSL_CRMF_MSG_free,
OSSL_CRMF_MSG_it, OSSL_CRMF_MSG_new, OSSL_CRMF_PBMPARAMETER_free,
OSSL_CRMF_PBMPARAMETER_it, OSSL_CRMF_PBMPARAMETER_new,
OSSL_CRMF_PKIPUBLICATIONINFO_free, OSSL_CRMF_PKIPUBLICATIONINFO_it,
OSSL_CRMF_PKIPUBLICATIONINFO_new, OSSL_CRMF_SINGLEPUBINFO_free,
OSSL_CRMF_SINGLEPUBINFO_it, OSSL_CRMF_SINGLEPUBINFO_new,
OSSL_DAY_TIME_free, OSSL_DAY_TIME_new, OSSL_DAY_TIME_it,
OSSL_DAY_TIME_BAND_free, OSSL_DAY_TIME_BAND_new, OSSL_DAY_TIME_BAND_it,
OSSL_HASH_free, OSSL_HASH_it, OSSL_HASH_new, OSSL_INFO_SYNTAX_free,
OSSL_INFO_SYNTAX_it, OSSL_INFO_SYNTAX_new,
OSSL_INFO_SYNTAX_POINTER_free, OSSL_INFO_SYNTAX_POINTER_it,
OSSL_INFO_SYNTAX_POINTER_new, OSSL_PRIVILEGE_POLICY_ID_free,
OSSL_PRIVILEGE_POLICY_ID_it, OSSL_PRIVILEGE_POLICY_ID_new,
OSSL_TARGET_CERT_free, OSSL_TARGET_CERT_it, OSSL_TARGET_CERT_new,
OSSL_TARGET_free, OSSL_TARGET_it, OSSL_TARGET_new,
OSSL_TARGETING_INFORMATION_free, OSSL_TARGETING_INFORMATION_it,
OSSL_TARGETING_INFORMATION_new, OSSL_TARGETS_free, OSSL_TARGETS_it,
OSSL_TARGETS_new, OSSL_IETF_ATTR_SYNTAX_VALUE_free,
OSSL_IETF_ATTR_SYNTAX_VALUE_it, OSSL_IETF_ATTR_SYNTAX_VALUE_new,
OSSL_ISSUER_SERIAL_free, OSSL_ISSUER_SERIAL_new, OSSL_NAMED_DAY_free,
OSSL_NAMED_DAY_new, OSSL_NAMED_DAY_it, OSSL_OBJECT_DIGEST_INFO_free,
OSSL_OBJECT_DIGEST_INFO_new, OSSL_ROLE_SPEC_CERT_ID_free,
OSSL_ROLE_SPEC_CERT_ID_new, OSSL_ROLE_SPEC_CERT_ID_it,
OSSL_ROLE_SPEC_CERT_ID_SYNTAX_free, OSSL_ROLE_SPEC_CERT_ID_SYNTAX_new,
OSSL_ROLE_SPEC_CERT_ID_SYNTAX_it, OSSL_TIME_PERIOD_free,
OSSL_TIME_PERIOD_new, OSSL_TIME_PERIOD_it, OSSL_TIME_SPEC_ABSOLUTE_free,
OSSL_TIME_SPEC_ABSOLUTE_new, OSSL_TIME_SPEC_ABSOLUTE_it,
OSSL_TIME_SPEC_free, OSSL_TIME_SPEC_new, OSSL_TIME_SPEC_it,
OSSL_TIME_SPEC_DAY_free, OSSL_TIME_SPEC_DAY_new, OSSL_TIME_SPEC_DAY_it,
OSSL_TIME_SPEC_MONTH_free, OSSL_TIME_SPEC_MONTH_new,
OSSL_TIME_SPEC_MONTH_it, OSSL_TIME_SPEC_TIME_free,
OSSL_TIME_SPEC_TIME_new, OSSL_TIME_SPEC_TIME_it,
OSSL_TIME_SPEC_WEEKS_free, OSSL_TIME_SPEC_WEEKS_new,
OSSL_TIME_SPEC_WEEKS_it, OSSL_TIME_SPEC_X_DAY_OF_free,
OSSL_TIME_SPEC_X_DAY_OF_new, OSSL_TIME_SPEC_X_DAY_OF_it,
OSSL_USER_NOTICE_SYNTAX_free, OSSL_USER_NOTICE_SYNTAX_new,
OSSL_USER_NOTICE_SYNTAX_it, OTHERNAME_free, OTHERNAME_new,
PBE2PARAM_free, PBE2PARAM_new, PBEPARAM_free, PBEPARAM_new,
PBKDF2PARAM_free, PBKDF2PARAM_new, PBMAC1PARAM_free, PBMAC1PARAM_it,
PBMAC1PARAM_new, PKCS12_BAGS_free, PKCS12_BAGS_new,
PKCS12_MAC_DATA_free, PKCS12_MAC_DATA_new, PKCS12_SAFEBAG_free,
PKCS12_SAFEBAG_new, PKCS12_free, PKCS12_new, PKCS7_DIGEST_free,
PKCS7_DIGEST_new, PKCS7_ENCRYPT_free, PKCS7_ENCRYPT_new,
PKCS7_ENC_CONTENT_free, PKCS7_ENC_CONTENT_new, PKCS7_ENVELOPE_free,
PKCS7_ENVELOPE_new, PKCS7_ISSUER_AND_SERIAL_free,
PKCS7_ISSUER_AND_SERIAL_new, PKCS7_RECIP_INFO_free,
PKCS7_RECIP_INFO_new, PKCS7_SIGNED_free, PKCS7_SIGNED_new,
PKCS7_SIGNER_INFO_free, PKCS7_SIGNER_INFO_new, PKCS7_SIGN_ENVELOPE_free,
PKCS7_SIGN_ENVELOPE_new, PKCS7_dup, PKCS7_free, PKCS7_new_ex, PKCS7_new,
PKCS7_print_ctx, PKCS8_PRIV_KEY_INFO_free, PKCS8_PRIV_KEY_INFO_new,
PKEY_USAGE_PERIOD_free, PKEY_USAGE_PERIOD_new, POLICYINFO_free,
POLICYINFO_new, POLICYQUALINFO_free, POLICYQUALINFO_new,
POLICY_CONSTRAINTS_free, POLICY_CONSTRAINTS_new, POLICY_MAPPING_free,
POLICY_MAPPING_new, PROFESSION_INFOS_free, PROFESSION_INFOS_new,
PROFESSION_INFO_free, PROFESSION_INFO_new,
PROXY_CERT_INFO_EXTENSION_free, PROXY_CERT_INFO_EXTENSION_new,
PROXY_POLICY_free, PROXY_POLICY_new, RSAPrivateKey_dup,
RSAPublicKey_dup, RSA_OAEP_PARAMS_free, RSA_OAEP_PARAMS_new,
RSA_PSS_PARAMS_free, RSA_PSS_PARAMS_new, RSA_PSS_PARAMS_dup,
SCRYPT_PARAMS_free, SCRYPT_PARAMS_new, SXNETID_free, SXNETID_new,
SXNET_free, SXNET_new, TLS_FEATURE_free, TLS_FEATURE_new,
TS_ACCURACY_dup, TS_ACCURACY_free, TS_ACCURACY_new, TS_MSG_IMPRINT_dup,
TS_MSG_IMPRINT_free, TS_MSG_IMPRINT_new, TS_REQ_dup, TS_REQ_free,
TS_REQ_new, TS_RESP_dup, TS_RESP_free, TS_RESP_new, TS_STATUS_INFO_dup,
TS_STATUS_INFO_free, TS_STATUS_INFO_new, TS_TST_INFO_dup,
TS_TST_INFO_free, TS_TST_INFO_new, USERNOTICE_free, USERNOTICE_new,
X509_ACERT_dup, X509_ACERT_free, X509_ACERT_it, X509_ACERT_new,
X509_ACERT_INFO_free, X509_ACERT_INFO_it, X509_ACERT_INFO_new,
X509_ACERT_ISSUER_V2FORM_free, X509_ACERT_ISSUER_V2FORM_new,
X509_ALGOR_free, X509_ALGOR_it, X509_ALGOR_new, X509_ATTRIBUTE_dup,
X509_ATTRIBUTE_free, X509_ATTRIBUTE_new, X509_CERT_AUX_free,
X509_CERT_AUX_new, X509_CINF_free, X509_CINF_new, X509_CRL_INFO_free,
X509_CRL_INFO_new, X509_CRL_dup, X509_CRL_free, X509_CRL_new_ex,
X509_CRL_new, X509_EXTENSION_dup, X509_EXTENSION_free,
X509_EXTENSION_new, X509_NAME_ENTRY_dup, X509_NAME_ENTRY_free,
X509_NAME_ENTRY_new, X509_NAME_dup, X509_NAME_free, X509_NAME_new,
X509_REQ_INFO_free, X509_REQ_INFO_new, X509_REQ_dup, X509_REQ_free,
X509_REQ_new, X509_REQ_new_ex, X509_REVOKED_dup, X509_REVOKED_free,
X509_REVOKED_new, X509_SIG_free, X509_SIG_new, X509_VAL_free,
X509_VAL_new, X509_dup, - ASN1 object utilities
yeah. iconic. moving on π
π¦ SYNOPSIS π¦
first thing first β you gotta pull in the header, and it's the ASN1 template one:
#include <openssl/asn1t.h>
then the two macro besties that do the whole "generate my functions for me" thing (note the different argument names, that's not a typo, that's how the original rolls):
DECLARE_ASN1_FUNCTIONS(type)
IMPLEMENT_ASN1_FUNCTIONS(stname)
then the ASN1_ITEM type itself, which is a typedef of an opaque-ish struct β ASN1_ITEM_st, starring as ASN1_ITEM:
typedef struct ASN1_ITEM_st ASN1_ITEM;
aaaaand here's the generic shape of literally everything in that giant NAME list π«Ά one TYPE_it handle, then _new, _dup, _free, and _print_ctx. _dup takes a const TYPE *a, and _print_ctx takes a BIO *out, an int indent, and a const ASN1_PCTX *pctx:
extern const ASN1_ITEM TYPE_it;
TYPE *TYPE_new(void);
TYPE *TYPE_dup(const TYPE *a);
void TYPE_free(TYPE *a);
int TYPE_print_ctx(BIO *out, TYPE *a, int indent, const ASN1_PCTX *pctx);
okay so β οΈ heads up, the next three are deprecated since OpenSSL 3.0, and you can hide them entirely by definingOPENSSL_API_COMPATwith a suitable version value β the page points you atopenssl_user_macros(7)for that. not me warning you before you get attached π
DSA *DSAparams_dup(const DSA *dsa);
RSA *RSAPrivateKey_dup(const RSA *rsa);
RSA *RSAPublicKey_dup(const RSA *rsa);
ok that's the header, the whole name-drop section, and the synopsis β and we're literally just getting started, bestie. the rest of this page is coming up next πΈ don't go anywhere.
π« DESCRIPTION π«
okay so before we get into it β in everything below, TYPE is literally just a placeholder, bestie. Swap it out for any OpenSSL datatype, like X509. That's it, that's the whole bit. π
The OpenSSL ASN1 parsing library templates are basically a data-driven bytecode interpreter β yes, that's the actual vibe, and yes it slaps.
Every ASN1 object has a global variable, TYPE_it, that describes the item, like its fields. Small footnote though, and it matters: on systems that can't export variables from shared libraries, that global is instead a function which returns a pointer to a static variable. π
The macro DECLARE_ASN1_FUNCTIONS() is typically used in header files to generate the function declarations.
The macro IMPLEMENT_ASN1_FUNCTIONS() is used once in a source file to generate the function bodies.
TYPE_new() allocates an empty object of the indicated type. The object you get back must be released by calling TYPE_free(). no leaks, we don't do that here π
TYPE_new_ex() is similar to TYPE_new() but it also passes the library context libctx and the property query propq to use when retrieving algorithms from providers. This created object can then be used when loading binary data using d2i_TYPE().
TYPE_dup() copies an existing object, leaving it untouched. Cute, right? πΈ But β and here's the plot twist β the internal representation of the object may contain (besides the ASN.1 structure) further data, which is not copied. Like, an X509 object usually is augmented by cached information on X.509v3 extensions, etc., and losing it can lead to wrong validation results. π So to avoid such situations, better use TYPE_up_ref() if available.
For the case of X509 objects, an alternative to using X509_up_ref(3) may be to still call TYPE_dup(), e.g.
copied_cert = X509_dup(cert)
followed by
X509_check_purpose(copied_cert, -1, 0)
which re-builds the cached data. icon behaviour honestly β¨
TYPE_free() releases the object and all pointers and sub-objects within it. If the argument is NULL, nothing is done β it just shrugs and moves on. π«Ά
TYPE_print_ctx() prints the object a on the specified BIO out. Each line will be prefixed with indent spaces. The pctx specifies the printing context and is for internal use; use NULL to get the default behavior. If a print function is user-defined, then pass in any pctx down to any nested calls. iykyk π§
π«§ RETURN VALUES π«§
TYPE_new(), TYPE_new_ex() and TYPE_dup() return a pointer to the object or NULL on failure.
TYPE_print_ctx() returns 1 on success or zero on failure.
π SEE ALSO π
π HISTORY π
okay this is the long one, buckle up bestie, we're going in order and no cap we are not skipping anybody π
The functions X509_REQ_new_ex(), X509_CRL_new_ex(), PKCS7_new_ex() and CMS_ContentInfo_new_ex() were added in OpenSSL 3.0.
The functions DSAparams_dup(), RSAPrivateKey_dup() and RSAPublicKey_dup() were deprecated in 3.0.
CMS_EnvelopedData_it(), CMS_SignedData_free(), CMS_SignedData_new() were added in OpenSSL 3.2.
The following were added in OpenSSL 3.4: DIST_POINT_NAME_dup(), OSSL_IETF_ATTR_SYNTAX_free(), OSSL_IETF_ATTR_SYNTAX_it(), OSSL_IETF_ATTR_SYNTAX_new(), OSSL_ATTRIBUTES_SYNTAX_free(), OSSL_ATTRIBUTES_SYNTAX_it(), OSSL_ATTRIBUTES_SYNTAX_new(), OSSL_BASIC_ATTR_CONSTRAINTS_free(), OSSL_BASIC_ATTR_CONSTRAINTS_it(), OSSL_BASIC_ATTR_CONSTRAINTS_new(), OSSL_CMP_ATAVS_new(), OSSL_CMP_ATAVS_free(), OSSL_CMP_ATAVS_it(), OSSL_CMP_CRLSTATUS_free(), OSSL_CRMF_CERTTEMPLATE_dup(), OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(), OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(), OSSL_TARGET_free(), OSSL_TARGET_it(), OSSL_TARGET_new(), OSSL_TARGETING_INFORMATION_free(), OSSL_TARGETING_INFORMATION_it(), OSSL_TARGETING_INFORMATION_new(), OSSL_TARGETS_free(), OSSL_TARGETS_it(), OSSL_TARGETS_new(), OSSL_IETF_ATTR_SYNTAX_VALUE_free(), OSSL_IETF_ATTR_SYNTAX_VALUE_it(), OSSL_IETF_ATTR_SYNTAX_VALUE_new(), OSSL_ISSUER_SERIAL_free(), OSSL_ISSUER_SERIAL_new(), OSSL_OBJECT_DIGEST_INFO_free(), OSSL_OBJECT_DIGEST_INFO_new(), OSSL_USER_NOTICE_SYNTAX_free(), OSSL_USER_NOTICE_SYNTAX_new(), OSSL_USER_NOTICE_SYNTAX_it(), PBMAC1PARAM_free(), PBMAC1PARAM_it(), PBMAC1PARAM_new(), X509_ACERT_dup(), X509_ACERT_free(), X509_ACERT_it(), X509_ACERT_new(), X509_ACERT_INFO_free(), X509_ACERT_INFO_it(), X509_ACERT_INFO_new(), X509_ACERT_ISSUER_V2FORM_free(), X509_ACERT_ISSUER_V2FORM_new().
And these absolute icons landed in OpenSSL 3.5: OSSL_AA_DIST_POINT_free(), OSSL_AA_DIST_POINT_new(), OSSL_AA_DIST_POINT_it(), OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(), OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(), OSSL_ALLOWED_ATTRIBUTES_CHOICE_it(), OSSL_ALLOWED_ATTRIBUTES_ITEM_free(), OSSL_ALLOWED_ATTRIBUTES_ITEM_new(), OSSL_ALLOWED_ATTRIBUTES_ITEM_it(), OSSL_ALLOWED_ATTRIBUTES_SYNTAX_free(), OSSL_ALLOWED_ATTRIBUTES_SYNTAX_new(), OSSL_ALLOWED_ATTRIBUTES_SYNTAX_it(), OSSL_ATAV_free(), OSSL_ATAV_it(), OSSL_ATAV_new(), OSSL_ATTRIBUTE_DESCRIPTOR_free(), OSSL_ATTRIBUTE_DESCRIPTOR_new(), OSSL_ATTRIBUTE_DESCRIPTOR_it(), OSSL_ATTRIBUTE_MAPPINGS_free(), OSSL_ATTRIBUTE_MAPPINGS_it(), OSSL_ATTRIBUTE_MAPPINGS_new(), OSSL_ATTRIBUTE_MAPPING_free(), OSSL_ATTRIBUTE_MAPPING_it(), OSSL_ATTRIBUTE_MAPPING_new(), OSSL_ATTRIBUTE_TYPE_MAPPING_free(), OSSL_ATTRIBUTE_TYPE_MAPPING_it(), OSSL_ATTRIBUTE_TYPE_MAPPING_new(), OSSL_ATTRIBUTE_VALUE_MAPPING_free(), OSSL_ATTRIBUTE_VALUE_MAPPING_it(), OSSL_ATTRIBUTE_VALUE_MAPPING_new(), OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_free(), OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_it(), OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX_new(), OSSL_HASH_free(), OSSL_HASH_it(), OSSL_HASH_new(), OSSL_INFO_SYNTAX_free(), OSSL_INFO_SYNTAX_it(), OSSL_INFO_SYNTAX_new(), OSSL_INFO_SYNTAX_POINTER_free(), OSSL_INFO_SYNTAX_POINTER_it(), OSSL_INFO_SYNTAX_POINTER_new(), OSSL_PRIVILEGE_POLICY_ID_free(), OSSL_PRIVILEGE_POLICY_ID_it(), OSSL_PRIVILEGE_POLICY_ID_new(), OSSL_ROLE_SPEC_CERT_ID_free(), OSSL_ROLE_SPEC_CERT_ID_new(), OSSL_ROLE_SPEC_CERT_ID_it(), OSSL_ROLE_SPEC_CERT_ID_SYNTAX_free(), OSSL_ROLE_SPEC_CERT_ID_SYNTAX_new(), OSSL_ROLE_SPEC_CERT_ID_SYNTAX_it(), OSSL_DAY_TIME_BAND_free(), OSSL_DAY_TIME_BAND_it(), OSSL_DAY_TIME_BAND_new(), OSSL_DAY_TIME_free(), OSSL_DAY_TIME_it(), OSSL_DAY_TIME_new(), OSSL_NAMED_DAY_free(), OSSL_NAMED_DAY_it(), OSSL_NAMED_DAY_new(), OSSL_TIME_PERIOD_free(), OSSL_TIME_PERIOD_it(), OSSL_TIME_PERIOD_new(), OSSL_TIME_SPEC_ABSOLUTE_free(), OSSL_TIME_SPEC_ABSOLUTE_it(), OSSL_TIME_SPEC_ABSOLUTE_new(), OSSL_TIME_SPEC_DAY_free(), OSSL_TIME_SPEC_DAY_it(), OSSL_TIME_SPEC_DAY_new(), OSSL_TIME_SPEC_MONTH_free(), OSSL_TIME_SPEC_MONTH_it(), OSSL_TIME_SPEC_MONTH_new(), OSSL_TIME_SPEC_TIME_free(), OSSL_TIME_SPEC_TIME_it(), OSSL_TIME_SPEC_TIME_new(), OSSL_TIME_SPEC_WEEKS_free(), OSSL_TIME_SPEC_WEEKS_it(), OSSL_TIME_SPEC_WEEKS_new(), OSSL_TIME_SPEC_X_DAY_OF_free(), OSSL_TIME_SPEC_X_DAY_OF_it(), OSSL_TIME_SPEC_X_DAY_OF_new(), OSSL_TIME_SPEC_free(), OSSL_TIME_SPEC_it(), OSSL_TIME_SPEC_new(), CMS_EnvelopedData_dup(), OSSL_CRMF_ENCRYPTEDKEY_free(), OSSL_CRMF_ENCRYPTEDKEY_it() and OSSL_CRMF_ENCRYPTEDKEY_new().
ngl that was a lot of names. every single one of them is real and every single one of them is in the original, so we keep them all. periodt. π
Β©οΈ COPYRIGHT Β©οΈ
Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
πΈ and that's the whole page bestie!! this one is from OpenSSL 3.5.0, dated 2026-09-25, and it's filed under X509_DUP(3ossl) β go forth and not leak your objects π«Άβ¨
π¦ where this page comes from
- opensuse-leap 16.0: openssl-3-doc 3.5.0-160000.11.1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms