summaryrefslogtreecommitdiffstats
path: root/doc/gnutls.info-4
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 07:33:12 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 07:33:12 +0000
commit36082a2fe36ecd800d784ae44c14f1f18c66a7e9 (patch)
tree6c68e0c0097987aff85a01dabddd34b862309a7c /doc/gnutls.info-4
parentInitial commit. (diff)
downloadgnutls28-upstream.tar.xz
gnutls28-upstream.zip
Adding upstream version 3.7.9.upstream/3.7.9upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/gnutls.info-4')
-rw-r--r--doc/gnutls.info-49184
1 files changed, 9184 insertions, 0 deletions
diff --git a/doc/gnutls.info-4 b/doc/gnutls.info-4
new file mode 100644
index 0000000..f549d72
--- /dev/null
+++ b/doc/gnutls.info-4
@@ -0,0 +1,9184 @@
+This is gnutls.info, produced by makeinfo version 6.8 from gnutls.texi.
+
+This manual is last updated 9 February 2023 for version 3.7.9 of GnuTLS.
+
+Copyright (C) 2001-2023 Free Software Foundation, Inc.\\ Copyright (C)
+2001-2023 Nikos Mavrogiannopoulos
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+INFO-DIR-SECTION Software libraries
+START-INFO-DIR-ENTRY
+* GnuTLS: (gnutls). GNU Transport Layer Security Library.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION System Administration
+START-INFO-DIR-ENTRY
+* certtool: (gnutls)certtool Invocation. Manipulate certificates and keys.
+* gnutls-serv: (gnutls)gnutls-serv Invocation. GnuTLS test server.
+* gnutls-cli: (gnutls)gnutls-cli Invocation. GnuTLS test client.
+* gnutls-cli-debug: (gnutls)gnutls-cli-debug Invocation. GnuTLS debug client.
+* psktool: (gnutls)psktool Invocation. Simple TLS-Pre-Shared-Keys manager.
+* srptool: (gnutls)srptool Invocation. Simple SRP password tool.
+END-INFO-DIR-ENTRY
+
+
+File: gnutls.info, Node: Datagram TLS API, Next: X509 certificate API, Prev: Core TLS API, Up: API reference
+
+E.2 Datagram TLS API
+====================
+
+The prototypes for the following functions lie in 'gnutls/dtls.h'.
+
+gnutls_dtls_cookie_send
+-----------------------
+
+ -- Function: int gnutls_dtls_cookie_send (gnutls_datum_t * KEY, void *
+ CLIENT_DATA, size_t CLIENT_DATA_SIZE, gnutls_dtls_prestate_st
+ * PRESTATE, gnutls_transport_ptr_t PTR, gnutls_push_func
+ PUSH_FUNC)
+ KEY: is a random key to be used at cookie generation
+
+ CLIENT_DATA: contains data identifying the client (i.e. address)
+
+ CLIENT_DATA_SIZE: The size of client's data
+
+ PRESTATE: The previous cookie returned by
+ 'gnutls_dtls_cookie_verify()'
+
+ PTR: A transport pointer to be used by 'push_func'
+
+ PUSH_FUNC: A function that will be used to reply
+
+ This function can be used to prevent denial of service attacks to a
+ DTLS server by requiring the client to reply using a cookie sent by
+ this function. That way it can be ensured that a client we
+ allocated resources for (i.e. 'gnutls_session_t' ) is the one that
+ the original incoming packet was originated from.
+
+ This function must be called at the first incoming packet, prior to
+ allocating any resources and must be succeeded by
+ 'gnutls_dtls_cookie_verify()' .
+
+ *Returns:* the number of bytes sent, or a negative error code.
+
+ *Since:* 3.0
+
+gnutls_dtls_cookie_verify
+-------------------------
+
+ -- Function: int gnutls_dtls_cookie_verify (gnutls_datum_t * KEY, void
+ * CLIENT_DATA, size_t CLIENT_DATA_SIZE, void * _MSG, size_t
+ MSG_SIZE, gnutls_dtls_prestate_st * PRESTATE)
+ KEY: is a random key to be used at cookie generation
+
+ CLIENT_DATA: contains data identifying the client (i.e. address)
+
+ CLIENT_DATA_SIZE: The size of client's data
+
+ _MSG: An incoming message that initiates a connection.
+
+ MSG_SIZE: The size of the message.
+
+ PRESTATE: The cookie of this client.
+
+ This function will verify the received message for a valid cookie.
+ If a valid cookie is returned then it should be associated with the
+ session using 'gnutls_dtls_prestate_set()' ;
+
+ This function must be called after 'gnutls_dtls_cookie_send()' .
+
+ *Returns:* 'GNUTLS_E_SUCCESS' (0) on success, or a negative error
+ code.
+
+ *Since:* 3.0
+
+gnutls_dtls_get_data_mtu
+------------------------
+
+ -- Function: unsigned int gnutls_dtls_get_data_mtu (gnutls_session_t
+ SESSION)
+ SESSION: is a 'gnutls_session_t' type.
+
+ This function will return the actual maximum transfer unit for
+ application data. I.e. DTLS headers are subtracted from the
+ actual MTU which is set using 'gnutls_dtls_set_mtu()' .
+
+ *Returns:* the maximum allowed transfer unit.
+
+ *Since:* 3.0
+
+gnutls_dtls_get_mtu
+-------------------
+
+ -- Function: unsigned int gnutls_dtls_get_mtu (gnutls_session_t
+ SESSION)
+ SESSION: is a 'gnutls_session_t' type.
+
+ This function will return the MTU size as set with
+ 'gnutls_dtls_set_mtu()' . This is not the actual MTU of data you
+ can transmit. Use 'gnutls_dtls_get_data_mtu()' for that reason.
+
+ *Returns:* the set maximum transfer unit.
+
+ *Since:* 3.0
+
+gnutls_dtls_get_timeout
+-----------------------
+
+ -- Function: unsigned int gnutls_dtls_get_timeout (gnutls_session_t
+ SESSION)
+ SESSION: is a 'gnutls_session_t' type.
+
+ This function will return the milliseconds remaining for a
+ retransmission of the previously sent handshake message. This
+ function is useful when DTLS is used in non-blocking mode, to
+ estimate when to call 'gnutls_handshake()' if no packets have been
+ received.
+
+ *Returns:* the remaining time in milliseconds.
+
+ *Since:* 3.0
+
+gnutls_dtls_prestate_set
+------------------------
+
+ -- Function: void gnutls_dtls_prestate_set (gnutls_session_t SESSION,
+ gnutls_dtls_prestate_st * PRESTATE)
+ SESSION: a new session
+
+ PRESTATE: contains the client's prestate
+
+ This function will associate the prestate acquired by the cookie
+ authentication with the client, with the newly established session.
+
+ This functions must be called after a successful
+ 'gnutls_dtls_cookie_verify()' and should be succeeded by the actual
+ DTLS handshake using 'gnutls_handshake()' .
+
+ *Since:* 3.0
+
+gnutls_dtls_set_data_mtu
+------------------------
+
+ -- Function: int gnutls_dtls_set_data_mtu (gnutls_session_t SESSION,
+ unsigned int MTU)
+ SESSION: is a 'gnutls_session_t' type.
+
+ MTU: The maximum unencrypted transfer unit of the session
+
+ This function will set the maximum size of the *unencrypted*
+ records which will be sent over a DTLS session. It is equivalent
+ to calculating the DTLS packet overhead with the current encryption
+ parameters, and calling 'gnutls_dtls_set_mtu()' with that value.
+ In particular, this means that you may need to call this function
+ again after any negotiation or renegotiation, in order to ensure
+ that the MTU is still sufficient to account for the new protocol
+ overhead.
+
+ In most cases you only need to call 'gnutls_dtls_set_mtu()' with
+ the maximum MTU of your transport layer.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' (0) on success, or a negative error
+ code.
+
+ *Since:* 3.1
+
+gnutls_dtls_set_mtu
+-------------------
+
+ -- Function: void gnutls_dtls_set_mtu (gnutls_session_t SESSION,
+ unsigned int MTU)
+ SESSION: is a 'gnutls_session_t' type.
+
+ MTU: The maximum transfer unit of the transport
+
+ This function will set the maximum transfer unit of the transport
+ that DTLS packets are sent over. Note that this should exclude the
+ IP (or IPv6) and UDP headers. So for DTLS over IPv6 on an Ethernet
+ device with MTU 1500, the DTLS MTU set with this function would be
+ 1500 - 40 (IPV6 header) - 8 (UDP header) = 1452.
+
+ *Since:* 3.0
+
+gnutls_dtls_set_timeouts
+------------------------
+
+ -- Function: void gnutls_dtls_set_timeouts (gnutls_session_t SESSION,
+ unsigned int RETRANS_TIMEOUT, unsigned int TOTAL_TIMEOUT)
+ SESSION: is a 'gnutls_session_t' type.
+
+ RETRANS_TIMEOUT: The time at which a retransmission will occur in
+ milliseconds
+
+ TOTAL_TIMEOUT: The time at which the connection will be aborted, in
+ milliseconds.
+
+ This function will set the timeouts required for the DTLS handshake
+ protocol. The retransmission timeout is the time after which a
+ message from the peer is not received, the previous messages will
+ be retransmitted. The total timeout is the time after which the
+ handshake will be aborted with 'GNUTLS_E_TIMEDOUT' .
+
+ The DTLS protocol recommends the values of 1 sec and 60 seconds
+ respectively, and these are the default values.
+
+ To disable retransmissions set a 'retrans_timeout' larger than the
+ 'total_timeout' .
+
+ *Since:* 3.0
+
+gnutls_record_get_discarded
+---------------------------
+
+ -- Function: unsigned int gnutls_record_get_discarded (gnutls_session_t
+ SESSION)
+ SESSION: is a 'gnutls_session_t' type.
+
+ Returns the number of discarded packets in a DTLS connection.
+
+ *Returns:* The number of discarded packets.
+
+ *Since:* 3.0
+
+
+File: gnutls.info, Node: X509 certificate API, Next: PKCS 7 API, Prev: Datagram TLS API, Up: API reference
+
+E.3 X.509 certificate API
+=========================
+
+The following functions are to be used for X.509 certificate handling.
+Their prototypes lie in 'gnutls/x509.h'.
+
+gnutls_certificate_get_trust_list
+---------------------------------
+
+ -- Function: void gnutls_certificate_get_trust_list
+ (gnutls_certificate_credentials_t RES,
+ gnutls_x509_trust_list_t * TLIST)
+ RES: is a 'gnutls_certificate_credentials_t' type.
+
+ TLIST: Location where to store the trust list.
+
+ Obtains the list of trusted certificates stored in 'res' and writes
+ a pointer to it to the location 'tlist' . The pointer will point
+ to memory internal to 'res' , and must not be deinitialized. It
+ will be automatically deallocated when the 'res' structure is
+ deinitialized.
+
+ *Since:* 3.4.0
+
+gnutls_certificate_set_trust_list
+---------------------------------
+
+ -- Function: void gnutls_certificate_set_trust_list
+ (gnutls_certificate_credentials_t RES,
+ gnutls_x509_trust_list_t TLIST, unsigned FLAGS)
+ RES: is a 'gnutls_certificate_credentials_t' type.
+
+ TLIST: is a 'gnutls_x509_trust_list_t' type
+
+ FLAGS: must be zero
+
+ This function sets a trust list in the
+ gnutls_certificate_credentials_t type.
+
+ Note that the 'tlist' will become part of the credentials structure
+ and must not be deallocated. It will be automatically deallocated
+ when the 'res' structure is deinitialized.
+
+ *Since:* 3.2.2
+
+gnutls_certificate_verification_profile_get_id
+----------------------------------------------
+
+ -- Function: gnutls_certificate_verification_profiles_t
+ gnutls_certificate_verification_profile_get_id (const char *
+ NAME)
+ NAME: is a profile name
+
+ Convert a string to a 'gnutls_certificate_verification_profiles_t'
+ value. The names are compared in a case insensitive way.
+
+ *Returns:* a 'gnutls_certificate_verification_profiles_t' id of the
+ specified profile, or 'GNUTLS_PROFILE_UNKNOWN' on failure.
+
+gnutls_certificate_verification_profile_get_name
+------------------------------------------------
+
+ -- Function: const char *
+ gnutls_certificate_verification_profile_get_name
+ (gnutls_certificate_verification_profiles_t ID)
+ ID: is a profile ID
+
+ Convert a 'gnutls_certificate_verification_profiles_t' value to a
+ string.
+
+ *Returns:* a string that contains the name of the specified profile
+ or 'NULL' .
+
+gnutls_pkcs8_info
+-----------------
+
+ -- Function: int gnutls_pkcs8_info (const gnutls_datum_t * DATA,
+ gnutls_x509_crt_fmt_t FORMAT, unsigned int * SCHEMA, unsigned
+ int * CIPHER, void * SALT, unsigned int * SALT_SIZE, unsigned
+ int * ITER_COUNT, char ** OID)
+ DATA: Holds the PKCS '8' data
+
+ FORMAT: the format of the PKCS '8' data
+
+ SCHEMA: indicate the schema as one of 'gnutls_pkcs_encrypt_flags_t'
+
+ CIPHER: the cipher used as 'gnutls_cipher_algorithm_t'
+
+ SALT: PBKDF2 salt (if non-NULL then 'salt_size' initially holds its
+ size)
+
+ SALT_SIZE: PBKDF2 salt size
+
+ ITER_COUNT: PBKDF2 iteration count
+
+ OID: if non-NULL it will contain an allocated null-terminated
+ variable with the OID
+
+ This function will provide information on the algorithms used in a
+ particular PKCS '8' structure. If the structure algorithms are
+ unknown the code 'GNUTLS_E_UNKNOWN_CIPHER_TYPE' will be returned,
+ and only 'oid' , will be set. That is, 'oid' will be set on
+ encrypted PKCS '8' structures whether supported or not. It must be
+ deinitialized using 'gnutls_free()' . The other variables are only
+ set on supported structures.
+
+ *Returns:* 'GNUTLS_E_INVALID_REQUEST' if the provided structure
+ isn't an encrypted key, 'GNUTLS_E_UNKNOWN_CIPHER_TYPE' if the
+ structure's encryption isn't supported, or another negative error
+ code in case of a failure. Zero on success.
+
+ *Since:* 3.4.0
+
+gnutls_pkcs_schema_get_name
+---------------------------
+
+ -- Function: const char * gnutls_pkcs_schema_get_name (unsigned int
+ SCHEMA)
+ SCHEMA: Holds the PKCS '12' or PBES2 schema
+ ('gnutls_pkcs_encrypt_flags_t' )
+
+ This function will return a human readable description of the
+ PKCS12 or PBES2 schema.
+
+ *Returns:* a constraint string or 'NULL' on error.
+
+ *Since:* 3.4.0
+
+gnutls_pkcs_schema_get_oid
+--------------------------
+
+ -- Function: const char * gnutls_pkcs_schema_get_oid (unsigned int
+ SCHEMA)
+ SCHEMA: Holds the PKCS '12' or PBES2 schema
+ ('gnutls_pkcs_encrypt_flags_t' )
+
+ This function will return the object identifier of the PKCS12 or
+ PBES2 schema.
+
+ *Returns:* a constraint string or 'NULL' on error.
+
+ *Since:* 3.4.0
+
+gnutls_session_set_verify_output_function
+-----------------------------------------
+
+ -- Function: void gnutls_session_set_verify_output_function
+ (gnutls_session_t SESSION, gnutls_verify_output_function *
+ FUNC)
+ SESSION: is a 'gnutls_x509_trust_list_t' type.
+
+ FUNC: is the callback function
+
+ This function sets a callback to be called when the peer's
+ certificate chain has to be verified and full path to the trusted
+ root has to be printed.
+
+ The callback's function prototype is defined in 'x509.h': int
+ (*callback)( gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer,
+ gnutls_x509_crl_t crl, unsigned int verification_output);
+
+ If the callback function is provided then gnutls will call it, in
+ the certificate verification procedure. To verify the certificate
+ chain and print its path uptp the trusted root, functions such as
+ 'gnutls_certificate_verify_peers()' ,
+ 'gnutls_x509_trust_list_verify_crt()' , and
+ 'gnutls_x509_trust_list_verify_crt2()' can be used. The callback
+ is set in '_gnutls_verify_crt_status()' and
+ '_gnutls_pkcs11_verify_crt_status()' .
+
+ *Since:* 3.7.0
+
+gnutls_subject_alt_names_deinit
+-------------------------------
+
+ -- Function: void gnutls_subject_alt_names_deinit
+ (gnutls_subject_alt_names_t SANS)
+ SANS: The alternative names
+
+ This function will deinitialize an alternative names structure.
+
+ *Since:* 3.3.0
+
+gnutls_subject_alt_names_get
+----------------------------
+
+ -- Function: int gnutls_subject_alt_names_get
+ (gnutls_subject_alt_names_t SANS, unsigned int SEQ, unsigned
+ int * SAN_TYPE, gnutls_datum_t * SAN, gnutls_datum_t *
+ OTHERNAME_OID)
+ SANS: The alternative names
+
+ SEQ: The index of the name to get
+
+ SAN_TYPE: Will hold the type of the name (of
+ 'gnutls_subject_alt_names_t' )
+
+ SAN: The alternative name data (should be treated as constant)
+
+ OTHERNAME_OID: The object identifier if 'san_type' is
+ 'GNUTLS_SAN_OTHERNAME' (should be treated as constant)
+
+ This function will return a specific alternative name as stored in
+ the 'sans' type. The returned values should be treated as constant
+ and valid for the lifetime of 'sans' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the index is out of
+ bounds, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_subject_alt_names_init
+-----------------------------
+
+ -- Function: int gnutls_subject_alt_names_init
+ (gnutls_subject_alt_names_t * SANS)
+ SANS: The alternative names
+
+ This function will initialize an alternative names structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_subject_alt_names_set
+----------------------------
+
+ -- Function: int gnutls_subject_alt_names_set
+ (gnutls_subject_alt_names_t SANS, unsigned int SAN_TYPE, const
+ gnutls_datum_t * SAN, const char * OTHERNAME_OID)
+ SANS: The alternative names
+
+ SAN_TYPE: The type of the name (of 'gnutls_subject_alt_names_t' )
+
+ SAN: The alternative name data
+
+ OTHERNAME_OID: The object identifier if 'san_type' is
+ 'GNUTLS_SAN_OTHERNAME'
+
+ This function will store the specified alternative name in the
+ 'sans' .
+
+ Since version 3.5.7 the 'GNUTLS_SAN_RFC822NAME' ,
+ 'GNUTLS_SAN_DNSNAME' , and 'GNUTLS_SAN_OTHERNAME_XMPP' are
+ converted to ACE format when necessary.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0), otherwise a negative
+ error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aia_deinit
+----------------------
+
+ -- Function: void gnutls_x509_aia_deinit (gnutls_x509_aia_t AIA)
+ AIA: The authority info access
+
+ This function will deinitialize an authority info access type.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aia_get
+-------------------
+
+ -- Function: int gnutls_x509_aia_get (gnutls_x509_aia_t AIA, unsigned
+ int SEQ, gnutls_datum_t * OID, unsigned * SAN_TYPE,
+ gnutls_datum_t * SAN)
+ AIA: The authority info access
+
+ SEQ: specifies the sequence number of the access descriptor (0 for
+ the first one, 1 for the second etc.)
+
+ OID: the type of available data; to be treated as constant.
+
+ SAN_TYPE: Will hold the type of the name of
+ 'gnutls_subject_alt_names_t' (may be null).
+
+ SAN: the access location name; to be treated as constant (may be
+ null).
+
+ This function reads from the Authority Information Access type.
+
+ The 'seq' input parameter is used to indicate which member of the
+ sequence the caller is interested in. The first member is 0, the
+ second member 1 and so on. When the 'seq' value is out of bounds,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ Typically 'oid' is 'GNUTLS_OID_AD_CAISSUERS' or
+ 'GNUTLS_OID_AD_OCSP' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aia_init
+--------------------
+
+ -- Function: int gnutls_x509_aia_init (gnutls_x509_aia_t * AIA)
+ AIA: The authority info access
+
+ This function will initialize an authority info access type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aia_set
+-------------------
+
+ -- Function: int gnutls_x509_aia_set (gnutls_x509_aia_t AIA, const char
+ * OID, unsigned SAN_TYPE, const gnutls_datum_t * SAN)
+ AIA: The authority info access
+
+ OID: the type of data.
+
+ SAN_TYPE: The type of the name (of 'gnutls_subject_alt_names_t' )
+
+ SAN: The alternative name data
+
+ This function will store the specified alternative name in the
+ 'aia' type.
+
+ Typically the value for 'oid' should be 'GNUTLS_OID_AD_OCSP' , or
+ 'GNUTLS_OID_AD_CAISSUERS' .
+
+ Since version 3.5.7 the 'GNUTLS_SAN_RFC822NAME' , and
+ 'GNUTLS_SAN_DNSNAME' , are converted to ACE format when necessary.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0), otherwise a negative
+ error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aki_deinit
+----------------------
+
+ -- Function: void gnutls_x509_aki_deinit (gnutls_x509_aki_t AKI)
+ AKI: The authority key identifier type
+
+ This function will deinitialize an authority key identifier.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aki_get_cert_issuer
+-------------------------------
+
+ -- Function: int gnutls_x509_aki_get_cert_issuer (gnutls_x509_aki_t
+ AKI, unsigned int SEQ, unsigned int * SAN_TYPE, gnutls_datum_t
+ * SAN, gnutls_datum_t * OTHERNAME_OID, gnutls_datum_t *
+ SERIAL)
+ AKI: The authority key ID
+
+ SEQ: The index of the name to get
+
+ SAN_TYPE: Will hold the type of the name (of
+ 'gnutls_subject_alt_names_t' )
+
+ SAN: The alternative name data
+
+ OTHERNAME_OID: The object identifier if 'san_type' is
+ 'GNUTLS_SAN_OTHERNAME'
+
+ SERIAL: The authorityCertSerialNumber number
+
+ This function will return a specific authorityCertIssuer name as
+ stored in the 'aki' type, as well as the authorityCertSerialNumber.
+ All the returned values should be treated as constant, and may be
+ set to 'NULL' when are not required.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the index is out of
+ bounds, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aki_get_id
+----------------------
+
+ -- Function: int gnutls_x509_aki_get_id (gnutls_x509_aki_t AKI,
+ gnutls_datum_t * ID)
+ AKI: The authority key ID
+
+ ID: Will hold the identifier
+
+ This function will return the key identifier as stored in the 'aki'
+ type. The identifier should be treated as constant.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the index is out of
+ bounds, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aki_init
+--------------------
+
+ -- Function: int gnutls_x509_aki_init (gnutls_x509_aki_t * AKI)
+ AKI: The authority key ID type
+
+ This function will initialize an authority key ID.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aki_set_cert_issuer
+-------------------------------
+
+ -- Function: int gnutls_x509_aki_set_cert_issuer (gnutls_x509_aki_t
+ AKI, unsigned int SAN_TYPE, const gnutls_datum_t * SAN, const
+ char * OTHERNAME_OID, const gnutls_datum_t * SERIAL)
+ AKI: The authority key ID
+
+ SAN_TYPE: the type of the name (of 'gnutls_subject_alt_names_t' ),
+ may be null
+
+ SAN: The alternative name data
+
+ OTHERNAME_OID: The object identifier if 'san_type' is
+ 'GNUTLS_SAN_OTHERNAME'
+
+ SERIAL: The authorityCertSerialNumber number (may be null)
+
+ This function will set the authorityCertIssuer name and the
+ authorityCertSerialNumber to be stored in the 'aki' type. When
+ storing multiple names, the serial should be set on the first call,
+ and subsequent calls should use a 'NULL' serial.
+
+ Since version 3.5.7 the 'GNUTLS_SAN_RFC822NAME' ,
+ 'GNUTLS_SAN_DNSNAME' , and 'GNUTLS_SAN_OTHERNAME_XMPP' are
+ converted to ACE format when necessary.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_aki_set_id
+----------------------
+
+ -- Function: int gnutls_x509_aki_set_id (gnutls_x509_aki_t AKI, const
+ gnutls_datum_t * ID)
+ AKI: The authority key ID
+
+ ID: the key identifier
+
+ This function will set the keyIdentifier to be stored in the 'aki'
+ type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_cidr_to_rfc5280
+---------------------------
+
+ -- Function: int gnutls_x509_cidr_to_rfc5280 (const char * CIDR,
+ gnutls_datum_t * CIDR_RFC5280)
+ CIDR: CIDR in RFC4632 format (IP/prefix), null-terminated
+
+ CIDR_RFC5280: CIDR range converted to RFC5280 format
+
+ This function will convert text CIDR range with prefix (such as
+ '10.0.0.0/8') to RFC5280 (IP address in network byte order followed
+ by its network mask). Works for both IPv4 and IPv6.
+
+ The resulting object is directly usable for IP name constraints
+ usage, for example in functions
+ 'gnutls_x509_name_constraints_add_permitted' or
+ 'gnutls_x509_name_constraints_add_excluded' .
+
+ The data in datum needs to be deallocated using 'gnutls_free()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.4
+
+gnutls_x509_crl_check_issuer
+----------------------------
+
+ -- Function: unsigned gnutls_x509_crl_check_issuer (gnutls_x509_crl_t
+ CRL, gnutls_x509_crt_t ISSUER)
+ CRL: is the CRL to be checked
+
+ ISSUER: is the certificate of a possible issuer
+
+ This function will check if the given CRL was issued by the given
+ issuer certificate.
+
+ *Returns:* true (1) if the given CRL was issued by the given
+ issuer, and false (0) if not.
+
+gnutls_x509_crl_deinit
+----------------------
+
+ -- Function: void gnutls_x509_crl_deinit (gnutls_x509_crl_t CRL)
+ CRL: The data to be deinitialized
+
+ This function will deinitialize a CRL structure.
+
+gnutls_x509_crl_dist_points_deinit
+----------------------------------
+
+ -- Function: void gnutls_x509_crl_dist_points_deinit
+ (gnutls_x509_crl_dist_points_t CDP)
+ CDP: The CRL distribution points
+
+ This function will deinitialize a CRL distribution points type.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crl_dist_points_get
+-------------------------------
+
+ -- Function: int gnutls_x509_crl_dist_points_get
+ (gnutls_x509_crl_dist_points_t CDP, unsigned int SEQ, unsigned
+ int * TYPE, gnutls_datum_t * SAN, unsigned int * REASONS)
+ CDP: The CRL distribution points
+
+ SEQ: specifies the sequence number of the distribution point (0 for
+ the first one, 1 for the second etc.)
+
+ TYPE: The name type of the corresponding name
+ (gnutls_x509_subject_alt_name_t)
+
+ SAN: The distribution point names (to be treated as constant)
+
+ REASONS: Revocation reasons. An ORed sequence of flags from
+ 'gnutls_x509_crl_reason_flags_t' .
+
+ This function retrieves the individual CRL distribution points
+ (2.5.29.31), contained in provided type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the index is out of
+ bounds, otherwise a negative error value.
+
+gnutls_x509_crl_dist_points_init
+--------------------------------
+
+ -- Function: int gnutls_x509_crl_dist_points_init
+ (gnutls_x509_crl_dist_points_t * CDP)
+ CDP: The CRL distribution points
+
+ This function will initialize a CRL distribution points type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crl_dist_points_set
+-------------------------------
+
+ -- Function: int gnutls_x509_crl_dist_points_set
+ (gnutls_x509_crl_dist_points_t CDP,
+ gnutls_x509_subject_alt_name_t TYPE, const gnutls_datum_t *
+ SAN, unsigned int REASONS)
+ CDP: The CRL distribution points
+
+ TYPE: The type of the name (of 'gnutls_subject_alt_names_t' )
+
+ SAN: The point name data
+
+ REASONS: Revocation reasons. An ORed sequence of flags from
+ 'gnutls_x509_crl_reason_flags_t' .
+
+ This function will store the specified CRL distribution point value
+ the 'cdp' type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0), otherwise a negative
+ error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crl_export
+----------------------
+
+ -- Function: int gnutls_x509_crl_export (gnutls_x509_crl_t CRL,
+ gnutls_x509_crt_fmt_t FORMAT, void * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ CRL: Holds the revocation list
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUTPUT_DATA: will contain a private key PEM or DER encoded
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will export the revocation list to DER or PEM format.
+
+ If the buffer provided is not long enough to hold the output, then
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' will be returned.
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ X509 CRL".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_export2
+-----------------------
+
+ -- Function: int gnutls_x509_crl_export2 (gnutls_x509_crl_t CRL,
+ gnutls_x509_crt_fmt_t FORMAT, gnutls_datum_t * OUT)
+ CRL: Holds the revocation list
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUT: will contain a private key PEM or DER encoded
+
+ This function will export the revocation list to DER or PEM format.
+
+ The output buffer is allocated using 'gnutls_malloc()' .
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ X509 CRL".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ Since 3.1.3
+
+gnutls_x509_crl_get_authority_key_gn_serial
+-------------------------------------------
+
+ -- Function: int gnutls_x509_crl_get_authority_key_gn_serial
+ (gnutls_x509_crl_t CRL, unsigned int SEQ, void * ALT, size_t *
+ ALT_SIZE, unsigned int * ALT_TYPE, void * SERIAL, size_t *
+ SERIAL_SIZE, unsigned int * CRITICAL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ ALT: is the place where the alternative name will be copied to
+
+ ALT_SIZE: holds the size of alt.
+
+ ALT_TYPE: holds the type of the alternative name (one of
+ gnutls_x509_subject_alt_name_t).
+
+ SERIAL: buffer to store the serial number (may be null)
+
+ SERIAL_SIZE: Holds the size of the serial field (may be null)
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the X.509 authority key identifier when
+ stored as a general name (authorityCertIssuer) and serial number.
+
+ Because more than one general names might be stored 'seq' can be
+ used as a counter to request them all until
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ *Returns:* Returns 0 on success, or an error code.
+
+ *Since:* 3.0
+
+gnutls_x509_crl_get_authority_key_id
+------------------------------------
+
+ -- Function: int gnutls_x509_crl_get_authority_key_id
+ (gnutls_x509_crl_t CRL, void * ID, size_t * ID_SIZE, unsigned
+ int * CRITICAL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ ID: The place where the identifier will be copied
+
+ ID_SIZE: Holds the size of the result field.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the CRL authority's key identifier. This
+ is obtained by the X.509 Authority Key identifier extension field
+ (2.5.29.35). Note that this function only returns the
+ keyIdentifier field of the extension and
+ 'GNUTLS_E_X509_UNSUPPORTED_EXTENSION' , if the extension contains
+ the name and serial number of the certificate. In that case
+ 'gnutls_x509_crl_get_authority_key_gn_serial()' may be used.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crl_get_crt_count
+-----------------------------
+
+ -- Function: int gnutls_x509_crl_get_crt_count (gnutls_x509_crl_t CRL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ This function will return the number of revoked certificates in the
+ given CRL.
+
+ *Returns:* number of certificates, a negative error code on
+ failure.
+
+gnutls_x509_crl_get_crt_serial
+------------------------------
+
+ -- Function: int gnutls_x509_crl_get_crt_serial (gnutls_x509_crl_t CRL,
+ unsigned INDX, unsigned char * SERIAL, size_t * SERIAL_SIZE,
+ time_t * T)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ INDX: the index of the certificate to extract (starting from 0)
+
+ SERIAL: where the serial number will be copied
+
+ SERIAL_SIZE: initially holds the size of serial
+
+ T: if non null, will hold the time this certificate was revoked
+
+ This function will retrieve the serial number of the specified, by
+ the index, revoked certificate.
+
+ Note that this function will have performance issues in large
+ sequences of revoked certificates. In that case use
+ 'gnutls_x509_crl_iter_crt_serial()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_get_dn_oid
+--------------------------
+
+ -- Function: int gnutls_x509_crl_get_dn_oid (gnutls_x509_crl_t CRL,
+ unsigned INDX, void * OID, size_t * SIZEOF_OID)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ INDX: Specifies which DN OID to send. Use (0) to get the first
+ one.
+
+ OID: a pointer to store the OID (may be null)
+
+ SIZEOF_OID: initially holds the size of 'oid'
+
+ This function will extract the requested OID of the name of the CRL
+ issuer, specified by the given index.
+
+ If oid is null then only the size will be filled.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the sizeof_oid will be updated
+ with the required size. On success 0 is returned.
+
+gnutls_x509_crl_get_extension_data
+----------------------------------
+
+ -- Function: int gnutls_x509_crl_get_extension_data (gnutls_x509_crl_t
+ CRL, unsigned INDX, void * DATA, size_t * SIZEOF_DATA)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ INDX: Specifies which extension OID to send. Use (0) to get the
+ first one.
+
+ DATA: a pointer to a structure to hold the data (may be null)
+
+ SIZEOF_DATA: initially holds the size of 'oid'
+
+ This function will return the requested extension data in the CRL.
+ The extension data will be stored as a string in the provided
+ buffer.
+
+ Use 'gnutls_x509_crl_get_extension_info()' to extract the OID and
+ critical flag. Use 'gnutls_x509_crl_get_extension_info()' instead,
+ if you want to get data indexed by the extension OID rather than
+ sequence.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If your have
+ reached the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crl_get_extension_data2
+-----------------------------------
+
+ -- Function: int gnutls_x509_crl_get_extension_data2 (gnutls_x509_crl_t
+ CRL, unsigned INDX, gnutls_datum_t * DATA)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ INDX: Specifies which extension OID to read. Use (0) to get the
+ first one.
+
+ DATA: will contain the extension DER-encoded data
+
+ This function will return the requested by the index extension data
+ in the certificate revocation list. The extension data will be
+ allocated using 'gnutls_malloc()' .
+
+ Use 'gnutls_x509_crt_get_extension_info()' to extract the OID.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If you have reached
+ the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+gnutls_x509_crl_get_extension_info
+----------------------------------
+
+ -- Function: int gnutls_x509_crl_get_extension_info (gnutls_x509_crl_t
+ CRL, unsigned INDX, void * OID, size_t * SIZEOF_OID, unsigned
+ int * CRITICAL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ INDX: Specifies which extension OID to send, use (0) to get the
+ first one.
+
+ OID: a pointer to store the OID
+
+ SIZEOF_OID: initially holds the maximum size of 'oid' , on return
+ holds actual size of 'oid' .
+
+ CRITICAL: output variable with critical flag, may be NULL.
+
+ This function will return the requested extension OID in the CRL,
+ and the critical flag for it. The extension OID will be stored as
+ a string in the provided buffer. Use
+ 'gnutls_x509_crl_get_extension_data()' to extract the data.
+
+ If the buffer provided is not long enough to hold the output, then
+ * 'sizeof_oid' is updated and 'GNUTLS_E_SHORT_MEMORY_BUFFER' will
+ be returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If your have
+ reached the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crl_get_extension_oid
+---------------------------------
+
+ -- Function: int gnutls_x509_crl_get_extension_oid (gnutls_x509_crl_t
+ CRL, unsigned INDX, void * OID, size_t * SIZEOF_OID)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ INDX: Specifies which extension OID to send, use (0) to get the
+ first one.
+
+ OID: a pointer to store the OID (may be null)
+
+ SIZEOF_OID: initially holds the size of 'oid'
+
+ This function will return the requested extension OID in the CRL.
+ The extension OID will be stored as a string in the provided
+ buffer.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If your have
+ reached the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crl_get_issuer_dn
+-----------------------------
+
+ -- Function: int gnutls_x509_crl_get_issuer_dn (gnutls_x509_crl_t CRL,
+ char * BUF, size_t * SIZEOF_BUF)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ BUF: a pointer to a structure to hold the peer's name (may be null)
+
+ SIZEOF_BUF: initially holds the size of 'buf'
+
+ This function will copy the name of the CRL issuer in the provided
+ buffer. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as
+ described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ If buf is 'NULL' then only the size will be filled.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crl_get_issuer_dn3()' .
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the sizeof_buf will be updated
+ with the required size, and 0 on success.
+
+gnutls_x509_crl_get_issuer_dn2
+------------------------------
+
+ -- Function: int gnutls_x509_crl_get_issuer_dn2 (gnutls_x509_crl_t CRL,
+ gnutls_datum_t * DN)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ This function will allocate buffer and copy the name of the CRL
+ issuer. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as
+ described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crl_get_issuer_dn3()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.1.10
+
+gnutls_x509_crl_get_issuer_dn3
+------------------------------
+
+ -- Function: int gnutls_x509_crl_get_issuer_dn3 (gnutls_x509_crl_t CRL,
+ gnutls_datum_t * DN, unsigned FLAGS)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ FLAGS: zero or 'GNUTLS_X509_DN_FLAG_COMPAT'
+
+ This function will allocate buffer and copy the name of the CRL
+ issuer. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as
+ described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ When the flag 'GNUTLS_X509_DN_FLAG_COMPAT' is specified, the output
+ format will match the format output by previous to 3.5.6 versions
+ of GnuTLS which was not not fully RFC4514-compliant.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.7
+
+gnutls_x509_crl_get_issuer_dn_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crl_get_issuer_dn_by_oid
+ (gnutls_x509_crl_t CRL, const char * OID, unsigned INDX,
+ unsigned int RAW_FLAG, void * BUF, size_t * SIZEOF_BUF)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ OID: holds an Object Identified in null terminated string
+
+ INDX: In case multiple same OIDs exist in the RDN, this specifies
+ which to send. Use (0) to get the first one.
+
+ RAW_FLAG: If non-zero returns the raw DER data of the DN part.
+
+ BUF: a pointer to a structure to hold the peer's name (may be null)
+
+ SIZEOF_BUF: initially holds the size of 'buf'
+
+ This function will extract the part of the name of the CRL issuer
+ specified by the given OID. The output will be encoded as described
+ in RFC4514. The output string will be ASCII or UTF-8 encoded,
+ depending on the certificate data.
+
+ Some helper macros with popular OIDs can be found in gnutls/x509.h
+ If raw flag is (0), this function will only return known OIDs as
+ text. Other OIDs will be DER encoded, as described in RFC4514 - in
+ hex format with a '#' prefix. You can check about known OIDs using
+ 'gnutls_x509_dn_oid_known()' .
+
+ If buf is null then only the size will be filled.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the sizeof_buf will be updated
+ with the required size, and 0 on success.
+
+gnutls_x509_crl_get_next_update
+-------------------------------
+
+ -- Function: time_t gnutls_x509_crl_get_next_update (gnutls_x509_crl_t
+ CRL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ This function will return the time the next CRL will be issued.
+ This field is optional in a CRL so it might be normal to get an
+ error instead.
+
+ *Returns:* when the next CRL will be issued, or (time_t)-1 on
+ error.
+
+gnutls_x509_crl_get_number
+--------------------------
+
+ -- Function: int gnutls_x509_crl_get_number (gnutls_x509_crl_t CRL,
+ void * RET, size_t * RET_SIZE, unsigned int * CRITICAL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ RET: The place where the number will be copied
+
+ RET_SIZE: Holds the size of the result field.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the CRL number extension. This is
+ obtained by the CRL Number extension field (2.5.29.20).
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crl_get_raw_issuer_dn
+---------------------------------
+
+ -- Function: int gnutls_x509_crl_get_raw_issuer_dn (gnutls_x509_crl_t
+ CRL, gnutls_datum_t * DN)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ DN: will hold the starting point of the DN
+
+ This function will return a pointer to the DER encoded DN structure
+ and the length.
+
+ *Returns:* a negative error code on error, and (0) on success.
+
+ *Since:* 2.12.0
+
+gnutls_x509_crl_get_signature
+-----------------------------
+
+ -- Function: int gnutls_x509_crl_get_signature (gnutls_x509_crl_t CRL,
+ char * SIG, size_t * SIZEOF_SIG)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ SIG: a pointer where the signature part will be copied (may be
+ null).
+
+ SIZEOF_SIG: initially holds the size of 'sig'
+
+ This function will extract the signature field of a CRL.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_get_signature_algorithm
+---------------------------------------
+
+ -- Function: int gnutls_x509_crl_get_signature_algorithm
+ (gnutls_x509_crl_t CRL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ This function will return a value of the 'gnutls_sign_algorithm_t'
+ enumeration that is the signature algorithm.
+
+ Since 3.6.0 this function never returns a negative error code.
+ Error cases and unknown/unsupported signature algorithms are mapped
+ to 'GNUTLS_SIGN_UNKNOWN' .
+
+ *Returns:* a 'gnutls_sign_algorithm_t' value
+
+gnutls_x509_crl_get_signature_oid
+---------------------------------
+
+ -- Function: int gnutls_x509_crl_get_signature_oid (gnutls_x509_crl_t
+ CRL, char * OID, size_t * OID_SIZE)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will return the OID of the signature algorithm that
+ has been used to sign this CRL. This is function is useful in the
+ case 'gnutls_x509_crl_get_signature_algorithm()' returned
+ 'GNUTLS_SIGN_UNKNOWN' .
+
+ *Returns:* zero or a negative error code on error.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crl_get_this_update
+-------------------------------
+
+ -- Function: time_t gnutls_x509_crl_get_this_update (gnutls_x509_crl_t
+ CRL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ This function will return the time this CRL was issued.
+
+ *Returns:* when the CRL was issued, or (time_t)-1 on error.
+
+gnutls_x509_crl_get_version
+---------------------------
+
+ -- Function: int gnutls_x509_crl_get_version (gnutls_x509_crl_t CRL)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ This function will return the version of the specified CRL.
+
+ *Returns:* The version number, or a negative error code on error.
+
+gnutls_x509_crl_import
+----------------------
+
+ -- Function: int gnutls_x509_crl_import (gnutls_x509_crl_t CRL, const
+ gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT)
+ CRL: The data to store the parsed CRL.
+
+ DATA: The DER or PEM encoded CRL.
+
+ FORMAT: One of DER or PEM
+
+ This function will convert the given DER or PEM encoded CRL to the
+ native 'gnutls_x509_crl_t' format. The output will be stored in
+ 'crl'.
+
+ If the CRL is PEM encoded it should have a header of "X509 CRL".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_init
+--------------------
+
+ -- Function: int gnutls_x509_crl_init (gnutls_x509_crl_t * CRL)
+ CRL: A pointer to the type to be initialized
+
+ This function will initialize a CRL structure. CRL stands for
+ Certificate Revocation List. A revocation list usually contains
+ lists of certificate serial numbers that have been revoked by an
+ Authority. The revocation lists are always signed with the
+ authority's private key.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_iter_crt_serial
+-------------------------------
+
+ -- Function: int gnutls_x509_crl_iter_crt_serial (gnutls_x509_crl_t
+ CRL, gnutls_x509_crl_iter_t * ITER, unsigned char * SERIAL,
+ size_t * SERIAL_SIZE, time_t * T)
+ CRL: should contain a 'gnutls_x509_crl_t' type
+
+ ITER: A pointer to an iterator (initially the iterator should be
+ 'NULL' )
+
+ SERIAL: where the serial number will be copied
+
+ SERIAL_SIZE: initially holds the size of serial
+
+ T: if non null, will hold the time this certificate was revoked
+
+ This function performs the same as
+ 'gnutls_x509_crl_get_crt_serial()' , but reads sequentially and
+ keeps state in the iterator between calls. That allows it to
+ provide better performance in sequences with many elements
+ (50000+).
+
+ When past the last element is accessed
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned and the
+ iterator is reset.
+
+ After use, the iterator must be deinitialized using
+ 'gnutls_x509_crl_iter_deinit()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_iter_deinit
+---------------------------
+
+ -- Function: void gnutls_x509_crl_iter_deinit (gnutls_x509_crl_iter_t
+ ITER)
+ ITER: The iterator to be deinitialized
+
+ This function will deinitialize an iterator type.
+
+gnutls_x509_crl_list_import
+---------------------------
+
+ -- Function: int gnutls_x509_crl_list_import (gnutls_x509_crl_t * CRLS,
+ unsigned int * CRL_MAX, const gnutls_datum_t * DATA,
+ gnutls_x509_crt_fmt_t FORMAT, unsigned int FLAGS)
+ CRLS: Indicates where the parsed CRLs will be copied to. Must not
+ be initialized.
+
+ CRL_MAX: Initially must hold the maximum number of crls. It will
+ be updated with the number of crls available.
+
+ DATA: The PEM encoded CRLs
+
+ FORMAT: One of DER or PEM.
+
+ FLAGS: must be (0) or an OR'd sequence of
+ gnutls_certificate_import_flags.
+
+ This function will convert the given PEM encoded CRL list to the
+ native gnutls_x509_crl_t format. The output will be stored in
+ 'crls' . They will be automatically initialized.
+
+ If the Certificate is PEM encoded it should have a header of "X509
+ CRL".
+
+ *Returns:* the number of certificates read or a negative error
+ value.
+
+ *Since:* 3.0
+
+gnutls_x509_crl_list_import2
+----------------------------
+
+ -- Function: int gnutls_x509_crl_list_import2 (gnutls_x509_crl_t **
+ CRLS, unsigned int * SIZE, const gnutls_datum_t * DATA,
+ gnutls_x509_crt_fmt_t FORMAT, unsigned int FLAGS)
+ CRLS: Will contain the parsed crl list.
+
+ SIZE: It will contain the size of the list.
+
+ DATA: The PEM encoded CRL.
+
+ FORMAT: One of DER or PEM.
+
+ FLAGS: must be (0) or an OR'd sequence of
+ gnutls_certificate_import_flags.
+
+ This function will convert the given PEM encoded CRL list to the
+ native gnutls_x509_crl_t format. The output will be stored in
+ 'crls' . They will be automatically initialized.
+
+ If the Certificate is PEM encoded it should have a header of "X509
+ CRL".
+
+ *Returns:* the number of certificates read or a negative error
+ value.
+
+ *Since:* 3.0
+
+gnutls_x509_crl_print
+---------------------
+
+ -- Function: int gnutls_x509_crl_print (gnutls_x509_crl_t CRL,
+ gnutls_certificate_print_formats_t FORMAT, gnutls_datum_t *
+ OUT)
+ CRL: The data to be printed
+
+ FORMAT: Indicate the format to use
+
+ OUT: Newly allocated datum with null terminated string.
+
+ This function will pretty print a X.509 certificate revocation
+ list, suitable for display to a human.
+
+ The output 'out' needs to be deallocated using 'gnutls_free()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_set_authority_key_id
+------------------------------------
+
+ -- Function: int gnutls_x509_crl_set_authority_key_id
+ (gnutls_x509_crl_t CRL, const void * ID, size_t ID_SIZE)
+ CRL: a CRL of type 'gnutls_x509_crl_t'
+
+ ID: The key ID
+
+ ID_SIZE: Holds the size of the serial field.
+
+ This function will set the CRL's authority key ID extension. Only
+ the keyIdentifier field can be set with this function. This may be
+ used by an authority that holds multiple private keys, to
+ distinguish the used key.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crl_set_crt
+-----------------------
+
+ -- Function: int gnutls_x509_crl_set_crt (gnutls_x509_crl_t CRL,
+ gnutls_x509_crt_t CRT, time_t REVOCATION_TIME)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ CRT: a certificate of type 'gnutls_x509_crt_t' with the revoked
+ certificate
+
+ REVOCATION_TIME: The time this certificate was revoked
+
+ This function will set a revoked certificate's serial number to the
+ CRL.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_set_crt_serial
+------------------------------
+
+ -- Function: int gnutls_x509_crl_set_crt_serial (gnutls_x509_crl_t CRL,
+ const void * SERIAL, size_t SERIAL_SIZE, time_t
+ REVOCATION_TIME)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ SERIAL: The revoked certificate's serial number
+
+ SERIAL_SIZE: Holds the size of the serial field.
+
+ REVOCATION_TIME: The time this certificate was revoked
+
+ This function will set a revoked certificate's serial number to the
+ CRL.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_set_next_update
+-------------------------------
+
+ -- Function: int gnutls_x509_crl_set_next_update (gnutls_x509_crl_t
+ CRL, time_t EXP_TIME)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ EXP_TIME: The actual time
+
+ This function will set the time this CRL will be updated. This is
+ an optional value to be set on a CRL and this call can be omitted
+ when generating a CRL.
+
+ Prior to GnuTLS 3.5.7, setting a nextUpdate field was required in
+ order to generate a CRL.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_set_number
+--------------------------
+
+ -- Function: int gnutls_x509_crl_set_number (gnutls_x509_crl_t CRL,
+ const void * NR, size_t NR_SIZE)
+ CRL: a CRL of type 'gnutls_x509_crl_t'
+
+ NR: The CRL number
+
+ NR_SIZE: Holds the size of the nr field.
+
+ This function will set the CRL's number extension. This is to be
+ used as a unique and monotonic number assigned to the CRL by the
+ authority.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crl_set_this_update
+-------------------------------
+
+ -- Function: int gnutls_x509_crl_set_this_update (gnutls_x509_crl_t
+ CRL, time_t ACT_TIME)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ ACT_TIME: The actual time
+
+ This function will set the time this CRL was issued.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_set_version
+---------------------------
+
+ -- Function: int gnutls_x509_crl_set_version (gnutls_x509_crl_t CRL,
+ unsigned int VERSION)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ VERSION: holds the version number. For CRLv1 crls must be 1.
+
+ This function will set the version of the CRL. This must be one for
+ CRL version 1, and so on. The CRLs generated by gnutls should have
+ a version number of 2.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_sign
+--------------------
+
+ -- Function: int gnutls_x509_crl_sign (gnutls_x509_crl_t CRL,
+ gnutls_x509_crt_t ISSUER, gnutls_x509_privkey_t ISSUER_KEY)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ ISSUER: is the certificate of the certificate issuer
+
+ ISSUER_KEY: holds the issuer's private key
+
+ This function is the same a 'gnutls_x509_crl_sign2()' with no
+ flags, and an appropriate hash algorithm. The hash algorithm used
+ may vary between versions of GnuTLS, and it is tied to the security
+ level of the issuer's public key.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_sign2
+---------------------
+
+ -- Function: int gnutls_x509_crl_sign2 (gnutls_x509_crl_t CRL,
+ gnutls_x509_crt_t ISSUER, gnutls_x509_privkey_t ISSUER_KEY,
+ gnutls_digest_algorithm_t DIG, unsigned int FLAGS)
+ CRL: should contain a gnutls_x509_crl_t type
+
+ ISSUER: is the certificate of the certificate issuer
+
+ ISSUER_KEY: holds the issuer's private key
+
+ DIG: The message digest to use. GNUTLS_DIG_SHA256 is the safe
+ choice unless you know what you're doing.
+
+ FLAGS: must be 0
+
+ This function will sign the CRL with the issuer's private key, and
+ will copy the issuer's information into the CRL.
+
+ This must be the last step in a certificate CRL since all the
+ previously set parameters are now signed.
+
+ A known limitation of this function is, that a newly-signed CRL
+ will not be fully functional (e.g., for signature verification),
+ until it is exported an re-imported.
+
+ After GnuTLS 3.6.1 the value of 'dig' may be 'GNUTLS_DIG_UNKNOWN' ,
+ and in that case, a suitable but reasonable for the key algorithm
+ will be selected.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crl_verify
+----------------------
+
+ -- Function: int gnutls_x509_crl_verify (gnutls_x509_crl_t CRL, const
+ gnutls_x509_crt_t * TRUSTED_CAS, unsigned TCAS_SIZE, unsigned
+ int FLAGS, unsigned int * VERIFY)
+ CRL: is the crl to be verified
+
+ TRUSTED_CAS: is a certificate list that is considered to be trusted
+ one
+
+ TCAS_SIZE: holds the number of CA certificates in CA_list
+
+ FLAGS: Flags that may be used to change the verification algorithm.
+ Use OR of the gnutls_certificate_verify_flags enumerations.
+
+ VERIFY: will hold the crl verification output.
+
+ This function will try to verify the given crl and return its
+ verification status. See 'gnutls_x509_crt_list_verify()' for a
+ detailed description of return values. Note that since GnuTLS
+ 3.1.4 this function includes the time checks.
+
+ Note that value in 'verify' is set only when the return value of
+ this function is success (i.e, failure to trust a CRL a certificate
+ does not imply a negative return value).
+
+ Before GnuTLS 3.5.7 this function would return zero or a positive
+ number on success.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0), otherwise a negative
+ error value.
+
+gnutls_x509_crq_deinit
+----------------------
+
+ -- Function: void gnutls_x509_crq_deinit (gnutls_x509_crq_t CRQ)
+ CRQ: the type to be deinitialized
+
+ This function will deinitialize a PKCS'10' certificate request
+ structure.
+
+gnutls_x509_crq_export
+----------------------
+
+ -- Function: int gnutls_x509_crq_export (gnutls_x509_crq_t CRQ,
+ gnutls_x509_crt_fmt_t FORMAT, void * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUTPUT_DATA: will contain a certificate request PEM or DER encoded
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will export the certificate request to a PEM or DER
+ encoded PKCS10 structure.
+
+ If the buffer provided is not long enough to hold the output, then
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' will be returned and *
+ 'output_data_size' will be updated.
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ NEW CERTIFICATE REQUEST".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_export2
+-----------------------
+
+ -- Function: int gnutls_x509_crq_export2 (gnutls_x509_crq_t CRQ,
+ gnutls_x509_crt_fmt_t FORMAT, gnutls_datum_t * OUT)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUT: will contain a certificate request PEM or DER encoded
+
+ This function will export the certificate request to a PEM or DER
+ encoded PKCS10 structure.
+
+ The output buffer is allocated using 'gnutls_malloc()' .
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ NEW CERTIFICATE REQUEST".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ Since 3.1.3
+
+gnutls_x509_crq_get_attribute_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_attribute_by_oid
+ (gnutls_x509_crq_t CRQ, const char * OID, unsigned INDX, void
+ * BUF, size_t * BUF_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ OID: holds an Object Identifier in null-terminated string
+
+ INDX: In case multiple same OIDs exist in the attribute list, this
+ specifies which to get, use (0) to get the first one
+
+ BUF: a pointer to a structure to hold the attribute data (may be
+ 'NULL' )
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will return the attribute in the certificate request
+ specified by the given Object ID. The attribute will be DER
+ encoded.
+
+ Attributes in a certificate request is an optional set of data
+ appended to the request. Their interpretation depends on the CA
+ policy.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_get_attribute_data
+----------------------------------
+
+ -- Function: int gnutls_x509_crq_get_attribute_data (gnutls_x509_crq_t
+ CRQ, unsigned INDX, void * DATA, size_t * SIZEOF_DATA)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ INDX: Specifies which attribute number to get. Use (0) to get the
+ first one.
+
+ DATA: a pointer to a structure to hold the data (may be null)
+
+ SIZEOF_DATA: initially holds the size of 'oid'
+
+ This function will return the requested attribute data in the
+ certificate request. The attribute data will be stored as a string
+ in the provided buffer.
+
+ Use 'gnutls_x509_crq_get_attribute_info()' to extract the OID. Use
+ 'gnutls_x509_crq_get_attribute_by_oid()' instead, if you want to
+ get data indexed by the attribute OID rather than sequence.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If your have
+ reached the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_attribute_info
+----------------------------------
+
+ -- Function: int gnutls_x509_crq_get_attribute_info (gnutls_x509_crq_t
+ CRQ, unsigned INDX, void * OID, size_t * SIZEOF_OID)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ INDX: Specifies which attribute number to get. Use (0) to get the
+ first one.
+
+ OID: a pointer to a structure to hold the OID
+
+ SIZEOF_OID: initially holds the maximum size of 'oid' , on return
+ holds actual size of 'oid' .
+
+ This function will return the requested attribute OID in the
+ certificate, and the critical flag for it. The attribute OID will
+ be stored as a string in the provided buffer. Use
+ 'gnutls_x509_crq_get_attribute_data()' to extract the data.
+
+ If the buffer provided is not long enough to hold the output, then
+ * 'sizeof_oid' is updated and 'GNUTLS_E_SHORT_MEMORY_BUFFER' will
+ be returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If your have
+ reached the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_basic_constraints
+-------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_basic_constraints
+ (gnutls_x509_crq_t CRQ, unsigned int * CRITICAL, unsigned int
+ * CA, int * PATHLEN)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ CA: pointer to output integer indicating CA status, may be NULL,
+ value is 1 if the certificate CA flag is set, 0 otherwise.
+
+ PATHLEN: pointer to output integer indicating path length (may be
+ NULL), non-negative error codes indicate a present
+ pathLenConstraint field and the actual value, -1 indicate that the
+ field is absent.
+
+ This function will read the certificate's basic constraints, and
+ return the certificates CA status. It reads the basicConstraints
+ X.509 extension (2.5.29.19).
+
+ *Returns:* If the certificate is a CA a positive value will be
+ returned, or (0) if the certificate does not have CA flag set. A
+ negative error code may be returned in case of errors. If the
+ certificate does not contain the basicConstraints extension
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_challenge_password
+--------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_challenge_password
+ (gnutls_x509_crq_t CRQ, char * PASS, size_t * PASS_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ PASS: will hold a (0)-terminated password string
+
+ PASS_SIZE: Initially holds the size of 'pass' .
+
+ This function will return the challenge password in the request.
+ The challenge password is intended to be used for requesting a
+ revocation of the certificate.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_get_dn
+----------------------
+
+ -- Function: int gnutls_x509_crq_get_dn (gnutls_x509_crq_t CRQ, char *
+ BUF, size_t * BUF_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ BUF: a pointer to a structure to hold the name (may be 'NULL' )
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will copy the name of the Certificate request subject
+ to the provided buffer. The name will be in the form
+ "C=xxxx,O=yyyy,CN=zzzz" as described in RFC 2253. The output
+ string 'buf' will be ASCII or UTF-8 encoded, depending on the
+ certificate data.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crq_get_dn3()' .
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the * 'buf_size' will be updated
+ with the required size. On success 0 is returned.
+
+gnutls_x509_crq_get_dn2
+-----------------------
+
+ -- Function: int gnutls_x509_crq_get_dn2 (gnutls_x509_crq_t CRQ,
+ gnutls_datum_t * DN)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ This function will allocate buffer and copy the name of the
+ Certificate request. The name will be in the form
+ "C=xxxx,O=yyyy,CN=zzzz" as described in RFC4514. The output string
+ will be ASCII or UTF-8 encoded, depending on the certificate data.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crq_get_dn3()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value. and a negative error code on
+ error.
+
+ *Since:* 3.1.10
+
+gnutls_x509_crq_get_dn3
+-----------------------
+
+ -- Function: int gnutls_x509_crq_get_dn3 (gnutls_x509_crq_t CRQ,
+ gnutls_datum_t * DN, unsigned FLAGS)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ FLAGS: zero or 'GNUTLS_X509_DN_FLAG_COMPAT'
+
+ This function will allocate buffer and copy the name of the
+ Certificate request. The name will be in the form
+ "C=xxxx,O=yyyy,CN=zzzz" as described in RFC4514. The output string
+ will be ASCII or UTF-8 encoded, depending on the certificate data.
+
+ When the flag 'GNUTLS_X509_DN_FLAG_COMPAT' is specified, the output
+ format will match the format output by previous to 3.5.6 versions
+ of GnuTLS which was not not fully RFC4514-compliant.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value. and a negative error code on
+ error.
+
+ *Since:* 3.5.7
+
+gnutls_x509_crq_get_dn_by_oid
+-----------------------------
+
+ -- Function: int gnutls_x509_crq_get_dn_by_oid (gnutls_x509_crq_t CRQ,
+ const char * OID, unsigned INDX, unsigned int RAW_FLAG, void *
+ BUF, size_t * BUF_SIZE)
+ CRQ: should contain a gnutls_x509_crq_t type
+
+ OID: holds an Object Identifier in a null terminated string
+
+ INDX: In case multiple same OIDs exist in the RDN, this specifies
+ which to get. Use (0) to get the first one.
+
+ RAW_FLAG: If non-zero returns the raw DER data of the DN part.
+
+ BUF: a pointer to a structure to hold the name (may be 'NULL' )
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will extract the part of the name of the Certificate
+ request subject, specified by the given OID. The output will be
+ encoded as described in RFC2253. The output string will be ASCII
+ or UTF-8 encoded, depending on the certificate data.
+
+ Some helper macros with popular OIDs can be found in gnutls/x509.h
+ If raw flag is (0), this function will only return known OIDs as
+ text. Other OIDs will be DER encoded, as described in RFC2253 - in
+ hex format with a '\#' prefix. You can check about known OIDs
+ using 'gnutls_x509_dn_oid_known()' .
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the * 'buf_size' will be updated
+ with the required size. On success 0 is returned.
+
+gnutls_x509_crq_get_dn_oid
+--------------------------
+
+ -- Function: int gnutls_x509_crq_get_dn_oid (gnutls_x509_crq_t CRQ,
+ unsigned INDX, void * OID, size_t * SIZEOF_OID)
+ CRQ: should contain a gnutls_x509_crq_t type
+
+ INDX: Specifies which DN OID to get. Use (0) to get the first one.
+
+ OID: a pointer to a structure to hold the name (may be 'NULL' )
+
+ SIZEOF_OID: initially holds the size of 'oid'
+
+ This function will extract the requested OID of the name of the
+ certificate request subject, specified by the given index.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the * 'sizeof_oid' will be
+ updated with the required size. On success 0 is returned.
+
+gnutls_x509_crq_get_extension_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_extension_by_oid
+ (gnutls_x509_crq_t CRQ, const char * OID, unsigned INDX, void
+ * BUF, size_t * BUF_SIZE, unsigned int * CRITICAL)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ OID: holds an Object Identifier in a null terminated string
+
+ INDX: In case multiple same OIDs exist in the extensions, this
+ specifies which to get. Use (0) to get the first one.
+
+ BUF: a pointer to a structure to hold the name (may be null)
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return the extension specified by the OID in the
+ certificate. The extensions will be returned as binary data DER
+ encoded, in the provided buffer.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If the
+ certificate does not contain the specified extension
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_extension_by_oid2
+-------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_extension_by_oid2
+ (gnutls_x509_crq_t CRQ, const char * OID, unsigned INDX,
+ gnutls_datum_t * OUTPUT, unsigned int * CRITICAL)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ OID: holds an Object Identifier in a null terminated string
+
+ INDX: In case multiple same OIDs exist in the extensions, this
+ specifies which to get. Use (0) to get the first one.
+
+ OUTPUT: will hold the allocated extension data
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return the extension specified by the OID in the
+ certificate. The extensions will be returned as binary data DER
+ encoded, in the provided buffer.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If the
+ certificate does not contain the specified extension
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 3.3.8
+
+gnutls_x509_crq_get_extension_data
+----------------------------------
+
+ -- Function: int gnutls_x509_crq_get_extension_data (gnutls_x509_crq_t
+ CRQ, unsigned INDX, void * DATA, size_t * SIZEOF_DATA)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ INDX: Specifies which extension number to get. Use (0) to get the
+ first one.
+
+ DATA: a pointer to a structure to hold the data (may be null)
+
+ SIZEOF_DATA: initially holds the size of 'oid'
+
+ This function will return the requested extension data in the
+ certificate. The extension data will be stored as a string in the
+ provided buffer.
+
+ Use 'gnutls_x509_crq_get_extension_info()' to extract the OID and
+ critical flag. Use 'gnutls_x509_crq_get_extension_by_oid()'
+ instead, if you want to get data indexed by the extension OID
+ rather than sequence.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If your have
+ reached the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_extension_data2
+-----------------------------------
+
+ -- Function: int gnutls_x509_crq_get_extension_data2 (gnutls_x509_crq_t
+ CRQ, unsigned INDX, gnutls_datum_t * DATA)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ INDX: Specifies which extension OID to read. Use (0) to get the
+ first one.
+
+ DATA: will contain the extension DER-encoded data
+
+ This function will return the requested extension data in the
+ certificate request. The extension data will be allocated using
+ 'gnutls_malloc()' .
+
+ Use 'gnutls_x509_crq_get_extension_info()' to extract the OID.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If you have reached
+ the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crq_get_extension_info
+----------------------------------
+
+ -- Function: int gnutls_x509_crq_get_extension_info (gnutls_x509_crq_t
+ CRQ, unsigned INDX, void * OID, size_t * SIZEOF_OID, unsigned
+ int * CRITICAL)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ INDX: Specifies which extension number to get. Use (0) to get the
+ first one.
+
+ OID: a pointer to store the OID
+
+ SIZEOF_OID: initially holds the maximum size of 'oid' , on return
+ holds actual size of 'oid' .
+
+ CRITICAL: output variable with critical flag, may be NULL.
+
+ This function will return the requested extension OID in the
+ certificate, and the critical flag for it. The extension OID will
+ be stored as a string in the provided buffer. Use
+ 'gnutls_x509_crq_get_extension_data()' to extract the data.
+
+ If the buffer provided is not long enough to hold the output, then
+ * 'sizeof_oid' is updated and 'GNUTLS_E_SHORT_MEMORY_BUFFER' will
+ be returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code in case of an error. If your have
+ reached the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_key_id
+--------------------------
+
+ -- Function: int gnutls_x509_crq_get_key_id (gnutls_x509_crq_t CRQ,
+ unsigned int FLAGS, unsigned char * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ CRQ: a certificate of type 'gnutls_x509_crq_t'
+
+ FLAGS: should be one of the flags from 'gnutls_keyid_flags_t'
+
+ OUTPUT_DATA: will contain the key ID
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will return a unique ID that depends on the public
+ key parameters. This ID can be used in checking whether a
+ certificate corresponds to the given private key.
+
+ If the buffer provided is not long enough to hold the output, then
+ * 'output_data_size' is updated and GNUTLS_E_SHORT_MEMORY_BUFFER
+ will be returned. The output will normally be a SHA-1 hash output,
+ which is 20 bytes.
+
+ *Returns:* In case of failure a negative error code will be
+ returned, and 0 on success.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_key_purpose_oid
+-----------------------------------
+
+ -- Function: int gnutls_x509_crq_get_key_purpose_oid (gnutls_x509_crq_t
+ CRQ, unsigned INDX, void * OID, size_t * SIZEOF_OID, unsigned
+ int * CRITICAL)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ INDX: This specifies which OID to return, use (0) to get the first
+ one
+
+ OID: a pointer to store the OID (may be 'NULL' )
+
+ SIZEOF_OID: initially holds the size of 'oid'
+
+ CRITICAL: output variable with critical flag, may be 'NULL' .
+
+ This function will extract the key purpose OIDs of the Certificate
+ specified by the given index. These are stored in the Extended Key
+ Usage extension (2.5.29.37). See the GNUTLS_KP_* definitions for
+ human readable names.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the * 'sizeof_oid' will be
+ updated with the required size. On success 0 is returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_key_rsa_raw
+-------------------------------
+
+ -- Function: int gnutls_x509_crq_get_key_rsa_raw (gnutls_x509_crq_t
+ CRQ, gnutls_datum_t * M, gnutls_datum_t * E)
+ CRQ: Holds the certificate
+
+ M: will hold the modulus
+
+ E: will hold the public exponent
+
+ This function will export the RSA public key's parameters found in
+ the given structure. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_key_usage
+-----------------------------
+
+ -- Function: int gnutls_x509_crq_get_key_usage (gnutls_x509_crq_t CRQ,
+ unsigned int * KEY_USAGE, unsigned int * CRITICAL)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ KEY_USAGE: where the key usage bits will be stored
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return certificate's key usage, by reading the
+ keyUsage X.509 extension (2.5.29.15). The key usage value will
+ ORed values of the: 'GNUTLS_KEY_DIGITAL_SIGNATURE' ,
+ 'GNUTLS_KEY_NON_REPUDIATION' , 'GNUTLS_KEY_KEY_ENCIPHERMENT' ,
+ 'GNUTLS_KEY_DATA_ENCIPHERMENT' , 'GNUTLS_KEY_KEY_AGREEMENT' ,
+ 'GNUTLS_KEY_KEY_CERT_SIGN' , 'GNUTLS_KEY_CRL_SIGN' ,
+ 'GNUTLS_KEY_ENCIPHER_ONLY' , 'GNUTLS_KEY_DECIPHER_ONLY' .
+
+ *Returns:* the certificate key usage, or a negative error code in
+ case of parsing error. If the certificate does not contain the
+ keyUsage extension 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be
+ returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_pk_algorithm
+--------------------------------
+
+ -- Function: int gnutls_x509_crq_get_pk_algorithm (gnutls_x509_crq_t
+ CRQ, unsigned int * BITS)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ BITS: if bits is non-'NULL' it will hold the size of the
+ parameters' in bits
+
+ This function will return the public key algorithm of a PKCS'10'
+ certificate request.
+
+ If bits is non-'NULL' , it should have enough size to hold the
+ parameters size in bits. For RSA the bits returned is the modulus.
+ For DSA the bits returned are of the public exponent.
+
+ *Returns:* a member of the 'gnutls_pk_algorithm_t' enumeration on
+ success, or a negative error code on error.
+
+gnutls_x509_crq_get_pk_oid
+--------------------------
+
+ -- Function: int gnutls_x509_crq_get_pk_oid (gnutls_x509_crq_t CRQ,
+ char * OID, size_t * OID_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will return the OID of the public key algorithm on
+ that certificate request. This function is useful in the case
+ 'gnutls_x509_crq_get_pk_algorithm()' returned 'GNUTLS_PK_UNKNOWN' .
+
+ *Returns:* zero or a negative error code on error.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crq_get_private_key_usage_period
+--------------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_private_key_usage_period
+ (gnutls_x509_crq_t CRQ, time_t * ACTIVATION, time_t *
+ EXPIRATION, unsigned int * CRITICAL)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ ACTIVATION: The activation time
+
+ EXPIRATION: The expiration time
+
+ CRITICAL: the extension status
+
+ This function will return the expiration and activation times of
+ the private key of the certificate.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+gnutls_x509_crq_get_signature_algorithm
+---------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_signature_algorithm
+ (gnutls_x509_crq_t CRQ)
+ CRQ: should contain a 'gnutls_x509_cr_t' type
+
+ This function will return a value of the 'gnutls_sign_algorithm_t'
+ enumeration that is the signature algorithm that has been used to
+ sign this certificate request.
+
+ Since 3.6.0 this function never returns a negative error code.
+ Error cases and unknown/unsupported signature algorithms are mapped
+ to 'GNUTLS_SIGN_UNKNOWN' .
+
+ *Returns:* a 'gnutls_sign_algorithm_t' value
+
+ *Since:* 3.4.0
+
+gnutls_x509_crq_get_signature_oid
+---------------------------------
+
+ -- Function: int gnutls_x509_crq_get_signature_oid (gnutls_x509_crq_t
+ CRQ, char * OID, size_t * OID_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will return the OID of the signature algorithm that
+ has been used to sign this certificate request. This function is
+ useful in the case 'gnutls_x509_crq_get_signature_algorithm()'
+ returned 'GNUTLS_SIGN_UNKNOWN' .
+
+ *Returns:* zero or a negative error code on error.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crq_get_spki
+------------------------
+
+ -- Function: int gnutls_x509_crq_get_spki (gnutls_x509_crq_t CRQ,
+ gnutls_x509_spki_t SPKI, unsigned int FLAGS)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ SPKI: a SubjectPublicKeyInfo structure of type 'gnutls_x509_spki_t'
+
+ FLAGS: must be zero
+
+ This function will return the public key information of a PKCS'10'
+ certificate request. The provided 'spki' must be initialized.
+
+ *Returns:* Zero on success, or a negative error code on error.
+
+gnutls_x509_crq_get_subject_alt_name
+------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_subject_alt_name
+ (gnutls_x509_crq_t CRQ, unsigned int SEQ, void * RET, size_t *
+ RET_SIZE, unsigned int * RET_TYPE, unsigned int * CRITICAL)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ SEQ: specifies the sequence number of the alt name, 0 for the first
+ one, 1 for the second etc.
+
+ RET: is the place where the alternative name will be copied to
+
+ RET_SIZE: holds the size of ret.
+
+ RET_TYPE: holds the 'gnutls_x509_subject_alt_name_t' name type
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the alternative names, contained in the
+ given certificate. It is the same as
+ 'gnutls_x509_crq_get_subject_alt_name()' except for the fact that
+ it will return the type of the alternative name in 'ret_type' even
+ if the function fails for some reason (i.e. the buffer provided is
+ not enough).
+
+ *Returns:* the alternative subject name type on success, one of the
+ enumerated 'gnutls_x509_subject_alt_name_t' . It will return
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' if 'ret_size' is not large enough to
+ hold the value. In that case 'ret_size' will be updated with the
+ required size. If the certificate request does not have an
+ Alternative name with the specified sequence number then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_subject_alt_othername_oid
+---------------------------------------------
+
+ -- Function: int gnutls_x509_crq_get_subject_alt_othername_oid
+ (gnutls_x509_crq_t CRQ, unsigned int SEQ, void * RET, size_t *
+ RET_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ RET: is the place where the otherName OID will be copied to
+
+ RET_SIZE: holds the size of ret.
+
+ This function will extract the type OID of an otherName Subject
+ Alternative Name, contained in the given certificate, and return
+ the type as an enumerated element.
+
+ This function is only useful if
+ 'gnutls_x509_crq_get_subject_alt_name()' returned
+ 'GNUTLS_SAN_OTHERNAME' .
+
+ *Returns:* the alternative subject name type on success, one of the
+ enumerated gnutls_x509_subject_alt_name_t. For supported OIDs, it
+ will return one of the virtual (GNUTLS_SAN_OTHERNAME_*) types, e.g.
+ 'GNUTLS_SAN_OTHERNAME_XMPP' , and 'GNUTLS_SAN_OTHERNAME' for
+ unknown OIDs. It will return 'GNUTLS_E_SHORT_MEMORY_BUFFER' if
+ 'ret_size' is not large enough to hold the value. In that case
+ 'ret_size' will be updated with the required size. If the
+ certificate does not have an Alternative name with the specified
+ sequence number and with the otherName type then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_get_tlsfeatures
+-------------------------------
+
+ -- Function: int gnutls_x509_crq_get_tlsfeatures (gnutls_x509_crq_t
+ CRQ, gnutls_x509_tlsfeatures_t FEATURES, unsigned int FLAGS,
+ unsigned int * CRITICAL)
+ CRQ: An X.509 certificate request
+
+ FEATURES: If the function succeeds, the features will be stored in
+ this variable.
+
+ FLAGS: zero or 'GNUTLS_EXT_FLAG_APPEND'
+
+ CRITICAL: the extension status
+
+ This function will get the X.509 TLS features extension structure
+ from the certificate request. The returned structure needs to be
+ freed using 'gnutls_x509_tlsfeatures_deinit()' .
+
+ When the 'flags' is set to 'GNUTLS_EXT_FLAG_APPEND' , then if the
+ 'features' structure is empty this function will behave identically
+ as if the flag was not set. Otherwise if there are elements in the
+ 'features' structure then they will be merged with.
+
+ Note that 'features' must be initialized prior to calling this
+ function.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_crq_get_version
+---------------------------
+
+ -- Function: int gnutls_x509_crq_get_version (gnutls_x509_crq_t CRQ)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ This function will return the version of the specified Certificate
+ request.
+
+ *Returns:* version of certificate request, or a negative error code
+ on error.
+
+gnutls_x509_crq_import
+----------------------
+
+ -- Function: int gnutls_x509_crq_import (gnutls_x509_crq_t CRQ, const
+ gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT)
+ CRQ: The data to store the parsed certificate request.
+
+ DATA: The DER or PEM encoded certificate.
+
+ FORMAT: One of DER or PEM
+
+ This function will convert the given DER or PEM encoded certificate
+ request to a 'gnutls_x509_crq_t' type. The output will be stored
+ in 'crq' .
+
+ If the Certificate is PEM encoded it should have a header of "NEW
+ CERTIFICATE REQUEST".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_init
+--------------------
+
+ -- Function: int gnutls_x509_crq_init (gnutls_x509_crq_t * CRQ)
+ CRQ: A pointer to the type to be initialized
+
+ This function will initialize a PKCS'10' certificate request
+ structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_print
+---------------------
+
+ -- Function: int gnutls_x509_crq_print (gnutls_x509_crq_t CRQ,
+ gnutls_certificate_print_formats_t FORMAT, gnutls_datum_t *
+ OUT)
+ CRQ: The data to be printed
+
+ FORMAT: Indicate the format to use
+
+ OUT: Newly allocated datum with null terminated string.
+
+ This function will pretty print a certificate request, suitable for
+ display to a human.
+
+ The output 'out' needs to be deallocated using 'gnutls_free()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_set_attribute_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crq_set_attribute_by_oid
+ (gnutls_x509_crq_t CRQ, const char * OID, void * BUF, size_t
+ BUF_SIZE)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ OID: holds an Object Identifier in a null-terminated string
+
+ BUF: a pointer to a structure that holds the attribute data
+
+ BUF_SIZE: holds the size of 'buf'
+
+ This function will set the attribute in the certificate request
+ specified by the given Object ID. The provided attribute must be be
+ DER encoded.
+
+ Attributes in a certificate request is an optional set of data
+ appended to the request. Their interpretation depends on the CA
+ policy.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_set_basic_constraints
+-------------------------------------
+
+ -- Function: int gnutls_x509_crq_set_basic_constraints
+ (gnutls_x509_crq_t CRQ, unsigned int CA, int
+ PATHLENCONSTRAINT)
+ CRQ: a certificate request of type 'gnutls_x509_crq_t'
+
+ CA: true(1) or false(0) depending on the Certificate authority
+ status.
+
+ PATHLENCONSTRAINT: non-negative error codes indicate maximum length
+ of path, and negative error codes indicate that the
+ pathLenConstraints field should not be present.
+
+ This function will set the basicConstraints certificate extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_set_challenge_password
+--------------------------------------
+
+ -- Function: int gnutls_x509_crq_set_challenge_password
+ (gnutls_x509_crq_t CRQ, const char * PASS)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ PASS: holds a (0)-terminated password
+
+ This function will set a challenge password to be used when
+ revoking the request.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_set_dn
+----------------------
+
+ -- Function: int gnutls_x509_crq_set_dn (gnutls_x509_crq_t CRQ, const
+ char * DN, const char ** ERR)
+ CRQ: a certificate of type 'gnutls_x509_crq_t'
+
+ DN: a comma separated DN string (RFC4514)
+
+ ERR: indicates the error position (if any)
+
+ This function will set the DN on the provided certificate. The
+ input string should be plain ASCII or UTF-8 encoded. On DN parsing
+ error 'GNUTLS_E_PARSING_ERROR' is returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_set_dn_by_oid
+-----------------------------
+
+ -- Function: int gnutls_x509_crq_set_dn_by_oid (gnutls_x509_crq_t CRQ,
+ const char * OID, unsigned int RAW_FLAG, const void * DATA,
+ unsigned int SIZEOF_DATA)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ OID: holds an Object Identifier in a (0)-terminated string
+
+ RAW_FLAG: must be 0, or 1 if the data are DER encoded
+
+ DATA: a pointer to the input data
+
+ SIZEOF_DATA: holds the size of 'data'
+
+ This function will set the part of the name of the Certificate
+ request subject, specified by the given OID. The input string
+ should be ASCII or UTF-8 encoded.
+
+ Some helper macros with popular OIDs can be found in gnutls/x509.h
+ With this function you can only set the known OIDs. You can test
+ for known OIDs using 'gnutls_x509_dn_oid_known()' . For OIDs that
+ are not known (by gnutls) you should properly DER encode your data,
+ and call this function with raw_flag set.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_set_extension_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crq_set_extension_by_oid
+ (gnutls_x509_crq_t CRQ, const char * OID, const void * BUF,
+ size_t SIZEOF_BUF, unsigned int CRITICAL)
+ CRQ: a certificate of type 'gnutls_x509_crq_t'
+
+ OID: holds an Object Identifier in null terminated string
+
+ BUF: a pointer to a DER encoded data
+
+ SIZEOF_BUF: holds the size of 'buf'
+
+ CRITICAL: should be non-zero if the extension is to be marked as
+ critical
+
+ This function will set an the extension, by the specified OID, in
+ the certificate request. The extension data should be binary data
+ DER encoded.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_set_key
+-----------------------
+
+ -- Function: int gnutls_x509_crq_set_key (gnutls_x509_crq_t CRQ,
+ gnutls_x509_privkey_t KEY)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ KEY: holds a private key
+
+ This function will set the public parameters from the given private
+ key to the request.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_set_key_purpose_oid
+-----------------------------------
+
+ -- Function: int gnutls_x509_crq_set_key_purpose_oid (gnutls_x509_crq_t
+ CRQ, const void * OID, unsigned int CRITICAL)
+ CRQ: a certificate of type 'gnutls_x509_crq_t'
+
+ OID: a pointer to a null-terminated string that holds the OID
+
+ CRITICAL: Whether this extension will be critical or not
+
+ This function will set the key purpose OIDs of the Certificate.
+ These are stored in the Extended Key Usage extension (2.5.29.37)
+ See the GNUTLS_KP_* definitions for human readable names.
+
+ Subsequent calls to this function will append OIDs to the OID list.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_set_key_rsa_raw
+-------------------------------
+
+ -- Function: int gnutls_x509_crq_set_key_rsa_raw (gnutls_x509_crq_t
+ CRQ, const gnutls_datum_t * M, const gnutls_datum_t * E)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ M: holds the modulus
+
+ E: holds the public exponent
+
+ This function will set the public parameters from the given private
+ key to the request. Only RSA keys are currently supported.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.6.0
+
+gnutls_x509_crq_set_key_usage
+-----------------------------
+
+ -- Function: int gnutls_x509_crq_set_key_usage (gnutls_x509_crq_t CRQ,
+ unsigned int USAGE)
+ CRQ: a certificate request of type 'gnutls_x509_crq_t'
+
+ USAGE: an ORed sequence of the GNUTLS_KEY_* elements.
+
+ This function will set the keyUsage certificate extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_set_private_key_usage_period
+--------------------------------------------
+
+ -- Function: int gnutls_x509_crq_set_private_key_usage_period
+ (gnutls_x509_crq_t CRQ, time_t ACTIVATION, time_t EXPIRATION)
+ CRQ: a certificate of type 'gnutls_x509_crq_t'
+
+ ACTIVATION: The activation time
+
+ EXPIRATION: The expiration time
+
+ This function will set the private key usage period extension
+ (2.5.29.16).
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_set_spki
+------------------------
+
+ -- Function: int gnutls_x509_crq_set_spki (gnutls_x509_crq_t CRQ, const
+ gnutls_x509_spki_t SPKI, unsigned int FLAGS)
+ CRQ: a certificate request of type 'gnutls_x509_crq_t'
+
+ SPKI: a SubjectPublicKeyInfo structure of type 'gnutls_x509_spki_t'
+
+ FLAGS: must be zero
+
+ This function will set the certificate request's subject public key
+ information explicitly. This is intended to be used in the cases
+ where a single public key (e.g., RSA) can be used for multiple
+ signature algorithms (RSA PKCS1-1.5, and RSA-PSS).
+
+ To export the public key (i.e., the SubjectPublicKeyInfo part),
+ check 'gnutls_pubkey_import_x509()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.6.0
+
+gnutls_x509_crq_set_subject_alt_name
+------------------------------------
+
+ -- Function: int gnutls_x509_crq_set_subject_alt_name
+ (gnutls_x509_crq_t CRQ, gnutls_x509_subject_alt_name_t NT,
+ const void * DATA, unsigned int DATA_SIZE, unsigned int FLAGS)
+ CRQ: a certificate request of type 'gnutls_x509_crq_t'
+
+ NT: is one of the 'gnutls_x509_subject_alt_name_t' enumerations
+
+ DATA: The data to be set
+
+ DATA_SIZE: The size of data to be set
+
+ FLAGS: 'GNUTLS_FSAN_SET' to clear previous data or
+ 'GNUTLS_FSAN_APPEND' to append.
+
+ This function will set the subject alternative name certificate
+ extension. It can set the following types:
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crq_set_subject_alt_othername
+-----------------------------------------
+
+ -- Function: int gnutls_x509_crq_set_subject_alt_othername
+ (gnutls_x509_crq_t CRQ, const char * OID, const void * DATA,
+ unsigned int DATA_SIZE, unsigned int FLAGS)
+ CRQ: a certificate request of type 'gnutls_x509_crq_t'
+
+ OID: is the othername OID
+
+ DATA: The data to be set
+
+ DATA_SIZE: The size of data to be set
+
+ FLAGS: 'GNUTLS_FSAN_SET' to clear previous data or
+ 'GNUTLS_FSAN_APPEND' to append.
+
+ This function will set the subject alternative name certificate
+ extension. It can set the following types:
+
+ The values set must be binary values and must be properly DER
+ encoded.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crq_set_tlsfeatures
+-------------------------------
+
+ -- Function: int gnutls_x509_crq_set_tlsfeatures (gnutls_x509_crq_t
+ CRQ, gnutls_x509_tlsfeatures_t FEATURES)
+ CRQ: An X.509 certificate request
+
+ FEATURES: If the function succeeds, the features will be added to
+ the certificate request.
+
+ This function will set the certificate request's X.509 TLS
+ extension from the given structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_crq_set_version
+---------------------------
+
+ -- Function: int gnutls_x509_crq_set_version (gnutls_x509_crq_t CRQ,
+ unsigned int VERSION)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ VERSION: holds the version number, for v1 Requests must be 1
+
+ This function will set the version of the certificate request. For
+ version 1 requests this must be one.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_sign
+--------------------
+
+ -- Function: int gnutls_x509_crq_sign (gnutls_x509_crq_t CRQ,
+ gnutls_x509_privkey_t KEY)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ KEY: holds a private key
+
+ This function is the same a 'gnutls_x509_crq_sign2()' with no
+ flags, and an appropriate hash algorithm. The hash algorithm used
+ may vary between versions of GnuTLS, and it is tied to the security
+ level of the issuer's public key.
+
+ A known limitation of this function is, that a newly-signed request
+ will not be fully functional (e.g., for signature verification),
+ until it is exported an re-imported.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crq_sign2
+---------------------
+
+ -- Function: int gnutls_x509_crq_sign2 (gnutls_x509_crq_t CRQ,
+ gnutls_x509_privkey_t KEY, gnutls_digest_algorithm_t DIG,
+ unsigned int FLAGS)
+ CRQ: should contain a 'gnutls_x509_crq_t' type
+
+ KEY: holds a private key
+
+ DIG: The message digest to use, i.e., 'GNUTLS_DIG_SHA256'
+
+ FLAGS: must be 0
+
+ This function will sign the certificate request with a private key.
+ This must be the same key as the one used in
+ 'gnutls_x509_crt_set_key()' since a certificate request is self
+ signed.
+
+ This must be the last step in a certificate request generation
+ since all the previously set parameters are now signed.
+
+ A known limitation of this function is, that a newly-signed request
+ will not be fully functional (e.g., for signature verification),
+ until it is exported an re-imported.
+
+ After GnuTLS 3.6.1 the value of 'dig' may be 'GNUTLS_DIG_UNKNOWN' ,
+ and in that case, a suitable but reasonable for the key algorithm
+ will be selected.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code. 'GNUTLS_E_ASN1_VALUE_NOT_FOUND' is returned if you
+ didn't set all information in the certificate request (e.g., the
+ version using 'gnutls_x509_crq_set_version()' ).
+
+gnutls_x509_crq_verify
+----------------------
+
+ -- Function: int gnutls_x509_crq_verify (gnutls_x509_crq_t CRQ,
+ unsigned int FLAGS)
+ CRQ: is the crq to be verified
+
+ FLAGS: Flags that may be used to change the verification algorithm.
+ Use OR of the gnutls_certificate_verify_flags enumerations.
+
+ This function will verify self signature in the certificate request
+ and return its status.
+
+ *Returns:* In case of a verification failure
+ 'GNUTLS_E_PK_SIG_VERIFY_FAILED' is returned, and zero or positive
+ code on success.
+
+ Since 2.12.0
+
+gnutls_x509_crt_check_email
+---------------------------
+
+ -- Function: unsigned gnutls_x509_crt_check_email (gnutls_x509_crt_t
+ CERT, const char * EMAIL, unsigned int FLAGS)
+ CERT: should contain an gnutls_x509_crt_t type
+
+ EMAIL: A null terminated string that contains an email address
+ (RFC822)
+
+ FLAGS: should be zero
+
+ This function will check if the given certificate's subject matches
+ the given email address.
+
+ *Returns:* non-zero for a successful match, and zero on failure.
+
+gnutls_x509_crt_check_hostname
+------------------------------
+
+ -- Function: unsigned gnutls_x509_crt_check_hostname (gnutls_x509_crt_t
+ CERT, const char * HOSTNAME)
+ CERT: should contain an gnutls_x509_crt_t type
+
+ HOSTNAME: A null terminated string that contains a DNS name
+
+ This function will check if the given certificate's subject matches
+ the given hostname. This is a basic implementation of the matching
+ described in RFC6125, and takes into account wildcards, and the
+ DNSName/IPAddress subject alternative name PKIX extension.
+
+ For details see also 'gnutls_x509_crt_check_hostname2()' .
+
+ *Returns:* non-zero for a successful match, and zero on failure.
+
+gnutls_x509_crt_check_hostname2
+-------------------------------
+
+ -- Function: unsigned gnutls_x509_crt_check_hostname2
+ (gnutls_x509_crt_t CERT, const char * HOSTNAME, unsigned int
+ FLAGS)
+ CERT: should contain an gnutls_x509_crt_t type
+
+ HOSTNAME: A null terminated string that contains a DNS name
+
+ FLAGS: gnutls_certificate_verify_flags
+
+ This function will check if the given certificate's subject matches
+ the given hostname. This is a basic implementation of the matching
+ described in RFC6125, and takes into account wildcards, and the
+ DNSName/IPAddress subject alternative name PKIX extension.
+
+ IPv4 addresses are accepted by this function in the dotted-decimal
+ format (e.g, ddd.ddd.ddd.ddd), and IPv6 addresses in the
+ hexadecimal x:x:x:x:x:x:x:x format. For them the IPAddress subject
+ alternative name extension is consulted. Previous versions to
+ 3.6.0 of GnuTLS in case of a non-match would consult (in a
+ non-standard extension) the DNSname and CN fields. This is no
+ longer the case.
+
+ When the flag 'GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS' is specified
+ no wildcards are considered. Otherwise they are only considered if
+ the domain name consists of three components or more, and the
+ wildcard starts at the leftmost position. When the flag
+ 'GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES' is specified, the input
+ will be treated as a DNS name, and matching of textual IP addresses
+ against the IPAddress part of the alternative name will not be
+ allowed.
+
+ The function 'gnutls_x509_crt_check_ip()' is available for matching
+ IP addresses.
+
+ *Returns:* non-zero for a successful match, and zero on failure.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crt_check_ip
+------------------------
+
+ -- Function: unsigned gnutls_x509_crt_check_ip (gnutls_x509_crt_t CERT,
+ const unsigned char * IP, unsigned int IP_SIZE, unsigned int
+ FLAGS)
+ CERT: should contain an gnutls_x509_crt_t type
+
+ IP: A pointer to the raw IP address
+
+ IP_SIZE: the number of bytes in ip (4 or 16)
+
+ FLAGS: should be zero
+
+ This function will check if the IP allowed IP addresses in the
+ certificate's subject alternative name match the provided IP
+ address.
+
+ *Returns:* non-zero for a successful match, and zero on failure.
+
+gnutls_x509_crt_check_issuer
+----------------------------
+
+ -- Function: unsigned gnutls_x509_crt_check_issuer (gnutls_x509_crt_t
+ CERT, gnutls_x509_crt_t ISSUER)
+ CERT: is the certificate to be checked
+
+ ISSUER: is the certificate of a possible issuer
+
+ This function will check if the given certificate was issued by the
+ given issuer. It checks the DN fields and the authority key
+ identifier and subject key identifier fields match.
+
+ If the same certificate is provided at the 'cert' and 'issuer'
+ fields, it will check whether the certificate is self-signed.
+
+ *Returns:* It will return true (1) if the given certificate is
+ issued by the given issuer, and false (0) if not.
+
+gnutls_x509_crt_check_key_purpose
+---------------------------------
+
+ -- Function: unsigned gnutls_x509_crt_check_key_purpose
+ (gnutls_x509_crt_t CERT, const char * PURPOSE, unsigned FLAGS)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ PURPOSE: a key purpose OID (e.g., 'GNUTLS_KP_CODE_SIGNING' )
+
+ FLAGS: zero or 'GNUTLS_KP_FLAG_DISALLOW_ANY'
+
+ This function will check whether the given certificate matches the
+ provided key purpose. If 'flags' contains
+ 'GNUTLS_KP_FLAG_ALLOW_ANY' then it a certificate marked for any
+ purpose will not match.
+
+ *Returns:* zero if the key purpose doesn't match, and non-zero
+ otherwise.
+
+ *Since:* 3.5.6
+
+gnutls_x509_crt_check_revocation
+--------------------------------
+
+ -- Function: int gnutls_x509_crt_check_revocation (gnutls_x509_crt_t
+ CERT, const gnutls_x509_crl_t * CRL_LIST, unsigned
+ CRL_LIST_LENGTH)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ CRL_LIST: should contain a list of gnutls_x509_crl_t types
+
+ CRL_LIST_LENGTH: the length of the crl_list
+
+ This function will check if the given certificate is revoked. It
+ is assumed that the CRLs have been verified before.
+
+ *Returns:* 0 if the certificate is NOT revoked, and 1 if it is. A
+ negative error code is returned on error.
+
+gnutls_x509_crt_cpy_crl_dist_points
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_cpy_crl_dist_points (gnutls_x509_crt_t
+ DST, gnutls_x509_crt_t SRC)
+ DST: a certificate of type 'gnutls_x509_crt_t'
+
+ SRC: the certificate where the dist points will be copied from
+
+ This function will copy the CRL distribution points certificate
+ extension, from the source to the destination certificate. This
+ may be useful to copy from a CA certificate to issued ones.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_deinit
+----------------------
+
+ -- Function: void gnutls_x509_crt_deinit (gnutls_x509_crt_t CERT)
+ CERT: The data to be deinitialized
+
+ This function will deinitialize a certificate structure.
+
+gnutls_x509_crt_equals
+----------------------
+
+ -- Function: unsigned gnutls_x509_crt_equals (gnutls_x509_crt_t CERT1,
+ gnutls_x509_crt_t CERT2)
+ CERT1: The first certificate
+
+ CERT2: The second certificate
+
+ This function will compare two X.509 certificate structures.
+
+ *Returns:* On equality non-zero is returned, otherwise zero.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crt_equals2
+-----------------------
+
+ -- Function: unsigned gnutls_x509_crt_equals2 (gnutls_x509_crt_t CERT1,
+ const gnutls_datum_t * DER)
+ CERT1: The first certificate
+
+ DER: A DER encoded certificate
+
+ This function will compare an X.509 certificate structures, with
+ DER encoded certificate data.
+
+ *Returns:* On equality non-zero is returned, otherwise zero.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crt_export
+----------------------
+
+ -- Function: int gnutls_x509_crt_export (gnutls_x509_crt_t CERT,
+ gnutls_x509_crt_fmt_t FORMAT, void * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ CERT: Holds the certificate
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUTPUT_DATA: will contain a certificate PEM or DER encoded
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will export the certificate to DER or PEM format.
+
+ If the buffer provided is not long enough to hold the output, then
+ *output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will
+ be returned.
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ CERTIFICATE".
+
+ *Returns:* In case of failure a negative error code will be
+ returned, and 0 on success.
+
+gnutls_x509_crt_export2
+-----------------------
+
+ -- Function: int gnutls_x509_crt_export2 (gnutls_x509_crt_t CERT,
+ gnutls_x509_crt_fmt_t FORMAT, gnutls_datum_t * OUT)
+ CERT: Holds the certificate
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUT: will contain a certificate PEM or DER encoded
+
+ This function will export the certificate to DER or PEM format.
+ The output buffer is allocated using 'gnutls_malloc()' .
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ CERTIFICATE".
+
+ *Returns:* In case of failure a negative error code will be
+ returned, and 0 on success.
+
+ *Since:* 3.1.3
+
+gnutls_x509_crt_get_activation_time
+-----------------------------------
+
+ -- Function: time_t gnutls_x509_crt_get_activation_time
+ (gnutls_x509_crt_t CERT)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ This function will return the time this Certificate was or will be
+ activated.
+
+ *Returns:* activation time, or (time_t)-1 on error.
+
+gnutls_x509_crt_get_authority_info_access
+-----------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_authority_info_access
+ (gnutls_x509_crt_t CRT, unsigned int SEQ, int WHAT,
+ gnutls_datum_t * DATA, unsigned int * CRITICAL)
+ CRT: Holds the certificate
+
+ SEQ: specifies the sequence number of the access descriptor (0 for
+ the first one, 1 for the second etc.)
+
+ WHAT: what data to get, a 'gnutls_info_access_what_t' type.
+
+ DATA: output data to be freed with 'gnutls_free()' .
+
+ CRITICAL: pointer to output integer that is set to non-zero if the
+ extension is marked as critical (may be 'NULL' )
+
+ Note that a simpler API to access the authority info data is
+ provided by 'gnutls_x509_aia_get()' and
+ 'gnutls_x509_ext_import_aia()' .
+
+ This function extracts the Authority Information Access (AIA)
+ extension, see RFC 5280 section 4.2.2.1 for more information. The
+ AIA extension holds a sequence of AccessDescription (AD) data.
+
+ The 'seq' input parameter is used to indicate which member of the
+ sequence the caller is interested in. The first member is 0, the
+ second member 1 and so on. When the 'seq' value is out of bounds,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ The type of data returned in 'data' is specified via 'what' which
+ should be 'gnutls_info_access_what_t' values.
+
+ If 'what' is 'GNUTLS_IA_ACCESSMETHOD_OID' then 'data' will hold the
+ accessMethod OID (e.g., "1.3.6.1.5.5.7.48.1").
+
+ If 'what' is 'GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE' , 'data'
+ will hold the accessLocation GeneralName type (e.g.,
+ "uniformResourceIdentifier").
+
+ If 'what' is 'GNUTLS_IA_URI' , 'data' will hold the accessLocation
+ URI data. Requesting this 'what' value leads to an error if the
+ accessLocation is not of the "uniformResourceIdentifier" type.
+
+ If 'what' is 'GNUTLS_IA_OCSP_URI' , 'data' will hold the OCSP URI.
+ Requesting this 'what' value leads to an error if the accessMethod
+ is not 1.3.6.1.5.5.7.48.1 aka OCSP, or if accessLocation is not of
+ the "uniformResourceIdentifier" type. In that case
+ 'GNUTLS_E_UNKNOWN_ALGORITHM' will be returned, and 'seq' should be
+ increased and this function called again.
+
+ If 'what' is 'GNUTLS_IA_CAISSUERS_URI' , 'data' will hold the
+ caIssuers URI. Requesting this 'what' value leads to an error if
+ the accessMethod is not 1.3.6.1.5.5.7.48.2 aka caIssuers, or if
+ accessLocation is not of the "uniformResourceIdentifier" type. In
+ that case handle as in 'GNUTLS_IA_OCSP_URI' .
+
+ More 'what' values may be allocated in the future as needed.
+
+ If 'data' is NULL, the function does the same without storing the
+ output data, that is, it will set 'critical' and do error checking
+ as usual.
+
+ The value of the critical flag is returned in * 'critical' .
+ Supply a NULL 'critical' if you want the function to make sure the
+ extension is non-critical, as required by RFC 5280.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success,
+ 'GNUTLS_E_INVALID_REQUEST' on invalid 'crt' ,
+ 'GNUTLS_E_CONSTRAINT_ERROR' if the extension is incorrectly marked
+ as critical (use a non-NULL 'critical' to override),
+ 'GNUTLS_E_UNKNOWN_ALGORITHM' if the requested OID does not match
+ (e.g., when using 'GNUTLS_IA_OCSP_URI' ), otherwise a negative
+ error code.
+
+ *Since:* 3.0
+
+gnutls_x509_crt_get_authority_key_gn_serial
+-------------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_authority_key_gn_serial
+ (gnutls_x509_crt_t CERT, unsigned int SEQ, void * ALT, size_t
+ * ALT_SIZE, unsigned int * ALT_TYPE, void * SERIAL, size_t *
+ SERIAL_SIZE, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ ALT: is the place where the alternative name will be copied to
+
+ ALT_SIZE: holds the size of alt.
+
+ ALT_TYPE: holds the type of the alternative name (one of
+ gnutls_x509_subject_alt_name_t).
+
+ SERIAL: buffer to store the serial number (may be null)
+
+ SERIAL_SIZE: Holds the size of the serial field (may be null)
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the X.509 authority key identifier when
+ stored as a general name (authorityCertIssuer) and serial number.
+
+ Because more than one general names might be stored 'seq' can be
+ used as a counter to request them all until
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.0
+
+gnutls_x509_crt_get_authority_key_id
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_authority_key_id
+ (gnutls_x509_crt_t CERT, void * ID, size_t * ID_SIZE, unsigned
+ int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ ID: The place where the identifier will be copied
+
+ ID_SIZE: Holds the size of the id field.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the X.509v3 certificate authority's key
+ identifier. This is obtained by the X.509 Authority Key identifier
+ extension field (2.5.29.35). Note that this function only returns
+ the keyIdentifier field of the extension and
+ 'GNUTLS_E_X509_UNSUPPORTED_EXTENSION' , if the extension contains
+ the name and serial number of the certificate. In that case
+ 'gnutls_x509_crt_get_authority_key_gn_serial()' may be used.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+gnutls_x509_crt_get_basic_constraints
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_basic_constraints
+ (gnutls_x509_crt_t CERT, unsigned int * CRITICAL, unsigned int
+ * CA, int * PATHLEN)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ CA: pointer to output integer indicating CA status, may be NULL,
+ value is 1 if the certificate CA flag is set, 0 otherwise.
+
+ PATHLEN: pointer to output integer indicating path length (may be
+ NULL), non-negative error codes indicate a present
+ pathLenConstraint field and the actual value, -1 indicate that the
+ field is absent.
+
+ This function will read the certificate's basic constraints, and
+ return the certificates CA status. It reads the basicConstraints
+ X.509 extension (2.5.29.19).
+
+ *Returns:* If the certificate is a CA a positive value will be
+ returned, or (0) if the certificate does not have CA flag set. A
+ negative error code may be returned in case of errors. If the
+ certificate does not contain the basicConstraints extension
+ GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned.
+
+gnutls_x509_crt_get_ca_status
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_get_ca_status (gnutls_x509_crt_t CERT,
+ unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return certificates CA status, by reading the
+ basicConstraints X.509 extension (2.5.29.19). If the certificate
+ is a CA a positive value will be returned, or (0) if the
+ certificate does not have CA flag set.
+
+ Use 'gnutls_x509_crt_get_basic_constraints()' if you want to read
+ the pathLenConstraint field too.
+
+ *Returns:* If the certificate is a CA a positive value will be
+ returned, or (0) if the certificate does not have CA flag set. A
+ negative error code may be returned in case of errors. If the
+ certificate does not contain the basicConstraints extension
+ GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned.
+
+gnutls_x509_crt_get_crl_dist_points
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_get_crl_dist_points (gnutls_x509_crt_t
+ CERT, unsigned int SEQ, void * SAN, size_t * SAN_SIZE,
+ unsigned int * REASON_FLAGS, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the distribution point (0 for
+ the first one, 1 for the second etc.)
+
+ SAN: is the place where the distribution point will be copied to
+
+ SAN_SIZE: holds the size of ret.
+
+ REASON_FLAGS: Revocation reasons. An ORed sequence of flags from
+ 'gnutls_x509_crl_reason_flags_t' .
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function retrieves the CRL distribution points (2.5.29.31),
+ contained in the given certificate in the X509v3 Certificate
+ Extensions.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' and updates 'ret_size' if
+ 'ret_size' is not enough to hold the distribution point, or the
+ type of the distribution point if everything was ok. The type is
+ one of the enumerated 'gnutls_x509_subject_alt_name_t' . If the
+ certificate does not have an Alternative name with the specified
+ sequence number then 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is
+ returned.
+
+gnutls_x509_crt_get_dn
+----------------------
+
+ -- Function: int gnutls_x509_crt_get_dn (gnutls_x509_crt_t CERT, char *
+ BUF, size_t * BUF_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ BUF: a pointer to a structure to hold the name (may be null)
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will copy the name of the Certificate in the provided
+ buffer. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as
+ described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ The 'buf' returned will be null terminated and the 'buf_size' will
+ account for the trailing null. If 'buf' is null then only the size
+ will be filled.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crt_get_dn3()' .
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the 'buf_size' will be updated
+ with the required size. 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if
+ the DN does not exist, or another error value on error. On success
+ 0 is returned.
+
+gnutls_x509_crt_get_dn2
+-----------------------
+
+ -- Function: int gnutls_x509_crt_get_dn2 (gnutls_x509_crt_t CERT,
+ gnutls_datum_t * DN)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ This function will allocate buffer and copy the name of the
+ Certificate. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz"
+ as described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crt_get_dn3()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.1.10
+
+gnutls_x509_crt_get_dn3
+-----------------------
+
+ -- Function: int gnutls_x509_crt_get_dn3 (gnutls_x509_crt_t CERT,
+ gnutls_datum_t * DN, unsigned FLAGS)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ FLAGS: zero or 'GNUTLS_X509_DN_FLAG_COMPAT'
+
+ This function will allocate buffer and copy the name of the
+ Certificate. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz"
+ as described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ When the flag 'GNUTLS_X509_DN_FLAG_COMPAT' is specified, the output
+ format will match the format output by previous to 3.5.6 versions
+ of GnuTLS which was not not fully RFC4514-compliant.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.7
+
+gnutls_x509_crt_get_dn_by_oid
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_get_dn_by_oid (gnutls_x509_crt_t CERT,
+ const char * OID, unsigned INDX, unsigned int RAW_FLAG, void *
+ BUF, size_t * BUF_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ OID: holds an Object Identified in null terminated string
+
+ INDX: In case multiple same OIDs exist in the RDN, this specifies
+ which to send. Use (0) to get the first one.
+
+ RAW_FLAG: If non-zero returns the raw DER data of the DN part.
+
+ BUF: a pointer where the DN part will be copied (may be null).
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will extract the part of the name of the Certificate
+ subject specified by the given OID. The output, if the raw flag is
+ not used, will be encoded as described in RFC4514. Thus a string
+ that is ASCII or UTF-8 encoded, depending on the certificate data.
+
+ Some helper macros with popular OIDs can be found in gnutls/x509.h
+ If raw flag is (0), this function will only return known OIDs as
+ text. Other OIDs will be DER encoded, as described in RFC4514 - in
+ hex format with a '#' prefix. You can check about known OIDs using
+ 'gnutls_x509_dn_oid_known()' .
+
+ If 'buf' is null then only the size will be filled. If the
+ 'raw_flag' is not specified the output is always null terminated,
+ although the 'buf_size' will not include the null character.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the 'buf_size' will be updated
+ with the required size. 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if
+ there are no data in the current index. On success 0 is returned.
+
+gnutls_x509_crt_get_dn_oid
+--------------------------
+
+ -- Function: int gnutls_x509_crt_get_dn_oid (gnutls_x509_crt_t CERT,
+ unsigned INDX, void * OID, size_t * OID_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: This specifies which OID to return. Use (0) to get the first
+ one.
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will extract the OIDs of the name of the Certificate
+ subject specified by the given index.
+
+ If 'oid' is null then only the size will be filled. The 'oid'
+ returned will be null terminated, although 'oid_size' will not
+ account for the trailing null.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the 'buf_size' will be updated
+ with the required size. 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if
+ there are no data in the current index. On success 0 is returned.
+
+gnutls_x509_crt_get_expiration_time
+-----------------------------------
+
+ -- Function: time_t gnutls_x509_crt_get_expiration_time
+ (gnutls_x509_crt_t CERT)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ This function will return the time this certificate was or will be
+ expired.
+
+ *Returns:* expiration time, or (time_t)-1 on error.
+
+gnutls_x509_crt_get_extension_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_extension_by_oid
+ (gnutls_x509_crt_t CERT, const char * OID, unsigned INDX, void
+ * BUF, size_t * BUF_SIZE, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ OID: holds an Object Identified in null terminated string
+
+ INDX: In case multiple same OIDs exist in the extensions, this
+ specifies which to send. Use (0) to get the first one.
+
+ BUF: a pointer to a structure to hold the name (may be null)
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return the extension specified by the OID in the
+ certificate. The extensions will be returned as binary data DER
+ encoded, in the provided buffer.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If the certificate
+ does not contain the specified extension
+ GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned.
+
+gnutls_x509_crt_get_extension_by_oid2
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_extension_by_oid2
+ (gnutls_x509_crt_t CERT, const char * OID, unsigned INDX,
+ gnutls_datum_t * OUTPUT, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ OID: holds an Object Identified in null terminated string
+
+ INDX: In case multiple same OIDs exist in the extensions, this
+ specifies which to send. Use (0) to get the first one.
+
+ OUTPUT: will hold the allocated extension data
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return the extension specified by the OID in the
+ certificate. The extensions will be returned as binary data DER
+ encoded, in the provided buffer.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If the certificate
+ does not contain the specified extension
+ GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned.
+
+ *Since:* 3.3.8
+
+gnutls_x509_crt_get_extension_data
+----------------------------------
+
+ -- Function: int gnutls_x509_crt_get_extension_data (gnutls_x509_crt_t
+ CERT, unsigned INDX, void * DATA, size_t * SIZEOF_DATA)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: Specifies which extension OID to send. Use (0) to get the
+ first one.
+
+ DATA: a pointer to a structure to hold the data (may be null)
+
+ SIZEOF_DATA: initially holds the size of 'data'
+
+ This function will return the requested extension data in the
+ certificate. The extension data will be stored in the provided
+ buffer.
+
+ Use 'gnutls_x509_crt_get_extension_info()' to extract the OID and
+ critical flag. Use 'gnutls_x509_crt_get_extension_by_oid()'
+ instead, if you want to get data indexed by the extension OID
+ rather than sequence.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If you have reached
+ the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+gnutls_x509_crt_get_extension_data2
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_get_extension_data2 (gnutls_x509_crt_t
+ CERT, unsigned INDX, gnutls_datum_t * DATA)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: Specifies which extension OID to read. Use (0) to get the
+ first one.
+
+ DATA: will contain the extension DER-encoded data
+
+ This function will return the requested by the index extension data
+ in the certificate. The extension data will be allocated using
+ 'gnutls_malloc()' .
+
+ Use 'gnutls_x509_crt_get_extension_info()' to extract the OID.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If you have reached
+ the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+gnutls_x509_crt_get_extension_info
+----------------------------------
+
+ -- Function: int gnutls_x509_crt_get_extension_info (gnutls_x509_crt_t
+ CERT, unsigned INDX, void * OID, size_t * OID_SIZE, unsigned
+ int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: Specifies which extension OID to send. Use (0) to get the
+ first one.
+
+ OID: a pointer to a structure to hold the OID
+
+ OID_SIZE: initially holds the maximum size of 'oid' , on return
+ holds actual size of 'oid' .
+
+ CRITICAL: output variable with critical flag, may be NULL.
+
+ This function will return the requested extension OID in the
+ certificate, and the critical flag for it. The extension OID will
+ be stored as a string in the provided buffer. Use
+ 'gnutls_x509_crt_get_extension()' to extract the data.
+
+ If the buffer provided is not long enough to hold the output, then
+ 'oid_size' is updated and 'GNUTLS_E_SHORT_MEMORY_BUFFER' will be
+ returned. The 'oid' returned will be null terminated, although
+ 'oid_size' will not account for the trailing null (the latter is
+ not true for GnuTLS prior to 3.6.0).
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If you have reached
+ the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+gnutls_x509_crt_get_extension_oid
+---------------------------------
+
+ -- Function: int gnutls_x509_crt_get_extension_oid (gnutls_x509_crt_t
+ CERT, unsigned INDX, void * OID, size_t * OID_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: Specifies which extension OID to send. Use (0) to get the
+ first one.
+
+ OID: a pointer to a structure to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will return the requested extension OID in the
+ certificate. The extension OID will be stored as a string in the
+ provided buffer.
+
+ The 'oid' returned will be null terminated, although 'oid_size'
+ will not account for the trailing null.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned. If you have reached
+ the last extension available
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+gnutls_x509_crt_get_fingerprint
+-------------------------------
+
+ -- Function: int gnutls_x509_crt_get_fingerprint (gnutls_x509_crt_t
+ CERT, gnutls_digest_algorithm_t ALGO, void * BUF, size_t *
+ BUF_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ ALGO: is a digest algorithm
+
+ BUF: a pointer to a structure to hold the fingerprint (may be null)
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will calculate and copy the certificate's fingerprint
+ in the provided buffer. The fingerprint is a hash of the
+ DER-encoded data of the certificate.
+
+ If the buffer is null then only the size will be filled.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the *buf_size will be updated
+ with the required size. On success 0 is returned.
+
+gnutls_x509_crt_get_inhibit_anypolicy
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_inhibit_anypolicy
+ (gnutls_x509_crt_t CERT, unsigned int * SKIPCERTS, unsigned
+ int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SKIPCERTS: will hold the number of certificates after which
+ anypolicy is no longer acceptable.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return certificate's value of the SkipCerts,
+ i.e., the Inhibit anyPolicy X.509 extension (2.5.29.54).
+
+ The returned value is the number of additional certificates that
+ may appear in the path before the anyPolicy is no longer
+ acceptable.
+
+ *Returns:* zero on success, or a negative error code in case of
+ parsing error. If the certificate does not contain the Inhibit
+ anyPolicy extension 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be
+ returned.
+
+ *Since:* 3.6.0
+
+gnutls_x509_crt_get_issuer
+--------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer (gnutls_x509_crt_t CERT,
+ gnutls_x509_dn_t * DN)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: output variable with pointer to uint8_t DN
+
+ Return the Certificate's Issuer DN as a 'gnutls_x509_dn_t' data
+ type, that can be decoded using 'gnutls_x509_dn_get_rdn_ava()' .
+
+ Note that 'dn' should be treated as constant. Because it points
+ into the 'cert' object, you should not use 'dn' after 'cert' is
+ deallocated.
+
+ *Returns:* Returns 0 on success, or an error code.
+
+gnutls_x509_crt_get_issuer_alt_name
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_alt_name (gnutls_x509_crt_t
+ CERT, unsigned int SEQ, void * IAN, size_t * IAN_SIZE,
+ unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ IAN: is the place where the alternative name will be copied to
+
+ IAN_SIZE: holds the size of ian.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function retrieves the Issuer Alternative Name (2.5.29.18),
+ contained in the given certificate in the X509v3 Certificate
+ Extensions.
+
+ When the SAN type is otherName, it will extract the data in the
+ otherName's value field, and 'GNUTLS_SAN_OTHERNAME' is returned.
+ You may use 'gnutls_x509_crt_get_subject_alt_othername_oid()' to
+ get the corresponding OID and the "virtual" SAN types (e.g.,
+ 'GNUTLS_SAN_OTHERNAME_XMPP' ).
+
+ If an otherName OID is known, the data will be decoded. Otherwise
+ the returned data will be DER encoded, and you will have to decode
+ it yourself. Currently, only the RFC 3920 id-on-xmppAddr Issuer
+ AltName is recognized.
+
+ *Returns:* the alternative issuer name type on success, one of the
+ enumerated 'gnutls_x509_subject_alt_name_t' . It will return
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' if 'ian_size' is not large enough to
+ hold the value. In that case 'ian_size' will be updated with the
+ required size. If the certificate does not have an Alternative
+ name with the specified sequence number then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ *Since:* 2.10.0
+
+gnutls_x509_crt_get_issuer_alt_name2
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_alt_name2
+ (gnutls_x509_crt_t CERT, unsigned int SEQ, void * IAN, size_t
+ * IAN_SIZE, unsigned int * IAN_TYPE, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ IAN: is the place where the alternative name will be copied to
+
+ IAN_SIZE: holds the size of ret.
+
+ IAN_TYPE: holds the type of the alternative name (one of
+ gnutls_x509_subject_alt_name_t).
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the alternative names, contained in the
+ given certificate. It is the same as
+ 'gnutls_x509_crt_get_issuer_alt_name()' except for the fact that it
+ will return the type of the alternative name in 'ian_type' even if
+ the function fails for some reason (i.e. the buffer provided is
+ not enough).
+
+ *Returns:* the alternative issuer name type on success, one of the
+ enumerated 'gnutls_x509_subject_alt_name_t' . It will return
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' if 'ian_size' is not large enough to
+ hold the value. In that case 'ian_size' will be updated with the
+ required size. If the certificate does not have an Alternative
+ name with the specified sequence number then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ *Since:* 2.10.0
+
+gnutls_x509_crt_get_issuer_alt_othername_oid
+--------------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_alt_othername_oid
+ (gnutls_x509_crt_t CERT, unsigned int SEQ, void * RET, size_t
+ * RET_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ RET: is the place where the otherName OID will be copied to
+
+ RET_SIZE: holds the size of ret.
+
+ This function will extract the type OID of an otherName Subject
+ Alternative Name, contained in the given certificate, and return
+ the type as an enumerated element.
+
+ If 'oid' is null then only the size will be filled. The 'oid'
+ returned will be null terminated, although 'oid_size' will not
+ account for the trailing null.
+
+ This function is only useful if
+ 'gnutls_x509_crt_get_issuer_alt_name()' returned
+ 'GNUTLS_SAN_OTHERNAME' .
+
+ *Returns:* the alternative issuer name type on success, one of the
+ enumerated gnutls_x509_subject_alt_name_t. For supported OIDs, it
+ will return one of the virtual (GNUTLS_SAN_OTHERNAME_*) types, e.g.
+ 'GNUTLS_SAN_OTHERNAME_XMPP' , and 'GNUTLS_SAN_OTHERNAME' for
+ unknown OIDs. It will return 'GNUTLS_E_SHORT_MEMORY_BUFFER' if
+ 'ret_size' is not large enough to hold the value. In that case
+ 'ret_size' will be updated with the required size. If the
+ certificate does not have an Alternative name with the specified
+ sequence number and with the otherName type then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+ *Since:* 2.10.0
+
+gnutls_x509_crt_get_issuer_dn
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_dn (gnutls_x509_crt_t CERT,
+ char * BUF, size_t * BUF_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ BUF: a pointer to a structure to hold the name (may be null)
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will copy the name of the Certificate issuer in the
+ provided buffer. The name will be in the form
+ "C=xxxx,O=yyyy,CN=zzzz" as described in RFC4514. The output string
+ will be ASCII or UTF-8 encoded, depending on the certificate data.
+
+ If 'buf' is null then only the size will be filled.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crt_get_issuer_dn3()' .
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the 'buf_size' will be updated
+ with the required size. 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if
+ the DN does not exist, or another error value on error. On success
+ 0 is returned.
+
+gnutls_x509_crt_get_issuer_dn2
+------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_dn2 (gnutls_x509_crt_t
+ CERT, gnutls_datum_t * DN)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ This function will allocate buffer and copy the name of issuer of
+ the Certificate. The name will be in the form
+ "C=xxxx,O=yyyy,CN=zzzz" as described in RFC4514. The output string
+ will be ASCII or UTF-8 encoded, depending on the certificate data.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_crt_get_issuer_dn3()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.1.10
+
+gnutls_x509_crt_get_issuer_dn3
+------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_dn3 (gnutls_x509_crt_t
+ CERT, gnutls_datum_t * DN, unsigned FLAGS)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: a pointer to a structure to hold the name; must be freed using
+ 'gnutls_free()'
+
+ FLAGS: zero or 'GNUTLS_X509_DN_FLAG_COMPAT'
+
+ This function will allocate buffer and copy the name of issuer of
+ the Certificate. The name will be in the form
+ "C=xxxx,O=yyyy,CN=zzzz" as described in RFC4514. The output string
+ will be ASCII or UTF-8 encoded, depending on the certificate data.
+
+ When the flag 'GNUTLS_X509_DN_FLAG_COMPAT' is specified, the output
+ format will match the format output by previous to 3.5.6 versions
+ of GnuTLS which was not not fully RFC4514-compliant.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.7
+
+gnutls_x509_crt_get_issuer_dn_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_dn_by_oid
+ (gnutls_x509_crt_t CERT, const char * OID, unsigned INDX,
+ unsigned int RAW_FLAG, void * BUF, size_t * BUF_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ OID: holds an Object Identified in null terminated string
+
+ INDX: In case multiple same OIDs exist in the RDN, this specifies
+ which to send. Use (0) to get the first one.
+
+ RAW_FLAG: If non-zero returns the raw DER data of the DN part.
+
+ BUF: a pointer to a structure to hold the name (may be null)
+
+ BUF_SIZE: initially holds the size of 'buf'
+
+ This function will extract the part of the name of the Certificate
+ issuer specified by the given OID. The output, if the raw flag is
+ not used, will be encoded as described in RFC4514. Thus a string
+ that is ASCII or UTF-8 encoded, depending on the certificate data.
+
+ Some helper macros with popular OIDs can be found in gnutls/x509.h
+ If raw flag is (0), this function will only return known OIDs as
+ text. Other OIDs will be DER encoded, as described in RFC4514 - in
+ hex format with a '#' prefix. You can check about known OIDs using
+ 'gnutls_x509_dn_oid_known()' .
+
+ If 'buf' is null then only the size will be filled. If the
+ 'raw_flag' is not specified the output is always null terminated,
+ although the 'buf_size' will not include the null character.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the 'buf_size' will be updated
+ with the required size. 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if
+ there are no data in the current index. On success 0 is returned.
+
+gnutls_x509_crt_get_issuer_dn_oid
+---------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_dn_oid (gnutls_x509_crt_t
+ CERT, unsigned INDX, void * OID, size_t * OID_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: This specifies which OID to return. Use (0) to get the first
+ one.
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will extract the OIDs of the name of the Certificate
+ issuer specified by the given index.
+
+ If 'oid' is null then only the size will be filled. The 'oid'
+ returned will be null terminated, although 'oid_size' will not
+ account for the trailing null.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the 'buf_size' will be updated
+ with the required size. 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if
+ there are no data in the current index. On success 0 is returned.
+
+gnutls_x509_crt_get_issuer_unique_id
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_issuer_unique_id
+ (gnutls_x509_crt_t CRT, char * BUF, size_t * BUF_SIZE)
+ CRT: Holds the certificate
+
+ BUF: user allocated memory buffer, will hold the unique id
+
+ BUF_SIZE: size of user allocated memory buffer (on input), will
+ hold actual size of the unique ID on return.
+
+ This function will extract the issuerUniqueID value (if present)
+ for the given certificate.
+
+ If the user allocated memory buffer is not large enough to hold the
+ full subjectUniqueID, then a GNUTLS_E_SHORT_MEMORY_BUFFER error
+ will be returned, and buf_size will be set to the actual length.
+
+ This function had a bug prior to 3.4.8 that prevented the setting
+ of 'NULL' 'buf' to discover the 'buf_size' . To use this function
+ safely with the older versions the 'buf' must be a valid buffer
+ that can hold at least a single byte if 'buf_size' is zero.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code.
+
+ *Since:* 2.12.0
+
+gnutls_x509_crt_get_key_id
+--------------------------
+
+ -- Function: int gnutls_x509_crt_get_key_id (gnutls_x509_crt_t CRT,
+ unsigned int FLAGS, unsigned char * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ CRT: Holds the certificate
+
+ FLAGS: should be one of the flags from 'gnutls_keyid_flags_t'
+
+ OUTPUT_DATA: will contain the key ID
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will return a unique ID that depends on the public
+ key parameters. This ID can be used in checking whether a
+ certificate corresponds to the given private key.
+
+ If the buffer provided is not long enough to hold the output, then
+ *output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will
+ be returned. The output will normally be a SHA-1 hash output,
+ which is 20 bytes.
+
+ *Returns:* In case of failure a negative error code will be
+ returned, and 0 on success.
+
+gnutls_x509_crt_get_key_purpose_oid
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_get_key_purpose_oid (gnutls_x509_crt_t
+ CERT, unsigned INDX, void * OID, size_t * OID_SIZE, unsigned
+ int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: This specifies which OID to return. Use (0) to get the first
+ one.
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ CRITICAL: output flag to indicate criticality of extension
+
+ This function will extract the key purpose OIDs of the Certificate
+ specified by the given index. These are stored in the Extended Key
+ Usage extension (2.5.29.37) See the GNUTLS_KP_* definitions for
+ human readable names.
+
+ If 'oid' is null then only the size will be filled. The 'oid'
+ returned will be null terminated, although 'oid_size' will not
+ account for the trailing null.
+
+ *Returns:* 'GNUTLS_E_SHORT_MEMORY_BUFFER' if the provided buffer is
+ not long enough, and in that case the *oid_size will be updated
+ with the required size. On success 0 is returned.
+
+gnutls_x509_crt_get_key_usage
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_get_key_usage (gnutls_x509_crt_t CERT,
+ unsigned int * KEY_USAGE, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ KEY_USAGE: where the key usage bits will be stored
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will return certificate's key usage, by reading the
+ keyUsage X.509 extension (2.5.29.15). The key usage value will
+ ORed values of the: 'GNUTLS_KEY_DIGITAL_SIGNATURE' ,
+ 'GNUTLS_KEY_NON_REPUDIATION' , 'GNUTLS_KEY_KEY_ENCIPHERMENT' ,
+ 'GNUTLS_KEY_DATA_ENCIPHERMENT' , 'GNUTLS_KEY_KEY_AGREEMENT' ,
+ 'GNUTLS_KEY_KEY_CERT_SIGN' , 'GNUTLS_KEY_CRL_SIGN' ,
+ 'GNUTLS_KEY_ENCIPHER_ONLY' , 'GNUTLS_KEY_DECIPHER_ONLY' .
+
+ *Returns:* zero on success, or a negative error code in case of
+ parsing error. If the certificate does not contain the keyUsage
+ extension 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+gnutls_x509_crt_get_name_constraints
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_name_constraints
+ (gnutls_x509_crt_t CRT, gnutls_x509_name_constraints_t NC,
+ unsigned int FLAGS, unsigned int * CRITICAL)
+ CRT: should contain a 'gnutls_x509_crt_t' type
+
+ NC: The nameconstraints intermediate type
+
+ FLAGS: zero or 'GNUTLS_EXT_FLAG_APPEND'
+
+ CRITICAL: the extension status
+
+ This function will return an intermediate type containing the name
+ constraints of the provided CA certificate. That structure can be
+ used in combination with 'gnutls_x509_name_constraints_check()' to
+ verify whether a server's name is in accordance with the
+ constraints.
+
+ When the 'flags' is set to 'GNUTLS_EXT_FLAG_APPEND' , then if the
+ 'nc' structure is empty this function will behave identically as if
+ the flag was not set. Otherwise if there are elements in the 'nc'
+ structure then the constraints will be merged with the existing
+ constraints following RFC5280 p6.1.4 (excluded constraints will be
+ appended, permitted will be intersected).
+
+ Note that 'nc' must be initialized prior to calling this function.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crt_get_pk_algorithm
+--------------------------------
+
+ -- Function: int gnutls_x509_crt_get_pk_algorithm (gnutls_x509_crt_t
+ CERT, unsigned int * BITS)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ BITS: if bits is non null it will hold the size of the parameters'
+ in bits
+
+ This function will return the public key algorithm of an X.509
+ certificate.
+
+ If bits is non null, it should have enough size to hold the
+ parameters size in bits. For RSA the bits returned is the modulus.
+ For DSA the bits returned are of the public exponent.
+
+ Unknown/unsupported algorithms are mapped to 'GNUTLS_PK_UNKNOWN' .
+
+ *Returns:* a member of the 'gnutls_pk_algorithm_t' enumeration on
+ success, or a negative error code on error.
+
+gnutls_x509_crt_get_pk_dsa_raw
+------------------------------
+
+ -- Function: int gnutls_x509_crt_get_pk_dsa_raw (gnutls_x509_crt_t CRT,
+ gnutls_datum_t * P, gnutls_datum_t * Q, gnutls_datum_t * G,
+ gnutls_datum_t * Y)
+ CRT: Holds the certificate
+
+ P: will hold the p
+
+ Q: will hold the q
+
+ G: will hold the g
+
+ Y: will hold the y
+
+ This function will export the DSA public key's parameters found in
+ the given certificate. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code.
+
+gnutls_x509_crt_get_pk_ecc_raw
+------------------------------
+
+ -- Function: int gnutls_x509_crt_get_pk_ecc_raw (gnutls_x509_crt_t CRT,
+ gnutls_ecc_curve_t * CURVE, gnutls_datum_t * X, gnutls_datum_t
+ * Y)
+ CRT: Holds the certificate
+
+ CURVE: will hold the curve
+
+ X: will hold the x-coordinate
+
+ Y: will hold the y-coordinate
+
+ This function will export the ECC public key's parameters found in
+ the given certificate. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ In EdDSA curves the 'y' parameter will be 'NULL' and the other
+ parameters will be in the native format for the curve.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code.
+
+ *Since:* 3.4.1
+
+gnutls_x509_crt_get_pk_gost_raw
+-------------------------------
+
+ -- Function: int gnutls_x509_crt_get_pk_gost_raw (gnutls_x509_crt_t
+ CRT, gnutls_ecc_curve_t * CURVE, gnutls_digest_algorithm_t *
+ DIGEST, gnutls_gost_paramset_t * PARAMSET, gnutls_datum_t * X,
+ gnutls_datum_t * Y)
+ CRT: Holds the certificate
+
+ CURVE: will hold the curve
+
+ DIGEST: will hold the digest
+
+ PARAMSET: will hold the GOST parameter set ID
+
+ X: will hold the x-coordinate
+
+ Y: will hold the y-coordinate
+
+ This function will export the GOST public key's parameters found in
+ the given certificate. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code.
+
+ *Since:* 3.6.3
+
+gnutls_x509_crt_get_pk_oid
+--------------------------
+
+ -- Function: int gnutls_x509_crt_get_pk_oid (gnutls_x509_crt_t CERT,
+ char * OID, size_t * OID_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will return the OID of the public key algorithm on
+ that certificate. This is function is useful in the case
+ 'gnutls_x509_crt_get_pk_algorithm()' returned 'GNUTLS_PK_UNKNOWN' .
+
+ *Returns:* zero or a negative error code on error.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crt_get_pk_rsa_raw
+------------------------------
+
+ -- Function: int gnutls_x509_crt_get_pk_rsa_raw (gnutls_x509_crt_t CRT,
+ gnutls_datum_t * M, gnutls_datum_t * E)
+ CRT: Holds the certificate
+
+ M: will hold the modulus
+
+ E: will hold the public exponent
+
+ This function will export the RSA public key's parameters found in
+ the given structure. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code.
+
+gnutls_x509_crt_get_policy
+--------------------------
+
+ -- Function: int gnutls_x509_crt_get_policy (gnutls_x509_crt_t CRT,
+ unsigned INDX, struct gnutls_x509_policy_st * POLICY, unsigned
+ int * CRITICAL)
+ CRT: should contain a 'gnutls_x509_crt_t' type
+
+ INDX: This specifies which policy to return. Use (0) to get the
+ first one.
+
+ POLICY: A pointer to a policy structure.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ This function will extract the certificate policy (extension
+ 2.5.29.32) specified by the given index.
+
+ The policy returned by this function must be deinitialized by using
+ 'gnutls_x509_policy_release()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.1.5
+
+gnutls_x509_crt_get_private_key_usage_period
+--------------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_private_key_usage_period
+ (gnutls_x509_crt_t CERT, time_t * ACTIVATION, time_t *
+ EXPIRATION, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ ACTIVATION: The activation time
+
+ EXPIRATION: The expiration time
+
+ CRITICAL: the extension status
+
+ This function will return the expiration and activation times of
+ the private key of the certificate. It relies on the PKIX
+ extension 2.5.29.16 being present.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+gnutls_x509_crt_get_proxy
+-------------------------
+
+ -- Function: int gnutls_x509_crt_get_proxy (gnutls_x509_crt_t CERT,
+ unsigned int * CRITICAL, int * PATHLEN, char **
+ POLICYLANGUAGE, char ** POLICY, size_t * SIZEOF_POLICY)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+
+ PATHLEN: pointer to output integer indicating path length (may be
+ NULL), non-negative error codes indicate a present
+ pCPathLenConstraint field and the actual value, -1 indicate that
+ the field is absent.
+
+ POLICYLANGUAGE: output variable with OID of policy language
+
+ POLICY: output variable with policy data
+
+ SIZEOF_POLICY: output variable size of policy data
+
+ This function will get information from a proxy certificate. It
+ reads the ProxyCertInfo X.509 extension (1.3.6.1.5.5.7.1.14).
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned.
+
+gnutls_x509_crt_get_raw_dn
+--------------------------
+
+ -- Function: int gnutls_x509_crt_get_raw_dn (gnutls_x509_crt_t CERT,
+ gnutls_datum_t * DN)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: will hold the starting point of the DN
+
+ This function will return a pointer to the DER encoded DN structure
+ and the length. This points to allocated data that must be free'd
+ using 'gnutls_free()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value. or a negative error code on
+ error.
+
+gnutls_x509_crt_get_raw_issuer_dn
+---------------------------------
+
+ -- Function: int gnutls_x509_crt_get_raw_issuer_dn (gnutls_x509_crt_t
+ CERT, gnutls_datum_t * DN)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: will hold the starting point of the DN
+
+ This function will return a pointer to the DER encoded DN structure
+ and the length. This points to allocated data that must be free'd
+ using 'gnutls_free()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.or a negative error code on error.
+
+gnutls_x509_crt_get_serial
+--------------------------
+
+ -- Function: int gnutls_x509_crt_get_serial (gnutls_x509_crt_t CERT,
+ void * RESULT, size_t * RESULT_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ RESULT: The place where the serial number will be copied
+
+ RESULT_SIZE: Holds the size of the result field.
+
+ This function will return the X.509 certificate's serial number.
+ This is obtained by the X509 Certificate serialNumber field.
+ Serial is not always a 32 or 64bit number. Some CAs use large
+ serial numbers, thus it may be wise to handle it as something
+ uint8_t.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_get_signature
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_get_signature (gnutls_x509_crt_t CERT,
+ char * SIG, size_t * SIG_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SIG: a pointer where the signature part will be copied (may be
+ null).
+
+ SIG_SIZE: initially holds the size of 'sig'
+
+ This function will extract the signature field of a certificate.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_get_signature_algorithm
+---------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_signature_algorithm
+ (gnutls_x509_crt_t CERT)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ This function will return a value of the 'gnutls_sign_algorithm_t'
+ enumeration that is the signature algorithm that has been used to
+ sign this certificate.
+
+ Since 3.6.0 this function never returns a negative error code.
+ Error cases and unknown/unsupported signature algorithms are mapped
+ to 'GNUTLS_SIGN_UNKNOWN' .
+
+ *Returns:* a 'gnutls_sign_algorithm_t' value
+
+gnutls_x509_crt_get_signature_oid
+---------------------------------
+
+ -- Function: int gnutls_x509_crt_get_signature_oid (gnutls_x509_crt_t
+ CERT, char * OID, size_t * OID_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ OID: a pointer to a buffer to hold the OID (may be null)
+
+ OID_SIZE: initially holds the size of 'oid'
+
+ This function will return the OID of the signature algorithm that
+ has been used to sign this certificate. This is function is useful
+ in the case 'gnutls_x509_crt_get_signature_algorithm()' returned
+ 'GNUTLS_SIGN_UNKNOWN' .
+
+ *Returns:* zero or a negative error code on error.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crt_get_spki
+------------------------
+
+ -- Function: int gnutls_x509_crt_get_spki (gnutls_x509_crt_t CERT,
+ gnutls_x509_spki_t SPKI, unsigned int FLAGS)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ SPKI: a SubjectPublicKeyInfo structure of type 'gnutls_x509_spki_t'
+
+ FLAGS: must be zero
+
+ This function will return the public key information of an X.509
+ certificate. The provided 'spki' must be initialized.
+
+ *Since:* 3.6.0
+
+gnutls_x509_crt_get_subject
+---------------------------
+
+ -- Function: int gnutls_x509_crt_get_subject (gnutls_x509_crt_t CERT,
+ gnutls_x509_dn_t * DN)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ DN: output variable with pointer to uint8_t DN.
+
+ Return the Certificate's Subject DN as a 'gnutls_x509_dn_t' data
+ type, that can be decoded using 'gnutls_x509_dn_get_rdn_ava()' .
+
+ Note that 'dn' should be treated as constant. Because it points
+ into the 'cert' object, you should not use 'dn' after 'cert' is
+ deallocated.
+
+ *Returns:* Returns 0 on success, or an error code.
+
+gnutls_x509_crt_get_subject_alt_name
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_subject_alt_name
+ (gnutls_x509_crt_t CERT, unsigned int SEQ, void * SAN, size_t
+ * SAN_SIZE, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ SAN: is the place where the alternative name will be copied to
+
+ SAN_SIZE: holds the size of san.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function retrieves the Alternative Name (2.5.29.17), contained
+ in the given certificate in the X509v3 Certificate Extensions.
+
+ When the SAN type is otherName, it will extract the data in the
+ otherName's value field, and 'GNUTLS_SAN_OTHERNAME' is returned.
+ You may use 'gnutls_x509_crt_get_subject_alt_othername_oid()' to
+ get the corresponding OID and the "virtual" SAN types (e.g.,
+ 'GNUTLS_SAN_OTHERNAME_XMPP' ).
+
+ If an otherName OID is known, the data will be decoded. Otherwise
+ the returned data will be DER encoded, and you will have to decode
+ it yourself. Currently, only the RFC 3920 id-on-xmppAddr SAN is
+ recognized.
+
+ *Returns:* the alternative subject name type on success, one of the
+ enumerated 'gnutls_x509_subject_alt_name_t' . It will return
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' if 'san_size' is not large enough to
+ hold the value. In that case 'san_size' will be updated with the
+ required size. If the certificate does not have an Alternative
+ name with the specified sequence number then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+gnutls_x509_crt_get_subject_alt_name2
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_subject_alt_name2
+ (gnutls_x509_crt_t CERT, unsigned int SEQ, void * SAN, size_t
+ * SAN_SIZE, unsigned int * SAN_TYPE, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ SAN: is the place where the alternative name will be copied to
+
+ SAN_SIZE: holds the size of ret.
+
+ SAN_TYPE: holds the type of the alternative name (one of
+ gnutls_x509_subject_alt_name_t).
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the alternative names, contained in the
+ given certificate. It is the same as
+ 'gnutls_x509_crt_get_subject_alt_name()' except for the fact that
+ it will return the type of the alternative name in 'san_type' even
+ if the function fails for some reason (i.e. the buffer provided is
+ not enough).
+
+ *Returns:* the alternative subject name type on success, one of the
+ enumerated 'gnutls_x509_subject_alt_name_t' . It will return
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' if 'san_size' is not large enough to
+ hold the value. In that case 'san_size' will be updated with the
+ required size. If the certificate does not have an Alternative
+ name with the specified sequence number then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+gnutls_x509_crt_get_subject_alt_othername_oid
+---------------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_subject_alt_othername_oid
+ (gnutls_x509_crt_t CERT, unsigned int SEQ, void * OID, size_t
+ * OID_SIZE)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ SEQ: specifies the sequence number of the alt name (0 for the first
+ one, 1 for the second etc.)
+
+ OID: is the place where the otherName OID will be copied to
+
+ OID_SIZE: holds the size of ret.
+
+ This function will extract the type OID of an otherName Subject
+ Alternative Name, contained in the given certificate, and return
+ the type as an enumerated element.
+
+ This function is only useful if
+ 'gnutls_x509_crt_get_subject_alt_name()' returned
+ 'GNUTLS_SAN_OTHERNAME' .
+
+ If 'oid' is null then only the size will be filled. The 'oid'
+ returned will be null terminated, although 'oid_size' will not
+ account for the trailing null.
+
+ *Returns:* the alternative subject name type on success, one of the
+ enumerated gnutls_x509_subject_alt_name_t. For supported OIDs, it
+ will return one of the virtual (GNUTLS_SAN_OTHERNAME_*) types, e.g.
+ 'GNUTLS_SAN_OTHERNAME_XMPP' , and 'GNUTLS_SAN_OTHERNAME' for
+ unknown OIDs. It will return 'GNUTLS_E_SHORT_MEMORY_BUFFER' if
+ 'ian_size' is not large enough to hold the value. In that case
+ 'ian_size' will be updated with the required size. If the
+ certificate does not have an Alternative name with the specified
+ sequence number and with the otherName type then
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned.
+
+gnutls_x509_crt_get_subject_key_id
+----------------------------------
+
+ -- Function: int gnutls_x509_crt_get_subject_key_id (gnutls_x509_crt_t
+ CERT, void * RET, size_t * RET_SIZE, unsigned int * CRITICAL)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ RET: The place where the identifier will be copied
+
+ RET_SIZE: Holds the size of the result field.
+
+ CRITICAL: will be non-zero if the extension is marked as critical
+ (may be null)
+
+ This function will return the X.509v3 certificate's subject key
+ identifier. This is obtained by the X.509 Subject Key identifier
+ extension field (2.5.29.14).
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+gnutls_x509_crt_get_subject_unique_id
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_get_subject_unique_id
+ (gnutls_x509_crt_t CRT, char * BUF, size_t * BUF_SIZE)
+ CRT: Holds the certificate
+
+ BUF: user allocated memory buffer, will hold the unique id
+
+ BUF_SIZE: size of user allocated memory buffer (on input), will
+ hold actual size of the unique ID on return.
+
+ This function will extract the subjectUniqueID value (if present)
+ for the given certificate.
+
+ If the user allocated memory buffer is not large enough to hold the
+ full subjectUniqueID, then a GNUTLS_E_SHORT_MEMORY_BUFFER error
+ will be returned, and buf_size will be set to the actual length.
+
+ This function had a bug prior to 3.4.8 that prevented the setting
+ of 'NULL' 'buf' to discover the 'buf_size' . To use this function
+ safely with the older versions the 'buf' must be a valid buffer
+ that can hold at least a single byte if 'buf_size' is zero.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code.
+
+gnutls_x509_crt_get_tlsfeatures
+-------------------------------
+
+ -- Function: int gnutls_x509_crt_get_tlsfeatures (gnutls_x509_crt_t
+ CRT, gnutls_x509_tlsfeatures_t FEATURES, unsigned int FLAGS,
+ unsigned int * CRITICAL)
+ CRT: A X.509 certificate
+
+ FEATURES: If the function succeeds, the features will be stored in
+ this variable.
+
+ FLAGS: zero or 'GNUTLS_EXT_FLAG_APPEND'
+
+ CRITICAL: the extension status
+
+ This function will get the X.509 TLS features extension structure
+ from the certificate. The returned structure needs to be freed
+ using 'gnutls_x509_tlsfeatures_deinit()' .
+
+ When the 'flags' is set to 'GNUTLS_EXT_FLAG_APPEND' , then if the
+ 'features' structure is empty this function will behave identically
+ as if the flag was not set. Otherwise if there are elements in the
+ 'features' structure then they will be merged with.
+
+ Note that 'features' must be initialized prior to calling this
+ function.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_crt_get_version
+---------------------------
+
+ -- Function: int gnutls_x509_crt_get_version (gnutls_x509_crt_t CERT)
+ CERT: should contain a 'gnutls_x509_crt_t' type
+
+ This function will return the version of the specified Certificate.
+
+ *Returns:* version of certificate, or a negative error code on
+ error.
+
+gnutls_x509_crt_import
+----------------------
+
+ -- Function: int gnutls_x509_crt_import (gnutls_x509_crt_t CERT, const
+ gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT)
+ CERT: The data to store the parsed certificate.
+
+ DATA: The DER or PEM encoded certificate.
+
+ FORMAT: One of DER or PEM
+
+ This function will convert the given DER or PEM encoded Certificate
+ to the native gnutls_x509_crt_t format. The output will be stored
+ in 'cert' .
+
+ If the Certificate is PEM encoded it should have a header of "X509
+ CERTIFICATE", or "CERTIFICATE".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_import_url
+--------------------------
+
+ -- Function: int gnutls_x509_crt_import_url (gnutls_x509_crt_t CRT,
+ const char * URL, unsigned int FLAGS)
+ CRT: A certificate of type 'gnutls_x509_crt_t'
+
+ URL: A PKCS 11 url
+
+ FLAGS: One of GNUTLS_PKCS11_OBJ_* flags for PKCS'11' URLs or zero
+ otherwise
+
+ This function will import a certificate present in a PKCS'11' token
+ or any type of back-end that supports URLs.
+
+ In previous versions of gnutls this function was named
+ gnutls_x509_crt_import_pkcs11_url, and the old name is an alias to
+ this one.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.4.0
+
+gnutls_x509_crt_init
+--------------------
+
+ -- Function: int gnutls_x509_crt_init (gnutls_x509_crt_t * CERT)
+ CERT: A pointer to the type to be initialized
+
+ This function will initialize an X.509 certificate structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_list_import
+---------------------------
+
+ -- Function: int gnutls_x509_crt_list_import (gnutls_x509_crt_t *
+ CERTS, unsigned int * CERT_MAX, const gnutls_datum_t * DATA,
+ gnutls_x509_crt_fmt_t FORMAT, unsigned int FLAGS)
+ CERTS: Indicates where the parsed list will be copied to. Must not
+ be initialized.
+
+ CERT_MAX: Initially must hold the maximum number of certs. It will
+ be updated with the number of certs available.
+
+ DATA: The PEM encoded certificate.
+
+ FORMAT: One of DER or PEM.
+
+ FLAGS: must be (0) or an OR'd sequence of
+ gnutls_certificate_import_flags.
+
+ This function will convert the given PEM encoded certificate list
+ to the native gnutls_x509_crt_t format. The output will be stored
+ in 'certs' . They will be automatically initialized.
+
+ The flag 'GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED' will cause
+ import to fail if the certificates in the provided buffer are more
+ than the available structures. The
+ 'GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED' flag will cause the
+ function to fail if the provided list is not sorted from subject to
+ issuer.
+
+ If the Certificate is PEM encoded it should have a header of "X509
+ CERTIFICATE", or "CERTIFICATE".
+
+ *Returns:* the number of certificates read or a negative error
+ value.
+
+gnutls_x509_crt_list_import2
+----------------------------
+
+ -- Function: int gnutls_x509_crt_list_import2 (gnutls_x509_crt_t **
+ CERTS, unsigned int * SIZE, const gnutls_datum_t * DATA,
+ gnutls_x509_crt_fmt_t FORMAT, unsigned int FLAGS)
+ CERTS: Will hold the parsed certificate list.
+
+ SIZE: It will contain the size of the list.
+
+ DATA: The PEM encoded certificate.
+
+ FORMAT: One of DER or PEM.
+
+ FLAGS: must be (0) or an OR'd sequence of
+ gnutls_certificate_import_flags.
+
+ This function will convert the given PEM encoded certificate list
+ to the native gnutls_x509_crt_t format. The output will be stored
+ in 'certs' which will be allocated and initialized.
+
+ If the Certificate is PEM encoded it should have a header of "X509
+ CERTIFICATE", or "CERTIFICATE".
+
+ To deinitialize 'certs' , you need to deinitialize each crt
+ structure independently, and use 'gnutls_free()' at 'certs' .
+
+ *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative
+ error code.
+
+ *Since:* 3.0
+
+gnutls_x509_crt_list_import_url
+-------------------------------
+
+ -- Function: int gnutls_x509_crt_list_import_url (gnutls_x509_crt_t **
+ CERTS, unsigned int * SIZE, const char * URL,
+ gnutls_pin_callback_t PIN_FN, void * PIN_FN_USERDATA, unsigned
+ int FLAGS)
+ CERTS: Will hold the allocated certificate list.
+
+ SIZE: It will contain the size of the list.
+
+ URL: A PKCS 11 url
+
+ PIN_FN: a PIN callback if not globally set
+
+ PIN_FN_USERDATA: parameter for the PIN callback
+
+ FLAGS: One of GNUTLS_PKCS11_OBJ_* flags for PKCS'11' URLs or zero
+ otherwise
+
+ This function will import a certificate chain present in a PKCS'11'
+ token or any type of back-end that supports URLs. The certificates
+ must be deinitialized afterwards using 'gnutls_x509_crt_deinit()'
+ and the returned pointer must be freed using 'gnutls_free()' .
+
+ The URI provided must be the first certificate in the chain;
+ subsequent certificates will be retrieved using
+ 'gnutls_pkcs11_get_raw_issuer()' or equivalent functionality for
+ the supported URI.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.6.3
+
+gnutls_x509_crt_list_verify
+---------------------------
+
+ -- Function: int gnutls_x509_crt_list_verify (const gnutls_x509_crt_t *
+ CERT_LIST, unsigned CERT_LIST_LENGTH, const gnutls_x509_crt_t
+ * CA_LIST, unsigned CA_LIST_LENGTH, const gnutls_x509_crl_t *
+ CRL_LIST, unsigned CRL_LIST_LENGTH, unsigned int FLAGS,
+ unsigned int * VERIFY)
+ CERT_LIST: is the certificate list to be verified
+
+ CERT_LIST_LENGTH: holds the number of certificate in cert_list
+
+ CA_LIST: is the CA list which will be used in verification
+
+ CA_LIST_LENGTH: holds the number of CA certificate in CA_list
+
+ CRL_LIST: holds a list of CRLs.
+
+ CRL_LIST_LENGTH: the length of CRL list.
+
+ FLAGS: Flags that may be used to change the verification algorithm.
+ Use OR of the gnutls_certificate_verify_flags enumerations.
+
+ VERIFY: will hold the certificate verification output.
+
+ This function will try to verify the given certificate list and
+ return its status. The details of the verification are the same as
+ in 'gnutls_x509_trust_list_verify_crt2()' .
+
+ You must check the peer's name in order to check if the verified
+ certificate belongs to the actual peer.
+
+ The certificate verification output will be put in 'verify' and
+ will be one or more of the gnutls_certificate_status_t enumerated
+ elements bitwise or'd. For a more detailed verification status use
+ 'gnutls_x509_crt_verify()' per list element.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_print
+---------------------
+
+ -- Function: int gnutls_x509_crt_print (gnutls_x509_crt_t CERT,
+ gnutls_certificate_print_formats_t FORMAT, gnutls_datum_t *
+ OUT)
+ CERT: The data to be printed
+
+ FORMAT: Indicate the format to use
+
+ OUT: Newly allocated datum with null terminated string.
+
+ This function will pretty print a X.509 certificate, suitable for
+ display to a human.
+
+ If the format is 'GNUTLS_CRT_PRINT_FULL' then all fields of the
+ certificate will be output, on multiple lines. The
+ 'GNUTLS_CRT_PRINT_ONELINE' format will generate one line with some
+ selected fields, which is useful for logging purposes.
+
+ The output 'out' needs to be deallocated using 'gnutls_free()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_activation_time
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_set_activation_time (gnutls_x509_crt_t
+ CERT, time_t ACT_TIME)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ ACT_TIME: The actual time
+
+ This function will set the time this certificate was or will be
+ activated.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_authority_info_access
+-----------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_authority_info_access
+ (gnutls_x509_crt_t CRT, int WHAT, gnutls_datum_t * DATA)
+ CRT: Holds the certificate
+
+ WHAT: what data to get, a 'gnutls_info_access_what_t' type.
+
+ DATA: output data to be freed with 'gnutls_free()' .
+
+ This function sets the Authority Information Access (AIA)
+ extension, see RFC 5280 section 4.2.2.1 for more information.
+
+ The type of data stored in 'data' is specified via 'what' which
+ should be 'gnutls_info_access_what_t' values.
+
+ If 'what' is 'GNUTLS_IA_OCSP_URI' , 'data' will hold the OCSP URI.
+ If 'what' is 'GNUTLS_IA_CAISSUERS_URI' , 'data' will hold the
+ caIssuers URI.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0
+
+gnutls_x509_crt_set_authority_key_id
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_authority_key_id
+ (gnutls_x509_crt_t CERT, const void * ID, size_t ID_SIZE)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ ID: The key ID
+
+ ID_SIZE: Holds the size of the key ID field.
+
+ This function will set the X.509 certificate's authority key ID
+ extension. Only the keyIdentifier field can be set with this
+ function.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_basic_constraints
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_basic_constraints
+ (gnutls_x509_crt_t CRT, unsigned int CA, int
+ PATHLENCONSTRAINT)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ CA: true(1) or false(0). Depending on the Certificate authority
+ status.
+
+ PATHLENCONSTRAINT: non-negative error codes indicate maximum length
+ of path, and negative error codes indicate that the
+ pathLenConstraints field should not be present.
+
+ This function will set the basicConstraints certificate extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_ca_status
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_set_ca_status (gnutls_x509_crt_t CRT,
+ unsigned int CA)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ CA: true(1) or false(0). Depending on the Certificate authority
+ status.
+
+ This function will set the basicConstraints certificate extension.
+ Use 'gnutls_x509_crt_set_basic_constraints()' if you want to
+ control the pathLenConstraint field too.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_crl_dist_points
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_set_crl_dist_points (gnutls_x509_crt_t
+ CRT, gnutls_x509_subject_alt_name_t TYPE, const void *
+ DATA_STRING, unsigned int REASON_FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ TYPE: is one of the gnutls_x509_subject_alt_name_t enumerations
+
+ DATA_STRING: The data to be set
+
+ REASON_FLAGS: revocation reasons
+
+ This function will set the CRL distribution points certificate
+ extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_crl_dist_points2
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_crl_dist_points2
+ (gnutls_x509_crt_t CRT, gnutls_x509_subject_alt_name_t TYPE,
+ const void * DATA, unsigned int DATA_SIZE, unsigned int
+ REASON_FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ TYPE: is one of the gnutls_x509_subject_alt_name_t enumerations
+
+ DATA: The data to be set
+
+ DATA_SIZE: The data size
+
+ REASON_FLAGS: revocation reasons
+
+ This function will set the CRL distribution points certificate
+ extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.6.0
+
+gnutls_x509_crt_set_crq
+-----------------------
+
+ -- Function: int gnutls_x509_crt_set_crq (gnutls_x509_crt_t CRT,
+ gnutls_x509_crq_t CRQ)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ CRQ: holds a certificate request
+
+ This function will set the name and public parameters as well as
+ the extensions from the given certificate request to the
+ certificate. Only RSA keys are currently supported.
+
+ Note that this function will only set the 'crq' if it is self
+ signed and the signature is correct. See 'gnutls_x509_crq_sign2()'
+ .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_crq_extension_by_oid
+----------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_crq_extension_by_oid
+ (gnutls_x509_crt_t CRT, gnutls_x509_crq_t CRQ, const char *
+ OID, unsigned FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ CRQ: holds a certificate request
+
+ OID: the object identifier of the OID to copy
+
+ FLAGS: should be zero
+
+ This function will set the extension specify by 'oid' from the
+ given request to the certificate.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_crt_set_crq_extensions
+----------------------------------
+
+ -- Function: int gnutls_x509_crt_set_crq_extensions (gnutls_x509_crt_t
+ CRT, gnutls_x509_crq_t CRQ)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ CRQ: holds a certificate request
+
+ This function will set the extensions from the given request to the
+ certificate.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.8.0
+
+gnutls_x509_crt_set_dn
+----------------------
+
+ -- Function: int gnutls_x509_crt_set_dn (gnutls_x509_crt_t CRT, const
+ char * DN, const char ** ERR)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ DN: a comma separated DN string (RFC4514)
+
+ ERR: indicates the error position (if any)
+
+ This function will set the DN on the provided certificate. The
+ input string should be plain ASCII or UTF-8 encoded. On DN parsing
+ error 'GNUTLS_E_PARSING_ERROR' is returned.
+
+ Note that DNs are not expected to hold DNS information, and thus no
+ automatic IDNA conversions are attempted when using this function.
+ If that is required (e.g., store a domain in CN), process the
+ corresponding input with 'gnutls_idna_map()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_dn_by_oid
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_set_dn_by_oid (gnutls_x509_crt_t CRT,
+ const char * OID, unsigned int RAW_FLAG, const void * NAME,
+ unsigned int SIZEOF_NAME)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ OID: holds an Object Identifier in a null terminated string
+
+ RAW_FLAG: must be 0, or 1 if the data are DER encoded
+
+ NAME: a pointer to the name
+
+ SIZEOF_NAME: holds the size of 'name'
+
+ This function will set the part of the name of the Certificate
+ subject, specified by the given OID. The input string should be
+ ASCII or UTF-8 encoded.
+
+ Some helper macros with popular OIDs can be found in gnutls/x509.h
+ With this function you can only set the known OIDs. You can test
+ for known OIDs using 'gnutls_x509_dn_oid_known()' . For OIDs that
+ are not known (by gnutls) you should properly DER encode your data,
+ and call this function with 'raw_flag' set.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_expiration_time
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_set_expiration_time (gnutls_x509_crt_t
+ CERT, time_t EXP_TIME)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ EXP_TIME: The actual time
+
+ This function will set the time this Certificate will expire.
+ Setting an expiration time to (time_t)-1 will set to the no
+ well-defined expiration date value.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_extension_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_extension_by_oid
+ (gnutls_x509_crt_t CRT, const char * OID, const void * BUF,
+ size_t SIZEOF_BUF, unsigned int CRITICAL)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ OID: holds an Object Identifier in null terminated string
+
+ BUF: a pointer to a DER encoded data
+
+ SIZEOF_BUF: holds the size of 'buf'
+
+ CRITICAL: should be non-zero if the extension is to be marked as
+ critical
+
+ This function will set an the extension, by the specified OID, in
+ the certificate. The extension data should be binary data DER
+ encoded.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_flags
+-------------------------
+
+ -- Function: void gnutls_x509_crt_set_flags (gnutls_x509_crt_t CERT,
+ unsigned int FLAGS)
+ CERT: A type 'gnutls_x509_crt_t'
+
+ FLAGS: flags from the 'gnutls_x509_crt_flags'
+
+ This function will set flags for the specified certificate.
+ Currently this is useful for the
+ 'GNUTLS_X509_CRT_FLAG_IGNORE_SANITY' which allows importing
+ certificates even if they have known issues.
+
+ *Since:* 3.6.0
+
+gnutls_x509_crt_set_inhibit_anypolicy
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_inhibit_anypolicy
+ (gnutls_x509_crt_t CRT, unsigned int SKIPCERTS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ SKIPCERTS: number of certificates after which anypolicy is no
+ longer acceptable.
+
+ This function will set the Inhibit anyPolicy certificate extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_issuer_alt_name
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_set_issuer_alt_name (gnutls_x509_crt_t
+ CRT, gnutls_x509_subject_alt_name_t TYPE, const void * DATA,
+ unsigned int DATA_SIZE, unsigned int FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ TYPE: is one of the gnutls_x509_subject_alt_name_t enumerations
+
+ DATA: The data to be set
+
+ DATA_SIZE: The size of data to be set
+
+ FLAGS: GNUTLS_FSAN_SET to clear previous data or GNUTLS_FSAN_APPEND
+ to append.
+
+ This function will set the issuer alternative name certificate
+ extension. It can set the same types as
+ 'gnutls_x509_crt_set_subject_alt_name()' .
+
+ Since version 3.5.7 the 'GNUTLS_SAN_RFC822NAME' ,
+ 'GNUTLS_SAN_DNSNAME' , and 'GNUTLS_SAN_OTHERNAME_XMPP' are
+ converted to ACE format when necessary.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crt_set_issuer_alt_othername
+----------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_issuer_alt_othername
+ (gnutls_x509_crt_t CRT, const char * OID, const void * DATA,
+ unsigned int DATA_SIZE, unsigned int FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ OID: The other name OID
+
+ DATA: The data to be set
+
+ DATA_SIZE: The size of data to be set
+
+ FLAGS: GNUTLS_FSAN_SET to clear previous data or GNUTLS_FSAN_APPEND
+ to append.
+
+ This function will set an "othername" to the issuer alternative
+ name certificate extension.
+
+ The values set are set as binary values and are expected to have
+ the proper DER encoding. For convenience the flags
+ 'GNUTLS_FSAN_ENCODE_OCTET_STRING' and
+ 'GNUTLS_FSAN_ENCODE_UTF8_STRING' can be used to encode the provided
+ data.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crt_set_issuer_dn
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_set_issuer_dn (gnutls_x509_crt_t CRT,
+ const char * DN, const char ** ERR)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ DN: a comma separated DN string (RFC4514)
+
+ ERR: indicates the error position (if any)
+
+ This function will set the DN on the provided certificate. The
+ input string should be plain ASCII or UTF-8 encoded. On DN parsing
+ error 'GNUTLS_E_PARSING_ERROR' is returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_issuer_dn_by_oid
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_issuer_dn_by_oid
+ (gnutls_x509_crt_t CRT, const char * OID, unsigned int
+ RAW_FLAG, const void * NAME, unsigned int SIZEOF_NAME)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ OID: holds an Object Identifier in a null terminated string
+
+ RAW_FLAG: must be 0, or 1 if the data are DER encoded
+
+ NAME: a pointer to the name
+
+ SIZEOF_NAME: holds the size of 'name'
+
+ This function will set the part of the name of the Certificate
+ issuer, specified by the given OID. The input string should be
+ ASCII or UTF-8 encoded.
+
+ Some helper macros with popular OIDs can be found in gnutls/x509.h
+ With this function you can only set the known OIDs. You can test
+ for known OIDs using 'gnutls_x509_dn_oid_known()' . For OIDs that
+ are not known (by gnutls) you should properly DER encode your data,
+ and call this function with 'raw_flag' set.
+
+ Normally you do not need to call this function, since the signing
+ operation will copy the signer's name as the issuer of the
+ certificate.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_issuer_unique_id
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_issuer_unique_id
+ (gnutls_x509_crt_t CERT, const void * ID, size_t ID_SIZE)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ ID: The unique ID
+
+ ID_SIZE: Holds the size of the unique ID.
+
+ This function will set the X.509 certificate's issuer unique ID
+ field.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.4.7
+
+gnutls_x509_crt_set_key
+-----------------------
+
+ -- Function: int gnutls_x509_crt_set_key (gnutls_x509_crt_t CRT,
+ gnutls_x509_privkey_t KEY)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ KEY: holds a private key
+
+ This function will set the public parameters from the given private
+ key to the certificate.
+
+ To export the public key (i.e., the SubjectPublicKeyInfo part),
+ check 'gnutls_pubkey_import_x509()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_key_purpose_oid
+-----------------------------------
+
+ -- Function: int gnutls_x509_crt_set_key_purpose_oid (gnutls_x509_crt_t
+ CERT, const void * OID, unsigned int CRITICAL)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ OID: a pointer to a null terminated string that holds the OID
+
+ CRITICAL: Whether this extension will be critical or not
+
+ This function will set the key purpose OIDs of the Certificate.
+ These are stored in the Extended Key Usage extension (2.5.29.37)
+ See the GNUTLS_KP_* definitions for human readable names.
+
+ Subsequent calls to this function will append OIDs to the OID list.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error code is returned.
+
+gnutls_x509_crt_set_key_usage
+-----------------------------
+
+ -- Function: int gnutls_x509_crt_set_key_usage (gnutls_x509_crt_t CRT,
+ unsigned int USAGE)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ USAGE: an ORed sequence of the GNUTLS_KEY_* elements.
+
+ This function will set the keyUsage certificate extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_name_constraints
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_name_constraints
+ (gnutls_x509_crt_t CRT, gnutls_x509_name_constraints_t NC,
+ unsigned int CRITICAL)
+ CRT: The certificate
+
+ NC: The nameconstraints structure
+
+ CRITICAL: whether this extension will be critical
+
+ This function will set the provided name constraints to the
+ certificate extension list. This extension is always marked as
+ critical.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_crt_set_pin_function
+--------------------------------
+
+ -- Function: void gnutls_x509_crt_set_pin_function (gnutls_x509_crt_t
+ CRT, gnutls_pin_callback_t FN, void * USERDATA)
+ CRT: The certificate structure
+
+ FN: the callback
+
+ USERDATA: data associated with the callback
+
+ This function will set a callback function to be used when it is
+ required to access a protected object. This function overrides the
+ global function set using 'gnutls_pkcs11_set_pin_function()' .
+
+ Note that this callback is currently used only during the import of
+ a PKCS '11' certificate with 'gnutls_x509_crt_import_url()' .
+
+ *Since:* 3.1.0
+
+gnutls_x509_crt_set_policy
+--------------------------
+
+ -- Function: int gnutls_x509_crt_set_policy (gnutls_x509_crt_t CRT,
+ const struct gnutls_x509_policy_st * POLICY, unsigned int
+ CRITICAL)
+ CRT: should contain a 'gnutls_x509_crt_t' type
+
+ POLICY: A pointer to a policy
+
+ CRITICAL: use non-zero if the extension is marked as critical
+
+ This function will set the certificate policy extension
+ (2.5.29.32). Multiple calls to this function append a new policy.
+
+ Note the maximum text size for the qualifier
+ 'GNUTLS_X509_QUALIFIER_NOTICE' is 200 characters. This function
+ will fail with 'GNUTLS_E_INVALID_REQUEST' if this is exceeded.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.1.5
+
+gnutls_x509_crt_set_private_key_usage_period
+--------------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_private_key_usage_period
+ (gnutls_x509_crt_t CRT, time_t ACTIVATION, time_t EXPIRATION)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ ACTIVATION: The activation time
+
+ EXPIRATION: The expiration time
+
+ This function will set the private key usage period extension
+ (2.5.29.16).
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_proxy
+-------------------------
+
+ -- Function: int gnutls_x509_crt_set_proxy (gnutls_x509_crt_t CRT, int
+ PATHLENCONSTRAINT, const char * POLICYLANGUAGE, const char *
+ POLICY, size_t SIZEOF_POLICY)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ PATHLENCONSTRAINT: non-negative error codes indicate maximum length
+ of path, and negative error codes indicate that the
+ pathLenConstraints field should not be present.
+
+ POLICYLANGUAGE: OID describing the language of 'policy' .
+
+ POLICY: uint8_t byte array with policy language, can be 'NULL'
+
+ SIZEOF_POLICY: size of 'policy' .
+
+ This function will set the proxyCertInfo extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_proxy_dn
+----------------------------
+
+ -- Function: int gnutls_x509_crt_set_proxy_dn (gnutls_x509_crt_t CRT,
+ gnutls_x509_crt_t EECRT, unsigned int RAW_FLAG, const void *
+ NAME, unsigned int SIZEOF_NAME)
+ CRT: a gnutls_x509_crt_t type with the new proxy cert
+
+ EECRT: the end entity certificate that will be issuing the proxy
+
+ RAW_FLAG: must be 0, or 1 if the CN is DER encoded
+
+ NAME: a pointer to the CN name, may be NULL (but MUST then be added
+ later)
+
+ SIZEOF_NAME: holds the size of 'name'
+
+ This function will set the subject in 'crt' to the end entity's
+ 'eecrt' subject name, and add a single Common Name component 'name'
+ of size 'sizeof_name' . This corresponds to the required proxy
+ certificate naming style. Note that if 'name' is 'NULL' , you MUST
+ set it later by using 'gnutls_x509_crt_set_dn_by_oid()' or similar.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_serial
+--------------------------
+
+ -- Function: int gnutls_x509_crt_set_serial (gnutls_x509_crt_t CERT,
+ const void * SERIAL, size_t SERIAL_SIZE)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ SERIAL: The serial number
+
+ SERIAL_SIZE: Holds the size of the serial field.
+
+ This function will set the X.509 certificate's serial number.
+ While the serial number is an integer, it is often handled as an
+ opaque field by several CAs. For this reason this function accepts
+ any kind of data as a serial number. To be consistent with the
+ X.509/PKIX specifications the provided 'serial' should be a
+ big-endian positive number (i.e. its leftmost bit should be zero).
+
+ The size of the serial is restricted to 20 bytes maximum by
+ RFC5280. This function allows writing more than 20 bytes but the
+ generated certificates in that case may be rejected by other
+ implementations.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_spki
+------------------------
+
+ -- Function: int gnutls_x509_crt_set_spki (gnutls_x509_crt_t CRT, const
+ gnutls_x509_spki_t SPKI, unsigned int FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ SPKI: a SubjectPublicKeyInfo structure of type 'gnutls_x509_spki_t'
+
+ FLAGS: must be zero
+
+ This function will set the certificate's subject public key
+ information explicitly. This is intended to be used in the cases
+ where a single public key (e.g., RSA) can be used for multiple
+ signature algorithms (RSA PKCS1-1.5, and RSA-PSS).
+
+ To export the public key (i.e., the SubjectPublicKeyInfo part),
+ check 'gnutls_pubkey_import_x509()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.6.0
+
+gnutls_x509_crt_set_subject_alt_name
+------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_subject_alt_name
+ (gnutls_x509_crt_t CRT, gnutls_x509_subject_alt_name_t TYPE,
+ const void * DATA, unsigned int DATA_SIZE, unsigned int FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ TYPE: is one of the gnutls_x509_subject_alt_name_t enumerations
+
+ DATA: The data to be set
+
+ DATA_SIZE: The size of data to be set
+
+ FLAGS: GNUTLS_FSAN_SET to clear previous data or GNUTLS_FSAN_APPEND
+ to append.
+
+ This function will set the subject alternative name certificate
+ extension. It can set the following types: 'GNUTLS_SAN_DNSNAME' as
+ a text string, 'GNUTLS_SAN_RFC822NAME' as a text string,
+ 'GNUTLS_SAN_URI' as a text string, 'GNUTLS_SAN_IPADDRESS' as a
+ binary IP address (4 or 16 bytes), 'GNUTLS_SAN_OTHERNAME_XMPP' as a
+ UTF8 string (since 3.5.0).
+
+ Since version 3.5.7 the 'GNUTLS_SAN_RFC822NAME' ,
+ 'GNUTLS_SAN_DNSNAME' , and 'GNUTLS_SAN_OTHERNAME_XMPP' are
+ converted to ACE format when necessary.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.6.0
+
+gnutls_x509_crt_set_subject_alt_othername
+-----------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_subject_alt_othername
+ (gnutls_x509_crt_t CRT, const char * OID, const void * DATA,
+ unsigned int DATA_SIZE, unsigned int FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ OID: The other name OID
+
+ DATA: The data to be set
+
+ DATA_SIZE: The size of data to be set
+
+ FLAGS: GNUTLS_FSAN_SET to clear previous data or GNUTLS_FSAN_APPEND
+ to append.
+
+ This function will set an "othername" to the subject alternative
+ name certificate extension.
+
+ The values set are set as binary values and are expected to have
+ the proper DER encoding. For convenience the flags
+ 'GNUTLS_FSAN_ENCODE_OCTET_STRING' and
+ 'GNUTLS_FSAN_ENCODE_UTF8_STRING' can be used to encode the provided
+ data.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.0
+
+gnutls_x509_crt_set_subject_alternative_name
+--------------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_subject_alternative_name
+ (gnutls_x509_crt_t CRT, gnutls_x509_subject_alt_name_t TYPE,
+ const char * DATA_STRING)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ TYPE: is one of the gnutls_x509_subject_alt_name_t enumerations
+
+ DATA_STRING: The data to be set, a (0) terminated string
+
+ This function will set the subject alternative name certificate
+ extension. This function assumes that data can be expressed as a
+ null terminated string.
+
+ The name of the function is unfortunate since it is inconsistent
+ with 'gnutls_x509_crt_get_subject_alt_name()' .
+
+ See 'gnutls_x509_crt_set_subject_alt_name()' for more information.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_subject_key_id
+----------------------------------
+
+ -- Function: int gnutls_x509_crt_set_subject_key_id (gnutls_x509_crt_t
+ CERT, const void * ID, size_t ID_SIZE)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ ID: The key ID
+
+ ID_SIZE: Holds the size of the subject key ID field.
+
+ This function will set the X.509 certificate's subject key ID
+ extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_set_subject_unique_id
+-------------------------------------
+
+ -- Function: int gnutls_x509_crt_set_subject_unique_id
+ (gnutls_x509_crt_t CERT, const void * ID, size_t ID_SIZE)
+ CERT: a certificate of type 'gnutls_x509_crt_t'
+
+ ID: The unique ID
+
+ ID_SIZE: Holds the size of the unique ID.
+
+ This function will set the X.509 certificate's subject unique ID
+ field.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.4.7
+
+gnutls_x509_crt_set_tlsfeatures
+-------------------------------
+
+ -- Function: int gnutls_x509_crt_set_tlsfeatures (gnutls_x509_crt_t
+ CRT, gnutls_x509_tlsfeatures_t FEATURES)
+ CRT: A X.509 certificate
+
+ FEATURES: If the function succeeds, the features will be added to
+ the certificate.
+
+ This function will set the certificates X.509 TLS extension from
+ the given structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_crt_set_version
+---------------------------
+
+ -- Function: int gnutls_x509_crt_set_version (gnutls_x509_crt_t CRT,
+ unsigned int VERSION)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ VERSION: holds the version number. For X.509v1 certificates must
+ be 1.
+
+ This function will set the version of the certificate. This must
+ be one for X.509 version 1, and so on. Plain certificates without
+ extensions must have version set to one.
+
+ To create well-formed certificates, you must specify version 3 if
+ you use any certificate extensions. Extensions are created by
+ functions such as 'gnutls_x509_crt_set_subject_alt_name()' or
+ 'gnutls_x509_crt_set_key_usage()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_sign
+--------------------
+
+ -- Function: int gnutls_x509_crt_sign (gnutls_x509_crt_t CRT,
+ gnutls_x509_crt_t ISSUER, gnutls_x509_privkey_t ISSUER_KEY)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ ISSUER: is the certificate of the certificate issuer
+
+ ISSUER_KEY: holds the issuer's private key
+
+ This function is the same a 'gnutls_x509_crt_sign2()' with no
+ flags, and an appropriate hash algorithm. The hash algorithm used
+ may vary between versions of GnuTLS, and it is tied to the security
+ level of the issuer's public key.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_sign2
+---------------------
+
+ -- Function: int gnutls_x509_crt_sign2 (gnutls_x509_crt_t CRT,
+ gnutls_x509_crt_t ISSUER, gnutls_x509_privkey_t ISSUER_KEY,
+ gnutls_digest_algorithm_t DIG, unsigned int FLAGS)
+ CRT: a certificate of type 'gnutls_x509_crt_t'
+
+ ISSUER: is the certificate of the certificate issuer
+
+ ISSUER_KEY: holds the issuer's private key
+
+ DIG: The message digest to use, 'GNUTLS_DIG_SHA256' is a safe
+ choice
+
+ FLAGS: must be 0
+
+ This function will sign the certificate with the issuer's private
+ key, and will copy the issuer's information into the certificate.
+
+ This must be the last step in a certificate generation since all
+ the previously set parameters are now signed.
+
+ A known limitation of this function is, that a newly-signed
+ certificate will not be fully functional (e.g., for signature
+ verification), until it is exported an re-imported.
+
+ After GnuTLS 3.6.1 the value of 'dig' may be 'GNUTLS_DIG_UNKNOWN' ,
+ and in that case, a suitable but reasonable for the key algorithm
+ will be selected.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_verify
+----------------------
+
+ -- Function: int gnutls_x509_crt_verify (gnutls_x509_crt_t CERT, const
+ gnutls_x509_crt_t * CA_LIST, unsigned CA_LIST_LENGTH, unsigned
+ int FLAGS, unsigned int * VERIFY)
+ CERT: is the certificate to be verified
+
+ CA_LIST: is one certificate that is considered to be trusted one
+
+ CA_LIST_LENGTH: holds the number of CA certificate in CA_list
+
+ FLAGS: Flags that may be used to change the verification algorithm.
+ Use OR of the gnutls_certificate_verify_flags enumerations.
+
+ VERIFY: will hold the certificate verification output.
+
+ This function will try to verify the given certificate and return
+ its status. Note that a verification error does not imply a
+ negative return status. In that case the 'verify' status is set.
+
+ The details of the verification are the same as in
+ 'gnutls_x509_trust_list_verify_crt2()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_crt_verify_data2
+----------------------------
+
+ -- Function: int gnutls_x509_crt_verify_data2 (gnutls_x509_crt_t CRT,
+ gnutls_sign_algorithm_t ALGO, unsigned int FLAGS, const
+ gnutls_datum_t * DATA, const gnutls_datum_t * SIGNATURE)
+ CRT: Holds the certificate to verify with
+
+ ALGO: The signature algorithm used
+
+ FLAGS: Zero or an OR list of 'gnutls_certificate_verify_flags'
+
+ DATA: holds the signed data
+
+ SIGNATURE: contains the signature
+
+ This function will verify the given signed data, using the
+ parameters from the certificate.
+
+ *Returns:* In case of a verification failure
+ 'GNUTLS_E_PK_SIG_VERIFY_FAILED' is returned, 'GNUTLS_E_EXPIRED' or
+ 'GNUTLS_E_NOT_YET_ACTIVATED' on expired or not yet activated
+ certificate and zero or positive code on success.
+
+ Note that since GnuTLS 3.5.6 this function introduces checks in the
+ end certificate ( 'crt' ), including time checks and key usage
+ checks.
+
+ *Since:* 3.4.0
+
+gnutls_x509_ct_sct_get
+----------------------
+
+ -- Function: int gnutls_x509_ct_sct_get (const gnutls_x509_ct_scts_t
+ SCTS, unsigned IDX, time_t * TIMESTAMP, gnutls_datum_t *
+ LOGID, gnutls_sign_algorithm_t * SIGALG, gnutls_datum_t *
+ SIGNATURE)
+ SCTS: A list of SCTs
+
+ IDX: The index of the target SCT in the list
+
+ TIMESTAMP: The timestamp of the SCT
+
+ LOGID: The LogID field of the SCT; must be freed with
+ 'gnutls_free()'
+
+ SIGALG: The signature algorithm
+
+ SIGNATURE: The signature of the SCT; must be freed with
+ 'gnutls_free()'
+
+ This function will return a specific SCT (Signed Certificate
+ Timestamp) stored in the SCT list 'scts' .
+
+ The datums holding the SCT's LogId and signature will be allocated
+ using 'gnutls_malloc()' .
+
+ *Returns:* 'GNUTLS_E_SUCCESS' (0) will be returned on success,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if 'idx' exceeds the number
+ of SCTs in the list or a negative error value.
+
+gnutls_x509_ct_sct_get_version
+------------------------------
+
+ -- Function: int gnutls_x509_ct_sct_get_version (gnutls_x509_ct_scts_t
+ SCTS, unsigned IDX, unsigned int * VERSION_OUT)
+ SCTS: A list of SCTs
+
+ IDX: The index of the target SCT in the list
+
+ VERSION_OUT: The version of the target SCT.
+
+ This function obtains the version of the SCT at the given position
+ in the SCT list.
+
+ The version of that SCT will be placed on 'version_out' .
+
+ Return : 'GNUTLS_E_SUCCESS' (0) is returned on success,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if 'idx' exceeds the number
+ of SCTs in the list and 'GNUTLS_E_INVALID_REQUEST' if the SCT's
+ version is different than 1, as that's currently the only defined
+ version.
+
+gnutls_x509_dn_deinit
+---------------------
+
+ -- Function: void gnutls_x509_dn_deinit (gnutls_x509_dn_t DN)
+ DN: a DN uint8_t object pointer.
+
+ This function deallocates the DN object as returned by
+ 'gnutls_x509_dn_import()' .
+
+ *Since:* 2.4.0
+
+gnutls_x509_dn_export
+---------------------
+
+ -- Function: int gnutls_x509_dn_export (gnutls_x509_dn_t DN,
+ gnutls_x509_crt_fmt_t FORMAT, void * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ DN: Holds the uint8_t DN object
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUTPUT_DATA: will contain a DN PEM or DER encoded
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will export the DN to DER or PEM format.
+
+ If the buffer provided is not long enough to hold the output, then
+ * 'output_data_size' is updated and 'GNUTLS_E_SHORT_MEMORY_BUFFER'
+ will be returned.
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ NAME".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_dn_export2
+----------------------
+
+ -- Function: int gnutls_x509_dn_export2 (gnutls_x509_dn_t DN,
+ gnutls_x509_crt_fmt_t FORMAT, gnutls_datum_t * OUT)
+ DN: Holds the uint8_t DN object
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUT: will contain a DN PEM or DER encoded
+
+ This function will export the DN to DER or PEM format.
+
+ The output buffer is allocated using 'gnutls_malloc()' .
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ NAME".
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.1.3
+
+gnutls_x509_dn_get_rdn_ava
+--------------------------
+
+ -- Function: int gnutls_x509_dn_get_rdn_ava (gnutls_x509_dn_t DN, int
+ IRDN, int IAVA, gnutls_x509_ava_st * AVA)
+ DN: a pointer to DN
+
+ IRDN: index of RDN
+
+ IAVA: index of AVA.
+
+ AVA: Pointer to structure which will hold output information.
+
+ Get pointers to data within the DN. The format of the 'ava'
+ structure is shown below.
+
+ struct gnutls_x509_ava_st { gnutls_datum_t oid; gnutls_datum_t
+ value; unsigned long value_tag; };
+
+ The X.509 distinguished name is a sequence of sequences of strings
+ and this is what the 'irdn' and 'iava' indexes model.
+
+ Note that 'ava' will contain pointers into the 'dn' structure which
+ in turns points to the original certificate. Thus you should not
+ modify any data or deallocate any of those.
+
+ This is a low-level function that requires the caller to do the
+ value conversions when necessary (e.g. from UCS-2).
+
+ *Returns:* Returns 0 on success, or an error code.
+
+gnutls_x509_dn_get_str
+----------------------
+
+ -- Function: int gnutls_x509_dn_get_str (gnutls_x509_dn_t DN,
+ gnutls_datum_t * STR)
+ DN: a pointer to DN
+
+ STR: a datum that will hold the name
+
+ This function will allocate buffer and copy the name in the
+ provided DN. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz"
+ as described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.4.2
+
+gnutls_x509_dn_get_str2
+-----------------------
+
+ -- Function: int gnutls_x509_dn_get_str2 (gnutls_x509_dn_t DN,
+ gnutls_datum_t * STR, unsigned FLAGS)
+ DN: a pointer to DN
+
+ STR: a datum that will hold the name
+
+ FLAGS: zero or 'GNUTLS_X509_DN_FLAG_COMPAT'
+
+ This function will allocate buffer and copy the name in the
+ provided DN. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz"
+ as described in RFC4514. The output string will be ASCII or UTF-8
+ encoded, depending on the certificate data.
+
+ When the flag 'GNUTLS_X509_DN_FLAG_COMPAT' is specified, the output
+ format will match the format output by previous to 3.5.6 versions
+ of GnuTLS which was not not fully RFC4514-compliant.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.7
+
+gnutls_x509_dn_import
+---------------------
+
+ -- Function: int gnutls_x509_dn_import (gnutls_x509_dn_t DN, const
+ gnutls_datum_t * DATA)
+ DN: the structure that will hold the imported DN
+
+ DATA: should contain a DER encoded RDN sequence
+
+ This function parses an RDN sequence and stores the result to a
+ 'gnutls_x509_dn_t' type. The data must have been initialized with
+ 'gnutls_x509_dn_init()' . You may use
+ 'gnutls_x509_dn_get_rdn_ava()' to decode the DN.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.4.0
+
+gnutls_x509_dn_init
+-------------------
+
+ -- Function: int gnutls_x509_dn_init (gnutls_x509_dn_t * DN)
+ DN: the object to be initialized
+
+ This function initializes a 'gnutls_x509_dn_t' type.
+
+ The object returned must be deallocated using
+ 'gnutls_x509_dn_deinit()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.4.0
+
+gnutls_x509_dn_oid_known
+------------------------
+
+ -- Function: int gnutls_x509_dn_oid_known (const char * OID)
+ OID: holds an Object Identifier in a null terminated string
+
+ This function will inform about known DN OIDs. This is useful
+ since functions like 'gnutls_x509_crt_set_dn_by_oid()' use the
+ information on known OIDs to properly encode their input. Object
+ Identifiers that are not known are not encoded by these functions,
+ and their input is stored directly into the ASN.1 structure. In
+ that case of unknown OIDs, you have the responsibility of DER
+ encoding your data.
+
+ *Returns:* 1 on known OIDs and 0 otherwise.
+
+gnutls_x509_dn_oid_name
+-----------------------
+
+ -- Function: const char * gnutls_x509_dn_oid_name (const char * OID,
+ unsigned int FLAGS)
+ OID: holds an Object Identifier in a null terminated string
+
+ FLAGS: 0 or GNUTLS_X509_DN_OID_*
+
+ This function will return the name of a known DN OID. If
+ 'GNUTLS_X509_DN_OID_RETURN_OID' is specified this function will
+ return the given OID if no descriptive name has been found.
+
+ *Returns:* A null terminated string or NULL otherwise.
+
+ *Since:* 3.0
+
+gnutls_x509_dn_set_str
+----------------------
+
+ -- Function: int gnutls_x509_dn_set_str (gnutls_x509_dn_t DN, const
+ char * STR, const char ** ERR)
+ DN: a pointer to DN
+
+ STR: a comma separated DN string (RFC4514)
+
+ ERR: indicates the error position (if any)
+
+ This function will set the DN on the provided DN structure. The
+ input string should be plain ASCII or UTF-8 encoded. On DN parsing
+ error 'GNUTLS_E_PARSING_ERROR' is returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.3
+
+gnutls_x509_ext_ct_export_scts
+------------------------------
+
+ -- Function: int gnutls_x509_ext_ct_export_scts (const
+ gnutls_x509_ct_scts_t SCTS, gnutls_datum_t * EXT)
+ SCTS: An initialized SCT list
+
+ EXT: The DER-encoded extension data; must be freed with
+ 'gnutls_free()'
+
+ This function will convert the provided list of SCTs to a
+ DER-encoded SignedCertificateTimestampList extension
+ (1.3.6.1.4.1.11129.2.4.2). The output data in 'ext' will be
+ allocated using 'gnutls_malloc()' .
+
+ *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error
+ value.
+
+gnutls_x509_ext_ct_import_scts
+------------------------------
+
+ -- Function: int gnutls_x509_ext_ct_import_scts (const gnutls_datum_t *
+ EXT, gnutls_x509_ct_scts_t SCTS, unsigned int FLAGS)
+ EXT: a DER-encoded extension
+
+ SCTS: The SCT list
+
+ FLAGS: should be zero
+
+ This function will read a SignedCertificateTimestampList structure
+ from the DER data of the X.509 Certificate Transparency SCT
+ extension (OID 1.3.6.1.4.1.11129.2.4.2).
+
+ The list of SCTs (Signed Certificate Timestamps) is placed on
+ 'scts' , which must be previously initialized with
+ 'gnutls_x509_ext_ct_scts_init()' .
+
+ *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error
+ value.
+
+gnutls_x509_ext_ct_scts_deinit
+------------------------------
+
+ -- Function: void gnutls_x509_ext_ct_scts_deinit (gnutls_x509_ct_scts_t
+ SCTS)
+ SCTS: The SCT list
+
+ This function will deinitialize a Certificate Transparency SCT
+ list.
+
+gnutls_x509_ext_ct_scts_init
+----------------------------
+
+ -- Function: int gnutls_x509_ext_ct_scts_init (gnutls_x509_ct_scts_t *
+ SCTS)
+ SCTS: The SCT list
+
+ This function will initialize a Certificate Transparency SCT list.
+
+ *Returns:* 'GNUTLS_E_SUCCESS' (0) on success, otherwise a negative
+ error value.
+
+gnutls_x509_ext_deinit
+----------------------
+
+ -- Function: void gnutls_x509_ext_deinit (gnutls_x509_ext_st * EXT)
+ EXT: The extensions structure
+
+ This function will deinitialize an extensions structure.
+
+ *Since:* 3.3.8
+
+gnutls_x509_ext_export_aia
+--------------------------
+
+ -- Function: int gnutls_x509_ext_export_aia (gnutls_x509_aia_t AIA,
+ gnutls_datum_t * EXT)
+ AIA: The authority info access
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will DER encode the Authority Information Access
+ (AIA) extension; see RFC 5280 section 4.2.2.1 for more information
+ on the extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_authority_key_id
+---------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_authority_key_id
+ (gnutls_x509_aki_t AKI, gnutls_datum_t * EXT)
+ AKI: An initialized authority key identifier
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the provided key identifier to a
+ DER-encoded PKIX AuthorityKeyIdentifier extension. The output data
+ in 'ext' will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_basic_constraints
+----------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_basic_constraints (unsigned int
+ CA, int PATHLEN, gnutls_datum_t * EXT)
+ CA: non-zero for a CA
+
+ PATHLEN: The path length constraint (set to -1 for no constraint)
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the parameters provided to a basic
+ constraints DER encoded extension (2.5.29.19). The 'ext' data will
+ be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_crl_dist_points
+--------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_crl_dist_points
+ (gnutls_x509_crl_dist_points_t CDP, gnutls_datum_t * EXT)
+ CDP: A pointer to an initialized CRL distribution points.
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the provided policies, to a certificate
+ policy DER encoded extension (2.5.29.31).
+
+ The 'ext' data will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_inhibit_anypolicy
+----------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_inhibit_anypolicy (unsigned int
+ SKIPCERTS, gnutls_datum_t * EXT)
+ SKIPCERTS: number of certificates after which anypolicy is no
+ longer acceptable.
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the 'skipcerts' value to a DER encoded
+ Inhibit AnyPolicy PKIX extension. The 'ext' data will be allocated
+ using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.6.0
+
+gnutls_x509_ext_export_key_purposes
+-----------------------------------
+
+ -- Function: int gnutls_x509_ext_export_key_purposes
+ (gnutls_x509_key_purposes_t P, gnutls_datum_t * EXT)
+ P: The key purposes
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the key purposes type to a DER-encoded
+ PKIX ExtKeyUsageSyntax (2.5.29.37) extension. The output data in
+ 'ext' will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_key_usage
+--------------------------------
+
+ -- Function: int gnutls_x509_ext_export_key_usage (unsigned int USAGE,
+ gnutls_datum_t * EXT)
+ USAGE: an ORed sequence of the GNUTLS_KEY_* elements.
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the keyUsage bit string to a DER encoded
+ PKIX extension. The 'ext' data will be allocated using
+ 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_name_constraints
+---------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_name_constraints
+ (gnutls_x509_name_constraints_t NC, gnutls_datum_t * EXT)
+ NC: The nameconstraints
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the provided name constraints type to a
+ DER-encoded PKIX NameConstraints (2.5.29.30) extension. The output
+ data in 'ext' will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_policies
+-------------------------------
+
+ -- Function: int gnutls_x509_ext_export_policies
+ (gnutls_x509_policies_t POLICIES, gnutls_datum_t * EXT)
+ POLICIES: A pointer to an initialized policies.
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the provided policies, to a certificate
+ policy DER encoded extension (2.5.29.32).
+
+ The 'ext' data will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_private_key_usage_period
+-----------------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_private_key_usage_period
+ (time_t ACTIVATION, time_t EXPIRATION, gnutls_datum_t * EXT)
+ ACTIVATION: The activation time
+
+ EXPIRATION: The expiration time
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the periods provided to a private key
+ usage DER encoded extension (2.5.29.16). The 'ext' data will be
+ allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_proxy
+----------------------------
+
+ -- Function: int gnutls_x509_ext_export_proxy (int PATHLENCONSTRAINT,
+ const char * POLICYLANGUAGE, const char * POLICY, size_t
+ SIZEOF_POLICY, gnutls_datum_t * EXT)
+ PATHLENCONSTRAINT: A negative value will remove the path length
+ constraint, while non-negative values will be set as the length of
+ the pathLenConstraints field.
+
+ POLICYLANGUAGE: OID describing the language of 'policy' .
+
+ POLICY: uint8_t byte array with policy language, can be 'NULL'
+
+ SIZEOF_POLICY: size of 'policy' .
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the parameters provided to a
+ proxyCertInfo extension.
+
+ The 'ext' data will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_subject_alt_names
+----------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_subject_alt_names
+ (gnutls_subject_alt_names_t SANS, gnutls_datum_t * EXT)
+ SANS: The alternative names
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the provided alternative names structure
+ to a DER-encoded SubjectAltName PKIX extension. The output data in
+ 'ext' will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_subject_key_id
+-------------------------------------
+
+ -- Function: int gnutls_x509_ext_export_subject_key_id (const
+ gnutls_datum_t * ID, gnutls_datum_t * EXT)
+ ID: The key identifier
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the provided key identifier to a
+ DER-encoded PKIX SubjectKeyIdentifier extension. The output data
+ in 'ext' will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_export_tlsfeatures
+----------------------------------
+
+ -- Function: int gnutls_x509_ext_export_tlsfeatures
+ (gnutls_x509_tlsfeatures_t F, gnutls_datum_t * EXT)
+ F: The features structure
+
+ EXT: The DER-encoded extension data; must be freed using
+ 'gnutls_free()' .
+
+ This function will convert the provided TLS features structure
+ structure to a DER-encoded TLS features PKIX extension. The output
+ data in 'ext' will be allocated using 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_ext_import_aia
+--------------------------
+
+ -- Function: int gnutls_x509_ext_import_aia (const gnutls_datum_t *
+ EXT, gnutls_x509_aia_t AIA, unsigned int FLAGS)
+ EXT: The DER-encoded extension data
+
+ AIA: The authority info access
+
+ FLAGS: should be zero
+
+ This function extracts the Authority Information Access (AIA)
+ extension from the provided DER-encoded data; see RFC 5280 section
+ 4.2.2.1 for more information on the extension. The AIA extension
+ holds a sequence of AccessDescription (AD) data.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_authority_key_id
+---------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_authority_key_id (const
+ gnutls_datum_t * EXT, gnutls_x509_aki_t AKI, unsigned int
+ FLAGS)
+ EXT: a DER encoded extension
+
+ AKI: An initialized authority key identifier type
+
+ FLAGS: should be zero
+
+ This function will return the subject key ID stored in the provided
+ AuthorityKeyIdentifier extension.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_basic_constraints
+----------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_basic_constraints (const
+ gnutls_datum_t * EXT, unsigned int * CA, int * PATHLEN)
+ EXT: the DER encoded extension data
+
+ CA: will be non zero if the CA status is true
+
+ PATHLEN: the path length constraint; will be set to -1 for no limit
+
+ This function will return the CA status and path length constraint
+ as written in the PKIX extension 2.5.29.19.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_crl_dist_points
+--------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_crl_dist_points (const
+ gnutls_datum_t * EXT, gnutls_x509_crl_dist_points_t CDP,
+ unsigned int FLAGS)
+ EXT: the DER encoded extension data
+
+ CDP: A pointer to an initialized CRL distribution points.
+
+ FLAGS: should be zero
+
+ This function will extract the CRL distribution points extension
+ (2.5.29.31) and store it into the provided type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_inhibit_anypolicy
+----------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_inhibit_anypolicy (const
+ gnutls_datum_t * EXT, unsigned int * SKIPCERTS)
+ EXT: the DER encoded extension data
+
+ SKIPCERTS: will hold the number of certificates after which
+ anypolicy is no longer acceptable.
+
+ This function will return certificate's value of SkipCerts, by
+ reading the DER data of the Inhibit anyPolicy X.509 extension
+ (2.5.29.54).
+
+ The 'skipcerts' value is the number of additional certificates that
+ may appear in the path before the anyPolicy
+ ('GNUTLS_X509_OID_POLICY_ANY' ) is no longer acceptable.
+
+ *Returns:* zero, or a negative error code in case of parsing error.
+ If the certificate does not contain the Inhibit anyPolicy extension
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned.
+
+ *Since:* 3.6.0
+
+gnutls_x509_ext_import_key_purposes
+-----------------------------------
+
+ -- Function: int gnutls_x509_ext_import_key_purposes (const
+ gnutls_datum_t * EXT, gnutls_x509_key_purposes_t P, unsigned
+ int FLAGS)
+ EXT: The DER-encoded extension data
+
+ P: The key purposes
+
+ FLAGS: should be zero
+
+ This function will extract the key purposes in the provided
+ DER-encoded ExtKeyUsageSyntax PKIX extension, to a
+ 'gnutls_x509_key_purposes_t' type. The data must be initialized.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_key_usage
+--------------------------------
+
+ -- Function: int gnutls_x509_ext_import_key_usage (const gnutls_datum_t
+ * EXT, unsigned int * KEY_USAGE)
+ EXT: the DER encoded extension data
+
+ KEY_USAGE: where the key usage bits will be stored
+
+ This function will return certificate's key usage, by reading the
+ DER data of the keyUsage X.509 extension (2.5.29.15). The key
+ usage value will ORed values of the: 'GNUTLS_KEY_DIGITAL_SIGNATURE'
+ , 'GNUTLS_KEY_NON_REPUDIATION' , 'GNUTLS_KEY_KEY_ENCIPHERMENT' ,
+ 'GNUTLS_KEY_DATA_ENCIPHERMENT' , 'GNUTLS_KEY_KEY_AGREEMENT' ,
+ 'GNUTLS_KEY_KEY_CERT_SIGN' , 'GNUTLS_KEY_CRL_SIGN' ,
+ 'GNUTLS_KEY_ENCIPHER_ONLY' , 'GNUTLS_KEY_DECIPHER_ONLY' .
+
+ *Returns:* the certificate key usage, or a negative error code in
+ case of parsing error. If the certificate does not contain the
+ keyUsage extension 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be
+ returned.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_name_constraints
+---------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_name_constraints (const
+ gnutls_datum_t * EXT, gnutls_x509_name_constraints_t NC,
+ unsigned int FLAGS)
+ EXT: a DER encoded extension
+
+ NC: The nameconstraints
+
+ FLAGS: zero or 'GNUTLS_NAME_CONSTRAINTS_FLAG_APPEND'
+
+ This function will return an intermediate type containing the name
+ constraints of the provided NameConstraints extension. That can be
+ used in combination with 'gnutls_x509_name_constraints_check()' to
+ verify whether a server's name is in accordance with the
+ constraints.
+
+ When the 'flags' is set to 'GNUTLS_NAME_CONSTRAINTS_FLAG_APPEND' ,
+ then if the 'nc' type is empty this function will behave
+ identically as if the flag was not set. Otherwise if there are
+ elements in the 'nc' structure then the constraints will be merged
+ with the existing constraints following RFC5280 p6.1.4 (excluded
+ constraints will be appended, permitted will be intersected).
+
+ Note that 'nc' must be initialized prior to calling this function.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_policies
+-------------------------------
+
+ -- Function: int gnutls_x509_ext_import_policies (const gnutls_datum_t
+ * EXT, gnutls_x509_policies_t POLICIES, unsigned int FLAGS)
+ EXT: the DER encoded extension data
+
+ POLICIES: A pointer to an initialized policies.
+
+ FLAGS: should be zero
+
+ This function will extract the certificate policy extension
+ (2.5.29.32) and store it the provided policies.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_private_key_usage_period
+-----------------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_private_key_usage_period (const
+ gnutls_datum_t * EXT, time_t * ACTIVATION, time_t *
+ EXPIRATION)
+ EXT: the DER encoded extension data
+
+ ACTIVATION: Will hold the activation time
+
+ EXPIRATION: Will hold the expiration time
+
+ This function will return the expiration and activation times of
+ the private key as written in the PKIX extension 2.5.29.16.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_proxy
+----------------------------
+
+ -- Function: int gnutls_x509_ext_import_proxy (const gnutls_datum_t *
+ EXT, int * PATHLEN, char ** POLICYLANGUAGE, char ** POLICY,
+ size_t * SIZEOF_POLICY)
+ EXT: the DER encoded extension data
+
+ PATHLEN: pointer to output integer indicating path length (may be
+ NULL), non-negative error codes indicate a present
+ pCPathLenConstraint field and the actual value, -1 indicate that
+ the field is absent.
+
+ POLICYLANGUAGE: output variable with OID of policy language
+
+ POLICY: output variable with policy data
+
+ SIZEOF_POLICY: output variable with size of policy data
+
+ This function will return the information from a proxy certificate
+ extension. It reads the ProxyCertInfo X.509 extension
+ (1.3.6.1.5.5.7.1.14). The 'policyLanguage' and 'policy' values
+ must be deinitialized using 'gnutls_free()' after use.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_subject_alt_names
+----------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_subject_alt_names (const
+ gnutls_datum_t * EXT, gnutls_subject_alt_names_t SANS,
+ unsigned int FLAGS)
+ EXT: The DER-encoded extension data
+
+ SANS: The alternative names
+
+ FLAGS: should be zero
+
+ This function will export the alternative names in the provided
+ DER-encoded SubjectAltName PKIX extension, to a
+ 'gnutls_subject_alt_names_t' type. 'sans' must be initialized.
+
+ This function will succeed even if there no subject alternative
+ names in the structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_subject_key_id
+-------------------------------------
+
+ -- Function: int gnutls_x509_ext_import_subject_key_id (const
+ gnutls_datum_t * EXT, gnutls_datum_t * ID)
+ EXT: a DER encoded extension
+
+ ID: will contain the subject key ID
+
+ This function will return the subject key ID stored in the provided
+ SubjectKeyIdentifier extension. The ID will be allocated using
+ 'gnutls_malloc()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_ext_import_tlsfeatures
+----------------------------------
+
+ -- Function: int gnutls_x509_ext_import_tlsfeatures (const
+ gnutls_datum_t * EXT, gnutls_x509_tlsfeatures_t F, unsigned
+ int FLAGS)
+ EXT: The DER-encoded extension data
+
+ F: The features structure
+
+ FLAGS: zero or 'GNUTLS_EXT_FLAG_APPEND'
+
+ This function will export the features in the provided DER-encoded
+ TLS Features PKIX extension, to a 'gnutls_x509_tlsfeatures_t' type.
+ 'f' must be initialized.
+
+ When the 'flags' is set to 'GNUTLS_EXT_FLAG_APPEND' , then if the
+ 'features' structure is empty this function will behave identically
+ as if the flag was not set. Otherwise if there are elements in the
+ 'features' structure then they will be merged with.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_ext_print
+---------------------
+
+ -- Function: int gnutls_x509_ext_print (gnutls_x509_ext_st * EXTS,
+ unsigned int EXTS_SIZE, gnutls_certificate_print_formats_t
+ FORMAT, gnutls_datum_t * OUT)
+ EXTS: The data to be printed
+
+ EXTS_SIZE: the number of available structures
+
+ FORMAT: Indicate the format to use
+
+ OUT: Newly allocated datum with null terminated string.
+
+ This function will pretty print X.509 certificate extensions,
+ suitable for display to a human.
+
+ The output 'out' needs to be deallocated using 'gnutls_free()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_key_purpose_deinit
+------------------------------
+
+ -- Function: void gnutls_x509_key_purpose_deinit
+ (gnutls_x509_key_purposes_t P)
+ P: The key purposes
+
+ This function will deinitialize a key purposes type.
+
+ *Since:* 3.3.0
+
+gnutls_x509_key_purpose_get
+---------------------------
+
+ -- Function: int gnutls_x509_key_purpose_get
+ (gnutls_x509_key_purposes_t P, unsigned IDX, gnutls_datum_t *
+ OID)
+ P: The key purposes
+
+ IDX: The index of the key purpose to retrieve
+
+ OID: Will hold the object identifier of the key purpose (to be
+ treated as constant)
+
+ This function will retrieve the specified by the index key purpose
+ in the purposes type. The object identifier will be a null
+ terminated string.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the index is out of
+ bounds, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_key_purpose_init
+----------------------------
+
+ -- Function: int gnutls_x509_key_purpose_init
+ (gnutls_x509_key_purposes_t * P)
+ P: The key purposes
+
+ This function will initialize an alternative names type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_key_purpose_set
+---------------------------
+
+ -- Function: int gnutls_x509_key_purpose_set
+ (gnutls_x509_key_purposes_t P, const char * OID)
+ P: The key purposes
+
+ OID: The object identifier of the key purpose
+
+ This function will store the specified key purpose in the purposes.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0), otherwise a negative
+ error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_add_excluded
+-----------------------------------------
+
+ -- Function: int gnutls_x509_name_constraints_add_excluded
+ (gnutls_x509_name_constraints_t NC,
+ gnutls_x509_subject_alt_name_t TYPE, const gnutls_datum_t *
+ NAME)
+ NC: The nameconstraints
+
+ TYPE: The type of the constraints
+
+ NAME: The data of the constraints
+
+ This function will add a name constraint to the list of excluded
+ constraints. The constraints 'type' can be any of the following
+ types: 'GNUTLS_SAN_DNSNAME' , 'GNUTLS_SAN_RFC822NAME' ,
+ 'GNUTLS_SAN_DN' , 'GNUTLS_SAN_URI' , 'GNUTLS_SAN_IPADDRESS' . For
+ the latter, an IP address in network byte order is expected,
+ followed by its network mask (which is 4 bytes in IPv4 or 16-bytes
+ in IPv6).
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_add_permitted
+------------------------------------------
+
+ -- Function: int gnutls_x509_name_constraints_add_permitted
+ (gnutls_x509_name_constraints_t NC,
+ gnutls_x509_subject_alt_name_t TYPE, const gnutls_datum_t *
+ NAME)
+ NC: The nameconstraints
+
+ TYPE: The type of the constraints
+
+ NAME: The data of the constraints
+
+ This function will add a name constraint to the list of permitted
+ constraints. The constraints 'type' can be any of the following
+ types: 'GNUTLS_SAN_DNSNAME' , 'GNUTLS_SAN_RFC822NAME' ,
+ 'GNUTLS_SAN_DN' , 'GNUTLS_SAN_URI' , 'GNUTLS_SAN_IPADDRESS' . For
+ the latter, an IP address in network byte order is expected,
+ followed by its network mask.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_check
+----------------------------------
+
+ -- Function: unsigned gnutls_x509_name_constraints_check
+ (gnutls_x509_name_constraints_t NC,
+ gnutls_x509_subject_alt_name_t TYPE, const gnutls_datum_t *
+ NAME)
+ NC: the extracted name constraints
+
+ TYPE: the type of the constraint to check (of type
+ gnutls_x509_subject_alt_name_t)
+
+ NAME: the name to be checked
+
+ This function will check the provided name against the constraints
+ in 'nc' using the RFC5280 rules. Currently this function is
+ limited to DNS names, emails and IP addresses (of type
+ 'GNUTLS_SAN_DNSNAME' , 'GNUTLS_SAN_RFC822NAME' and
+ 'GNUTLS_SAN_IPADDRESS' ).
+
+ *Returns:* zero if the provided name is not acceptable, and
+ non-zero otherwise.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_check_crt
+--------------------------------------
+
+ -- Function: unsigned gnutls_x509_name_constraints_check_crt
+ (gnutls_x509_name_constraints_t NC,
+ gnutls_x509_subject_alt_name_t TYPE, gnutls_x509_crt_t CERT)
+ NC: the extracted name constraints
+
+ TYPE: the type of the constraint to check (of type
+ gnutls_x509_subject_alt_name_t)
+
+ CERT: the certificate to be checked
+
+ This function will check the provided certificate names against the
+ constraints in 'nc' using the RFC5280 rules. It will traverse all
+ the certificate's names and alternative names.
+
+ Currently this function is limited to DNS names and emails (of type
+ 'GNUTLS_SAN_DNSNAME' and 'GNUTLS_SAN_RFC822NAME' ).
+
+ *Returns:* zero if the provided name is not acceptable, and
+ non-zero otherwise.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_deinit
+-----------------------------------
+
+ -- Function: void gnutls_x509_name_constraints_deinit
+ (gnutls_x509_name_constraints_t NC)
+ NC: The nameconstraints
+
+ This function will deinitialize a name constraints type.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_get_excluded
+-----------------------------------------
+
+ -- Function: int gnutls_x509_name_constraints_get_excluded
+ (gnutls_x509_name_constraints_t NC, unsigned IDX, unsigned *
+ TYPE, gnutls_datum_t * NAME)
+ NC: the extracted name constraints
+
+ IDX: the index of the constraint
+
+ TYPE: the type of the constraint (of type
+ gnutls_x509_subject_alt_name_t)
+
+ NAME: the name in the constraint (of the specific type)
+
+ This function will return an intermediate type containing the name
+ constraints of the provided CA certificate. That structure can be
+ used in combination with 'gnutls_x509_name_constraints_check()' to
+ verify whether a server's name is in accordance with the
+ constraints.
+
+ The name should be treated as constant and valid for the lifetime
+ of 'nc' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_get_permitted
+------------------------------------------
+
+ -- Function: int gnutls_x509_name_constraints_get_permitted
+ (gnutls_x509_name_constraints_t NC, unsigned IDX, unsigned *
+ TYPE, gnutls_datum_t * NAME)
+ NC: the extracted name constraints
+
+ IDX: the index of the constraint
+
+ TYPE: the type of the constraint (of type
+ gnutls_x509_subject_alt_name_t)
+
+ NAME: the name in the constraint (of the specific type)
+
+ This function will return an intermediate type containing the name
+ constraints of the provided CA certificate. That structure can be
+ used in combination with 'gnutls_x509_name_constraints_check()' to
+ verify whether a server's name is in accordance with the
+ constraints.
+
+ The name should be treated as constant and valid for the lifetime
+ of 'nc' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the extension is not
+ present, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_name_constraints_init
+---------------------------------
+
+ -- Function: int gnutls_x509_name_constraints_init
+ (gnutls_x509_name_constraints_t * NC)
+ NC: The nameconstraints
+
+ This function will initialize a name constraints type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_othername_to_virtual
+--------------------------------
+
+ -- Function: int gnutls_x509_othername_to_virtual (const char * OID,
+ const gnutls_datum_t * OTHERNAME, unsigned int * VIRT_TYPE,
+ gnutls_datum_t * VIRT)
+ OID: The othername object identifier
+
+ OTHERNAME: The othername data
+
+ VIRT_TYPE: GNUTLS_SAN_OTHERNAME_XXX
+
+ VIRT: allocated printable data
+
+ This function will parse and convert the othername data to a
+ virtual type supported by gnutls.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.8
+
+gnutls_x509_policies_deinit
+---------------------------
+
+ -- Function: void gnutls_x509_policies_deinit (gnutls_x509_policies_t
+ POLICIES)
+ POLICIES: The authority key identifier
+
+ This function will deinitialize an authority key identifier type.
+
+ *Since:* 3.3.0
+
+gnutls_x509_policies_get
+------------------------
+
+ -- Function: int gnutls_x509_policies_get (gnutls_x509_policies_t
+ POLICIES, unsigned int SEQ, struct gnutls_x509_policy_st *
+ POLICY)
+ POLICIES: The policies
+
+ SEQ: The index of the name to get
+
+ POLICY: Will hold the policy
+
+ This function will return a specific policy as stored in the
+ 'policies' type. The returned values should be treated as constant
+ and valid for the lifetime of 'policies' .
+
+ The any policy OID is available as the 'GNUTLS_X509_OID_POLICY_ANY'
+ macro.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the index is out of
+ bounds, otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_policies_init
+-------------------------
+
+ -- Function: int gnutls_x509_policies_init (gnutls_x509_policies_t *
+ POLICIES)
+ POLICIES: The authority key ID
+
+ This function will initialize an authority key ID type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_policies_set
+------------------------
+
+ -- Function: int gnutls_x509_policies_set (gnutls_x509_policies_t
+ POLICIES, const struct gnutls_x509_policy_st * POLICY)
+ POLICIES: An initialized policies
+
+ POLICY: Contains the policy to set
+
+ This function will store the specified policy in the provided
+ 'policies' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0), otherwise a negative
+ error value.
+
+ *Since:* 3.3.0
+
+gnutls_x509_policy_release
+--------------------------
+
+ -- Function: void gnutls_x509_policy_release (struct
+ gnutls_x509_policy_st * POLICY)
+ POLICY: a certificate policy
+
+ This function will deinitialize all memory associated with the
+ provided 'policy' . The policy is allocated using
+ 'gnutls_x509_crt_get_policy()' .
+
+ *Since:* 3.1.5
+
+gnutls_x509_privkey_cpy
+-----------------------
+
+ -- Function: int gnutls_x509_privkey_cpy (gnutls_x509_privkey_t DST,
+ gnutls_x509_privkey_t SRC)
+ DST: The destination key, which should be initialized.
+
+ SRC: The source key
+
+ This function will copy a private key from source to destination
+ key. Destination has to be initialized.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_deinit
+--------------------------
+
+ -- Function: void gnutls_x509_privkey_deinit (gnutls_x509_privkey_t
+ KEY)
+ KEY: The key to be deinitialized
+
+ This function will deinitialize a private key structure.
+
+gnutls_x509_privkey_export
+--------------------------
+
+ -- Function: int gnutls_x509_privkey_export (gnutls_x509_privkey_t KEY,
+ gnutls_x509_crt_fmt_t FORMAT, void * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ KEY: Holds the key
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUTPUT_DATA: will contain a private key PEM or DER encoded
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will export the private key to a PKCS'1' structure
+ for RSA or RSA-PSS keys, and integer sequence for DSA keys. Other
+ keys types will be exported in PKCS'8' form.
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ RSA PRIVATE KEY".
+
+ It is recommended to use 'gnutls_x509_privkey_export_pkcs8()'
+ instead of this function, when a consistent output format is
+ required.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_export2
+---------------------------
+
+ -- Function: int gnutls_x509_privkey_export2 (gnutls_x509_privkey_t
+ KEY, gnutls_x509_crt_fmt_t FORMAT, gnutls_datum_t * OUT)
+ KEY: Holds the key
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ OUT: will contain a private key PEM or DER encoded
+
+ This function will export the private key to a PKCS'1' structure
+ for RSA or RSA-PSS keys, and integer sequence for DSA keys. Other
+ keys types will be exported in PKCS'8' form.
+
+ The output buffer is allocated using 'gnutls_malloc()' .
+
+ It is recommended to use 'gnutls_x509_privkey_export2_pkcs8()'
+ instead of this function, when a consistent output format is
+ required.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ Since 3.1.3
+
+gnutls_x509_privkey_export2_pkcs8
+---------------------------------
+
+ -- Function: int gnutls_x509_privkey_export2_pkcs8
+ (gnutls_x509_privkey_t KEY, gnutls_x509_crt_fmt_t FORMAT,
+ const char * PASSWORD, unsigned int FLAGS, gnutls_datum_t *
+ OUT)
+ KEY: Holds the key
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ PASSWORD: the password that will be used to encrypt the key.
+
+ FLAGS: an ORed sequence of gnutls_pkcs_encrypt_flags_t
+
+ OUT: will contain a private key PEM or DER encoded
+
+ This function will export the private key to a PKCS8 structure.
+ Both RSA and DSA keys can be exported. For DSA keys we use PKCS
+ '11' definitions. If the flags do not specify the encryption
+ cipher, then the default 3DES (PBES2) will be used.
+
+ The 'password' can be either ASCII or UTF-8 in the default PBES2
+ encryption schemas, or ASCII for the PKCS12 schemas.
+
+ The output buffer is allocated using 'gnutls_malloc()' .
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ ENCRYPTED PRIVATE KEY" or "BEGIN PRIVATE KEY" if encryption is not
+ used.
+
+ *Returns:* In case of failure a negative error code will be
+ returned, and 0 on success.
+
+ Since 3.1.3
+
+gnutls_x509_privkey_export_dsa_raw
+----------------------------------
+
+ -- Function: int gnutls_x509_privkey_export_dsa_raw
+ (gnutls_x509_privkey_t KEY, gnutls_datum_t * P, gnutls_datum_t
+ * Q, gnutls_datum_t * G, gnutls_datum_t * Y, gnutls_datum_t *
+ X)
+ KEY: a key
+
+ P: will hold the p
+
+ Q: will hold the q
+
+ G: will hold the g
+
+ Y: will hold the y
+
+ X: will hold the x
+
+ This function will export the DSA private key's parameters found in
+ the given structure. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_export_ecc_raw
+----------------------------------
+
+ -- Function: int gnutls_x509_privkey_export_ecc_raw
+ (gnutls_x509_privkey_t KEY, gnutls_ecc_curve_t * CURVE,
+ gnutls_datum_t * X, gnutls_datum_t * Y, gnutls_datum_t * K)
+ KEY: a key
+
+ CURVE: will hold the curve
+
+ X: will hold the x-coordinate
+
+ Y: will hold the y-coordinate
+
+ K: will hold the private key
+
+ This function will export the ECC private key's parameters found in
+ the given structure. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ In EdDSA curves the 'y' parameter will be 'NULL' and the other
+ parameters will be in the native format for the curve.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0
+
+gnutls_x509_privkey_export_gost_raw
+-----------------------------------
+
+ -- Function: int gnutls_x509_privkey_export_gost_raw
+ (gnutls_x509_privkey_t KEY, gnutls_ecc_curve_t * CURVE,
+ gnutls_digest_algorithm_t * DIGEST, gnutls_gost_paramset_t *
+ PARAMSET, gnutls_datum_t * X, gnutls_datum_t * Y,
+ gnutls_datum_t * K)
+ KEY: a key
+
+ CURVE: will hold the curve
+
+ DIGEST: will hold the digest
+
+ PARAMSET: will hold the GOST parameter set ID
+
+ X: will hold the x-coordinate
+
+ Y: will hold the y-coordinate
+
+ K: will hold the private key
+
+ This function will export the GOST private key's parameters found
+ in the given structure. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Note:* parameters will be stored with least significant byte
+ first. On version 3.6.3 this was incorrectly returned in
+ big-endian format.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.6.3
+
+gnutls_x509_privkey_export_pkcs8
+--------------------------------
+
+ -- Function: int gnutls_x509_privkey_export_pkcs8
+ (gnutls_x509_privkey_t KEY, gnutls_x509_crt_fmt_t FORMAT,
+ const char * PASSWORD, unsigned int FLAGS, void * OUTPUT_DATA,
+ size_t * OUTPUT_DATA_SIZE)
+ KEY: Holds the key
+
+ FORMAT: the format of output params. One of PEM or DER.
+
+ PASSWORD: the password that will be used to encrypt the key.
+
+ FLAGS: an ORed sequence of gnutls_pkcs_encrypt_flags_t
+
+ OUTPUT_DATA: will contain a private key PEM or DER encoded
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will export the private key to a PKCS8 structure.
+ Both RSA and DSA keys can be exported. For DSA keys we use PKCS
+ '11' definitions. If the flags do not specify the encryption
+ cipher, then the default 3DES (PBES2) will be used.
+
+ The 'password' can be either ASCII or UTF-8 in the default PBES2
+ encryption schemas, or ASCII for the PKCS12 schemas.
+
+ If the buffer provided is not long enough to hold the output, then
+ *output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will
+ be returned.
+
+ If the structure is PEM encoded, it will have a header of "BEGIN
+ ENCRYPTED PRIVATE KEY" or "BEGIN PRIVATE KEY" if encryption is not
+ used.
+
+ *Returns:* In case of failure a negative error code will be
+ returned, and 0 on success.
+
+gnutls_x509_privkey_export_rsa_raw
+----------------------------------
+
+ -- Function: int gnutls_x509_privkey_export_rsa_raw
+ (gnutls_x509_privkey_t KEY, gnutls_datum_t * M, gnutls_datum_t
+ * E, gnutls_datum_t * D, gnutls_datum_t * P, gnutls_datum_t *
+ Q, gnutls_datum_t * U)
+ KEY: a key
+
+ M: will hold the modulus
+
+ E: will hold the public exponent
+
+ D: will hold the private exponent
+
+ P: will hold the first prime (p)
+
+ Q: will hold the second prime (q)
+
+ U: will hold the coefficient
+
+ This function will export the RSA private key's parameters found in
+ the given structure. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_export_rsa_raw2
+-----------------------------------
+
+ -- Function: int gnutls_x509_privkey_export_rsa_raw2
+ (gnutls_x509_privkey_t KEY, gnutls_datum_t * M, gnutls_datum_t
+ * E, gnutls_datum_t * D, gnutls_datum_t * P, gnutls_datum_t *
+ Q, gnutls_datum_t * U, gnutls_datum_t * E1, gnutls_datum_t *
+ E2)
+ KEY: a key
+
+ M: will hold the modulus
+
+ E: will hold the public exponent
+
+ D: will hold the private exponent
+
+ P: will hold the first prime (p)
+
+ Q: will hold the second prime (q)
+
+ U: will hold the coefficient
+
+ E1: will hold e1 = d mod (p-1)
+
+ E2: will hold e2 = d mod (q-1)
+
+ This function will export the RSA private key's parameters found in
+ the given structure. The new parameters will be allocated using
+ 'gnutls_malloc()' and will be stored in the appropriate datum.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 2.12.0
+
+gnutls_x509_privkey_fix
+-----------------------
+
+ -- Function: int gnutls_x509_privkey_fix (gnutls_x509_privkey_t KEY)
+ KEY: a key
+
+ This function will recalculate the secondary parameters in a key.
+ In RSA keys, this can be the coefficient and exponent1,2.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_generate
+----------------------------
+
+ -- Function: int gnutls_x509_privkey_generate (gnutls_x509_privkey_t
+ KEY, gnutls_pk_algorithm_t ALGO, unsigned int BITS, unsigned
+ int FLAGS)
+ KEY: an initialized key
+
+ ALGO: is one of the algorithms in 'gnutls_pk_algorithm_t' .
+
+ BITS: the size of the parameters to generate
+
+ FLAGS: Must be zero or flags from 'gnutls_privkey_flags_t' .
+
+ This function will generate a random private key. Note that this
+ function must be called on an initialized private key.
+
+ The flag 'GNUTLS_PRIVKEY_FLAG_PROVABLE' instructs the key
+ generation process to use algorithms like Shawe-Taylor (from FIPS
+ PUB186-4) which generate provable parameters out of a seed for RSA
+ and DSA keys. See 'gnutls_x509_privkey_generate2()' for more
+ information.
+
+ Note that when generating an elliptic curve key, the curve can be
+ substituted in the place of the bits parameter using the
+ 'GNUTLS_CURVE_TO_BITS()' macro. The input to the macro is any
+ curve from 'gnutls_ecc_curve_t' .
+
+ For DSA keys, if the subgroup size needs to be specified check the
+ 'GNUTLS_SUBGROUP_TO_BITS()' macro.
+
+ It is recommended to do not set the number of 'bits' directly, use
+ 'gnutls_sec_param_to_pk_bits()' instead .
+
+ See also 'gnutls_privkey_generate()' ,
+ 'gnutls_x509_privkey_generate2()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_generate2
+-----------------------------
+
+ -- Function: int gnutls_x509_privkey_generate2 (gnutls_x509_privkey_t
+ KEY, gnutls_pk_algorithm_t ALGO, unsigned int BITS, unsigned
+ int FLAGS, const gnutls_keygen_data_st * DATA, unsigned
+ DATA_SIZE)
+ KEY: a key
+
+ ALGO: is one of the algorithms in 'gnutls_pk_algorithm_t' .
+
+ BITS: the size of the modulus
+
+ FLAGS: Must be zero or flags from 'gnutls_privkey_flags_t' .
+
+ DATA: Allow specifying 'gnutls_keygen_data_st' types such as the
+ seed to be used.
+
+ DATA_SIZE: The number of 'data' available.
+
+ This function will generate a random private key. Note that this
+ function must be called on an initialized private key.
+
+ The flag 'GNUTLS_PRIVKEY_FLAG_PROVABLE' instructs the key
+ generation process to use algorithms like Shawe-Taylor (from FIPS
+ PUB186-4) which generate provable parameters out of a seed for RSA
+ and DSA keys. On DSA keys the PQG parameters are generated using
+ the seed, while on RSA the two primes. To specify an explicit seed
+ (by default a random seed is used), use the 'data' with a
+ 'GNUTLS_KEYGEN_SEED' type.
+
+ Note that when generating an elliptic curve key, the curve can be
+ substituted in the place of the bits parameter using the
+ 'GNUTLS_CURVE_TO_BITS()' macro.
+
+ To export the generated keys in memory or in files it is
+ recommended to use the PKCS'8' form as it can handle all key types,
+ and can store additional parameters such as the seed, in case of
+ provable RSA or DSA keys. Generated keys can be exported in memory
+ using 'gnutls_privkey_export_x509()' , and then with
+ 'gnutls_x509_privkey_export2_pkcs8()' .
+
+ If key generation is part of your application, avoid setting the
+ number of bits directly, and instead use
+ 'gnutls_sec_param_to_pk_bits()' . That way the generated keys will
+ adapt to the security levels of the underlying GnuTLS library.
+
+ See also 'gnutls_privkey_generate2()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_get_key_id
+------------------------------
+
+ -- Function: int gnutls_x509_privkey_get_key_id (gnutls_x509_privkey_t
+ KEY, unsigned int FLAGS, unsigned char * OUTPUT_DATA, size_t *
+ OUTPUT_DATA_SIZE)
+ KEY: a key
+
+ FLAGS: should be one of the flags from 'gnutls_keyid_flags_t'
+
+ OUTPUT_DATA: will contain the key ID
+
+ OUTPUT_DATA_SIZE: holds the size of output_data (and will be
+ replaced by the actual size of parameters)
+
+ This function will return a unique ID that depends on the public
+ key parameters. This ID can be used in checking whether a
+ certificate corresponds to the given key.
+
+ If the buffer provided is not long enough to hold the output, then
+ * 'output_data_size' is updated and 'GNUTLS_E_SHORT_MEMORY_BUFFER'
+ will be returned. The output will normally be a SHA-1 hash output,
+ which is 20 bytes.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_get_pk_algorithm
+------------------------------------
+
+ -- Function: int gnutls_x509_privkey_get_pk_algorithm
+ (gnutls_x509_privkey_t KEY)
+ KEY: should contain a 'gnutls_x509_privkey_t' type
+
+ This function will return the public key algorithm of a private
+ key.
+
+ *Returns:* a member of the 'gnutls_pk_algorithm_t' enumeration on
+ success, or a negative error code on error.
+
+gnutls_x509_privkey_get_pk_algorithm2
+-------------------------------------
+
+ -- Function: int gnutls_x509_privkey_get_pk_algorithm2
+ (gnutls_x509_privkey_t KEY, unsigned int * BITS)
+ KEY: should contain a 'gnutls_x509_privkey_t' type
+
+ BITS: The number of bits in the public key algorithm
+
+ This function will return the public key algorithm of a private
+ key.
+
+ *Returns:* a member of the 'gnutls_pk_algorithm_t' enumeration on
+ success, or a negative error code on error.
+
+gnutls_x509_privkey_get_seed
+----------------------------
+
+ -- Function: int gnutls_x509_privkey_get_seed (gnutls_x509_privkey_t
+ KEY, gnutls_digest_algorithm_t * DIGEST, void * SEED, size_t *
+ SEED_SIZE)
+ KEY: should contain a 'gnutls_x509_privkey_t' type
+
+ DIGEST: if non-NULL it will contain the digest algorithm used for
+ key generation (if applicable)
+
+ SEED: where seed will be copied to
+
+ SEED_SIZE: originally holds the size of 'seed' , will be updated
+ with actual size
+
+ This function will return the seed that was used to generate the
+ given private key. That function will succeed only if the key was
+ generated as a provable key.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.0
+
+gnutls_x509_privkey_get_spki
+----------------------------
+
+ -- Function: int gnutls_x509_privkey_get_spki (gnutls_x509_privkey_t
+ KEY, gnutls_x509_spki_t SPKI, unsigned int FLAGS)
+ KEY: should contain a 'gnutls_x509_privkey_t' type
+
+ SPKI: a SubjectPublicKeyInfo structure of type 'gnutls_x509_spki_t'
+
+ FLAGS: must be zero
+
+ This function will return the public key information of a private
+ key. The provided 'spki' must be initialized.
+
+ *Returns:* Zero on success, or a negative error code on error.
+
+gnutls_x509_privkey_import
+--------------------------
+
+ -- Function: int gnutls_x509_privkey_import (gnutls_x509_privkey_t KEY,
+ const gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT)
+ KEY: The data to store the parsed key
+
+ DATA: The DER or PEM encoded certificate.
+
+ FORMAT: One of DER or PEM
+
+ This function will convert the given DER or PEM encoded key to the
+ native 'gnutls_x509_privkey_t' format. The output will be stored
+ in 'key' .
+
+ If the key is PEM encoded it should have a header that contains
+ "PRIVATE KEY". Note that this function falls back to PKCS '8'
+ decoding without password, if the default format fails to import.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_import2
+---------------------------
+
+ -- Function: int gnutls_x509_privkey_import2 (gnutls_x509_privkey_t
+ KEY, const gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t
+ FORMAT, const char * PASSWORD, unsigned int FLAGS)
+ KEY: The data to store the parsed key
+
+ DATA: The DER or PEM encoded key.
+
+ FORMAT: One of DER or PEM
+
+ PASSWORD: A password (optional)
+
+ FLAGS: an ORed sequence of gnutls_pkcs_encrypt_flags_t
+
+ This function will import the given DER or PEM encoded key, to the
+ native 'gnutls_x509_privkey_t' format, irrespective of the input
+ format. The input format is auto-detected.
+
+ The supported formats are basic unencrypted key, PKCS8, PKCS12, and
+ the openssl format.
+
+ If the provided key is encrypted but no password was given, then
+ 'GNUTLS_E_DECRYPTION_FAILED' is returned. Since GnuTLS 3.4.0 this
+ function will utilize the PIN callbacks if any.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_import_dsa_raw
+----------------------------------
+
+ -- Function: int gnutls_x509_privkey_import_dsa_raw
+ (gnutls_x509_privkey_t KEY, const gnutls_datum_t * P, const
+ gnutls_datum_t * Q, const gnutls_datum_t * G, const
+ gnutls_datum_t * Y, const gnutls_datum_t * X)
+ KEY: The data to store the parsed key
+
+ P: holds the p
+
+ Q: holds the q
+
+ G: holds the g
+
+ Y: holds the y (optional)
+
+ X: holds the x
+
+ This function will convert the given DSA raw parameters to the
+ native 'gnutls_x509_privkey_t' format. The output will be stored
+ in 'key' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_import_ecc_raw
+----------------------------------
+
+ -- Function: int gnutls_x509_privkey_import_ecc_raw
+ (gnutls_x509_privkey_t KEY, gnutls_ecc_curve_t CURVE, const
+ gnutls_datum_t * X, const gnutls_datum_t * Y, const
+ gnutls_datum_t * K)
+ KEY: The data to store the parsed key
+
+ CURVE: holds the curve
+
+ X: holds the x-coordinate
+
+ Y: holds the y-coordinate
+
+ K: holds the k
+
+ This function will convert the given elliptic curve parameters to
+ the native 'gnutls_x509_privkey_t' format. The output will be
+ stored in 'key' . For EdDSA keys, the 'x' and 'k' values must be
+ in the native to curve format.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0
+
+gnutls_x509_privkey_import_gost_raw
+-----------------------------------
+
+ -- Function: int gnutls_x509_privkey_import_gost_raw
+ (gnutls_x509_privkey_t KEY, gnutls_ecc_curve_t CURVE,
+ gnutls_digest_algorithm_t DIGEST, gnutls_gost_paramset_t
+ PARAMSET, const gnutls_datum_t * X, const gnutls_datum_t * Y,
+ const gnutls_datum_t * K)
+ KEY: The data to store the parsed key
+
+ CURVE: holds the curve
+
+ DIGEST: will hold the digest
+
+ PARAMSET: will hold the GOST parameter set ID
+
+ X: holds the x-coordinate
+
+ Y: holds the y-coordinate
+
+ K: holds the k (private key)
+
+ This function will convert the given GOST private key's parameters
+ to the native 'gnutls_x509_privkey_t' format. The output will be
+ stored in 'key' . 'digest' should be one of GNUTLS_DIG_GOSR_94,
+ GNUTLS_DIG_STREEBOG_256 or GNUTLS_DIG_STREEBOG_512. If 'paramset'
+ is set to GNUTLS_GOST_PARAMSET_UNKNOWN default one will be selected
+ depending on 'digest' .
+
+ *Note:* parameters should be stored with least significant byte
+ first. On version 3.6.3 big-endian format was used incorrectly.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.6.3
+
+gnutls_x509_privkey_import_openssl
+----------------------------------
+
+ -- Function: int gnutls_x509_privkey_import_openssl
+ (gnutls_x509_privkey_t KEY, const gnutls_datum_t * DATA, const
+ char * PASSWORD)
+ KEY: The data to store the parsed key
+
+ DATA: The DER or PEM encoded key.
+
+ PASSWORD: the password to decrypt the key (if it is encrypted).
+
+ This function will convert the given PEM encrypted to the native
+ gnutls_x509_privkey_t format. The output will be stored in 'key' .
+
+ The 'password' should be in ASCII. If the password is not provided
+ or wrong then 'GNUTLS_E_DECRYPTION_FAILED' will be returned.
+
+ If the Certificate is PEM encoded it should have a header of
+ "PRIVATE KEY" and the "DEK-Info" header.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_import_pkcs8
+--------------------------------
+
+ -- Function: int gnutls_x509_privkey_import_pkcs8
+ (gnutls_x509_privkey_t KEY, const gnutls_datum_t * DATA,
+ gnutls_x509_crt_fmt_t FORMAT, const char * PASSWORD, unsigned
+ int FLAGS)
+ KEY: The data to store the parsed key
+
+ DATA: The DER or PEM encoded key.
+
+ FORMAT: One of DER or PEM
+
+ PASSWORD: the password to decrypt the key (if it is encrypted).
+
+ FLAGS: 0 if encrypted or GNUTLS_PKCS_PLAIN if not encrypted.
+
+ This function will convert the given DER or PEM encoded PKCS8 2.0
+ encrypted key to the native gnutls_x509_privkey_t format. The
+ output will be stored in 'key' . Both RSA and DSA keys can be
+ imported, and flags can only be used to indicate an unencrypted
+ key.
+
+ The 'password' can be either ASCII or UTF-8 in the default PBES2
+ encryption schemas, or ASCII for the PKCS12 schemas.
+
+ If the Certificate is PEM encoded it should have a header of
+ "ENCRYPTED PRIVATE KEY", or "PRIVATE KEY". You only need to specify
+ the flags if the key is DER encoded, since in that case the
+ encryption status cannot be auto-detected.
+
+ If the 'GNUTLS_PKCS_PLAIN' flag is specified and the supplied data
+ are encrypted then 'GNUTLS_E_DECRYPTION_FAILED' is returned.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_import_rsa_raw
+----------------------------------
+
+ -- Function: int gnutls_x509_privkey_import_rsa_raw
+ (gnutls_x509_privkey_t KEY, const gnutls_datum_t * M, const
+ gnutls_datum_t * E, const gnutls_datum_t * D, const
+ gnutls_datum_t * P, const gnutls_datum_t * Q, const
+ gnutls_datum_t * U)
+ KEY: The data to store the parsed key
+
+ M: holds the modulus
+
+ E: holds the public exponent
+
+ D: holds the private exponent
+
+ P: holds the first prime (p)
+
+ Q: holds the second prime (q)
+
+ U: holds the coefficient
+
+ This function will convert the given RSA raw parameters to the
+ native 'gnutls_x509_privkey_t' format. The output will be stored
+ in 'key' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_import_rsa_raw2
+-----------------------------------
+
+ -- Function: int gnutls_x509_privkey_import_rsa_raw2
+ (gnutls_x509_privkey_t KEY, const gnutls_datum_t * M, const
+ gnutls_datum_t * E, const gnutls_datum_t * D, const
+ gnutls_datum_t * P, const gnutls_datum_t * Q, const
+ gnutls_datum_t * U, const gnutls_datum_t * E1, const
+ gnutls_datum_t * E2)
+ KEY: The data to store the parsed key
+
+ M: holds the modulus
+
+ E: holds the public exponent
+
+ D: holds the private exponent
+
+ P: holds the first prime (p)
+
+ Q: holds the second prime (q)
+
+ U: holds the coefficient (optional)
+
+ E1: holds e1 = d mod (p-1) (optional)
+
+ E2: holds e2 = d mod (q-1) (optional)
+
+ This function will convert the given RSA raw parameters to the
+ native 'gnutls_x509_privkey_t' format. The output will be stored
+ in 'key' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_init
+------------------------
+
+ -- Function: int gnutls_x509_privkey_init (gnutls_x509_privkey_t * KEY)
+ KEY: A pointer to the type to be initialized
+
+ This function will initialize a private key type.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_sec_param
+-----------------------------
+
+ -- Function: gnutls_sec_param_t gnutls_x509_privkey_sec_param
+ (gnutls_x509_privkey_t KEY)
+ KEY: a key
+
+ This function will return the security parameter appropriate with
+ this private key.
+
+ *Returns:* On success, a valid security parameter is returned
+ otherwise 'GNUTLS_SEC_PARAM_UNKNOWN' is returned.
+
+ *Since:* 2.12.0
+
+gnutls_x509_privkey_set_flags
+-----------------------------
+
+ -- Function: void gnutls_x509_privkey_set_flags (gnutls_x509_privkey_t
+ KEY, unsigned int FLAGS)
+ KEY: A key of type 'gnutls_x509_privkey_t'
+
+ FLAGS: flags from the 'gnutls_privkey_flags'
+
+ This function will set flags for the specified private key, after
+ it is generated. Currently this is useful for the
+ 'GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT' to allow exporting a "provable"
+ private key in backwards compatible way.
+
+ *Since:* 3.5.0
+
+gnutls_x509_privkey_set_pin_function
+------------------------------------
+
+ -- Function: void gnutls_x509_privkey_set_pin_function
+ (gnutls_x509_privkey_t PRIVKEY, gnutls_pin_callback_t FN, void
+ * USERDATA)
+ PRIVKEY: The certificate structure
+
+ FN: the callback
+
+ USERDATA: data associated with the callback
+
+ This function will set a callback function to be used when it is
+ required to access a protected object. This function overrides the
+ global function set using 'gnutls_pkcs11_set_pin_function()' .
+
+ Note that this callback is used when decrypting a key.
+
+ *Since:* 3.4.0
+
+gnutls_x509_privkey_set_spki
+----------------------------
+
+ -- Function: int gnutls_x509_privkey_set_spki (gnutls_x509_privkey_t
+ KEY, const gnutls_x509_spki_t SPKI, unsigned int FLAGS)
+ KEY: should contain a 'gnutls_x509_privkey_t' type
+
+ SPKI: a SubjectPublicKeyInfo structure of type 'gnutls_x509_spki_t'
+
+ FLAGS: must be zero
+
+ This function will return the public key information of a private
+ key. The provided 'spki' must be initialized.
+
+ *Returns:* Zero on success, or a negative error code on error.
+
+gnutls_x509_privkey_sign_data
+-----------------------------
+
+ -- Function: int gnutls_x509_privkey_sign_data (gnutls_x509_privkey_t
+ KEY, gnutls_digest_algorithm_t DIGEST, unsigned int FLAGS,
+ const gnutls_datum_t * DATA, void * SIGNATURE, size_t *
+ SIGNATURE_SIZE)
+ KEY: a key
+
+ DIGEST: should be a digest algorithm
+
+ FLAGS: should be 0 for now
+
+ DATA: holds the data to be signed
+
+ SIGNATURE: will contain the signature
+
+ SIGNATURE_SIZE: holds the size of signature (and will be replaced
+ by the new size)
+
+ This function will sign the given data using a signature algorithm
+ supported by the private key. Signature algorithms are always used
+ together with a hash functions. Different hash functions may be
+ used for the RSA algorithm, but only SHA-1 for the DSA keys.
+
+ If the buffer provided is not long enough to hold the output, then
+ * 'signature_size' is updated and 'GNUTLS_E_SHORT_MEMORY_BUFFER'
+ will be returned.
+
+ Use 'gnutls_x509_crt_get_preferred_hash_algorithm()' to determine
+ the hash algorithm.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_verify_params
+---------------------------------
+
+ -- Function: int gnutls_x509_privkey_verify_params
+ (gnutls_x509_privkey_t KEY)
+ KEY: a key
+
+ This function will verify the private key parameters.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+gnutls_x509_privkey_verify_seed
+-------------------------------
+
+ -- Function: int gnutls_x509_privkey_verify_seed (gnutls_x509_privkey_t
+ KEY, gnutls_digest_algorithm_t DIGEST, const void * SEED,
+ size_t SEED_SIZE)
+ KEY: should contain a 'gnutls_x509_privkey_t' type
+
+ DIGEST: it contains the digest algorithm used for key generation
+ (if applicable)
+
+ SEED: the seed of the key to be checked with
+
+ SEED_SIZE: holds the size of 'seed'
+
+ This function will verify that the given private key was generated
+ from the provided seed. If 'seed' is 'NULL' then the seed stored
+ in the 'key' 's structure will be used for verification.
+
+ *Returns:* In case of a verification failure
+ 'GNUTLS_E_PRIVKEY_VERIFICATION_ERROR' is returned, and zero or
+ positive code on success.
+
+ *Since:* 3.5.0
+
+gnutls_x509_rdn_get
+-------------------
+
+ -- Function: int gnutls_x509_rdn_get (const gnutls_datum_t * IDN, char
+ * BUF, size_t * BUF_SIZE)
+ IDN: should contain a DER encoded RDN sequence
+
+ BUF: a pointer to a structure to hold the peer's name
+
+ BUF_SIZE: holds the size of 'buf'
+
+ This function will return the name of the given RDN sequence. The
+ name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in
+ RFC4514.
+
+ This function does not output a fully RFC4514 compliant string, if
+ that is required see 'gnutls_x509_rdn_get2()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, or
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' is returned and * 'buf_size' is
+ updated if the provided buffer is not long enough, otherwise a
+ negative error value.
+
+gnutls_x509_rdn_get2
+--------------------
+
+ -- Function: int gnutls_x509_rdn_get2 (const gnutls_datum_t * IDN,
+ gnutls_datum_t * STR, unsigned FLAGS)
+ IDN: should contain a DER encoded RDN sequence
+
+ STR: a datum that will hold the name
+
+ FLAGS: zero of 'GNUTLS_X509_DN_FLAG_COMPAT'
+
+ This function will return the name of the given RDN sequence. The
+ name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in
+ RFC4514.
+
+ When the flag 'GNUTLS_X509_DN_FLAG_COMPAT' is specified, the output
+ format will match the format output by previous to 3.5.6 versions
+ of GnuTLS which was not not fully RFC4514-compliant.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, or
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' is returned and * 'buf_size' is
+ updated if the provided buffer is not long enough, otherwise a
+ negative error value.
+
+gnutls_x509_rdn_get_by_oid
+--------------------------
+
+ -- Function: int gnutls_x509_rdn_get_by_oid (const gnutls_datum_t *
+ IDN, const char * OID, unsigned INDX, unsigned int RAW_FLAG,
+ void * BUF, size_t * BUF_SIZE)
+ IDN: should contain a DER encoded RDN sequence
+
+ OID: an Object Identifier
+
+ INDX: In case multiple same OIDs exist in the RDN indicates which
+ to send. Use 0 for the first one.
+
+ RAW_FLAG: If non-zero then the raw DER data are returned.
+
+ BUF: a pointer to a structure to hold the peer's name
+
+ BUF_SIZE: holds the size of 'buf'
+
+ This function will return the name of the given Object identifier,
+ of the RDN sequence. The name will be encoded using the rules from
+ RFC4514.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, or
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' is returned and * 'buf_size' is
+ updated if the provided buffer is not long enough, otherwise a
+ negative error value.
+
+gnutls_x509_rdn_get_oid
+-----------------------
+
+ -- Function: int gnutls_x509_rdn_get_oid (const gnutls_datum_t * IDN,
+ unsigned INDX, void * BUF, size_t * BUF_SIZE)
+ IDN: should contain a DER encoded RDN sequence
+
+ INDX: Indicates which OID to return. Use 0 for the first one.
+
+ BUF: a pointer to a structure to hold the peer's name OID
+
+ BUF_SIZE: holds the size of 'buf'
+
+ This function will return the specified Object identifier, of the
+ RDN sequence.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, or
+ 'GNUTLS_E_SHORT_MEMORY_BUFFER' is returned and * 'buf_size' is
+ updated if the provided buffer is not long enough, otherwise a
+ negative error value.
+
+ *Since:* 2.4.0
+
+gnutls_x509_spki_deinit
+-----------------------
+
+ -- Function: void gnutls_x509_spki_deinit (gnutls_x509_spki_t SPKI)
+ SPKI: the SubjectPublicKeyInfo structure
+
+ This function will deinitialize a SubjectPublicKeyInfo structure.
+
+ *Since:* 3.6.0
+
+gnutls_x509_spki_get_rsa_pss_params
+-----------------------------------
+
+ -- Function: int gnutls_x509_spki_get_rsa_pss_params
+ (gnutls_x509_spki_t SPKI, gnutls_digest_algorithm_t * DIG,
+ unsigned int * SALT_SIZE)
+ SPKI: the SubjectPublicKeyInfo structure
+
+ DIG: if non-NULL, it will hold the digest algorithm
+
+ SALT_SIZE: if non-NULL, it will hold the salt size
+
+ This function will get the public key algorithm parameters of
+ RSA-PSS type.
+
+ *Returns:* zero if the parameters are present or a negative value
+ on error.
+
+ *Since:* 3.6.0
+
+gnutls_x509_spki_init
+---------------------
+
+ -- Function: int gnutls_x509_spki_init (gnutls_x509_spki_t * SPKI)
+ SPKI: A pointer to the type to be initialized
+
+ This function will initialize a SubjectPublicKeyInfo structure used
+ in PKIX. The structure is used to set additional parameters in the
+ public key information field of a certificate.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.6.0
+
+gnutls_x509_spki_set_rsa_pss_params
+-----------------------------------
+
+ -- Function: void gnutls_x509_spki_set_rsa_pss_params
+ (gnutls_x509_spki_t SPKI, gnutls_digest_algorithm_t DIG,
+ unsigned int SALT_SIZE)
+ SPKI: the SubjectPublicKeyInfo structure
+
+ DIG: a digest algorithm of type 'gnutls_digest_algorithm_t'
+
+ SALT_SIZE: the size of salt string
+
+ This function will set the public key parameters for an RSA-PSS
+ algorithm, in the SubjectPublicKeyInfo structure.
+
+ *Since:* 3.6.0
+
+gnutls_x509_tlsfeatures_add
+---------------------------
+
+ -- Function: int gnutls_x509_tlsfeatures_add (gnutls_x509_tlsfeatures_t
+ F, unsigned int FEATURE)
+ F: The TLS features
+
+ FEATURE: The feature to add
+
+ This function will append a feature to the X.509 TLS features
+ extension structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_tlsfeatures_check_crt
+---------------------------------
+
+ -- Function: unsigned gnutls_x509_tlsfeatures_check_crt
+ (gnutls_x509_tlsfeatures_t FEAT, gnutls_x509_crt_t CERT)
+ FEAT: a set of TLSFeatures
+
+ CERT: the certificate to be checked
+
+ This function will check the provided certificate against the
+ TLSFeatures set in 'feat' using the RFC7633 p.4.2.2 rules. It will
+ check whether the certificate contains the features in 'feat' or a
+ superset.
+
+ *Returns:* non-zero if the provided certificate complies, and zero
+ otherwise.
+
+ *Since:* 3.5.1
+
+gnutls_x509_tlsfeatures_deinit
+------------------------------
+
+ -- Function: void gnutls_x509_tlsfeatures_deinit
+ (gnutls_x509_tlsfeatures_t F)
+ F: The TLS features
+
+ This function will deinitialize a X.509 TLS features extension
+ structure
+
+ *Since:* 3.5.1
+
+gnutls_x509_tlsfeatures_get
+---------------------------
+
+ -- Function: int gnutls_x509_tlsfeatures_get (gnutls_x509_tlsfeatures_t
+ F, unsigned IDX, unsigned int * FEATURE)
+ F: The TLS features
+
+ IDX: The index of the feature to get
+
+ FEATURE: If the function succeeds, the feature will be stored in
+ this variable
+
+ This function will get a feature from the X.509 TLS features
+ extension structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_tlsfeatures_init
+----------------------------
+
+ -- Function: int gnutls_x509_tlsfeatures_init
+ (gnutls_x509_tlsfeatures_t * F)
+ F: The TLS features
+
+ This function will initialize a X.509 TLS features extension
+ structure
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.5.1
+
+gnutls_x509_trust_list_add_cas
+------------------------------
+
+ -- Function: int gnutls_x509_trust_list_add_cas
+ (gnutls_x509_trust_list_t LIST, const gnutls_x509_crt_t *
+ CLIST, unsigned CLIST_SIZE, unsigned int FLAGS)
+ LIST: The list
+
+ CLIST: A list of CAs
+
+ CLIST_SIZE: The length of the CA list
+
+ FLAGS: flags from 'gnutls_trust_list_flags_t'
+
+ This function will add the given certificate authorities to the
+ trusted list. The CAs in 'clist' must not be deinitialized during
+ the lifetime of 'list' .
+
+ If the flag 'GNUTLS_TL_NO_DUPLICATES' is specified, then this
+ function will ensure that no duplicates will be present in the
+ final trust list.
+
+ If the flag 'GNUTLS_TL_NO_DUPLICATE_KEY' is specified, then this
+ function will ensure that no certificates with the same key are
+ present in the final trust list.
+
+ If either 'GNUTLS_TL_NO_DUPLICATE_KEY' or 'GNUTLS_TL_NO_DUPLICATES'
+ are given, 'gnutls_x509_trust_list_deinit()' must be called with
+ parameter 'all' being 1.
+
+ *Returns:* The number of added elements is returned; that includes
+ duplicate entries.
+
+ *Since:* 3.0.0
+
+gnutls_x509_trust_list_add_crls
+-------------------------------
+
+ -- Function: int gnutls_x509_trust_list_add_crls
+ (gnutls_x509_trust_list_t LIST, const gnutls_x509_crl_t *
+ CRL_LIST, unsigned CRL_SIZE, unsigned int FLAGS, unsigned int
+ VERIFICATION_FLAGS)
+ LIST: The list
+
+ CRL_LIST: A list of CRLs
+
+ CRL_SIZE: The length of the CRL list
+
+ FLAGS: flags from 'gnutls_trust_list_flags_t'
+
+ VERIFICATION_FLAGS: gnutls_certificate_verify_flags if flags
+ specifies GNUTLS_TL_VERIFY_CRL
+
+ This function will add the given certificate revocation lists to
+ the trusted list. The CRLs in 'crl_list' must not be deinitialized
+ during the lifetime of 'list' .
+
+ This function must be called after
+ 'gnutls_x509_trust_list_add_cas()' to allow verifying the CRLs for
+ validity. If the flag 'GNUTLS_TL_NO_DUPLICATES' is given, then the
+ final CRL list will not contain duplicate entries.
+
+ If the flag 'GNUTLS_TL_NO_DUPLICATES' is given,
+ 'gnutls_x509_trust_list_deinit()' must be called with parameter
+ 'all' being 1.
+
+ If flag 'GNUTLS_TL_VERIFY_CRL' is given the CRLs will be verified
+ before being added, and if verification fails, they will be
+ skipped.
+
+ *Returns:* The number of added elements is returned; that includes
+ duplicate entries.
+
+ *Since:* 3.0
+
+gnutls_x509_trust_list_add_named_crt
+------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_add_named_crt
+ (gnutls_x509_trust_list_t LIST, gnutls_x509_crt_t CERT, const
+ void * NAME, size_t NAME_SIZE, unsigned int FLAGS)
+ LIST: The list
+
+ CERT: A certificate
+
+ NAME: An identifier for the certificate
+
+ NAME_SIZE: The size of the identifier
+
+ FLAGS: should be 0.
+
+ This function will add the given certificate to the trusted list
+ and associate it with a name. The certificate will not be be used
+ for verification with 'gnutls_x509_trust_list_verify_crt()' but
+ with 'gnutls_x509_trust_list_verify_named_crt()' or
+ 'gnutls_x509_trust_list_verify_crt2()' - the latter only since
+ GnuTLS 3.4.0 and if a hostname is provided.
+
+ In principle this function can be used to set individual "server"
+ certificates that are trusted by the user for that specific server
+ but for no other purposes.
+
+ The certificate 'cert' must not be deinitialized during the
+ lifetime of the 'list' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0.0
+
+gnutls_x509_trust_list_add_system_trust
+---------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_add_system_trust
+ (gnutls_x509_trust_list_t LIST, unsigned int TL_FLAGS,
+ unsigned int TL_VFLAGS)
+ LIST: The structure of the list
+
+ TL_FLAGS: GNUTLS_TL_*
+
+ TL_VFLAGS: gnutls_certificate_verify_flags if flags specifies
+ GNUTLS_TL_VERIFY_CRL
+
+ This function adds the system's default trusted certificate
+ authorities to the trusted list. Note that on unsupported systems
+ this function returns 'GNUTLS_E_UNIMPLEMENTED_FEATURE' .
+
+ This function implies the flag 'GNUTLS_TL_NO_DUPLICATES' .
+
+ *Returns:* The number of added elements or a negative error code on
+ error.
+
+ *Since:* 3.1
+
+gnutls_x509_trust_list_add_trust_dir
+------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_add_trust_dir
+ (gnutls_x509_trust_list_t LIST, const char * CA_DIR, const
+ char * CRL_DIR, gnutls_x509_crt_fmt_t TYPE, unsigned int
+ TL_FLAGS, unsigned int TL_VFLAGS)
+ LIST: The list
+
+ CA_DIR: A directory containing the CAs (optional)
+
+ CRL_DIR: A directory containing a list of CRLs (optional)
+
+ TYPE: The format of the certificates
+
+ TL_FLAGS: flags from 'gnutls_trust_list_flags_t'
+
+ TL_VFLAGS: gnutls_certificate_verify_flags if flags specifies
+ GNUTLS_TL_VERIFY_CRL
+
+ This function will add the given certificate authorities to the
+ trusted list. Only directories are accepted by this function.
+
+ *Returns:* The number of added elements is returned.
+
+ *Since:* 3.3.6
+
+gnutls_x509_trust_list_add_trust_file
+-------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_add_trust_file
+ (gnutls_x509_trust_list_t LIST, const char * CA_FILE, const
+ char * CRL_FILE, gnutls_x509_crt_fmt_t TYPE, unsigned int
+ TL_FLAGS, unsigned int TL_VFLAGS)
+ LIST: The list
+
+ CA_FILE: A file containing a list of CAs (optional)
+
+ CRL_FILE: A file containing a list of CRLs (optional)
+
+ TYPE: The format of the certificates
+
+ TL_FLAGS: flags from 'gnutls_trust_list_flags_t'
+
+ TL_VFLAGS: gnutls_certificate_verify_flags if flags specifies
+ GNUTLS_TL_VERIFY_CRL
+
+ This function will add the given certificate authorities to the
+ trusted list. PKCS '11' URLs are also accepted, instead of files,
+ by this function. A PKCS '11' URL implies a trust database (a
+ specially marked module in p11-kit); the URL "pkcs11:" implies all
+ trust databases in the system. Only a single URL specifying trust
+ databases can be set; they cannot be stacked with multiple calls.
+
+ *Returns:* The number of added elements is returned.
+
+ *Since:* 3.1
+
+gnutls_x509_trust_list_add_trust_mem
+------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_add_trust_mem
+ (gnutls_x509_trust_list_t LIST, const gnutls_datum_t * CAS,
+ const gnutls_datum_t * CRLS, gnutls_x509_crt_fmt_t TYPE,
+ unsigned int TL_FLAGS, unsigned int TL_VFLAGS)
+ LIST: The list
+
+ CAS: A buffer containing a list of CAs (optional)
+
+ CRLS: A buffer containing a list of CRLs (optional)
+
+ TYPE: The format of the certificates
+
+ TL_FLAGS: flags from 'gnutls_trust_list_flags_t'
+
+ TL_VFLAGS: gnutls_certificate_verify_flags if flags specifies
+ GNUTLS_TL_VERIFY_CRL
+
+ This function will add the given certificate authorities to the
+ trusted list.
+
+ If this function is used 'gnutls_x509_trust_list_deinit()' must be
+ called with parameter 'all' being 1.
+
+ *Returns:* The number of added elements is returned.
+
+ *Since:* 3.1
+
+gnutls_x509_trust_list_deinit
+-----------------------------
+
+ -- Function: void gnutls_x509_trust_list_deinit
+ (gnutls_x509_trust_list_t LIST, unsigned int ALL)
+ LIST: The list to be deinitialized
+
+ ALL: if non-zero it will deinitialize all the certificates and CRLs
+ contained in the structure.
+
+ This function will deinitialize a trust list. Note that the 'all'
+ flag should be typically non-zero unless you have specified your
+ certificates using 'gnutls_x509_trust_list_add_cas()' and you want
+ to prevent them from being deinitialized by this function.
+
+ *Since:* 3.0.0
+
+gnutls_x509_trust_list_get_issuer
+---------------------------------
+
+ -- Function: int gnutls_x509_trust_list_get_issuer
+ (gnutls_x509_trust_list_t LIST, gnutls_x509_crt_t CERT,
+ gnutls_x509_crt_t * ISSUER, unsigned int FLAGS)
+ LIST: The list
+
+ CERT: is the certificate to find issuer for
+
+ ISSUER: Will hold the issuer if any. Should be treated as constant
+ unless 'GNUTLS_TL_GET_COPY' is set in 'flags' .
+
+ FLAGS: flags from 'gnutls_trust_list_flags_t' ('GNUTLS_TL_GET_COPY'
+ is applicable)
+
+ This function will find the issuer of the given certificate. If
+ the flag 'GNUTLS_TL_GET_COPY' is specified a copy of the issuer
+ will be returned which must be freed using
+ 'gnutls_x509_crt_deinit()' . In that case the provided 'issuer'
+ must not be initialized.
+
+ Note that the flag 'GNUTLS_TL_GET_COPY' is required for this
+ function to work with PKCS'11' trust lists in a thread-safe way.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0
+
+gnutls_x509_trust_list_get_issuer_by_dn
+---------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_get_issuer_by_dn
+ (gnutls_x509_trust_list_t LIST, const gnutls_datum_t * DN,
+ gnutls_x509_crt_t * ISSUER, unsigned int FLAGS)
+ LIST: The list
+
+ DN: is the issuer's DN
+
+ ISSUER: Will hold the issuer if any. Should be deallocated after
+ use.
+
+ FLAGS: Use zero
+
+ This function will find the issuer with the given name, and return
+ a copy of the issuer, which must be freed using
+ 'gnutls_x509_crt_deinit()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.4.0
+
+gnutls_x509_trust_list_get_issuer_by_subject_key_id
+---------------------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_get_issuer_by_subject_key_id
+ (gnutls_x509_trust_list_t LIST, const gnutls_datum_t * DN,
+ const gnutls_datum_t * SPKI, gnutls_x509_crt_t * ISSUER,
+ unsigned int FLAGS)
+ LIST: The list
+
+ DN: is the issuer's DN (may be 'NULL' )
+
+ SPKI: is the subject key ID
+
+ ISSUER: Will hold the issuer if any. Should be deallocated after
+ use.
+
+ FLAGS: Use zero
+
+ This function will find the issuer with the given name and subject
+ key ID, and return a copy of the issuer, which must be freed using
+ 'gnutls_x509_crt_deinit()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.4.2
+
+gnutls_x509_trust_list_get_ptr
+------------------------------
+
+ -- Function: void * gnutls_x509_trust_list_get_ptr
+ (gnutls_x509_trust_list_t TLIST)
+ TLIST: is a 'gnutls_x509_trust_list_t' type.
+
+ Get user pointer for tlist. Useful in callback function
+ gnutls_x509_trust_list_set_getissuer_function. This is the pointer
+ set with 'gnutls_x509_trust_list_set_ptr()' .
+
+ *Returns:* the user given pointer from the tlist structure, or
+ 'NULL' if it was never set.
+
+ *Since:* 3.7.0
+
+gnutls_x509_trust_list_init
+---------------------------
+
+ -- Function: int gnutls_x509_trust_list_init (gnutls_x509_trust_list_t
+ * LIST, unsigned int SIZE)
+ LIST: A pointer to the type to be initialized
+
+ SIZE: The size of the internal hash table. Use (0) for default
+ size.
+
+ This function will initialize an X.509 trust list structure.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0.0
+
+gnutls_x509_trust_list_iter_deinit
+----------------------------------
+
+ -- Function: void gnutls_x509_trust_list_iter_deinit
+ (gnutls_x509_trust_list_iter_t ITER)
+ ITER: The iterator structure to be deinitialized
+
+ This function will deinitialize an iterator structure.
+
+ *Since:* 3.4.0
+
+gnutls_x509_trust_list_iter_get_ca
+----------------------------------
+
+ -- Function: int gnutls_x509_trust_list_iter_get_ca
+ (gnutls_x509_trust_list_t LIST, gnutls_x509_trust_list_iter_t
+ * ITER, gnutls_x509_crt_t * CRT)
+ LIST: The list
+
+ ITER: A pointer to an iterator (initially the iterator should be
+ 'NULL' )
+
+ CRT: where the certificate will be copied
+
+ This function obtains a certificate in the trust list and advances
+ the iterator to the next certificate. The certificate returned in
+ 'crt' must be deallocated with 'gnutls_x509_crt_deinit()' .
+
+ When past the last element is accessed
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned and the
+ iterator is reset.
+
+ The iterator is deinitialized and reset to 'NULL' automatically by
+ this function after iterating through all elements until
+ 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned. If the
+ iteration is aborted early, it must be manually deinitialized using
+ 'gnutls_x509_trust_list_iter_deinit()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.4.0
+
+gnutls_x509_trust_list_remove_cas
+---------------------------------
+
+ -- Function: int gnutls_x509_trust_list_remove_cas
+ (gnutls_x509_trust_list_t LIST, const gnutls_x509_crt_t *
+ CLIST, unsigned CLIST_SIZE)
+ LIST: The list
+
+ CLIST: A list of CAs
+
+ CLIST_SIZE: The length of the CA list
+
+ This function will remove the given certificate authorities from
+ the trusted list.
+
+ Note that this function can accept certificates and authorities not
+ yet known. In that case they will be kept in a separate black list
+ that will be used during certificate verification. Unlike
+ 'gnutls_x509_trust_list_add_cas()' there is no deinitialization
+ restriction for certificate list provided in this function.
+
+ *Returns:* The number of removed elements is returned.
+
+ *Since:* 3.1.10
+
+gnutls_x509_trust_list_remove_trust_file
+----------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_remove_trust_file
+ (gnutls_x509_trust_list_t LIST, const char * CA_FILE,
+ gnutls_x509_crt_fmt_t TYPE)
+ LIST: The list
+
+ CA_FILE: A file containing a list of CAs
+
+ TYPE: The format of the certificates
+
+ This function will remove the given certificate authorities from
+ the trusted list, and add them into a black list when needed. PKCS
+ 11 URLs are also accepted, instead of files, by this function.
+
+ See also 'gnutls_x509_trust_list_remove_cas()' .
+
+ *Returns:* The number of added elements is returned.
+
+ *Since:* 3.1.10
+
+gnutls_x509_trust_list_remove_trust_mem
+---------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_remove_trust_mem
+ (gnutls_x509_trust_list_t LIST, const gnutls_datum_t * CAS,
+ gnutls_x509_crt_fmt_t TYPE)
+ LIST: The list
+
+ CAS: A buffer containing a list of CAs (optional)
+
+ TYPE: The format of the certificates
+
+ This function will remove the provided certificate authorities from
+ the trusted list, and add them into a black list when needed.
+
+ See also 'gnutls_x509_trust_list_remove_cas()' .
+
+ *Returns:* The number of removed elements is returned.
+
+ *Since:* 3.1.10
+
+gnutls_x509_trust_list_set_getissuer_function
+---------------------------------------------
+
+ -- Function: void gnutls_x509_trust_list_set_getissuer_function
+ (gnutls_x509_trust_list_t TLIST,
+ gnutls_x509_trust_list_getissuer_function * FUNC)
+ TLIST: is a 'gnutls_x509_trust_list_t' type.
+
+ FUNC: is the callback function
+
+ This function sets a callback to be called when the peer's
+ certificate chain is incomplete due a missing intermediate
+ certificate. The callback may provide the missing certificate for
+ use during verification.
+
+ The callback's function prototype is defined in gnutls/x509.h as:
+
+ int (*callback)(gnutls_x509_trust_list_t list, const
+ gnutls_x509_crt_t cert, gnutls_x509_crt_t **issuers, unsigned int
+ *issuers_size);
+
+ If the callback function is provided then gnutls will call it
+ during the certificate verification procedure. The callback may
+ wish to use 'gnutls_x509_crt_get_authority_info_access()' to get a
+ URI from which to attempt to download the missing issuer
+ certificate, if available.
+
+ On a successful call, the callback shall allocate the 'issuers'
+ array with 'gnutls_x509_crt_list_import2()' . The ownership of
+ both the array and the elements is transferred to the caller and
+ thus the application does not need to maintain the memory after the
+ call.
+
+ The callback function should return 0 if the missing issuer
+ certificate for 'crt' was properly populated and added to the
+ 'issuers', or non-zero to continue the certificate list
+ verification but with issuer as 'NULL' .
+
+ *Since:* 3.7.0
+
+gnutls_x509_trust_list_set_ptr
+------------------------------
+
+ -- Function: void gnutls_x509_trust_list_set_ptr
+ (gnutls_x509_trust_list_t TLIST, void * PTR)
+ TLIST: is a 'gnutls_x509_trust_list_t' type.
+
+ PTR: is the user pointer
+
+ This function will set (associate) the user given pointer 'ptr' to
+ the tlist structure. This pointer can be accessed with
+ 'gnutls_x509_trust_list_get_ptr()' . Useful in the callback
+ function gnutls_x509_trust_list_set_getissuer_function.
+
+ *Since:* 3.7.0
+
+gnutls_x509_trust_list_verify_crt
+---------------------------------
+
+ -- Function: int gnutls_x509_trust_list_verify_crt
+ (gnutls_x509_trust_list_t LIST, gnutls_x509_crt_t * CERT_LIST,
+ unsigned int CERT_LIST_SIZE, unsigned int FLAGS, unsigned int
+ * VOUTPUT, gnutls_verify_output_function FUNC)
+ LIST: The list
+
+ CERT_LIST: is the certificate list to be verified
+
+ CERT_LIST_SIZE: is the certificate list size
+
+ FLAGS: Flags that may be used to change the verification algorithm.
+ Use OR of the gnutls_certificate_verify_flags enumerations.
+
+ VOUTPUT: will hold the certificate verification output.
+
+ FUNC: If non-null will be called on each chain element verification
+ with the output.
+
+ This function will try to verify the given certificate and return
+ its status. The 'voutput' parameter will hold an OR'ed sequence of
+ 'gnutls_certificate_status_t' flags.
+
+ The details of the verification are the same as in
+ 'gnutls_x509_trust_list_verify_crt2()' .
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0
+
+gnutls_x509_trust_list_verify_crt2
+----------------------------------
+
+ -- Function: int gnutls_x509_trust_list_verify_crt2
+ (gnutls_x509_trust_list_t LIST, gnutls_x509_crt_t * CERT_LIST,
+ unsigned int CERT_LIST_SIZE, gnutls_typed_vdata_st * DATA,
+ unsigned int ELEMENTS, unsigned int FLAGS, unsigned int *
+ VOUTPUT, gnutls_verify_output_function FUNC)
+ LIST: The list
+
+ CERT_LIST: is the certificate list to be verified
+
+ CERT_LIST_SIZE: is the certificate list size
+
+ DATA: an array of typed data
+
+ ELEMENTS: the number of data elements
+
+ FLAGS: Flags that may be used to change the verification algorithm.
+ Use OR of the gnutls_certificate_verify_flags enumerations.
+
+ VOUTPUT: will hold the certificate verification output.
+
+ FUNC: If non-null will be called on each chain element verification
+ with the output.
+
+ This function will attempt to verify the given certificate chain
+ and return its status. The 'voutput' parameter will hold an OR'ed
+ sequence of 'gnutls_certificate_status_t' flags.
+
+ When a certificate chain of 'cert_list_size' with more than one
+ certificates is provided, the verification status will apply to the
+ first certificate in the chain that failed verification. The
+ verification process starts from the end of the chain (from CA to
+ end certificate). The first certificate in the chain must be the
+ end-certificate while the rest of the members may be sorted or not.
+
+ Additionally a certificate verification profile can be specified
+ from the ones in 'gnutls_certificate_verification_profiles_t' by
+ ORing the result of 'GNUTLS_PROFILE_TO_VFLAGS()' to the
+ verification flags.
+
+ Additional verification parameters are possible via the 'data'
+ types; the acceptable types are 'GNUTLS_DT_DNS_HOSTNAME' ,
+ 'GNUTLS_DT_IP_ADDRESS' and 'GNUTLS_DT_KEY_PURPOSE_OID' . The
+ former accepts as data a null-terminated hostname, and the latter a
+ null-terminated object identifier (e.g., 'GNUTLS_KP_TLS_WWW_SERVER'
+ ). If a DNS hostname is provided then this function will compare
+ the hostname in the end certificate against the given. If names do
+ not match the 'GNUTLS_CERT_UNEXPECTED_OWNER' status flag will be
+ set. In addition it will consider certificates provided with
+ 'gnutls_x509_trust_list_add_named_crt()' .
+
+ If a key purpose OID is provided and the end-certificate contains
+ the extended key usage PKIX extension, it will be required to match
+ the provided OID or be marked for any purpose, otherwise
+ verification will fail with 'GNUTLS_CERT_PURPOSE_MISMATCH' status.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value. Note that verification failure
+ will not result to an error code, only 'voutput' will be updated.
+
+ *Since:* 3.3.8
+
+gnutls_x509_trust_list_verify_named_crt
+---------------------------------------
+
+ -- Function: int gnutls_x509_trust_list_verify_named_crt
+ (gnutls_x509_trust_list_t LIST, gnutls_x509_crt_t CERT, const
+ void * NAME, size_t NAME_SIZE, unsigned int FLAGS, unsigned
+ int * VOUTPUT, gnutls_verify_output_function FUNC)
+ LIST: The list
+
+ CERT: is the certificate to be verified
+
+ NAME: is the certificate's name
+
+ NAME_SIZE: is the certificate's name size
+
+ FLAGS: Flags that may be used to change the verification algorithm.
+ Use OR of the gnutls_certificate_verify_flags enumerations.
+
+ VOUTPUT: will hold the certificate verification output.
+
+ FUNC: If non-null will be called on each chain element verification
+ with the output.
+
+ This function will try to find a certificate that is associated
+ with the provided name -see
+ 'gnutls_x509_trust_list_add_named_crt()' . If a match is found the
+ certificate is considered valid. In addition to that this function
+ will also check CRLs. The 'voutput' parameter will hold an OR'ed
+ sequence of 'gnutls_certificate_status_t' flags.
+
+ Additionally a certificate verification profile can be specified
+ from the ones in 'gnutls_certificate_verification_profiles_t' by
+ ORing the result of 'GNUTLS_PROFILE_TO_VFLAGS()' to the
+ verification flags.
+
+ *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned,
+ otherwise a negative error value.
+
+ *Since:* 3.0.0
+