xref: /freebsd/crypto/openssl/doc/man3/X509_dup.pod (revision a7148ab39c03abd4d1a84997c70bf96f15dd2a09)
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