diff options
Diffstat (limited to 'doc/gnutls.info-6')
-rw-r--r-- | doc/gnutls.info-6 | 10350 |
1 files changed, 10350 insertions, 0 deletions
diff --git a/doc/gnutls.info-6 b/doc/gnutls.info-6 new file mode 100644 index 0000000..bb1a36a --- /dev/null +++ b/doc/gnutls.info-6 @@ -0,0 +1,10350 @@ +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: OCSP API, Next: PKCS 12 API, Prev: PKCS 7 API, Up: API reference + +E.5 OCSP API +============ + +The following functions are for OCSP certificate status checking. Their +prototypes lie in 'gnutls/ocsp.h'. + +gnutls_ocsp_req_add_cert +------------------------ + + -- Function: int gnutls_ocsp_req_add_cert (gnutls_ocsp_req_t REQ, + gnutls_digest_algorithm_t DIGEST, gnutls_x509_crt_t ISSUER, + gnutls_x509_crt_t CERT) + REQ: should contain a 'gnutls_ocsp_req_t' type + + DIGEST: hash algorithm, a 'gnutls_digest_algorithm_t' value + + ISSUER: issuer of 'subject' certificate + + CERT: certificate to request status for + + This function will add another request to the OCSP request for a + particular certificate. The issuer name hash, issuer key hash, and + serial number fields is populated as follows. The issuer name and + the serial number is taken from 'cert' . The issuer key is taken + from 'issuer' . The hashed values will be hashed using the + 'digest' algorithm, normally 'GNUTLS_DIG_SHA1' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_req_add_cert_id +--------------------------- + + -- Function: int gnutls_ocsp_req_add_cert_id (gnutls_ocsp_req_t REQ, + gnutls_digest_algorithm_t DIGEST, const gnutls_datum_t * + ISSUER_NAME_HASH, const gnutls_datum_t * ISSUER_KEY_HASH, + const gnutls_datum_t * SERIAL_NUMBER) + REQ: should contain a 'gnutls_ocsp_req_t' type + + DIGEST: hash algorithm, a 'gnutls_digest_algorithm_t' value + + ISSUER_NAME_HASH: hash of issuer's DN + + ISSUER_KEY_HASH: hash of issuer's public key + + SERIAL_NUMBER: serial number of certificate to check + + This function will add another request to the OCSP request for a + particular certificate having the issuer name hash of + 'issuer_name_hash' and issuer key hash of 'issuer_key_hash' (both + hashed using 'digest' ) and serial number 'serial_number' . + + The information needed corresponds to the CertID structure: + + <informalexample><programlisting> CertID ::= SEQUENCE { + hashAlgorithm AlgorithmIdentifier, issuerNameHash OCTET STRING, - + Hash of Issuer's DN issuerKeyHash OCTET STRING, - Hash of Issuers + public key serialNumber CertificateSerialNumber } + </programlisting></informalexample> + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_req_deinit +---------------------- + + -- Function: void gnutls_ocsp_req_deinit (gnutls_ocsp_req_t REQ) + REQ: The data to be deinitialized + + This function will deinitialize a OCSP request structure. + +gnutls_ocsp_req_export +---------------------- + + -- Function: int gnutls_ocsp_req_export (gnutls_ocsp_req_const_t REQ, + gnutls_datum_t * DATA) + REQ: Holds the OCSP request + + DATA: newly allocate buffer holding DER encoded OCSP request + + This function will export the OCSP request to DER format. + + *Returns:* In case of failure a negative error code will be + returned, and 0 on success. + +gnutls_ocsp_req_get_cert_id +--------------------------- + + -- Function: int gnutls_ocsp_req_get_cert_id (gnutls_ocsp_req_const_t + REQ, unsigned INDX, gnutls_digest_algorithm_t * DIGEST, + gnutls_datum_t * ISSUER_NAME_HASH, gnutls_datum_t * + ISSUER_KEY_HASH, gnutls_datum_t * SERIAL_NUMBER) + REQ: should contain a 'gnutls_ocsp_req_t' type + + INDX: Specifies which extension OID to get. Use (0) to get the + first one. + + DIGEST: output variable with 'gnutls_digest_algorithm_t' hash + algorithm + + ISSUER_NAME_HASH: output buffer with hash of issuer's DN + + ISSUER_KEY_HASH: output buffer with hash of issuer's public key + + SERIAL_NUMBER: output buffer with serial number of certificate to + check + + This function will return the certificate information of the 'indx' + 'ed request in the OCSP request. The information returned + corresponds to the CertID structure: + + <informalexample><programlisting> CertID ::= SEQUENCE { + hashAlgorithm AlgorithmIdentifier, issuerNameHash OCTET STRING, - + Hash of Issuer's DN issuerKeyHash OCTET STRING, - Hash of Issuers + public key serialNumber CertificateSerialNumber } + </programlisting></informalexample> + + Each of the pointers to output variables may be NULL to indicate + that the caller is not interested in that value. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. If you have reached + the last CertID available 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' + will be returned. + +gnutls_ocsp_req_get_extension +----------------------------- + + -- Function: int gnutls_ocsp_req_get_extension (gnutls_ocsp_req_const_t + REQ, unsigned INDX, gnutls_datum_t * OID, unsigned int * + CRITICAL, gnutls_datum_t * DATA) + REQ: should contain a 'gnutls_ocsp_req_t' type + + INDX: Specifies which extension OID to get. Use (0) to get the + first one. + + OID: will hold newly allocated buffer with OID of extension, may be + NULL + + CRITICAL: output variable with critical flag, may be NULL. + + DATA: will hold newly allocated buffer with extension data, may be + NULL + + This function will return all information about the requested + extension in the OCSP request. The information returned is the + OID, the critical flag, and the data itself. The extension OID + will be stored as a string. Any of 'oid' , 'critical' , and 'data' + may be NULL which means that the caller is not interested in + getting that information back. + + The caller needs to deallocate memory by calling 'gnutls_free()' on + 'oid' ->data and 'data' ->data. + + Since 3.7.0 'oid' ->size does not account for the terminating null + byte. + + *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_ocsp_req_get_nonce +------------------------- + + -- Function: int gnutls_ocsp_req_get_nonce (gnutls_ocsp_req_const_t + REQ, unsigned int * CRITICAL, gnutls_datum_t * NONCE) + REQ: should contain a 'gnutls_ocsp_req_t' type + + CRITICAL: whether nonce extension is marked critical, or NULL + + NONCE: will hold newly allocated buffer with nonce data + + This function will return the OCSP request nonce extension data. + + The caller needs to deallocate memory by calling 'gnutls_free()' on + 'nonce' ->data. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_req_get_version +--------------------------- + + -- Function: int gnutls_ocsp_req_get_version (gnutls_ocsp_req_const_t + REQ) + REQ: should contain a 'gnutls_ocsp_req_t' type + + This function will return the version of the OCSP request. + Typically this is always 1 indicating version 1. + + *Returns:* version of OCSP request, or a negative error code on + error. + +gnutls_ocsp_req_import +---------------------- + + -- Function: int gnutls_ocsp_req_import (gnutls_ocsp_req_t REQ, const + gnutls_datum_t * DATA) + REQ: The data to store the parsed request. + + DATA: DER encoded OCSP request. + + This function will convert the given DER encoded OCSP request to + the native 'gnutls_ocsp_req_t' format. The output will be stored + in 'req' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_req_init +-------------------- + + -- Function: int gnutls_ocsp_req_init (gnutls_ocsp_req_t * REQ) + REQ: A pointer to the type to be initialized + + This function will initialize an OCSP request structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_req_print +--------------------- + + -- Function: int gnutls_ocsp_req_print (gnutls_ocsp_req_const_t REQ, + gnutls_ocsp_print_formats_t FORMAT, gnutls_datum_t * OUT) + REQ: The data to be printed + + FORMAT: Indicate the format to use + + OUT: Newly allocated datum with (0) terminated string. + + This function will pretty print a OCSP request, suitable for + display to a human. + + If the format is 'GNUTLS_OCSP_PRINT_FULL' then all fields of the + request will be output, on multiple lines. + + The output 'out' ->data needs to be deallocate using + 'gnutls_free()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_req_randomize_nonce +------------------------------- + + -- Function: int gnutls_ocsp_req_randomize_nonce (gnutls_ocsp_req_t + REQ) + REQ: should contain a 'gnutls_ocsp_req_t' type + + This function will add or update an nonce extension to the OCSP + request with a newly generated random value. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_req_set_extension +----------------------------- + + -- Function: int gnutls_ocsp_req_set_extension (gnutls_ocsp_req_t REQ, + const char * OID, unsigned int CRITICAL, const gnutls_datum_t + * DATA) + REQ: should contain a 'gnutls_ocsp_req_t' type + + OID: buffer with OID of extension as a string. + + CRITICAL: critical flag, normally false. + + DATA: the extension data + + This function will add an extension to the OCSP request. Calling + this function multiple times for the same OID will overwrite values + from earlier calls. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_req_set_nonce +------------------------- + + -- Function: int gnutls_ocsp_req_set_nonce (gnutls_ocsp_req_t REQ, + unsigned int CRITICAL, const gnutls_datum_t * NONCE) + REQ: should contain a 'gnutls_ocsp_req_t' type + + CRITICAL: critical flag, normally false. + + NONCE: the nonce data + + This function will add an nonce extension to the OCSP request. + Calling this function multiple times will overwrite values from + earlier calls. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_resp_check_crt +-------------------------- + + -- Function: int gnutls_ocsp_resp_check_crt (gnutls_ocsp_resp_const_t + RESP, unsigned int INDX, gnutls_x509_crt_t CRT) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + INDX: Specifies response number to get. Use (0) to get the first + one. + + CRT: The certificate to check + + This function will check whether the OCSP response is about the + provided certificate. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + + *Since:* 3.1.3 + +gnutls_ocsp_resp_deinit +----------------------- + + -- Function: void gnutls_ocsp_resp_deinit (gnutls_ocsp_resp_t RESP) + RESP: The data to be deinitialized + + This function will deinitialize a OCSP response structure. + +gnutls_ocsp_resp_export +----------------------- + + -- Function: int gnutls_ocsp_resp_export (gnutls_ocsp_resp_const_t + RESP, gnutls_datum_t * DATA) + RESP: Holds the OCSP response + + DATA: newly allocate buffer holding DER encoded OCSP response + + This function will export the OCSP response to DER format. + + *Returns:* In case of failure a negative error code will be + returned, and 0 on success. + +gnutls_ocsp_resp_export2 +------------------------ + + -- Function: int gnutls_ocsp_resp_export2 (gnutls_ocsp_resp_const_t + RESP, gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FMT) + RESP: Holds the OCSP response + + DATA: newly allocate buffer holding DER or PEM encoded OCSP + response + + FMT: DER or PEM + + This function will export the OCSP response to DER or PEM format. + + *Returns:* In case of failure a negative error code will be + returned, and 0 on success. + + *Since:* 3.6.3 + +gnutls_ocsp_resp_get_certs +-------------------------- + + -- Function: int gnutls_ocsp_resp_get_certs (gnutls_ocsp_resp_const_t + RESP, gnutls_x509_crt_t ** CERTS, size_t * NCERTS) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + CERTS: newly allocated array with 'gnutls_x509_crt_t' certificates + + NCERTS: output variable with number of allocated certs. + + This function will extract the X.509 certificates found in the + Basic OCSP Response. The 'certs' output variable will hold a newly + allocated zero-terminated array with X.509 certificates. + + Every certificate in the array needs to be de-allocated with + 'gnutls_x509_crt_deinit()' and the array itself must be freed using + 'gnutls_free()' . + + Both the 'certs' and 'ncerts' variables may be NULL. Then the + function will work as normal but will not return the NULL:d + information. This can be used to get the number of certificates + only, or to just get the certificate array without its size. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_resp_get_extension +------------------------------ + + -- Function: int gnutls_ocsp_resp_get_extension + (gnutls_ocsp_resp_const_t RESP, unsigned INDX, gnutls_datum_t + * OID, unsigned int * CRITICAL, gnutls_datum_t * DATA) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + INDX: Specifies which extension OID to get. Use (0) to get the + first one. + + OID: will hold newly allocated buffer with OID of extension, may be + NULL + + CRITICAL: output variable with critical flag, may be NULL. + + DATA: will hold newly allocated buffer with extension data, may be + NULL + + This function will return all information about the requested + extension in the OCSP response. The information returned is the + OID, the critical flag, and the data itself. The extension OID + will be stored as a string. Any of 'oid' , 'critical' , and 'data' + may be NULL which means that the caller is not interested in + getting that information back. + + The caller needs to deallocate memory by calling 'gnutls_free()' on + 'oid' ->data and 'data' ->data. + + Since 3.7.0 'oid' ->size does not account for the terminating null + byte. + + *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_ocsp_resp_get_nonce +-------------------------- + + -- Function: int gnutls_ocsp_resp_get_nonce (gnutls_ocsp_resp_const_t + RESP, unsigned int * CRITICAL, gnutls_datum_t * NONCE) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + CRITICAL: whether nonce extension is marked critical + + NONCE: will hold newly allocated buffer with nonce data + + This function will return the Basic OCSP Response nonce extension + data. + + The caller needs to deallocate memory by calling 'gnutls_free()' on + 'nonce' ->data. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_resp_get_produced +----------------------------- + + -- Function: time_t gnutls_ocsp_resp_get_produced + (gnutls_ocsp_resp_const_t RESP) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + This function will return the time when the OCSP response was + signed. + + *Returns:* signing time, or (time_t)-1 on error. + +gnutls_ocsp_resp_get_responder +------------------------------ + + -- Function: int gnutls_ocsp_resp_get_responder + (gnutls_ocsp_resp_const_t RESP, gnutls_datum_t * DN) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + DN: newly allocated buffer with name + + This function will extract the name of the Basic OCSP Response in + the provided buffer. The name will be in the form + "C=xxxx,O=yyyy,CN=zzzz" as described in RFC2253. The output string + will be ASCII or UTF-8 encoded, depending on the certificate data. + + If the responder ID is not a name but a hash, this function will + return zero and the 'dn' elements will be set to 'NULL' . + + The caller needs to deallocate memory by calling 'gnutls_free()' on + 'dn' ->data. + + This function does not output a fully RFC4514 compliant string, if + that is required see 'gnutls_ocsp_resp_get_responder2()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. When no data exist it + will return success and set 'dn' elements to zero. + +gnutls_ocsp_resp_get_responder2 +------------------------------- + + -- Function: int gnutls_ocsp_resp_get_responder2 + (gnutls_ocsp_resp_const_t RESP, gnutls_datum_t * DN, unsigned + FLAGS) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + DN: newly allocated buffer with name + + FLAGS: zero or 'GNUTLS_X509_DN_FLAG_COMPAT' + + This function will extract the name of the Basic OCSP Response in + the provided buffer. The name will be in the form + "C=xxxx,O=yyyy,CN=zzzz" as described in RFC2253. The output string + will be ASCII or UTF-8 encoded, depending on the certificate data. + + If the responder ID is not a name but a hash, this function will + return zero and the 'dn' elements will be set to 'NULL' . + + The caller needs to deallocate memory by calling 'gnutls_free()' on + 'dn' ->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 code is returned. When no data exist it + will return 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' . + +gnutls_ocsp_resp_get_responder_raw_id +------------------------------------- + + -- Function: int gnutls_ocsp_resp_get_responder_raw_id + (gnutls_ocsp_resp_const_t RESP, unsigned TYPE, gnutls_datum_t + * RAW) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + TYPE: should be 'GNUTLS_OCSP_RESP_ID_KEY' or + 'GNUTLS_OCSP_RESP_ID_DN' + + RAW: newly allocated buffer with the raw ID + + This function will extract the raw key (or DN) ID of the Basic OCSP + Response in the provided buffer. If the responder ID is not a key + ID then this function will return + 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' . + + The caller needs to deallocate memory by calling 'gnutls_free()' on + 'dn' ->data. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_ocsp_resp_get_response +----------------------------- + + -- Function: int gnutls_ocsp_resp_get_response + (gnutls_ocsp_resp_const_t RESP, gnutls_datum_t * + RESPONSE_TYPE_OID, gnutls_datum_t * RESPONSE) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + RESPONSE_TYPE_OID: newly allocated output buffer with response type + OID + + RESPONSE: newly allocated output buffer with DER encoded response + + This function will extract the response type OID in and the + response data from an OCSP response. Normally the + 'response_type_oid' is always "1.3.6.1.5.5.7.48.1.1" which means + the 'response' should be decoded as a Basic OCSP Response, but + technically other response types could be used. + + This function is typically only useful when you want to extract the + response type OID of an response for diagnostic purposes. + Otherwise 'gnutls_ocsp_resp_import()' will decode the basic OCSP + response part and the caller need not worry about that aspect. + + Since 3.7.0 'response_type_oid' ->size does not account for the + terminating null byte. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_resp_get_signature +------------------------------ + + -- Function: int gnutls_ocsp_resp_get_signature + (gnutls_ocsp_resp_const_t RESP, gnutls_datum_t * SIG) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + SIG: newly allocated output buffer with signature data + + This function will extract the signature field of a OCSP response. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_resp_get_signature_algorithm +---------------------------------------- + + -- Function: int gnutls_ocsp_resp_get_signature_algorithm + (gnutls_ocsp_resp_const_t RESP) + RESP: should contain a 'gnutls_ocsp_resp_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 the OCSP response. + + *Returns:* a 'gnutls_sign_algorithm_t' value, or a negative error + code on error. + +gnutls_ocsp_resp_get_single +--------------------------- + + -- Function: int gnutls_ocsp_resp_get_single (gnutls_ocsp_resp_const_t + RESP, unsigned INDX, gnutls_digest_algorithm_t * DIGEST, + gnutls_datum_t * ISSUER_NAME_HASH, gnutls_datum_t * + ISSUER_KEY_HASH, gnutls_datum_t * SERIAL_NUMBER, unsigned int + * CERT_STATUS, time_t * THIS_UPDATE, time_t * NEXT_UPDATE, + time_t * REVOCATION_TIME, unsigned int * REVOCATION_REASON) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + INDX: Specifies response number to get. Use (0) to get the first + one. + + DIGEST: output variable with 'gnutls_digest_algorithm_t' hash + algorithm + + ISSUER_NAME_HASH: output buffer with hash of issuer's DN + + ISSUER_KEY_HASH: output buffer with hash of issuer's public key + + SERIAL_NUMBER: output buffer with serial number of certificate to + check + + CERT_STATUS: a certificate status, a 'gnutls_ocsp_cert_status_t' + enum. + + THIS_UPDATE: time at which the status is known to be correct. + + NEXT_UPDATE: when newer information will be available, or + (time_t)-1 if unspecified + + REVOCATION_TIME: when 'cert_status' is 'GNUTLS_OCSP_CERT_REVOKED' , + holds time of revocation. + + REVOCATION_REASON: revocation reason, a 'gnutls_x509_crl_reason_t' + enum. + + This function will return the certificate information of the 'indx' + 'ed response in the Basic OCSP Response 'resp' . The information + returned corresponds to the OCSP SingleResponse structure except + the final singleExtensions. + + Each of the pointers to output variables may be NULL to indicate + that the caller is not interested in that value. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. If you have reached + the last CertID available 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' + will be returned. + +gnutls_ocsp_resp_get_status +--------------------------- + + -- Function: int gnutls_ocsp_resp_get_status (gnutls_ocsp_resp_const_t + RESP) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + This function will return the status of a OCSP response, an + 'gnutls_ocsp_resp_status_t' enumeration. + + *Returns:* status of OCSP request as a 'gnutls_ocsp_resp_status_t' + , or a negative error code on error. + +gnutls_ocsp_resp_get_version +---------------------------- + + -- Function: int gnutls_ocsp_resp_get_version (gnutls_ocsp_resp_const_t + RESP) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + This function will return the version of the Basic OCSP Response. + Typically this is always 1 indicating version 1. + + *Returns:* version of Basic OCSP response, or a negative error code + on error. + +gnutls_ocsp_resp_import +----------------------- + + -- Function: int gnutls_ocsp_resp_import (gnutls_ocsp_resp_t RESP, + const gnutls_datum_t * DATA) + RESP: The data to store the parsed response. + + DATA: DER encoded OCSP response. + + This function will convert the given DER encoded OCSP response to + the native 'gnutls_ocsp_resp_t' format. It also decodes the Basic + OCSP Response part, if any. The output will be stored in 'resp' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_resp_import2 +------------------------ + + -- Function: int gnutls_ocsp_resp_import2 (gnutls_ocsp_resp_t RESP, + const gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FMT) + RESP: The data to store the parsed response. + + DATA: DER or PEM encoded OCSP response. + + FMT: DER or PEM + + This function will convert the given OCSP response to the native + 'gnutls_ocsp_resp_t' format. It also decodes the Basic OCSP + Response part, if any. The output will be stored in 'resp' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.3 + +gnutls_ocsp_resp_init +--------------------- + + -- Function: int gnutls_ocsp_resp_init (gnutls_ocsp_resp_t * RESP) + RESP: A pointer to the type to be initialized + + This function will initialize an OCSP response structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_resp_list_import2 +----------------------------- + + -- Function: int gnutls_ocsp_resp_list_import2 (gnutls_ocsp_resp_t ** + OCSPS, unsigned int * SIZE, const gnutls_datum_t * RESP_DATA, + gnutls_x509_crt_fmt_t FORMAT, unsigned int FLAGS) + OCSPS: Will hold the parsed OCSP response list. + + SIZE: It will contain the size of the list. + + RESP_DATA: The PEM encoded OCSP list. + + FORMAT: One of 'GNUTLS_X509_FMT_PEM' or 'GNUTLS_X509_FMT_DER' + + FLAGS: must be (0) or an OR'd sequence of + gnutls_certificate_import_flags. + + This function will convert the given PEM encoded OCSP response list + to the native gnutls_ocsp_resp_t format. The output will be stored + in 'ocsps' which will be allocated and initialized. + + The OCSP responses should have a header of "OCSP RESPONSE". + + To deinitialize responses, you need to deinitialize each + 'gnutls_ocsp_resp_t' structure independently, and use + 'gnutls_free()' at 'ocsps' . + + In PEM files, when no OCSP responses are detected + 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned. + + *Returns:* the number of responses read or a negative error value. + + *Since:* 3.6.3 + +gnutls_ocsp_resp_print +---------------------- + + -- Function: int gnutls_ocsp_resp_print (gnutls_ocsp_resp_const_t RESP, + gnutls_ocsp_print_formats_t FORMAT, gnutls_datum_t * OUT) + RESP: The data to be printed + + FORMAT: Indicate the format to use + + OUT: Newly allocated datum with (0) terminated string. + + This function will pretty print a OCSP response, suitable for + display to a human. + + If the format is 'GNUTLS_OCSP_PRINT_FULL' then all fields of the + response will be output, on multiple lines. + + The output 'out' ->data needs to be deallocate using + 'gnutls_free()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_resp_verify +----------------------- + + -- Function: int gnutls_ocsp_resp_verify (gnutls_ocsp_resp_const_t + RESP, gnutls_x509_trust_list_t TRUSTLIST, unsigned int * + VERIFY, unsigned int FLAGS) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + TRUSTLIST: trust anchors as a 'gnutls_x509_trust_list_t' type + + VERIFY: output variable with verification status, an + 'gnutls_ocsp_verify_reason_t' + + FLAGS: verification flags from 'gnutls_certificate_verify_flags' + + Verify signature of the Basic OCSP Response against the public key + in the certificate of a trusted signer. The 'trustlist' should be + populated with trust anchors. The function will extract the signer + certificate from the Basic OCSP Response and will verify it against + the 'trustlist' . A trusted signer is a certificate that is either + in 'trustlist' , or it is signed directly by a certificate in + 'trustlist' and has the id-ad-ocspSigning Extended Key Usage bit + set. + + The output 'verify' variable will hold verification status codes + (e.g., 'GNUTLS_OCSP_VERIFY_SIGNER_NOT_FOUND' , + 'GNUTLS_OCSP_VERIFY_INSECURE_ALGORITHM' ) which are only valid if + the function returned 'GNUTLS_E_SUCCESS' . + + Note that the function returns 'GNUTLS_E_SUCCESS' even when + verification failed. The caller must always inspect the 'verify' + variable to find out the verification status. + + The 'flags' variable should be 0 for now. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_ocsp_resp_verify_direct +------------------------------ + + -- Function: int gnutls_ocsp_resp_verify_direct + (gnutls_ocsp_resp_const_t RESP, gnutls_x509_crt_t ISSUER, + unsigned int * VERIFY, unsigned int FLAGS) + RESP: should contain a 'gnutls_ocsp_resp_t' type + + ISSUER: certificate believed to have signed the response + + VERIFY: output variable with verification status, an + 'gnutls_ocsp_verify_reason_t' + + FLAGS: verification flags from 'gnutls_certificate_verify_flags' + + Verify signature of the Basic OCSP Response against the public key + in the 'issuer' certificate. + + The output 'verify' variable will hold verification status codes + (e.g., 'GNUTLS_OCSP_VERIFY_SIGNER_NOT_FOUND' , + 'GNUTLS_OCSP_VERIFY_INSECURE_ALGORITHM' ) which are only valid if + the function returned 'GNUTLS_E_SUCCESS' . + + Note that the function returns 'GNUTLS_E_SUCCESS' even when + verification failed. The caller must always inspect the 'verify' + variable to find out the verification status. + + The 'flags' variable should be 0 for now. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + +File: gnutls.info, Node: PKCS 12 API, Next: PKCS 11 API, Prev: OCSP API, Up: API reference + +E.6 PKCS 12 API +=============== + +The following functions are to be used for PKCS 12 handling. Their +prototypes lie in 'gnutls/pkcs12.h'. + +gnutls_pkcs12_bag_decrypt +------------------------- + + -- Function: int gnutls_pkcs12_bag_decrypt (gnutls_pkcs12_bag_t BAG, + const char * PASS) + BAG: The bag + + PASS: The password used for encryption, must be ASCII. + + This function will decrypt the given encrypted bag and return 0 on + success. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_pkcs12_bag_deinit +------------------------ + + -- Function: void gnutls_pkcs12_bag_deinit (gnutls_pkcs12_bag_t BAG) + BAG: A pointer to the type to be initialized + + This function will deinitialize a PKCS12 Bag structure. + +gnutls_pkcs12_bag_enc_info +-------------------------- + + -- Function: int gnutls_pkcs12_bag_enc_info (gnutls_pkcs12_bag_t BAG, + unsigned int * SCHEMA, unsigned int * CIPHER, void * SALT, + unsigned int * SALT_SIZE, unsigned int * ITER_COUNT, char ** + OID) + BAG: The bag + + 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 encryption algorithms + used in an encrypted bag. 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 bags + 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 bag isn't + encrypted, '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. + +gnutls_pkcs12_bag_encrypt +------------------------- + + -- Function: int gnutls_pkcs12_bag_encrypt (gnutls_pkcs12_bag_t BAG, + const char * PASS, unsigned int FLAGS) + BAG: The bag + + PASS: The password used for encryption, must be ASCII + + FLAGS: should be one of 'gnutls_pkcs_encrypt_flags_t' elements + bitwise or'd + + This function will encrypt the given bag. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error code is returned. + +gnutls_pkcs12_bag_get_count +--------------------------- + + -- Function: int gnutls_pkcs12_bag_get_count (gnutls_pkcs12_bag_t BAG) + BAG: The bag + + This function will return the number of the elements within the + bag. + + *Returns:* Number of elements in bag, or an negative error code on + error. + +gnutls_pkcs12_bag_get_data +-------------------------- + + -- Function: int gnutls_pkcs12_bag_get_data (gnutls_pkcs12_bag_t BAG, + unsigned INDX, gnutls_datum_t * DATA) + BAG: The bag + + INDX: The element of the bag to get the data from + + DATA: where the bag's data will be. Should be treated as constant. + + This function will return the bag's data. The data is a constant + that is stored into the bag. Should not be accessed after the bag + is deleted. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_bag_get_friendly_name +----------------------------------- + + -- Function: int gnutls_pkcs12_bag_get_friendly_name + (gnutls_pkcs12_bag_t BAG, unsigned INDX, char ** NAME) + BAG: The bag + + INDX: The bag's element to add the id + + NAME: will hold a pointer to the name (to be treated as const) + + This function will return the friendly name, of the specified bag + element. The key ID is usually used to distinguish the local + private key and the certificate pair. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. or a negative error code on + error. + +gnutls_pkcs12_bag_get_key_id +---------------------------- + + -- Function: int gnutls_pkcs12_bag_get_key_id (gnutls_pkcs12_bag_t BAG, + unsigned INDX, gnutls_datum_t * ID) + BAG: The bag + + INDX: The bag's element to add the id + + ID: where the ID will be copied (to be treated as const) + + This function will return the key ID, of the specified bag element. + The key ID is usually used to distinguish the local private key and + the certificate pair. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. or a negative error code on + error. + +gnutls_pkcs12_bag_get_type +-------------------------- + + -- Function: int gnutls_pkcs12_bag_get_type (gnutls_pkcs12_bag_t BAG, + unsigned INDX) + BAG: The bag + + INDX: The element of the bag to get the type + + This function will return the bag's type. + + *Returns:* On error a negative error value or one of the + 'gnutls_pkcs12_bag_type_t' enumerations. + +gnutls_pkcs12_bag_init +---------------------- + + -- Function: int gnutls_pkcs12_bag_init (gnutls_pkcs12_bag_t * BAG) + BAG: A pointer to the type to be initialized + + This function will initialize a PKCS12 bag structure. PKCS12 Bags + usually contain private keys, lists of X.509 Certificates and X.509 + Certificate revocation lists. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_bag_set_crl +------------------------- + + -- Function: int gnutls_pkcs12_bag_set_crl (gnutls_pkcs12_bag_t BAG, + gnutls_x509_crl_t CRL) + BAG: The bag + + CRL: the CRL to be copied. + + This function will insert the given CRL into the bag. This is just + a wrapper over 'gnutls_pkcs12_bag_set_data()' . + + *Returns:* the index of the added bag on success, or a negative + error code on failure. + +gnutls_pkcs12_bag_set_crt +------------------------- + + -- Function: int gnutls_pkcs12_bag_set_crt (gnutls_pkcs12_bag_t BAG, + gnutls_x509_crt_t CRT) + BAG: The bag + + CRT: the certificate to be copied. + + This function will insert the given certificate into the bag. This + is just a wrapper over 'gnutls_pkcs12_bag_set_data()' . + + *Returns:* the index of the added bag on success, or a negative + value on failure. + +gnutls_pkcs12_bag_set_data +-------------------------- + + -- Function: int gnutls_pkcs12_bag_set_data (gnutls_pkcs12_bag_t BAG, + gnutls_pkcs12_bag_type_t TYPE, const gnutls_datum_t * DATA) + BAG: The bag + + TYPE: The data's type + + DATA: the data to be copied. + + This function will insert the given data of the given type into the + bag. + + *Returns:* the index of the added bag on success, or a negative + value on error. + +gnutls_pkcs12_bag_set_friendly_name +----------------------------------- + + -- Function: int gnutls_pkcs12_bag_set_friendly_name + (gnutls_pkcs12_bag_t BAG, unsigned INDX, const char * NAME) + BAG: The bag + + INDX: The bag's element to add the id + + NAME: the name + + This function will add the given key friendly name, to the + specified, by the index, bag element. The name will be encoded as + a 'Friendly name' bag attribute, which is usually used to set a + user name to the local private key and the certificate pair. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. or a negative error code on + error. + +gnutls_pkcs12_bag_set_key_id +---------------------------- + + -- Function: int gnutls_pkcs12_bag_set_key_id (gnutls_pkcs12_bag_t BAG, + unsigned INDX, const gnutls_datum_t * ID) + BAG: The bag + + INDX: The bag's element to add the id + + ID: the ID + + This function will add the given key ID, to the specified, by the + index, bag element. The key ID will be encoded as a 'Local key + identifier' bag attribute, which is usually used to distinguish the + local private key and the certificate pair. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. or a negative error code on + error. + +gnutls_pkcs12_bag_set_privkey +----------------------------- + + -- Function: int gnutls_pkcs12_bag_set_privkey (gnutls_pkcs12_bag_t + BAG, gnutls_x509_privkey_t PRIVKEY, const char * PASSWORD, + unsigned FLAGS) + BAG: The bag + + PRIVKEY: the private key to be copied. + + PASSWORD: the password to protect the key with (may be 'NULL' ) + + FLAGS: should be one of 'gnutls_pkcs_encrypt_flags_t' elements + bitwise or'd + + This function will insert the given private key into the bag. This + is just a wrapper over 'gnutls_pkcs12_bag_set_data()' . + + *Returns:* the index of the added bag on success, or a negative + value on failure. + +gnutls_pkcs12_deinit +-------------------- + + -- Function: void gnutls_pkcs12_deinit (gnutls_pkcs12_t PKCS12) + PKCS12: The type to be initialized + + This function will deinitialize a PKCS12 type. + +gnutls_pkcs12_export +-------------------- + + -- Function: int gnutls_pkcs12_export (gnutls_pkcs12_t PKCS12, + gnutls_x509_crt_fmt_t FORMAT, void * OUTPUT_DATA, size_t * + OUTPUT_DATA_SIZE) + PKCS12: A pkcs12 type + + FORMAT: the format of output params. One of PEM or DER. + + OUTPUT_DATA: will contain a structure 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 pkcs12 structure to DER or PEM + format. + + If the buffer provided is not long enough to hold the output, then + *output_data_size will be updated and GNUTLS_E_SHORT_MEMORY_BUFFER + will be returned. + + If the structure is PEM encoded, it will have a header of "BEGIN + PKCS12". + + *Returns:* In case of failure a negative error code will be + returned, and 0 on success. + +gnutls_pkcs12_export2 +--------------------- + + -- Function: int gnutls_pkcs12_export2 (gnutls_pkcs12_t PKCS12, + gnutls_x509_crt_fmt_t FORMAT, gnutls_datum_t * OUT) + PKCS12: A pkcs12 type + + FORMAT: the format of output params. One of PEM or DER. + + OUT: will contain a structure PEM or DER encoded + + This function will export the pkcs12 structure 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 + PKCS12". + + *Returns:* In case of failure a negative error code will be + returned, and 0 on success. + + *Since:* 3.1.3 + +gnutls_pkcs12_generate_mac +-------------------------- + + -- Function: int gnutls_pkcs12_generate_mac (gnutls_pkcs12_t PKCS12, + const char * PASS) + PKCS12: A pkcs12 type + + PASS: The password for the MAC + + This function will generate a MAC for the PKCS12 structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_generate_mac2 +--------------------------- + + -- Function: int gnutls_pkcs12_generate_mac2 (gnutls_pkcs12_t PKCS12, + gnutls_mac_algorithm_t MAC, const char * PASS) + PKCS12: A pkcs12 type + + MAC: the MAC algorithm to use + + PASS: The password for the MAC + + This function will generate a MAC for the PKCS12 structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_get_bag +--------------------- + + -- Function: int gnutls_pkcs12_get_bag (gnutls_pkcs12_t PKCS12, int + INDX, gnutls_pkcs12_bag_t BAG) + PKCS12: A pkcs12 type + + INDX: contains the index of the bag to extract + + BAG: An initialized bag, where the contents of the bag will be + copied + + This function will return a Bag from the PKCS12 structure. + + After the last Bag has been read + 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_import +-------------------- + + -- Function: int gnutls_pkcs12_import (gnutls_pkcs12_t PKCS12, const + gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT, unsigned + int FLAGS) + PKCS12: The data to store the parsed PKCS12. + + DATA: The DER or PEM encoded PKCS12. + + FORMAT: One of DER or PEM + + FLAGS: an ORed sequence of gnutls_privkey_pkcs8_flags + + This function will convert the given DER or PEM encoded PKCS12 to + the native gnutls_pkcs12_t format. The output will be stored in + 'pkcs12'. + + If the PKCS12 is PEM encoded it should have a header of "PKCS12". + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_init +------------------ + + -- Function: int gnutls_pkcs12_init (gnutls_pkcs12_t * PKCS12) + PKCS12: A pointer to the type to be initialized + + This function will initialize a PKCS12 type. PKCS12 structures + usually contain lists of X.509 Certificates and X.509 Certificate + revocation lists. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_mac_info +---------------------- + + -- Function: int gnutls_pkcs12_mac_info (gnutls_pkcs12_t PKCS12, + unsigned int * MAC, void * SALT, unsigned int * SALT_SIZE, + unsigned int * ITER_COUNT, char ** OID) + PKCS12: A pkcs12 type + + MAC: the MAC algorithm used as 'gnutls_mac_algorithm_t' + + SALT: the salt used for string to key (if non-NULL then 'salt_size' + initially holds its size) + + SALT_SIZE: string to key salt size + + ITER_COUNT: string to key iteration count + + OID: if non-NULL it will contain an allocated null-terminated + variable with the OID + + This function will provide information on the MAC algorithm used in + a PKCS '12' structure. If the structure algorithms are unknown the + code 'GNUTLS_E_UNKNOWN_HASH_ALGORITHM' will be returned, and only + 'oid' , will be set. That is, 'oid' will be set on structures with + a MAC 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 + doesn't contain a MAC, 'GNUTLS_E_UNKNOWN_HASH_ALGORITHM' if the + structure's MAC isn't supported, or another negative error code in + case of a failure. Zero on success. + +gnutls_pkcs12_set_bag +--------------------- + + -- Function: int gnutls_pkcs12_set_bag (gnutls_pkcs12_t PKCS12, + gnutls_pkcs12_bag_t BAG) + PKCS12: should contain a gnutls_pkcs12_t type + + BAG: An initialized bag + + This function will insert a Bag into the PKCS12 structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs12_simple_parse +-------------------------- + + -- Function: int gnutls_pkcs12_simple_parse (gnutls_pkcs12_t P12, const + char * PASSWORD, gnutls_x509_privkey_t * KEY, + gnutls_x509_crt_t ** CHAIN, unsigned int * CHAIN_LEN, + gnutls_x509_crt_t ** EXTRA_CERTS, unsigned int * + EXTRA_CERTS_LEN, gnutls_x509_crl_t * CRL, unsigned int FLAGS) + P12: A pkcs12 type + + PASSWORD: optional password used to decrypt the structure, bags and + keys. + + KEY: a structure to store the parsed private key. + + CHAIN: the corresponding to key certificate chain (may be 'NULL' ) + + CHAIN_LEN: will be updated with the number of additional (may be + 'NULL' ) + + EXTRA_CERTS: optional pointer to receive an array of additional + certificates found in the PKCS12 structure (may be 'NULL' ). + + EXTRA_CERTS_LEN: will be updated with the number of additional + certs (may be 'NULL' ). + + CRL: an optional structure to store the parsed CRL (may be 'NULL' + ). + + FLAGS: should be zero or one of GNUTLS_PKCS12_SP_* + + This function parses a PKCS12 structure in 'pkcs12' and extracts + the private key, the corresponding certificate chain, any + additional certificates and a CRL. The structures in 'key' , + 'chain' 'crl' , and 'extra_certs' must not be initialized. + + The 'extra_certs' and 'extra_certs_len' parameters are optional and + both may be set to 'NULL' . If either is non-'NULL' , then both + must be set. The value for 'extra_certs' is allocated using + 'gnutls_malloc()' . + + Encrypted PKCS12 bags and PKCS8 private keys are supported, but + only with password based security and the same password for all + operations. + + Note that a PKCS12 structure may contain many keys and/or + certificates, and there is no way to identify which key/certificate + pair you want. For this reason this function is useful for PKCS12 + files that contain only one key/certificate pair and/or one CRL. + + If the provided structure has encrypted fields but no password is + provided then this function returns 'GNUTLS_E_DECRYPTION_FAILED' . + + Note that normally the chain constructed does not include self + signed certificates, to comply with TLS' requirements. If, + however, the flag 'GNUTLS_PKCS12_SP_INCLUDE_SELF_SIGNED' is + specified then self signed certificates will be included in the + chain. + + Prior to using this function the PKCS '12' structure integrity must + be verified using 'gnutls_pkcs12_verify_mac()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_pkcs12_verify_mac +------------------------ + + -- Function: int gnutls_pkcs12_verify_mac (gnutls_pkcs12_t PKCS12, + const char * PASS) + PKCS12: should contain a gnutls_pkcs12_t type + + PASS: The password for the MAC + + This function will verify the MAC for the PKCS12 structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + +File: gnutls.info, Node: PKCS 11 API, Next: TPM API, Prev: PKCS 12 API, Up: API reference + +E.7 Hardware token via PKCS 11 API +================================== + +The following functions are to be used for PKCS 11 handling. Their +prototypes lie in 'gnutls/pkcs11.h'. + +gnutls_pkcs11_add_provider +-------------------------- + + -- Function: int gnutls_pkcs11_add_provider (const char * NAME, const + char * PARAMS) + NAME: The filename of the module + + PARAMS: should be NULL or a known string (see description) + + This function will load and add a PKCS 11 module to the module list + used in gnutls. After this function is called the module will be + used for PKCS 11 operations. + + When loading a module to be used for certificate verification, use + the string 'trusted' as 'params' . + + Note that this function is not thread safe. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_copy_attached_extension +------------------------------------- + + -- Function: int gnutls_pkcs11_copy_attached_extension (const char * + TOKEN_URL, gnutls_x509_crt_t CRT, gnutls_datum_t * DATA, const + char * LABEL, unsigned int FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + CRT: An X.509 certificate object + + DATA: the attached extension + + LABEL: A name to be used for the attached extension (may be 'NULL' + ) + + FLAGS: One of GNUTLS_PKCS11_OBJ_FLAG_* + + This function will copy an the attached extension in 'data' for the + certificate provided in 'crt' in the PKCS '11' token specified by + the URL (typically a trust module). The extension must be in + RFC5280 Extension format. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.3.8 + +gnutls_pkcs11_copy_pubkey +------------------------- + + -- Function: int gnutls_pkcs11_copy_pubkey (const char * TOKEN_URL, + gnutls_pubkey_t PUBKEY, const char * LABEL, const + gnutls_datum_t * CID, unsigned int KEY_USAGE, unsigned int + FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + PUBKEY: The public key to copy + + LABEL: The name to be used for the stored data + + CID: The CKA_ID to set for the object -if NULL, the ID will be + derived from the public key + + KEY_USAGE: One of GNUTLS_KEY_* + + FLAGS: One of GNUTLS_PKCS11_OBJ_FLAG_* + + This function will copy a public key object into a PKCS '11' token + specified by a URL. Valid flags to mark the key: + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_CA' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.6 + +gnutls_pkcs11_copy_secret_key +----------------------------- + + -- Function: int gnutls_pkcs11_copy_secret_key (const char * TOKEN_URL, + gnutls_datum_t * KEY, const char * LABEL, unsigned int + KEY_USAGE, unsigned int FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + KEY: The raw key + + LABEL: A name to be used for the stored data + + KEY_USAGE: One of GNUTLS_KEY_* + + FLAGS: One of GNUTLS_PKCS11_OBJ_FLAG_* + + This function will copy a raw secret (symmetric) key into a PKCS + '11' token specified by a URL. The key can be marked as sensitive + or not. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_copy_x509_crt +--------------------------- + + -- Function: int gnutls_pkcs11_copy_x509_crt (const char * TOKEN_URL, + gnutls_x509_crt_t CRT, const char * LABEL, unsigned int FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + CRT: A certificate + + LABEL: A name to be used for the stored data + + FLAGS: One of GNUTLS_PKCS11_OBJ_FLAG_* + + This function will copy a certificate into a PKCS '11' token + specified by a URL. The certificate can be marked as trusted or + not. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_copy_x509_crt2 +---------------------------- + + -- Function: int gnutls_pkcs11_copy_x509_crt2 (const char * TOKEN_URL, + gnutls_x509_crt_t CRT, const char * LABEL, const + gnutls_datum_t * CID, unsigned int FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + CRT: The certificate to copy + + LABEL: The name to be used for the stored data + + CID: The CKA_ID to set for the object -if NULL, the ID will be + derived from the public key + + FLAGS: One of GNUTLS_PKCS11_OBJ_FLAG_* + + This function will copy a certificate into a PKCS '11' token + specified by a URL. Valid flags to mark the certificate: + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_CA' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pkcs11_copy_x509_privkey +------------------------------- + + -- Function: int gnutls_pkcs11_copy_x509_privkey (const char * + TOKEN_URL, gnutls_x509_privkey_t KEY, const char * LABEL, + unsigned int KEY_USAGE, unsigned int FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + KEY: A private key + + LABEL: A name to be used for the stored data + + KEY_USAGE: One of GNUTLS_KEY_* + + FLAGS: One of GNUTLS_PKCS11_OBJ_* flags + + This function will copy a private key into a PKCS '11' token + specified by a URL. + + Since 3.6.3 the objects are marked as sensitive by default unless + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE' is specified. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_copy_x509_privkey2 +-------------------------------- + + -- Function: int gnutls_pkcs11_copy_x509_privkey2 (const char * + TOKEN_URL, gnutls_x509_privkey_t KEY, const char * LABEL, + const gnutls_datum_t * CID, unsigned int KEY_USAGE, unsigned + int FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + KEY: A private key + + LABEL: A name to be used for the stored data + + CID: The CKA_ID to set for the object -if NULL, the ID will be + derived from the public key + + KEY_USAGE: One of GNUTLS_KEY_* + + FLAGS: One of GNUTLS_PKCS11_OBJ_* flags + + This function will copy a private key into a PKCS '11' token + specified by a URL. + + Since 3.6.3 the objects are marked as sensitive by default unless + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE' is specified. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pkcs11_crt_is_known +-------------------------- + + -- Function: unsigned gnutls_pkcs11_crt_is_known (const char * URL, + gnutls_x509_crt_t CERT, unsigned int FLAGS) + URL: A PKCS 11 url identifying a token + + CERT: is the certificate to find issuer for + + FLAGS: Use zero or flags from 'GNUTLS_PKCS11_OBJ_FLAG' . + + This function will check whether the provided certificate is stored + in the specified token. This is useful in combination with + 'GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED' or + 'GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED' , to check whether a + CA is present or a certificate is blacklisted in a trust PKCS '11' + module. + + This function can be used with a 'url' of "pkcs11:", and in that + case all modules will be searched. To restrict the modules to the + marked as trusted in p11-kit use the + 'GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE' flag. + + Note that the flag 'GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED' is + specific to p11-kit trust modules. + + *Returns:* If the certificate exists non-zero is returned, + otherwise zero. + + *Since:* 3.3.0 + +gnutls_pkcs11_deinit +-------------------- + + -- Function: void gnutls_pkcs11_deinit ( VOID) + + This function will deinitialize the PKCS 11 subsystem in gnutls. + This function is only needed if you need to deinitialize the + subsystem without calling 'gnutls_global_deinit()' . + + *Since:* 2.12.0 + +gnutls_pkcs11_delete_url +------------------------ + + -- Function: int gnutls_pkcs11_delete_url (const char * OBJECT_URL, + unsigned int FLAGS) + OBJECT_URL: The URL of the object to delete. + + FLAGS: One of GNUTLS_PKCS11_OBJ_* flags + + This function will delete objects matching the given URL. Note that + not all tokens support the delete operation. + + *Returns:* On success, the number of objects deleted is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_get_pin_function +------------------------------ + + -- Function: gnutls_pin_callback_t gnutls_pkcs11_get_pin_function (void + ** USERDATA) + USERDATA: data to be supplied to callback + + This function will return the callback function set using + 'gnutls_pkcs11_set_pin_function()' . + + *Returns:* The function set or NULL otherwise. + + *Since:* 3.1.0 + +gnutls_pkcs11_get_raw_issuer +---------------------------- + + -- Function: int gnutls_pkcs11_get_raw_issuer (const char * URL, + gnutls_x509_crt_t CERT, gnutls_datum_t * ISSUER, + gnutls_x509_crt_fmt_t FMT, unsigned int FLAGS) + URL: A PKCS 11 url identifying a token + + CERT: is the certificate to find issuer for + + ISSUER: Will hold the issuer if any in an allocated buffer. + + FMT: The format of the exported issuer. + + FLAGS: Use zero or flags from 'GNUTLS_PKCS11_OBJ_FLAG' . + + This function will return the issuer of a given certificate, if it + is stored in the token. By default only marked as trusted issuers + are returned. If any issuer should be returned specify + 'GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_ANY' in 'flags' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.2.7 + +gnutls_pkcs11_get_raw_issuer_by_dn +---------------------------------- + + -- Function: int gnutls_pkcs11_get_raw_issuer_by_dn (const char * URL, + const gnutls_datum_t * DN, gnutls_datum_t * ISSUER, + gnutls_x509_crt_fmt_t FMT, unsigned int FLAGS) + URL: A PKCS 11 url identifying a token + + DN: is the DN to search for + + ISSUER: Will hold the issuer if any in an allocated buffer. + + FMT: The format of the exported issuer. + + FLAGS: Use zero or flags from 'GNUTLS_PKCS11_OBJ_FLAG' . + + This function will return the certificate with the given DN, if it + is stored in the token. By default only marked as trusted issuers + are returned. If any issuer should be returned specify + 'GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_ANY' in 'flags' . + + The name of the function includes issuer because it can be used to + discover issuers of certificates. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pkcs11_get_raw_issuer_by_subject_key_id +---------------------------------------------- + + -- Function: int gnutls_pkcs11_get_raw_issuer_by_subject_key_id (const + char * URL, const gnutls_datum_t * DN, const gnutls_datum_t * + SPKI, gnutls_datum_t * ISSUER, gnutls_x509_crt_fmt_t FMT, + unsigned int FLAGS) + URL: A PKCS 11 url identifying a token + + DN: is the DN to search for (may be 'NULL' ) + + SPKI: is the subject key ID to search for + + ISSUER: Will hold the issuer if any in an allocated buffer. + + FMT: The format of the exported issuer. + + FLAGS: Use zero or flags from 'GNUTLS_PKCS11_OBJ_FLAG' . + + This function will return the certificate with the given DN and + 'spki' , if it is stored in the token. By default only marked as + trusted issuers are returned. If any issuer should be returned + specify 'GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_ANY' in 'flags' . + + The name of the function includes issuer because it can be used to + discover issuers of certificates. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.2 + +gnutls_pkcs11_init +------------------ + + -- Function: int gnutls_pkcs11_init (unsigned int FLAGS, const char * + DEPRECATED_CONFIG_FILE) + FLAGS: An ORed sequence of 'GNUTLS_PKCS11_FLAG_' * + + DEPRECATED_CONFIG_FILE: either NULL or the location of a deprecated + configuration file + + This function will initialize the PKCS 11 subsystem in gnutls. It + will read configuration files if 'GNUTLS_PKCS11_FLAG_AUTO' is used + or allow you to independently load PKCS 11 modules using + 'gnutls_pkcs11_add_provider()' if 'GNUTLS_PKCS11_FLAG_MANUAL' is + specified. + + You don't need to call this function since GnuTLS 3.3.0 because it + is being called during the first request PKCS 11 operation. That + call will assume the 'GNUTLS_PKCS11_FLAG_AUTO' flag. If another + flags are required then it must be called independently prior to + any PKCS 11 operation. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_deinit +------------------------ + + -- Function: void gnutls_pkcs11_obj_deinit (gnutls_pkcs11_obj_t OBJ) + OBJ: The type to be deinitialized + + This function will deinitialize a certificate structure. + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_export +------------------------ + + -- Function: int gnutls_pkcs11_obj_export (gnutls_pkcs11_obj_t OBJ, + void * OUTPUT_DATA, size_t * OUTPUT_DATA_SIZE) + OBJ: Holds the object + + OUTPUT_DATA: will contain the object data + + OUTPUT_DATA_SIZE: holds the size of output_data (and will be + replaced by the actual size of parameters) + + This function will export the PKCS11 object data. It is normal for + data to be inaccessible and in that case 'GNUTLS_E_INVALID_REQUEST' + will be returned. + + 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. + + *Returns:* In case of failure a negative error code will be + returned, and 'GNUTLS_E_SUCCESS' (0) on success. + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_export2 +------------------------- + + -- Function: int gnutls_pkcs11_obj_export2 (gnutls_pkcs11_obj_t OBJ, + gnutls_datum_t * OUT) + OBJ: Holds the object + + OUT: will contain the object data + + This function will export the PKCS11 object data. It is normal for + data to be inaccessible and in that case 'GNUTLS_E_INVALID_REQUEST' + will be returned. + + The output buffer is allocated using 'gnutls_malloc()' . + + *Returns:* In case of failure a negative error code will be + returned, and 'GNUTLS_E_SUCCESS' (0) on success. + + *Since:* 3.1.3 + +gnutls_pkcs11_obj_export3 +------------------------- + + -- Function: int gnutls_pkcs11_obj_export3 (gnutls_pkcs11_obj_t OBJ, + gnutls_x509_crt_fmt_t FMT, gnutls_datum_t * OUT) + OBJ: Holds the object + + FMT: The format of the exported data + + OUT: will contain the object data + + This function will export the PKCS11 object data. It is normal for + data to be inaccessible and in that case 'GNUTLS_E_INVALID_REQUEST' + will be returned. + + The output buffer is allocated using 'gnutls_malloc()' . + + *Returns:* In case of failure a negative error code will be + returned, and 'GNUTLS_E_SUCCESS' (0) on success. + + *Since:* 3.2.7 + +gnutls_pkcs11_obj_export_url +---------------------------- + + -- Function: int gnutls_pkcs11_obj_export_url (gnutls_pkcs11_obj_t OBJ, + gnutls_pkcs11_url_type_t DETAILED, char ** URL) + OBJ: Holds the PKCS 11 certificate + + DETAILED: non zero if a detailed URL is required + + URL: will contain an allocated url + + This function will export a URL identifying the given object. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_flags_get_str +------------------------------- + + -- Function: char * gnutls_pkcs11_obj_flags_get_str (unsigned int + FLAGS) + FLAGS: holds the flags + + This function given an or-sequence of 'GNUTLS_PKCS11_OBJ_FLAG_MARK' + , will return an allocated string with its description. The string + needs to be deallocated using 'gnutls_free()' . + + *Returns:* If flags is zero 'NULL' is returned, otherwise an + allocated string. + + *Since:* 3.3.7 + +gnutls_pkcs11_obj_get_exts +-------------------------- + + -- Function: int gnutls_pkcs11_obj_get_exts (gnutls_pkcs11_obj_t OBJ, + gnutls_x509_ext_st ** EXTS, unsigned int * EXTS_SIZE, unsigned + int FLAGS) + OBJ: should contain a 'gnutls_pkcs11_obj_t' type + + EXTS: a pointer to a 'gnutls_x509_ext_st' pointer + + EXTS_SIZE: will be updated with the number of 'exts' + + FLAGS: Or sequence of 'GNUTLS_PKCS11_OBJ_' * flags + + This function will return information about attached extensions + that associate to the provided object (which should be a + certificate). The extensions are the attached p11-kit trust module + extensions. + + Each element of 'exts' must be deinitialized using + 'gnutls_x509_ext_deinit()' while 'exts' should be deallocated using + 'gnutls_free()' . + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 3.3.8 + +gnutls_pkcs11_obj_get_flags +--------------------------- + + -- Function: int gnutls_pkcs11_obj_get_flags (gnutls_pkcs11_obj_t OBJ, + unsigned int * OFLAGS) + OBJ: The pkcs11 object + + OFLAGS: Will hold the output flags + + This function will return the flags of the object. The 'oflags' + will be flags from 'gnutls_pkcs11_obj_flags' . That is, the + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_' * flags. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.3.7 + +gnutls_pkcs11_obj_get_info +-------------------------- + + -- Function: int gnutls_pkcs11_obj_get_info (gnutls_pkcs11_obj_t OBJ, + gnutls_pkcs11_obj_info_t ITYPE, void * OUTPUT, size_t * + OUTPUT_SIZE) + OBJ: should contain a 'gnutls_pkcs11_obj_t' type + + ITYPE: Denotes the type of information requested + + OUTPUT: where output will be stored + + OUTPUT_SIZE: contains the maximum size of the output buffer and + will be overwritten with the actual size. + + This function will return information about the PKCS11 certificate + such as the label, id as well as token information where the key is + stored. + + When output is text, a null terminated string is written to + 'output' and its string length is written to 'output_size' (without + null terminator). If the buffer is too small, 'output_size' will + contain the expected buffer size (with null terminator for text) + and return 'GNUTLS_E_SHORT_MEMORY_BUFFER' . + + In versions previously to 3.6.0 this function included the null + terminator to 'output_size' . After 3.6.0 the output size doesn't + include the terminator character. + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_get_ptr +------------------------- + + -- Function: int gnutls_pkcs11_obj_get_ptr (gnutls_pkcs11_obj_t OBJ, + void ** PTR, void ** SESSION, void ** OHANDLE, unsigned long * + SLOT_ID, unsigned int FLAGS) + OBJ: should contain a 'gnutls_pkcs11_obj_t' type + + PTR: will contain the CK_FUNCTION_LIST_PTR pointer (may be 'NULL' ) + + SESSION: will contain the CK_SESSION_HANDLE of the object + + OHANDLE: will contain the CK_OBJECT_HANDLE of the object + + SLOT_ID: the identifier of the slot (may be 'NULL' ) + + FLAGS: Or sequence of GNUTLS_PKCS11_OBJ_* flags + + Obtains the PKCS'11' session handles of an object. 'session' and + 'ohandle' must be deinitialized by the caller. The returned + pointers are independent of the 'obj' lifetime. + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 3.6.3 + +gnutls_pkcs11_obj_get_type +-------------------------- + + -- Function: gnutls_pkcs11_obj_type_t gnutls_pkcs11_obj_get_type + (gnutls_pkcs11_obj_t OBJ) + OBJ: Holds the PKCS 11 object + + This function will return the type of the object being stored in + the structure. + + *Returns:* The type of the object + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_import_url +---------------------------- + + -- Function: int gnutls_pkcs11_obj_import_url (gnutls_pkcs11_obj_t OBJ, + const char * URL, unsigned int FLAGS) + OBJ: The structure to store the object + + URL: a PKCS 11 url identifying the key + + FLAGS: Or sequence of GNUTLS_PKCS11_OBJ_* flags + + This function will "import" a PKCS 11 URL identifying an object + (e.g. certificate) to the 'gnutls_pkcs11_obj_t' type. This does + not involve any parsing (such as X.509 or OpenPGP) since the + 'gnutls_pkcs11_obj_t' is format agnostic. Only data are + transferred. + + If the flag 'GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT' is + specified any certificate read, will have its extensions + overwritten by any stapled extensions in the trust module. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_init +---------------------- + + -- Function: int gnutls_pkcs11_obj_init (gnutls_pkcs11_obj_t * OBJ) + OBJ: A pointer to the type to be initialized + + This function will initialize a pkcs11 certificate structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_obj_list_import_url3 +---------------------------------- + + -- Function: int gnutls_pkcs11_obj_list_import_url3 + (gnutls_pkcs11_obj_t * P_LIST, unsigned int * N_LIST, const + char * URL, unsigned int FLAGS) + P_LIST: An uninitialized object list (may be 'NULL' ) + + N_LIST: Initially should hold the maximum size of the list. Will + contain the actual size. + + URL: A PKCS 11 url identifying a set of objects + + FLAGS: Or sequence of GNUTLS_PKCS11_OBJ_* flags + + This function will initialize and set values to an object list by + using all objects identified by a PKCS 11 URL. + + This function will enumerate all the objects specified by the + PKCS'11' URL provided. It expects an already allocated 'p_list' + which has * 'n_list' elements, and that value will be updated to + the actual number of present objects. The 'p_list' objects will be + initialized and set by this function. To obtain a list of all + available objects use a 'url' of 'pkcs11:'. + + All returned objects must be deinitialized using + 'gnutls_pkcs11_obj_deinit()' . + + The supported in this function 'flags' are + 'GNUTLS_PKCS11_OBJ_FLAG_LOGIN' , 'GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO' + , 'GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE' , + 'GNUTLS_PKCS11_OBJ_FLAG_CRT' , 'GNUTLS_PKCS11_OBJ_FLAG_PUBKEY' , + 'GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY' , + 'GNUTLS_PKCS11_OBJ_FLAG_WITH_PRIVKEY' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_CA' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED' , and since 3.5.1 the + 'GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT' . + + On versions of GnuTLS prior to 3.4.0 the equivalent function was + 'gnutls_pkcs11_obj_list_import_url()' . That is also available on + this version as a macro which maps to this function. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pkcs11_obj_list_import_url4 +---------------------------------- + + -- Function: int gnutls_pkcs11_obj_list_import_url4 + (gnutls_pkcs11_obj_t ** P_LIST, unsigned int * N_LIST, const + char * URL, unsigned int FLAGS) + P_LIST: An uninitialized object list (may be NULL) + + N_LIST: It will contain the size of the list. + + URL: A PKCS 11 url identifying a set of objects + + FLAGS: Or sequence of GNUTLS_PKCS11_OBJ_* flags + + This function will enumerate all the objects specified by the + PKCS'11' URL provided. It will initialize and set values to the + object pointer list ( 'p_list' ) provided. To obtain a list of all + available objects use a 'url' of 'pkcs11:'. + + All returned objects must be deinitialized using + 'gnutls_pkcs11_obj_deinit()' , and 'p_list' must be deinitialized + using 'gnutls_free()' . + + The supported in this function 'flags' are + 'GNUTLS_PKCS11_OBJ_FLAG_LOGIN' , 'GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO' + , 'GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE' , + 'GNUTLS_PKCS11_OBJ_FLAG_CRT' , 'GNUTLS_PKCS11_OBJ_FLAG_PUBKEY' , + 'GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY' , + 'GNUTLS_PKCS11_OBJ_FLAG_WITH_PRIVKEY' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_CA' , + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED' , and since 3.5.1 the + 'GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT' . + + On versions of GnuTLS prior to 3.4.0 the equivalent function was + 'gnutls_pkcs11_obj_list_import_url2()' . That is also available on + this version as a macro which maps to this function. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pkcs11_obj_set_info +-------------------------- + + -- Function: int gnutls_pkcs11_obj_set_info (gnutls_pkcs11_obj_t OBJ, + gnutls_pkcs11_obj_info_t ITYPE, const void * DATA, size_t + DATA_SIZE, unsigned FLAGS) + OBJ: should contain a 'gnutls_pkcs11_obj_t' type + + ITYPE: Denotes the type of information to be set + + DATA: the data to set + + DATA_SIZE: the size of data + + FLAGS: Or sequence of GNUTLS_PKCS11_OBJ_* flags + + This function will set attributes on the provided object. + Available options for 'itype' are 'GNUTLS_PKCS11_OBJ_LABEL' , + 'GNUTLS_PKCS11_OBJ_ID_HEX' , and 'GNUTLS_PKCS11_OBJ_ID' . + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 3.4.0 + +gnutls_pkcs11_obj_set_pin_function +---------------------------------- + + -- Function: void gnutls_pkcs11_obj_set_pin_function + (gnutls_pkcs11_obj_t OBJ, gnutls_pin_callback_t FN, void * + USERDATA) + OBJ: The object structure + + FN: the callback + + USERDATA: data associated with the callback + + This function will set a callback function to be used when required + to access the object. This function overrides the global set using + 'gnutls_pkcs11_set_pin_function()' . + + *Since:* 3.1.0 + +gnutls_pkcs11_privkey_cpy +------------------------- + + -- Function: int gnutls_pkcs11_privkey_cpy (gnutls_pkcs11_privkey_t + DST, gnutls_pkcs11_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. + + *Since:* 3.4.0 + +gnutls_pkcs11_privkey_deinit +---------------------------- + + -- Function: void gnutls_pkcs11_privkey_deinit (gnutls_pkcs11_privkey_t + KEY) + KEY: the key to be deinitialized + + This function will deinitialize a private key structure. + +gnutls_pkcs11_privkey_export_pubkey +----------------------------------- + + -- Function: int gnutls_pkcs11_privkey_export_pubkey + (gnutls_pkcs11_privkey_t PKEY, gnutls_x509_crt_fmt_t FMT, + gnutls_datum_t * DATA, unsigned int FLAGS) + PKEY: The private key + + FMT: the format of output params. PEM or DER. + + DATA: will hold the public key + + FLAGS: should be zero + + This function will extract the public key (modulus and public + exponent) from the private key specified by the 'url' private key. + This public key will be stored in 'pubkey' in the format specified + by 'fmt' . 'pubkey' should be deinitialized using 'gnutls_free()' + . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.3.7 + +gnutls_pkcs11_privkey_export_url +-------------------------------- + + -- Function: int gnutls_pkcs11_privkey_export_url + (gnutls_pkcs11_privkey_t KEY, gnutls_pkcs11_url_type_t + DETAILED, char ** URL) + KEY: Holds the PKCS 11 key + + DETAILED: non zero if a detailed URL is required + + URL: will contain an allocated url + + This function will export a URL identifying the given key. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs11_privkey_generate +------------------------------ + + -- Function: int gnutls_pkcs11_privkey_generate (const char * URL, + gnutls_pk_algorithm_t PK, unsigned int BITS, const char * + LABEL, unsigned int FLAGS) + URL: a token URL + + PK: the public key algorithm + + BITS: the security bits + + LABEL: a label + + FLAGS: should be zero + + This function will generate a private key in the specified by the + 'url' token. The private key will be generate within the token and + will not be exportable. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.0 + +gnutls_pkcs11_privkey_generate2 +------------------------------- + + -- Function: int gnutls_pkcs11_privkey_generate2 (const char * URL, + gnutls_pk_algorithm_t PK, unsigned int BITS, const char * + LABEL, gnutls_x509_crt_fmt_t FMT, gnutls_datum_t * PUBKEY, + unsigned int FLAGS) + URL: a token URL + + PK: the public key algorithm + + BITS: the security bits + + LABEL: a label + + FMT: the format of output params. PEM or DER + + PUBKEY: will hold the public key (may be 'NULL' ) + + FLAGS: zero or an OR'ed sequence of 'GNUTLS_PKCS11_OBJ_FLAGs' + + This function will generate a private key in the specified by the + 'url' token. The private key will be generate within the token and + will not be exportable. This function will store the DER-encoded + public key in the SubjectPublicKeyInfo format in 'pubkey' . The + 'pubkey' should be deinitialized using 'gnutls_free()' . + + 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. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.5 + +gnutls_pkcs11_privkey_generate3 +------------------------------- + + -- Function: int gnutls_pkcs11_privkey_generate3 (const char * URL, + gnutls_pk_algorithm_t PK, unsigned int BITS, const char * + LABEL, const gnutls_datum_t * CID, gnutls_x509_crt_fmt_t FMT, + gnutls_datum_t * PUBKEY, unsigned int KEY_USAGE, unsigned int + FLAGS) + URL: a token URL + + PK: the public key algorithm + + BITS: the security bits + + LABEL: a label + + CID: The CKA_ID to use for the new object + + FMT: the format of output params. PEM or DER + + PUBKEY: will hold the public key (may be 'NULL' ) + + KEY_USAGE: One of GNUTLS_KEY_* + + FLAGS: zero or an OR'ed sequence of 'GNUTLS_PKCS11_OBJ_FLAGs' + + This function will generate a private key in the specified by the + 'url' token. The private key will be generate within the token and + will not be exportable. This function will store the DER-encoded + public key in the SubjectPublicKeyInfo format in 'pubkey' . The + 'pubkey' should be deinitialized using 'gnutls_free()' . + + 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. + + Since 3.6.3 the objects are marked as sensitive by default unless + 'GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE' is specified. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pkcs11_privkey_get_info +------------------------------ + + -- Function: int gnutls_pkcs11_privkey_get_info + (gnutls_pkcs11_privkey_t PKEY, gnutls_pkcs11_obj_info_t ITYPE, + void * OUTPUT, size_t * OUTPUT_SIZE) + PKEY: should contain a 'gnutls_pkcs11_privkey_t' type + + ITYPE: Denotes the type of information requested + + OUTPUT: where output will be stored + + OUTPUT_SIZE: contains the maximum size of the output and will be + overwritten with actual + + This function will return information about the PKCS 11 private key + such as the label, id as well as token information where the key is + stored. When output is text it returns null terminated string + although 'output_size' contains the size of the actual data only. + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + +gnutls_pkcs11_privkey_get_pk_algorithm +-------------------------------------- + + -- Function: int gnutls_pkcs11_privkey_get_pk_algorithm + (gnutls_pkcs11_privkey_t KEY, unsigned int * BITS) + KEY: should contain a 'gnutls_pkcs11_privkey_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 private + key. + + *Returns:* a member of the 'gnutls_pk_algorithm_t' enumeration on + success, or a negative error code on error. + +gnutls_pkcs11_privkey_import_url +-------------------------------- + + -- Function: int gnutls_pkcs11_privkey_import_url + (gnutls_pkcs11_privkey_t PKEY, const char * URL, unsigned int + FLAGS) + PKEY: The private key + + URL: a PKCS 11 url identifying the key + + FLAGS: Or sequence of GNUTLS_PKCS11_OBJ_* flags + + This function will "import" a PKCS 11 URL identifying a private key + to the 'gnutls_pkcs11_privkey_t' type. In reality since in most + cases keys cannot be exported, the private key structure is being + associated with the available operations on the token. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs11_privkey_init +-------------------------- + + -- Function: int gnutls_pkcs11_privkey_init (gnutls_pkcs11_privkey_t * + KEY) + KEY: A pointer to the type to be initialized + + This function will initialize an private key structure. This + structure can be used for accessing an underlying PKCS'11' object. + + In versions of GnuTLS later than 3.5.11 the object is protected + using locks and a single 'gnutls_pkcs11_privkey_t' can be re-used + by many threads. However, for performance it is recommended to + utilize one object per key per thread. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs11_privkey_set_pin_function +-------------------------------------- + + -- Function: void gnutls_pkcs11_privkey_set_pin_function + (gnutls_pkcs11_privkey_t KEY, gnutls_pin_callback_t FN, void * + USERDATA) + KEY: The private key + + FN: the callback + + USERDATA: data associated with the callback + + This function will set a callback function to be used when required + to access the object. This function overrides the global set using + 'gnutls_pkcs11_set_pin_function()' . + + *Since:* 3.1.0 + +gnutls_pkcs11_privkey_status +---------------------------- + + -- Function: unsigned gnutls_pkcs11_privkey_status + (gnutls_pkcs11_privkey_t KEY) + KEY: Holds the key + + Checks the status of the private key token. + + *Returns:* this function will return non-zero if the token holding + the private key is still available (inserted), and zero otherwise. + + *Since:* 3.1.9 + +gnutls_pkcs11_reinit +-------------------- + + -- Function: int gnutls_pkcs11_reinit ( VOID) + + This function will reinitialize the PKCS 11 subsystem in gnutls. + This is required by PKCS 11 when an application uses 'fork()' . + The reinitialization function must be called on the child. + + Note that since GnuTLS 3.3.0, the reinitialization of the PKCS '11' + subsystem occurs automatically after fork. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.0 + +gnutls_pkcs11_set_pin_function +------------------------------ + + -- Function: void gnutls_pkcs11_set_pin_function (gnutls_pin_callback_t + FN, void * USERDATA) + FN: The PIN callback, a 'gnutls_pin_callback_t()' function. + + USERDATA: data to be supplied to callback + + This function will set a callback function to be used when a PIN is + required for PKCS 11 operations. See 'gnutls_pin_callback_t()' on + how the callback should behave. + + *Since:* 2.12.0 + +gnutls_pkcs11_set_token_function +-------------------------------- + + -- Function: void gnutls_pkcs11_set_token_function + (gnutls_pkcs11_token_callback_t FN, void * USERDATA) + FN: The token callback + + USERDATA: data to be supplied to callback + + This function will set a callback function to be used when a token + needs to be inserted to continue PKCS 11 operations. + + *Since:* 2.12.0 + +gnutls_pkcs11_token_check_mechanism +----------------------------------- + + -- Function: unsigned gnutls_pkcs11_token_check_mechanism (const char * + URL, unsigned long MECHANISM, void * PTR, unsigned PSIZE, + unsigned FLAGS) + URL: should contain a PKCS 11 URL + + MECHANISM: The PKCS '11' mechanism ID + + PTR: if set it should point to a CK_MECHANISM_INFO struct + + PSIZE: the size of CK_MECHANISM_INFO struct (for safety) + + FLAGS: must be zero + + This function will return whether a mechanism is supported by the + given token. If the mechanism is supported and 'ptr' is set, it + will be updated with the token information. + + *Returns:* Non-zero if the mechanism is supported or zero + otherwise. + + *Since:* 3.6.0 + +gnutls_pkcs11_token_get_flags +----------------------------- + + -- Function: int gnutls_pkcs11_token_get_flags (const char * URL, + unsigned int * FLAGS) + URL: should contain a PKCS 11 URL + + FLAGS: The output flags (GNUTLS_PKCS11_TOKEN_*) + + This function will return information about the PKCS 11 token + flags. + + The supported flags are: 'GNUTLS_PKCS11_TOKEN_HW' and + 'GNUTLS_PKCS11_TOKEN_TRUSTED' . + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 2.12.0 + +gnutls_pkcs11_token_get_info +---------------------------- + + -- Function: int gnutls_pkcs11_token_get_info (const char * URL, + gnutls_pkcs11_token_info_t TTYPE, void * OUTPUT, size_t * + OUTPUT_SIZE) + URL: should contain a PKCS 11 URL + + TTYPE: Denotes the type of information requested + + OUTPUT: where output will be stored + + OUTPUT_SIZE: contains the maximum size of the output buffer and + will be overwritten with the actual size. + + This function will return information about the PKCS 11 token such + as the label, id, etc. + + When output is text, a null terminated string is written to + 'output' and its string length is written to 'output_size' (without + null terminator). If the buffer is too small, 'output_size' will + contain the expected buffer size (with null terminator for text) + and return 'GNUTLS_E_SHORT_MEMORY_BUFFER' . + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 2.12.0 + +gnutls_pkcs11_token_get_mechanism +--------------------------------- + + -- Function: int gnutls_pkcs11_token_get_mechanism (const char * URL, + unsigned int IDX, unsigned long * MECHANISM) + URL: should contain a PKCS 11 URL + + IDX: The index of the mechanism + + MECHANISM: The PKCS '11' mechanism ID + + This function will return the names of the supported mechanisms by + the token. It should be called with an increasing index until it + return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE. + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 2.12.0 + +gnutls_pkcs11_token_get_ptr +--------------------------- + + -- Function: int gnutls_pkcs11_token_get_ptr (const char * URL, void ** + PTR, unsigned long * SLOT_ID, unsigned int FLAGS) + URL: should contain a PKCS'11' URL identifying a token + + PTR: will contain the CK_FUNCTION_LIST_PTR pointer + + SLOT_ID: will contain the slot_id (may be 'NULL' ) + + FLAGS: should be zero + + This function will return the function pointer of the specified + token by the URL. The returned pointers are valid until gnutls is + deinitialized, c.f. '_global_deinit()' . + + *Returns:* 'GNUTLS_E_SUCCESS' (0) on success or a negative error + code on error. + + *Since:* 3.6.3 + +gnutls_pkcs11_token_get_random +------------------------------ + + -- Function: int gnutls_pkcs11_token_get_random (const char * + TOKEN_URL, void * RNDDATA, size_t LEN) + TOKEN_URL: A PKCS '11' URL specifying a token + + RNDDATA: A pointer to the memory area to be filled with random data + + LEN: The number of bytes of randomness to request + + This function will get random data from the given token. It will + store rnddata and fill the memory pointed to by rnddata with len + random bytes from the token. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs11_token_get_url +--------------------------- + + -- Function: int gnutls_pkcs11_token_get_url (unsigned int SEQ, + gnutls_pkcs11_url_type_t DETAILED, char ** URL) + SEQ: sequence number starting from 0 + + DETAILED: non zero if a detailed URL is required + + URL: will contain an allocated url + + This function will return the URL for each token available in + system. The url has to be released using 'gnutls_free()' + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' if the sequence number + exceeds the available tokens, otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pkcs11_token_init +------------------------ + + -- Function: int gnutls_pkcs11_token_init (const char * TOKEN_URL, + const char * SO_PIN, const char * LABEL) + TOKEN_URL: A PKCS '11' URL specifying a token + + SO_PIN: Security Officer's PIN + + LABEL: A name to be used for the token + + This function will initialize (format) a token. If the token is at + a factory defaults state the security officer's PIN given will be + set to be the default. Otherwise it should match the officer's + PIN. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs11_token_set_pin +--------------------------- + + -- Function: int gnutls_pkcs11_token_set_pin (const char * TOKEN_URL, + const char * OLDPIN, const char * NEWPIN, unsigned int FLAGS) + TOKEN_URL: A PKCS '11' URL specifying a token + + OLDPIN: old user's PIN + + NEWPIN: new user's PIN + + FLAGS: one of 'gnutls_pin_flag_t' . + + This function will modify or set a user or administrator's PIN for + the given token. If it is called to set a PIN for first time the + oldpin must be 'NULL' . When setting the admin's PIN with the + 'GNUTLS_PIN_SO' flag, the 'oldpin' value must be provided (this + requirement is relaxed after GnuTLS 3.6.5 since which the PIN will + be requested if missing). + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +gnutls_pkcs11_type_get_name +--------------------------- + + -- Function: const char * gnutls_pkcs11_type_get_name + (gnutls_pkcs11_obj_type_t TYPE) + TYPE: Holds the PKCS 11 object type, a 'gnutls_pkcs11_obj_type_t' . + + This function will return a human readable description of the + PKCS11 object type 'obj' . It will return "Unknown" for unknown + types. + + *Returns:* human readable string labeling the PKCS11 object type + 'type' . + + *Since:* 2.12.0 + +gnutls_x509_crt_import_pkcs11 +----------------------------- + + -- Function: int gnutls_x509_crt_import_pkcs11 (gnutls_x509_crt_t CRT, + gnutls_pkcs11_obj_t PKCS11_CRT) + CRT: A certificate of type 'gnutls_x509_crt_t' + + PKCS11_CRT: A PKCS 11 object that contains a certificate + + This function will import a PKCS 11 certificate to a + 'gnutls_x509_crt_t' structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_x509_crt_list_import_pkcs11 +---------------------------------- + + -- Function: int gnutls_x509_crt_list_import_pkcs11 (gnutls_x509_crt_t + * CERTS, unsigned int CERT_MAX, gnutls_pkcs11_obj_t * const + OBJS, unsigned int FLAGS) + CERTS: A list of certificates of type 'gnutls_x509_crt_t' + + CERT_MAX: The maximum size of the list + + OBJS: A list of PKCS 11 objects + + FLAGS: 0 for now + + This function will import a PKCS 11 certificate list to a list of + 'gnutls_x509_crt_t' type. These must not be initialized. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + + +File: gnutls.info, Node: TPM API, Next: Abstract key API, Prev: PKCS 11 API, Up: API reference + +E.8 TPM API +=========== + +The following functions are to be used for TPM handling. Their +prototypes lie in 'gnutls/tpm.h'. + +gnutls_tpm_get_registered +------------------------- + + -- Function: int gnutls_tpm_get_registered (gnutls_tpm_key_list_t * + LIST) + LIST: a list to store the keys + + This function will get a list of stored keys in the TPM. The uuid + of those keys + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_tpm_key_list_deinit +-------------------------- + + -- Function: void gnutls_tpm_key_list_deinit (gnutls_tpm_key_list_t + LIST) + LIST: a list of the keys + + This function will deinitialize the list of stored keys in the TPM. + + *Since:* 3.1.0 + +gnutls_tpm_key_list_get_url +--------------------------- + + -- Function: int gnutls_tpm_key_list_get_url (gnutls_tpm_key_list_t + LIST, unsigned int IDX, char ** URL, unsigned int FLAGS) + LIST: a list of the keys + + IDX: The index of the key (starting from zero) + + URL: The URL to be returned + + FLAGS: should be zero + + This function will return for each given index a URL of the + corresponding key. If the provided index is out of bounds then + 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' is returned. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_tpm_privkey_delete +------------------------- + + -- Function: int gnutls_tpm_privkey_delete (const char * URL, const + char * SRK_PASSWORD) + URL: the URL describing the key + + SRK_PASSWORD: a password for the SRK key + + This function will unregister the private key from the TPM chip. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_tpm_privkey_generate +--------------------------- + + -- Function: int gnutls_tpm_privkey_generate (gnutls_pk_algorithm_t PK, + unsigned int BITS, const char * SRK_PASSWORD, const char * + KEY_PASSWORD, gnutls_tpmkey_fmt_t FORMAT, + gnutls_x509_crt_fmt_t PUB_FORMAT, gnutls_datum_t * PRIVKEY, + gnutls_datum_t * PUBKEY, unsigned int FLAGS) + PK: the public key algorithm + + BITS: the security bits + + SRK_PASSWORD: a password to protect the exported key (optional) + + KEY_PASSWORD: the password for the TPM (optional) + + FORMAT: the format of the private key + + PUB_FORMAT: the format of the public key + + PRIVKEY: the generated key + + PUBKEY: the corresponding public key (may be null) + + FLAGS: should be a list of GNUTLS_TPM_* flags + + This function will generate a private key in the TPM chip. The + private key will be generated within the chip and will be exported + in a wrapped with TPM's master key form. Furthermore the wrapped + key can be protected with the provided 'password' . + + Note that bits in TPM is quantized value. If the input value is + not one of the allowed values, then it will be quantized to one of + 512, 1024, 2048, 4096, 8192 and 16384. + + Allowed flags are: + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + + +File: gnutls.info, Node: Abstract key API, Next: Socket specific API, Prev: TPM API, Up: API reference + +E.9 Abstract key API +==================== + +The following functions are to be used for abstract key handling. Their +prototypes lie in 'gnutls/abstract.h'. + +gnutls_certificate_set_key +-------------------------- + + -- Function: int gnutls_certificate_set_key + (gnutls_certificate_credentials_t RES, const char ** NAMES, + int NAMES_SIZE, gnutls_pcert_st * PCERT_LIST, int + PCERT_LIST_SIZE, gnutls_privkey_t KEY) + RES: is a 'gnutls_certificate_credentials_t' type. + + NAMES: is an array of DNS names belonging to the public-key (NULL + if none) + + NAMES_SIZE: holds the size of the names list + + PCERT_LIST: contains a certificate list (chain) or raw public-key + + PCERT_LIST_SIZE: holds the size of the certificate list + + KEY: is a 'gnutls_privkey_t' key corresponding to the first + public-key in pcert_list + + This function sets a public/private key pair in the + gnutls_certificate_credentials_t type. The given public key may be + encapsulated in a certificate or can be given as a raw key. This + function may be called more than once, in case multiple key pairs + exist for the server. For clients that want to send more than + their own end- entity certificate (e.g., also an intermediate CA + cert), the full certificate chain must be provided in 'pcert_list' + . + + Note that the 'key' will become part of the credentials structure + and must not be deallocated. It will be automatically deallocated + when the 'res' structure is deinitialized. + + If this function fails, the 'res' structure is at an undefined + state and it must not be reused to load other keys or certificates. + + Note that, this function by default returns zero on success and a + negative value on error. Since 3.5.6, when the flag + 'GNUTLS_CERTIFICATE_API_V2' is set using + 'gnutls_certificate_set_flags()' it returns an index (greater or + equal to zero). That index can be used for other functions to + refer to the added key-pair. + + Since GnuTLS 3.6.6 this function also handles raw public keys. + + *Returns:* On success this functions returns zero, and otherwise a + negative value on error (see above for modifying that behavior). + + *Since:* 3.0 + +gnutls_certificate_set_retrieve_function2 +----------------------------------------- + + -- Function: void gnutls_certificate_set_retrieve_function2 + (gnutls_certificate_credentials_t CRED, + gnutls_certificate_retrieve_function2 * FUNC) + CRED: is a 'gnutls_certificate_credentials_t' type. + + FUNC: is the callback function + + This function sets a callback to be called in order to retrieve the + certificate to be used in the handshake. The callback will take + control only if a certificate is requested by the peer. + + The callback's function prototype is: int + (*callback)(gnutls_session_t, const gnutls_datum_t* req_ca_dn, int + nreqs, const gnutls_pk_algorithm_t* pk_algos, int pk_algos_length, + gnutls_pcert_st** pcert, unsigned int *pcert_length, + gnutls_privkey_t * pkey); + + 'req_ca_dn' is only used in X.509 certificates. Contains a list + with the CA names that the server considers trusted. This is a + hint and typically the client should send a certificate that is + signed by one of these CAs. These names, when available, are DER + encoded. To get a more meaningful value use the function + 'gnutls_x509_rdn_get()' . + + 'pk_algos' contains a list with server's acceptable public key + algorithms. The certificate returned should support the server's + given algorithms. + + 'pcert' should contain a single certificate and public key or a + list of them. + + 'pcert_length' is the size of the previous list. + + 'pkey' is the private key. + + If the callback function is provided then gnutls will call it, in + the handshake, after the certificate request message has been + received. All the provided by the callback values will not be + released or modified by gnutls. + + In server side pk_algos and req_ca_dn are NULL. + + The callback function should set the certificate list to be sent, + and return 0 on success. If no certificate was selected then the + number of certificates should be set to zero. The value (-1) + indicates error and the handshake will be terminated. If both + certificates are set in the credentials and a callback is + available, the callback takes predence. + + *Since:* 3.0 + +gnutls_certificate_set_retrieve_function3 +----------------------------------------- + + -- Function: void gnutls_certificate_set_retrieve_function3 + (gnutls_certificate_credentials_t CRED, + gnutls_certificate_retrieve_function3 * FUNC) + CRED: is a 'gnutls_certificate_credentials_t' type. + + FUNC: is the callback function + + This function sets a callback to be called in order to retrieve the + certificate and OCSP responses to be used in the handshake. 'func' + will be called only if the peer requests a certificate either + during handshake or during post-handshake authentication. + + The callback's function prototype is defined in 'abstract.h': + + int gnutls_certificate_retrieve_function3( gnutls_session_t, const + struct gnutls_cert_retr_st *info, gnutls_pcert_st **certs, unsigned + int *certs_length, gnutls_ocsp_data_st **ocsp, unsigned int + *ocsp_length, gnutls_privkey_t *privkey, unsigned int *flags); + + The info field of the callback contains: 'req_ca_dn' which is a + list with the CA names that the server considers trusted. This is + a hint and typically the client should send a certificate that is + signed by one of these CAs. These names, when available, are DER + encoded. To get a more meaningful value use the function + 'gnutls_x509_rdn_get()' . 'pk_algos' contains a list with server's + acceptable public key algorithms. The certificate returned should + support the server's given algorithms. + + The callback should fill-in the following values: + + 'certs' should contain an allocated list of certificates and public + keys. 'certs_length' is the size of the previous list. 'ocsp' + should contain an allocated list of OCSP responses. 'ocsp_length' + is the size of the previous list. 'privkey' is the private key. + + If flags in the callback are set to 'GNUTLS_CERT_RETR_DEINIT_ALL' + then all provided values must be allocated using 'gnutls_malloc()' + , and will be released by gnutls; otherwise they will not be + touched by gnutls. + + The callback function should set the certificate and OCSP response + list to be sent, and return 0 on success. If no certificates are + available, the 'certs_length' and 'ocsp_length' should be set to + zero. The return value (-1) indicates error and the handshake will + be terminated. If both certificates are set in the credentials and + a callback is available, the callback takes predence. + + Raw public-keys: In case raw public-keys are negotiated as + certificate type, certificates that would normally hold the + public-key material are not available. In that case, 'certs' + contains an allocated list with only the public key. Since there + is no certificate, there is also no certificate status. Therefore, + OCSP information should not be set. + + *Since:* 3.6.3 + +gnutls_pcert_deinit +------------------- + + -- Function: void gnutls_pcert_deinit (gnutls_pcert_st * PCERT) + PCERT: The structure to be deinitialized + + This function will deinitialize a pcert structure. + + *Since:* 3.0 + +gnutls_pcert_export_openpgp +--------------------------- + + -- Function: int gnutls_pcert_export_openpgp (gnutls_pcert_st * PCERT, + gnutls_openpgp_crt_t * CRT) + PCERT: The pcert structure. + + CRT: An initialized 'gnutls_openpgp_crt_t' . + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 3.4.0 + +gnutls_pcert_export_x509 +------------------------ + + -- Function: int gnutls_pcert_export_x509 (gnutls_pcert_st * PCERT, + gnutls_x509_crt_t * CRT) + PCERT: The pcert structure. + + CRT: An initialized 'gnutls_x509_crt_t' . + + Converts the given 'gnutls_pcert_t' type into a 'gnutls_x509_crt_t' + . This function only works if the type of 'pcert' is + 'GNUTLS_CRT_X509' . When successful, the value written to 'crt' + must be freed with 'gnutls_x509_crt_deinit()' when no longer + needed. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pcert_import_openpgp +--------------------------- + + -- Function: int gnutls_pcert_import_openpgp (gnutls_pcert_st * PCERT, + gnutls_openpgp_crt_t CRT, unsigned int FLAGS) + PCERT: The pcert structure + + CRT: The raw certificate to be imported + + FLAGS: zero for now + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 3.0 + +gnutls_pcert_import_openpgp_raw +------------------------------- + + -- Function: int gnutls_pcert_import_openpgp_raw (gnutls_pcert_st * + PCERT, const gnutls_datum_t * CERT, gnutls_openpgp_crt_fmt_t + FORMAT, gnutls_openpgp_keyid_t KEYID, unsigned int FLAGS) + PCERT: The pcert structure + + CERT: The raw certificate to be imported + + FORMAT: The format of the certificate + + KEYID: The key ID to use (NULL for the master key) + + FLAGS: zero for now + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 3.0 + +gnutls_pcert_import_rawpk +------------------------- + + -- Function: int gnutls_pcert_import_rawpk (gnutls_pcert_st* PCERT, + gnutls_pubkey_t PUBKEY, unsigned int FLAGS) + PCERT: The pcert structure to import the data into. + + PUBKEY: The raw public-key in 'gnutls_pubkey_t' format to be + imported + + FLAGS: zero for now + + This convenience function will import (i.e. convert) the given raw + public key 'pubkey' into a 'gnutls_pcert_st' structure. The + structure must be deinitialized afterwards using + 'gnutls_pcert_deinit()' . The given 'pubkey' must not be + deinitialized because it will be associated with the given 'pcert' + structure and will be deinitialized with it. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.6 + +gnutls_pcert_import_rawpk_raw +----------------------------- + + -- Function: int gnutls_pcert_import_rawpk_raw (gnutls_pcert_st* PCERT, + const gnutls_datum_t* RAWPUBKEY, gnutls_x509_crt_fmt_t FORMAT, + unsigned int KEY_USAGE, unsigned int FLAGS) + PCERT: The pcert structure to import the data into. + + RAWPUBKEY: The raw public-key in 'gnutls_datum_t' format to be + imported. + + FORMAT: The format of the raw public-key. DER or PEM. + + KEY_USAGE: An ORed sequence of 'GNUTLS_KEY_' * flags. + + FLAGS: zero for now + + This convenience function will import (i.e. convert) the given raw + public key 'rawpubkey' into a 'gnutls_pcert_st' structure. The + structure must be deinitialized afterwards using + 'gnutls_pcert_deinit()' . Note that the caller is responsible for + freeing 'rawpubkey' . All necessary values will be copied into + 'pcert' . + + Key usage (as defined by X.509 extension (2.5.29.15)) can be + explicitly set because there is no certificate structure around the + key to define this value. See for more info + 'gnutls_x509_crt_get_key_usage()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.6 + +gnutls_pcert_import_x509 +------------------------ + + -- Function: int gnutls_pcert_import_x509 (gnutls_pcert_st * PCERT, + gnutls_x509_crt_t CRT, unsigned int FLAGS) + PCERT: The pcert structure + + CRT: The certificate to be imported + + FLAGS: zero for now + + This convenience function will import the given certificate to a + 'gnutls_pcert_st' structure. The structure must be deinitialized + afterwards using 'gnutls_pcert_deinit()' ; + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.0 + +gnutls_pcert_import_x509_list +----------------------------- + + -- Function: int gnutls_pcert_import_x509_list (gnutls_pcert_st * + PCERT_LIST, gnutls_x509_crt_t * CRT, unsigned * NCRT, unsigned + int FLAGS) + PCERT_LIST: The structures to store the certificates; must not + contain initialized 'gnutls_pcert_st' structures. + + CRT: The certificates to be imported + + NCRT: The number of certificates in 'crt' ; will be updated if + necessary + + FLAGS: zero or 'GNUTLS_X509_CRT_LIST_SORT' + + This convenience function will import the given certificates to an + already allocated set of 'gnutls_pcert_st' structures. The + structures must be deinitialized afterwards using + 'gnutls_pcert_deinit()' . 'pcert_list' should contain space for at + least 'ncrt' elements. + + In the case 'GNUTLS_X509_CRT_LIST_SORT' is specified and that + function cannot sort the list, 'GNUTLS_E_CERTIFICATE_LIST_UNSORTED' + will be returned. Currently sorting can fail if the list size + exceeds an internal constraint (16). + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_pcert_import_x509_raw +---------------------------- + + -- Function: int gnutls_pcert_import_x509_raw (gnutls_pcert_st * PCERT, + const gnutls_datum_t * CERT, gnutls_x509_crt_fmt_t FORMAT, + unsigned int FLAGS) + PCERT: The pcert structure + + CERT: The raw certificate to be imported + + FORMAT: The format of the certificate + + FLAGS: zero for now + + This convenience function will import the given certificate to a + 'gnutls_pcert_st' structure. The structure must be deinitialized + afterwards using 'gnutls_pcert_deinit()' ; + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.0 + +gnutls_pcert_list_import_x509_file +---------------------------------- + + -- Function: int gnutls_pcert_list_import_x509_file (gnutls_pcert_st * + PCERT_LIST, unsigned * PCERT_LIST_SIZE, const char * FILE, + gnutls_x509_crt_fmt_t FORMAT, gnutls_pin_callback_t PIN_FN, + void * PIN_FN_USERDATA, unsigned int FLAGS) + PCERT_LIST: The structures to store the certificates; must not + contain initialized 'gnutls_pcert_st' structures. + + PCERT_LIST_SIZE: Initially must hold the maximum number of certs. + It will be updated with the number of certs available. + + FILE: A file or supported URI with the certificates to load + + FORMAT: 'GNUTLS_X509_FMT_DER' or 'GNUTLS_X509_FMT_PEM' if a file is + given + + PIN_FN: a PIN callback if not globally set + + PIN_FN_USERDATA: parameter for the PIN callback + + FLAGS: zero or flags from 'gnutls_certificate_import_flags' + + This convenience function will import a certificate chain from the + given file or supported URI to 'gnutls_pcert_st' structures. The + structures must be deinitialized afterwards using + 'gnutls_pcert_deinit()' . + + This function will always return a sorted certificate chain. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value; if the 'pcert' list doesn't have + enough space 'GNUTLS_E_SHORT_MEMORY_BUFFER' will be returned. + + *Since:* 3.6.3 + +gnutls_pcert_list_import_x509_raw +--------------------------------- + + -- Function: int gnutls_pcert_list_import_x509_raw (gnutls_pcert_st * + PCERT_LIST, unsigned int * PCERT_LIST_SIZE, const + gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT, unsigned + int FLAGS) + PCERT_LIST: The structures to store the certificates; must not + contain initialized 'gnutls_pcert_st' structures. + + PCERT_LIST_SIZE: Initially must hold the maximum number of certs. + It will be updated with the number of certs available. + + DATA: The certificates. + + FORMAT: One of DER or PEM. + + FLAGS: must be (0) or an OR'd sequence of + gnutls_certificate_import_flags. + + This function will import the provided DER or PEM encoded + certificates to an already allocated set of 'gnutls_pcert_st' + structures. The structures must be deinitialized afterwards using + 'gnutls_pcert_deinit()' . 'pcert_list' should contain space for at + least 'pcert_list_size' elements. + + 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; if the 'pcert' list doesn't have + enough space 'GNUTLS_E_SHORT_MEMORY_BUFFER' will be returned. + + *Since:* 3.0 + +gnutls_privkey_decrypt_data +--------------------------- + + -- Function: int gnutls_privkey_decrypt_data (gnutls_privkey_t KEY, + unsigned int FLAGS, const gnutls_datum_t * CIPHERTEXT, + gnutls_datum_t * PLAINTEXT) + KEY: Holds the key + + FLAGS: zero for now + + CIPHERTEXT: holds the data to be decrypted + + PLAINTEXT: will contain the decrypted data, allocated with + 'gnutls_malloc()' + + This function will decrypt the given data using the algorithm + supported by the private key. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_privkey_decrypt_data2 +---------------------------- + + -- Function: int gnutls_privkey_decrypt_data2 (gnutls_privkey_t KEY, + unsigned int FLAGS, const gnutls_datum_t * CIPHERTEXT, + unsigned char * PLAINTEXT, size_t PLAINTEXT_SIZE) + KEY: Holds the key + + FLAGS: zero for now + + CIPHERTEXT: holds the data to be decrypted + + PLAINTEXT: a preallocated buffer that will be filled with the + plaintext + + PLAINTEXT_SIZE: in/out size of the plaintext + + This function will decrypt the given data using the algorithm + supported by the private key. Unlike with + 'gnutls_privkey_decrypt_data()' this function operates in constant + time and constant memory access. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.5 + +gnutls_privkey_deinit +--------------------- + + -- Function: void gnutls_privkey_deinit (gnutls_privkey_t KEY) + KEY: The key to be deinitialized + + This function will deinitialize a private key structure. + + *Since:* 2.12.0 + +gnutls_privkey_export_dsa_raw +----------------------------- + + -- Function: int gnutls_privkey_export_dsa_raw (gnutls_privkey_t KEY, + gnutls_datum_t * P, gnutls_datum_t * Q, gnutls_datum_t * G, + gnutls_datum_t * Y, gnutls_datum_t * X) + KEY: Holds the public 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:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.3.0 + +gnutls_privkey_export_dsa_raw2 +------------------------------ + + -- Function: int gnutls_privkey_export_dsa_raw2 (gnutls_privkey_t KEY, + gnutls_datum_t * P, gnutls_datum_t * Q, gnutls_datum_t * G, + gnutls_datum_t * Y, gnutls_datum_t * X, unsigned int FLAGS) + KEY: Holds the public 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 + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + 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:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.0 + +gnutls_privkey_export_ecc_raw +----------------------------- + + -- Function: int gnutls_privkey_export_ecc_raw (gnutls_privkey_t KEY, + gnutls_ecc_curve_t * CURVE, gnutls_datum_t * X, gnutls_datum_t + * Y, gnutls_datum_t * K) + KEY: Holds the public 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:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.3.0 + +gnutls_privkey_export_ecc_raw2 +------------------------------ + + -- Function: int gnutls_privkey_export_ecc_raw2 (gnutls_privkey_t KEY, + gnutls_ecc_curve_t * CURVE, gnutls_datum_t * X, gnutls_datum_t + * Y, gnutls_datum_t * K, unsigned int FLAGS) + KEY: Holds the public key + + CURVE: will hold the curve + + X: will hold the x-coordinate + + Y: will hold the y-coordinate + + K: will hold the private key + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + 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:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.0 + +gnutls_privkey_export_gost_raw2 +------------------------------- + + -- Function: int gnutls_privkey_export_gost_raw2 (gnutls_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, unsigned int FLAGS) + KEY: Holds the public 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 + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + 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:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.3 + +gnutls_privkey_export_openpgp +----------------------------- + + -- Function: int gnutls_privkey_export_openpgp (gnutls_privkey_t PKEY, + gnutls_openpgp_privkey_t * KEY) + PKEY: The private key + + KEY: Location for the key to be exported. + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 3.4.0 + +gnutls_privkey_export_pkcs11 +---------------------------- + + -- Function: int gnutls_privkey_export_pkcs11 (gnutls_privkey_t PKEY, + gnutls_pkcs11_privkey_t * KEY) + PKEY: The private key + + KEY: Location for the key to be exported. + + Converts the given abstract private key to a + 'gnutls_pkcs11_privkey_t' type. The key must be of type + 'GNUTLS_PRIVKEY_PKCS11' . The key returned in 'key' must be + deinitialized with 'gnutls_pkcs11_privkey_deinit()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_privkey_export_rsa_raw +----------------------------- + + -- Function: int gnutls_privkey_export_rsa_raw (gnutls_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: Holds the certificate + + 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. For + EdDSA keys, the 'y' value should be 'NULL' . + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.3.0 + +gnutls_privkey_export_rsa_raw2 +------------------------------ + + -- Function: int gnutls_privkey_export_rsa_raw2 (gnutls_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, unsigned int FLAGS) + KEY: Holds the certificate + + 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) + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + 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:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.0 + +gnutls_privkey_export_x509 +-------------------------- + + -- Function: int gnutls_privkey_export_x509 (gnutls_privkey_t PKEY, + gnutls_x509_privkey_t * KEY) + PKEY: The private key + + KEY: Location for the key to be exported. + + Converts the given abstract private key to a + 'gnutls_x509_privkey_t' type. The abstract key must be of type + 'GNUTLS_PRIVKEY_X509' . The input 'key' must not be initialized. + The key returned in 'key' should be deinitialized using + 'gnutls_x509_privkey_deinit()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_privkey_generate +----------------------- + + -- Function: int gnutls_privkey_generate (gnutls_privkey_t PKEY, + gnutls_pk_algorithm_t ALGO, unsigned int BITS, unsigned int + FLAGS) + PKEY: An initialized private 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_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_generate2()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.3.0 + +gnutls_privkey_generate2 +------------------------ + + -- Function: int gnutls_privkey_generate2 (gnutls_privkey_t PKEY, + gnutls_pk_algorithm_t ALGO, unsigned int BITS, unsigned int + FLAGS, const gnutls_keygen_data_st * DATA, unsigned DATA_SIZE) + PKEY: The private 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. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.5.0 + +gnutls_privkey_get_pk_algorithm +------------------------------- + + -- Function: int gnutls_privkey_get_pk_algorithm (gnutls_privkey_t KEY, + unsigned int * BITS) + KEY: should contain a 'gnutls_privkey_t' type + + BITS: If set will return the number of bits of the parameters (may + be NULL) + + This function will return the public key algorithm of a private key + and if possible will return a number of bits that indicates the + security parameter of the key. + + *Returns:* a member of the 'gnutls_pk_algorithm_t' enumeration on + success, or a negative error code on error. + + *Since:* 2.12.0 + +gnutls_privkey_get_seed +----------------------- + + -- Function: int gnutls_privkey_get_seed (gnutls_privkey_t KEY, + gnutls_digest_algorithm_t * DIGEST, void * SEED, size_t * + SEED_SIZE) + KEY: should contain a 'gnutls_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_privkey_get_spki +----------------------- + + -- Function: int gnutls_privkey_get_spki (gnutls_privkey_t PRIVKEY, + gnutls_x509_spki_t SPKI, unsigned int FLAGS) + PRIVKEY: a public key of type 'gnutls_privkey_t' + + SPKI: a SubjectPublicKeyInfo structure of type + 'gnutls_privkey_spki_t' + + FLAGS: must be zero + + This function will return the public key information if available. + The provided 'spki' must be initialized. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.0 + +gnutls_privkey_get_type +----------------------- + + -- Function: gnutls_privkey_type_t gnutls_privkey_get_type + (gnutls_privkey_t KEY) + KEY: should contain a 'gnutls_privkey_t' type + + This function will return the type of the private key. This is + actually the type of the subsystem used to set this private key. + + *Returns:* a member of the 'gnutls_privkey_type_t' enumeration on + success, or a negative error code on error. + + *Since:* 2.12.0 + +gnutls_privkey_import_dsa_raw +----------------------------- + + -- Function: int gnutls_privkey_import_dsa_raw (gnutls_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 structure 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_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_privkey_import_ecc_raw +----------------------------- + + -- Function: int gnutls_privkey_import_ecc_raw (gnutls_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 key + + CURVE: holds the curve + + X: holds the x-coordinate + + Y: holds the y-coordinate + + K: holds the k (private key) + + This function will convert the given elliptic curve parameters to + the native 'gnutls_privkey_t' format. The output will be stored in + 'key' . + + In EdDSA curves the 'y' parameter should be 'NULL' and the 'x' and + 'k' parameters must 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_privkey_import_ext +------------------------- + + -- Function: int gnutls_privkey_import_ext (gnutls_privkey_t PKEY, + gnutls_pk_algorithm_t PK, void * USERDATA, + gnutls_privkey_sign_func SIGN_FUNC, + gnutls_privkey_decrypt_func DECRYPT_FUNC, unsigned int FLAGS) + PKEY: The private key + + PK: The public key algorithm + + USERDATA: private data to be provided to the callbacks + + SIGN_FUNC: callback for signature operations + + DECRYPT_FUNC: callback for decryption operations + + FLAGS: Flags for the import + + This function will associate the given callbacks with the + 'gnutls_privkey_t' type. At least one of the two callbacks must be + non-null. + + Note that the signing function is supposed to "raw" sign data, + i.e., without any hashing or preprocessing. In case of RSA the + DigestInfo will be provided, and the signing function is expected + to do the PKCS '1' 1.5 padding and the exponentiation. + + See also 'gnutls_privkey_import_ext3()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.0 + +gnutls_privkey_import_ext2 +-------------------------- + + -- Function: int gnutls_privkey_import_ext2 (gnutls_privkey_t PKEY, + gnutls_pk_algorithm_t PK, void * USERDATA, + gnutls_privkey_sign_func SIGN_FN, gnutls_privkey_decrypt_func + DECRYPT_FN, gnutls_privkey_deinit_func DEINIT_FN, unsigned int + FLAGS) + PKEY: The private key + + PK: The public key algorithm + + USERDATA: private data to be provided to the callbacks + + SIGN_FN: callback for signature operations + + DECRYPT_FN: callback for decryption operations + + DEINIT_FN: a deinitialization function + + FLAGS: Flags for the import + + This function will associate the given callbacks with the + 'gnutls_privkey_t' type. At least one of the two callbacks must be + non-null. If a deinitialization function is provided then flags is + assumed to contain 'GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE' . + + Note that the signing function is supposed to "raw" sign data, + i.e., without any hashing or preprocessing. In case of RSA the + DigestInfo will be provided, and the signing function is expected + to do the PKCS '1' 1.5 padding and the exponentiation. + + See also 'gnutls_privkey_import_ext3()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1 + +gnutls_privkey_import_ext3 +-------------------------- + + -- Function: int gnutls_privkey_import_ext3 (gnutls_privkey_t PKEY, + void * USERDATA, gnutls_privkey_sign_func SIGN_FN, + gnutls_privkey_decrypt_func DECRYPT_FN, + gnutls_privkey_deinit_func DEINIT_FN, gnutls_privkey_info_func + INFO_FN, unsigned int FLAGS) + PKEY: The private key + + USERDATA: private data to be provided to the callbacks + + SIGN_FN: callback for signature operations + + DECRYPT_FN: callback for decryption operations + + DEINIT_FN: a deinitialization function + + INFO_FN: returns info about the public key algorithm (should not be + 'NULL' ) + + FLAGS: Flags for the import + + This function will associate the given callbacks with the + 'gnutls_privkey_t' type. At least one of the two callbacks must be + non-null. If a deinitialization function is provided then flags is + assumed to contain 'GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE' . + + Note that the signing function is supposed to "raw" sign data, + i.e., without any hashing or preprocessing. In case of RSA the + DigestInfo will be provided, and the signing function is expected + to do the PKCS '1' 1.5 padding and the exponentiation. + + The 'info_fn' must provide information on the algorithms supported + by this private key, and should support the flags + 'GNUTLS_PRIVKEY_INFO_PK_ALGO' and 'GNUTLS_PRIVKEY_INFO_SIGN_ALGO' . + It must return -1 on unknown flags. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_privkey_import_ext4 +-------------------------- + + -- Function: int gnutls_privkey_import_ext4 (gnutls_privkey_t PKEY, + void * USERDATA, gnutls_privkey_sign_data_func SIGN_DATA_FN, + gnutls_privkey_sign_hash_func SIGN_HASH_FN, + gnutls_privkey_decrypt_func DECRYPT_FN, + gnutls_privkey_deinit_func DEINIT_FN, gnutls_privkey_info_func + INFO_FN, unsigned int FLAGS) + PKEY: The private key + + USERDATA: private data to be provided to the callbacks + + SIGN_DATA_FN: callback for signature operations (may be 'NULL' ) + + SIGN_HASH_FN: callback for signature operations (may be 'NULL' ) + + DECRYPT_FN: callback for decryption operations (may be 'NULL' ) + + DEINIT_FN: a deinitialization function + + INFO_FN: returns info about the public key algorithm (should not be + 'NULL' ) + + FLAGS: Flags for the import + + This function will associate the given callbacks with the + 'gnutls_privkey_t' type. At least one of the callbacks must be + non-null. If a deinitialization function is provided then flags is + assumed to contain 'GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE' . + + Note that in contrast with the signing function of + 'gnutls_privkey_import_ext3()' , the signing functions provided to + this function take explicitly the signature algorithm as parameter + and different functions are provided to sign the data and hashes. + + The 'sign_hash_fn' is to be called to sign pre-hashed data. The + input to the callback is the output of the hash (such as SHA256) + corresponding to the signature algorithm. For RSA PKCS'1' + signatures, the signature algorithm can be set to + 'GNUTLS_SIGN_RSA_RAW' , and in that case the data should be handled + as if they were an RSA PKCS'1' DigestInfo structure. + + The 'sign_data_fn' is to be called to sign data. The input data + will be he data to be signed (and hashed), with the provided + signature algorithm. This function is to be used for signature + algorithms like Ed25519 which cannot take pre-hashed data as input. + + When both 'sign_data_fn' and 'sign_hash_fn' functions are provided + they must be able to operate on all the supported signature + algorithms, unless prohibited by the type of the algorithm (e.g., + as with Ed25519). + + The 'info_fn' must provide information on the signature algorithms + supported by this private key, and should support the flags + 'GNUTLS_PRIVKEY_INFO_PK_ALGO' , + 'GNUTLS_PRIVKEY_INFO_HAVE_SIGN_ALGO' and + 'GNUTLS_PRIVKEY_INFO_PK_ALGO_BITS' . It must return -1 on unknown + flags. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.0 + +gnutls_privkey_import_gost_raw +------------------------------ + + -- Function: int gnutls_privkey_import_gost_raw (gnutls_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 key + + CURVE: holds the curve + + DIGEST: holds the digest + + PARAMSET: holds 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_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_privkey_import_openpgp +----------------------------- + + -- Function: int gnutls_privkey_import_openpgp (gnutls_privkey_t PKEY, + gnutls_openpgp_privkey_t KEY, unsigned int FLAGS) + PKEY: The private key + + KEY: The private key to be imported + + FLAGS: Flags for the import + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 2.12.0 + +gnutls_privkey_import_openpgp_raw +--------------------------------- + + -- Function: int gnutls_privkey_import_openpgp_raw (gnutls_privkey_t + PKEY, const gnutls_datum_t * DATA, gnutls_openpgp_crt_fmt_t + FORMAT, const gnutls_openpgp_keyid_t KEYID, const char * + PASSWORD) + PKEY: The private key + + DATA: The private key data to be imported + + FORMAT: The format of the private key + + KEYID: The key id to use (optional) + + PASSWORD: A password (optional) + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 3.1.0 + +gnutls_privkey_import_pkcs11 +---------------------------- + + -- Function: int gnutls_privkey_import_pkcs11 (gnutls_privkey_t PKEY, + gnutls_pkcs11_privkey_t KEY, unsigned int FLAGS) + PKEY: The private key + + KEY: The private key to be imported + + FLAGS: Flags for the import + + This function will import the given private key to the abstract + 'gnutls_privkey_t' type. + + The 'gnutls_pkcs11_privkey_t' object must not be deallocated during + the lifetime of this structure. + + 'flags' might be zero or one of + 'GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE' and + 'GNUTLS_PRIVKEY_IMPORT_COPY' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_privkey_import_pkcs11_url +-------------------------------- + + -- Function: int gnutls_privkey_import_pkcs11_url (gnutls_privkey_t + KEY, const char * URL) + KEY: A key of type 'gnutls_pubkey_t' + + URL: A PKCS 11 url + + This function will import a PKCS 11 private key to a + 'gnutls_private_key_t' type. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_privkey_import_rsa_raw +----------------------------- + + -- Function: int gnutls_privkey_import_rsa_raw (gnutls_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 structure to store the parsed key + + M: holds the modulus + + E: holds the public exponent + + D: holds the private exponent (optional) + + 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_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_privkey_import_tpm_raw +----------------------------- + + -- Function: int gnutls_privkey_import_tpm_raw (gnutls_privkey_t PKEY, + const gnutls_datum_t * FDATA, gnutls_tpmkey_fmt_t FORMAT, + const char * SRK_PASSWORD, const char * KEY_PASSWORD, unsigned + int FLAGS) + PKEY: The private key + + FDATA: The TPM key to be imported + + FORMAT: The format of the private key + + SRK_PASSWORD: The password for the SRK key (optional) + + KEY_PASSWORD: A password for the key (optional) + + FLAGS: should be zero + + This function will import the given private key to the abstract + 'gnutls_privkey_t' type. + + With respect to passwords the same as in + 'gnutls_privkey_import_tpm_url()' apply. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_privkey_import_tpm_url +----------------------------- + + -- Function: int gnutls_privkey_import_tpm_url (gnutls_privkey_t PKEY, + const char * URL, const char * SRK_PASSWORD, const char * + KEY_PASSWORD, unsigned int FLAGS) + PKEY: The private key + + URL: The URL of the TPM key to be imported + + SRK_PASSWORD: The password for the SRK key (optional) + + KEY_PASSWORD: A password for the key (optional) + + FLAGS: One of the GNUTLS_PRIVKEY_* flags + + This function will import the given private key to the abstract + 'gnutls_privkey_t' type. + + Note that unless 'GNUTLS_PRIVKEY_DISABLE_CALLBACKS' is specified, + if incorrect (or NULL) passwords are given the PKCS11 callback + functions will be used to obtain the correct passwords. Otherwise + if the SRK password is wrong 'GNUTLS_E_TPM_SRK_PASSWORD_ERROR' is + returned and if the key password is wrong or not provided then + 'GNUTLS_E_TPM_KEY_PASSWORD_ERROR' is returned. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_privkey_import_url +------------------------- + + -- Function: int gnutls_privkey_import_url (gnutls_privkey_t KEY, const + char * URL, unsigned int FLAGS) + KEY: A key of type 'gnutls_privkey_t' + + URL: A PKCS 11 url + + FLAGS: should be zero + + This function will import a PKCS11 or TPM URL as a private key. + The supported URL types can be checked using + 'gnutls_url_is_supported()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_privkey_import_x509 +-------------------------- + + -- Function: int gnutls_privkey_import_x509 (gnutls_privkey_t PKEY, + gnutls_x509_privkey_t KEY, unsigned int FLAGS) + PKEY: The private key + + KEY: The private key to be imported + + FLAGS: Flags for the import + + This function will import the given private key to the abstract + 'gnutls_privkey_t' type. + + The 'gnutls_x509_privkey_t' object must not be deallocated during + the lifetime of this structure. + + 'flags' might be zero or one of + 'GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE' and + 'GNUTLS_PRIVKEY_IMPORT_COPY' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_privkey_import_x509_raw +------------------------------ + + -- Function: int gnutls_privkey_import_x509_raw (gnutls_privkey_t PKEY, + const gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT, + const char * PASSWORD, unsigned int FLAGS) + PKEY: The private key + + DATA: The private key data to be imported + + FORMAT: The format of the private key + + PASSWORD: A password (optional) + + FLAGS: an ORed sequence of gnutls_pkcs_encrypt_flags_t + + This function will import the given private key to the abstract + 'gnutls_privkey_t' type. + + The supported formats are basic unencrypted key, PKCS8, PKCS12, + TSS2, and the openssl format. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_privkey_init +------------------- + + -- Function: int gnutls_privkey_init (gnutls_privkey_t * KEY) + KEY: A pointer to the type to be initialized + + This function will initialize a private key object. The object can + be used to generate, import, and perform cryptographic operations + on the associated private key. + + Note that when the underlying private key is a PKCS'11' key (i.e., + when imported with a PKCS'11' URI), the limitations of + 'gnutls_pkcs11_privkey_init()' apply to this object as well. In + versions of GnuTLS later than 3.5.11 the object is protected using + locks and a single 'gnutls_privkey_t' can be re-used by many + threads. However, for performance it is recommended to utilize one + object per key per thread. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_privkey_set_flags +------------------------ + + -- Function: void gnutls_privkey_set_flags (gnutls_privkey_t KEY, + unsigned int FLAGS) + KEY: A key of type 'gnutls_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_privkey_set_pin_function +------------------------------- + + -- Function: void gnutls_privkey_set_pin_function (gnutls_privkey_t + KEY, gnutls_pin_callback_t FN, void * USERDATA) + KEY: A key of type 'gnutls_privkey_t' + + FN: the callback + + USERDATA: data associated with the callback + + This function will set a callback function to be used when required + to access the object. This function overrides any other global PIN + functions. + + Note that this function must be called right after initialization + to have effect. + + *Since:* 3.1.0 + +gnutls_privkey_set_spki +----------------------- + + -- Function: int gnutls_privkey_set_spki (gnutls_privkey_t PRIVKEY, + const gnutls_x509_spki_t SPKI, unsigned int FLAGS) + PRIVKEY: a public key of type 'gnutls_privkey_t' + + SPKI: a SubjectPublicKeyInfo structure of type + 'gnutls_privkey_spki_t' + + FLAGS: must be zero + + This function will set the public key information. The provided + 'spki' must be initialized. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.0 + +gnutls_privkey_sign_data +------------------------ + + -- Function: int gnutls_privkey_sign_data (gnutls_privkey_t SIGNER, + gnutls_digest_algorithm_t HASH, unsigned int FLAGS, const + gnutls_datum_t * DATA, gnutls_datum_t * SIGNATURE) + SIGNER: Holds the key + + HASH: should be a digest algorithm + + FLAGS: Zero or one of 'gnutls_privkey_flags_t' + + DATA: holds the data to be signed + + SIGNATURE: will contain the signature allocated with + 'gnutls_malloc()' + + 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 the SHA family for the DSA + keys. + + You may use 'gnutls_pubkey_get_preferred_hash_algorithm()' to + determine the hash algorithm. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_privkey_sign_data2 +------------------------- + + -- Function: int gnutls_privkey_sign_data2 (gnutls_privkey_t SIGNER, + gnutls_sign_algorithm_t ALGO, unsigned int FLAGS, const + gnutls_datum_t * DATA, gnutls_datum_t * SIGNATURE) + SIGNER: Holds the key + + ALGO: The signature algorithm used + + FLAGS: Zero or one of 'gnutls_privkey_flags_t' + + DATA: holds the data to be signed + + SIGNATURE: will contain the signature allocated with + 'gnutls_malloc()' + + This function will sign the given data using the specified + signature algorithm. This function is an enhancement of + 'gnutls_privkey_sign_data()' , as it allows utilizing a alternative + signature algorithm where possible (e.g, use an RSA key with + RSA-PSS). + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.0 + +gnutls_privkey_sign_hash +------------------------ + + -- Function: int gnutls_privkey_sign_hash (gnutls_privkey_t SIGNER, + gnutls_digest_algorithm_t HASH_ALGO, unsigned int FLAGS, const + gnutls_datum_t * HASH_DATA, gnutls_datum_t * SIGNATURE) + SIGNER: Holds the signer's key + + HASH_ALGO: The hash algorithm used + + FLAGS: Zero or one of 'gnutls_privkey_flags_t' + + HASH_DATA: holds the data to be signed + + SIGNATURE: will contain newly allocated signature + + This function will sign the given hashed 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-XXX for + the DSA keys. + + You may use 'gnutls_pubkey_get_preferred_hash_algorithm()' to + determine the hash algorithm. + + The flags may be 'GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA' or + 'GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS' . In the former case this + function will ignore 'hash_algo' and perform a raw PKCS1 signature, + and in the latter an RSA-PSS signature will be generated. + + Note that, not all algorithm support signing already hashed data. + When signing with Ed25519, 'gnutls_privkey_sign_data()' should be + used. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_privkey_sign_hash2 +------------------------- + + -- Function: int gnutls_privkey_sign_hash2 (gnutls_privkey_t SIGNER, + gnutls_sign_algorithm_t ALGO, unsigned int FLAGS, const + gnutls_datum_t * HASH_DATA, gnutls_datum_t * SIGNATURE) + SIGNER: Holds the signer's key + + ALGO: The signature algorithm used + + FLAGS: Zero or one of 'gnutls_privkey_flags_t' + + HASH_DATA: holds the data to be signed + + SIGNATURE: will contain newly allocated signature + + This function will sign the given hashed data using the specified + signature algorithm. This function is an enhancement of + 'gnutls_privkey_sign_hash()' , as it allows utilizing a alternative + signature algorithm where possible (e.g, use an RSA key with + RSA-PSS). + + The flags may be 'GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA' . In that + case this function will ignore 'hash_algo' and perform a raw PKCS1 + signature. Note that this flag is supported since 3.6.9. + + Note also that, not all algorithm support signing already hashed + data. When signing with Ed25519, 'gnutls_privkey_sign_data2()' + should be used instead. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.0 + +gnutls_privkey_status +--------------------- + + -- Function: int gnutls_privkey_status (gnutls_privkey_t KEY) + KEY: Holds the key + + Checks the status of the private key token. This function is an + actual wrapper over 'gnutls_pkcs11_privkey_status()' , and if the + private key is a PKCS '11' token it will check whether it is + inserted or not. + + *Returns:* this function will return non-zero if the token holding + the private key is still available (inserted), and zero otherwise. + + *Since:* 3.1.10 + +gnutls_privkey_verify_params +---------------------------- + + -- Function: int gnutls_privkey_verify_params (gnutls_privkey_t KEY) + KEY: should contain a 'gnutls_privkey_t' type + + This function will verify the private key parameters. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.3.0 + +gnutls_privkey_verify_seed +-------------------------- + + -- Function: int gnutls_privkey_verify_seed (gnutls_privkey_t KEY, + gnutls_digest_algorithm_t DIGEST, const void * SEED, size_t + SEED_SIZE) + KEY: should contain a 'gnutls_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. + + *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_pubkey_deinit +-------------------- + + -- Function: void gnutls_pubkey_deinit (gnutls_pubkey_t KEY) + KEY: The key to be deinitialized + + This function will deinitialize a public key structure. + + *Since:* 2.12.0 + +gnutls_pubkey_encrypt_data +-------------------------- + + -- Function: int gnutls_pubkey_encrypt_data (gnutls_pubkey_t KEY, + unsigned int FLAGS, const gnutls_datum_t * PLAINTEXT, + gnutls_datum_t * CIPHERTEXT) + KEY: Holds the public key + + FLAGS: should be 0 for now + + PLAINTEXT: The data to be encrypted + + CIPHERTEXT: contains the encrypted data + + This function will encrypt the given data, using the public key. + On success the 'ciphertext' will be allocated using + 'gnutls_malloc()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.0 + +gnutls_pubkey_export +-------------------- + + -- Function: int gnutls_pubkey_export (gnutls_pubkey_t KEY, + gnutls_x509_crt_fmt_t FORMAT, void * OUTPUT_DATA, size_t * + OUTPUT_DATA_SIZE) + KEY: 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 public key to DER or PEM format. The + contents of the exported data is the SubjectPublicKeyInfo X.509 + structure. + + 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. + + *Since:* 2.12.0 + +gnutls_pubkey_export2 +--------------------- + + -- Function: int gnutls_pubkey_export2 (gnutls_pubkey_t KEY, + gnutls_x509_crt_fmt_t FORMAT, gnutls_datum_t * OUT) + KEY: 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 public key to DER or PEM format. The + contents of the exported data is the SubjectPublicKeyInfo X.509 + structure. + + The output buffer will be 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_pubkey_export_dsa_raw +---------------------------- + + -- Function: int gnutls_pubkey_export_dsa_raw (gnutls_pubkey_t KEY, + gnutls_datum_t * P, gnutls_datum_t * Q, gnutls_datum_t * G, + gnutls_datum_t * Y) + KEY: Holds the public key + + P: will hold the p (may be 'NULL' ) + + Q: will hold the q (may be 'NULL' ) + + G: will hold the g (may be 'NULL' ) + + Y: will hold the y (may be 'NULL' ) + + 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. + + This function allows for 'NULL' parameters since 3.4.1. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.3.0 + +gnutls_pubkey_export_dsa_raw2 +----------------------------- + + -- Function: int gnutls_pubkey_export_dsa_raw2 (gnutls_pubkey_t KEY, + gnutls_datum_t * P, gnutls_datum_t * Q, gnutls_datum_t * G, + gnutls_datum_t * Y, unsigned FLAGS) + KEY: Holds the public key + + P: will hold the p (may be 'NULL' ) + + Q: will hold the q (may be 'NULL' ) + + G: will hold the g (may be 'NULL' ) + + Y: will hold the y (may be 'NULL' ) + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + 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. + + This function allows for 'NULL' parameters since 3.4.1. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.0 + +gnutls_pubkey_export_ecc_raw +---------------------------- + + -- Function: int gnutls_pubkey_export_ecc_raw (gnutls_pubkey_t KEY, + gnutls_ecc_curve_t * CURVE, gnutls_datum_t * X, gnutls_datum_t + * Y) + KEY: Holds the public key + + CURVE: will hold the curve (may be 'NULL' ) + + X: will hold x-coordinate (may be 'NULL' ) + + Y: will hold y-coordinate (may be 'NULL' ) + + This function will export the ECC public key's parameters found in + the given key. 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. + + This function allows for 'NULL' parameters since 3.4.1. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.0 + +gnutls_pubkey_export_ecc_raw2 +----------------------------- + + -- Function: int gnutls_pubkey_export_ecc_raw2 (gnutls_pubkey_t KEY, + gnutls_ecc_curve_t * CURVE, gnutls_datum_t * X, gnutls_datum_t + * Y, unsigned int FLAGS) + KEY: Holds the public key + + CURVE: will hold the curve (may be 'NULL' ) + + X: will hold x-coordinate (may be 'NULL' ) + + Y: will hold y-coordinate (may be 'NULL' ) + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + This function will export the ECC public key's parameters found in + the given key. 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. + + This function allows for 'NULL' parameters since 3.4.1. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.0 + +gnutls_pubkey_export_ecc_x962 +----------------------------- + + -- Function: int gnutls_pubkey_export_ecc_x962 (gnutls_pubkey_t KEY, + gnutls_datum_t * PARAMETERS, gnutls_datum_t * ECPOINT) + KEY: Holds the public key + + PARAMETERS: DER encoding of an ANSI X9.62 parameters + + ECPOINT: DER encoding of ANSI X9.62 ECPoint + + 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. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.3.0 + +gnutls_pubkey_export_gost_raw2 +------------------------------ + + -- Function: int gnutls_pubkey_export_gost_raw2 (gnutls_pubkey_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, unsigned int FLAGS) + KEY: Holds the public key + + CURVE: will hold the curve (may be 'NULL' ) + + DIGEST: will hold the curve (may be 'NULL' ) + + PARAMSET: will hold the parameters id (may be 'NULL' ) + + X: will hold the x-coordinate (may be 'NULL' ) + + Y: will hold the y-coordinate (may be 'NULL' ) + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + This function will export the GOST public key's parameters found in + the given key. 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:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.3 + +gnutls_pubkey_export_rsa_raw +---------------------------- + + -- Function: int gnutls_pubkey_export_rsa_raw (gnutls_pubkey_t KEY, + gnutls_datum_t * M, gnutls_datum_t * E) + KEY: Holds the certificate + + M: will hold the modulus (may be 'NULL' ) + + E: will hold the public exponent (may be 'NULL' ) + + 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. + + This function allows for 'NULL' parameters since 3.4.1. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.3.0 + +gnutls_pubkey_export_rsa_raw2 +----------------------------- + + -- Function: int gnutls_pubkey_export_rsa_raw2 (gnutls_pubkey_t KEY, + gnutls_datum_t * M, gnutls_datum_t * E, unsigned FLAGS) + KEY: Holds the certificate + + M: will hold the modulus (may be 'NULL' ) + + E: will hold the public exponent (may be 'NULL' ) + + FLAGS: flags from 'gnutls_abstract_export_flags_t' + + 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. + + This function allows for 'NULL' parameters since 3.4.1. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.6.0 + +gnutls_pubkey_get_key_id +------------------------ + + -- Function: int gnutls_pubkey_get_key_id (gnutls_pubkey_t KEY, + unsigned int FLAGS, unsigned char * OUTPUT_DATA, size_t * + OUTPUT_DATA_SIZE) + KEY: Holds the public 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 public 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.12.0 + +gnutls_pubkey_get_key_usage +--------------------------- + + -- Function: int gnutls_pubkey_get_key_usage (gnutls_pubkey_t KEY, + unsigned int * USAGE) + KEY: should contain a 'gnutls_pubkey_t' type + + USAGE: If set will return the number of bits of the parameters (may + be NULL) + + This function will return the key usage of the public key. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_get_openpgp_key_id +-------------------------------- + + -- Function: int gnutls_pubkey_get_openpgp_key_id (gnutls_pubkey_t KEY, + unsigned int FLAGS, unsigned char * OUTPUT_DATA, size_t * + OUTPUT_DATA_SIZE, unsigned int * SUBKEY) + KEY: Holds the public 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) + + SUBKEY: ignored + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 2.12.0 + +gnutls_pubkey_get_pk_algorithm +------------------------------ + + -- Function: int gnutls_pubkey_get_pk_algorithm (gnutls_pubkey_t KEY, + unsigned int * BITS) + KEY: should contain a 'gnutls_pubkey_t' type + + BITS: If set will return the number of bits of the parameters (may + be NULL) + + This function will return the public key algorithm of a public key + and if possible will return a number of bits that indicates the + security parameter of the key. + + *Returns:* a member of the 'gnutls_pk_algorithm_t' enumeration on + success, or a negative error code on error. + + *Since:* 2.12.0 + +gnutls_pubkey_get_preferred_hash_algorithm +------------------------------------------ + + -- Function: int gnutls_pubkey_get_preferred_hash_algorithm + (gnutls_pubkey_t KEY, gnutls_digest_algorithm_t * HASH, + unsigned int * MAND) + KEY: Holds the certificate + + HASH: The result of the call with the hash algorithm used for + signature + + MAND: If non zero it means that the algorithm MUST use this hash. + May be NULL. + + This function will read the certificate and return the appropriate + digest algorithm to use for signing with this certificate. Some + certificates (i.e. DSA might not be able to sign without the + preferred algorithm). + + To get the signature algorithm instead of just the hash use + 'gnutls_pk_to_sign()' with the algorithm of the certificate/key and + the provided 'hash' . + + *Returns:* the 0 if the hash algorithm is found. A negative error + code is returned on error. + + *Since:* 2.12.0 + +gnutls_pubkey_get_spki +---------------------- + + -- Function: int gnutls_pubkey_get_spki (gnutls_pubkey_t PUBKEY, + gnutls_x509_spki_t SPKI, unsigned int FLAGS) + PUBKEY: a public key of type 'gnutls_pubkey_t' + + SPKI: a SubjectPublicKeyInfo structure of type + 'gnutls_pubkey_spki_t' + + FLAGS: must be zero + + This function will return the public key information if available. + The provided 'spki' must be initialized. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.0 + +gnutls_pubkey_import +-------------------- + + -- Function: int gnutls_pubkey_import (gnutls_pubkey_t KEY, const + gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT) + KEY: The public key. + + DATA: The DER or PEM encoded certificate. + + FORMAT: One of DER or PEM + + This function will import the provided public key in a + SubjectPublicKeyInfo X.509 structure to a native 'gnutls_pubkey_t' + type. The output will be stored in 'key' . If the public key is + PEM encoded it should have a header of "PUBLIC KEY". + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_import_dsa_raw +---------------------------- + + -- Function: int gnutls_pubkey_import_dsa_raw (gnutls_pubkey_t KEY, + const gnutls_datum_t * P, const gnutls_datum_t * Q, const + gnutls_datum_t * G, const gnutls_datum_t * Y) + KEY: The structure to store the parsed key + + P: holds the p + + Q: holds the q + + G: holds the g + + Y: holds the y + + This function will convert the given DSA raw parameters to the + native 'gnutls_pubkey_t' format. The output will be stored in + 'key' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_import_ecc_raw +---------------------------- + + -- Function: int gnutls_pubkey_import_ecc_raw (gnutls_pubkey_t KEY, + gnutls_ecc_curve_t CURVE, const gnutls_datum_t * X, const + gnutls_datum_t * Y) + KEY: The structure to store the parsed key + + CURVE: holds the curve + + X: holds the x-coordinate + + Y: holds the y-coordinate + + This function will convert the given elliptic curve parameters to a + 'gnutls_pubkey_t' . The output will be stored in 'key' . + + In EdDSA curves the 'y' parameter should be 'NULL' and the 'x' + parameter must be the value 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_pubkey_import_ecc_x962 +----------------------------- + + -- Function: int gnutls_pubkey_import_ecc_x962 (gnutls_pubkey_t KEY, + const gnutls_datum_t * PARAMETERS, const gnutls_datum_t * + ECPOINT) + KEY: The structure to store the parsed key + + PARAMETERS: DER encoding of an ANSI X9.62 parameters + + ECPOINT: DER encoding of ANSI X9.62 ECPoint + + This function will convert the given elliptic curve parameters to a + 'gnutls_pubkey_t' . The output will be stored in 'key' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.0 + +gnutls_pubkey_import_gost_raw +----------------------------- + + -- Function: int gnutls_pubkey_import_gost_raw (gnutls_pubkey_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) + KEY: The structure to store the parsed key + + CURVE: holds the curve + + DIGEST: holds the digest + + PARAMSET: holds the parameters id + + X: holds the x-coordinate + + Y: holds the y-coordinate + + This function will convert the given GOST public key's parameters + to a 'gnutls_pubkey_t' . 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_pubkey_import_openpgp +---------------------------- + + -- Function: int gnutls_pubkey_import_openpgp (gnutls_pubkey_t KEY, + gnutls_openpgp_crt_t CRT, unsigned int FLAGS) + KEY: The public key + + CRT: The certificate to be imported + + FLAGS: should be zero + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 2.12.0 + +gnutls_pubkey_import_openpgp_raw +-------------------------------- + + -- Function: int gnutls_pubkey_import_openpgp_raw (gnutls_pubkey_t + PKEY, const gnutls_datum_t * DATA, gnutls_openpgp_crt_fmt_t + FORMAT, const gnutls_openpgp_keyid_t KEYID, unsigned int + FLAGS) + PKEY: The public key + + DATA: The public key data to be imported + + FORMAT: The format of the public key + + KEYID: The key id to use (optional) + + FLAGS: Should be zero + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + + *Since:* 3.1.3 + +gnutls_pubkey_import_pkcs11 +--------------------------- + + -- Function: int gnutls_pubkey_import_pkcs11 (gnutls_pubkey_t KEY, + gnutls_pkcs11_obj_t OBJ, unsigned int FLAGS) + KEY: The public key + + OBJ: The parameters to be imported + + FLAGS: should be zero + + Imports a public key from a pkcs11 key. This function will import + the given public key to the abstract 'gnutls_pubkey_t' type. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_import_privkey +---------------------------- + + -- Function: int gnutls_pubkey_import_privkey (gnutls_pubkey_t KEY, + gnutls_privkey_t PKEY, unsigned int USAGE, unsigned int FLAGS) + KEY: The public key + + PKEY: The private key + + USAGE: GNUTLS_KEY_* key usage flags. + + FLAGS: should be zero + + Imports the public key from a private. This function will import + the given public key to the abstract 'gnutls_pubkey_t' type. + + Note that in certain keys this operation may not be possible, e.g., + in other than RSA PKCS'11' keys. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_import_rsa_raw +---------------------------- + + -- Function: int gnutls_pubkey_import_rsa_raw (gnutls_pubkey_t KEY, + const gnutls_datum_t * M, const gnutls_datum_t * E) + KEY: The key + + M: holds the modulus + + E: holds the public exponent + + This function will replace the parameters in the given structure. + The new parameters should be stored in the appropriate + gnutls_datum. + + *Returns:* 'GNUTLS_E_SUCCESS' on success, or an negative error + code. + + *Since:* 2.12.0 + +gnutls_pubkey_import_tpm_raw +---------------------------- + + -- Function: int gnutls_pubkey_import_tpm_raw (gnutls_pubkey_t PKEY, + const gnutls_datum_t * FDATA, gnutls_tpmkey_fmt_t FORMAT, + const char * SRK_PASSWORD, unsigned int FLAGS) + PKEY: The public key + + FDATA: The TPM key to be imported + + FORMAT: The format of the private key + + SRK_PASSWORD: The password for the SRK key (optional) + + FLAGS: One of the GNUTLS_PUBKEY_* flags + + This function will import the public key from the provided TPM key + structure. + + With respect to passwords the same as in + 'gnutls_pubkey_import_tpm_url()' apply. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_pubkey_import_tpm_url +---------------------------- + + -- Function: int gnutls_pubkey_import_tpm_url (gnutls_pubkey_t PKEY, + const char * URL, const char * SRK_PASSWORD, unsigned int + FLAGS) + PKEY: The public key + + URL: The URL of the TPM key to be imported + + SRK_PASSWORD: The password for the SRK key (optional) + + FLAGS: should be zero + + This function will import the given private key to the abstract + 'gnutls_privkey_t' type. + + Note that unless 'GNUTLS_PUBKEY_DISABLE_CALLBACKS' is specified, if + incorrect (or NULL) passwords are given the PKCS11 callback + functions will be used to obtain the correct passwords. Otherwise + if the SRK password is wrong 'GNUTLS_E_TPM_SRK_PASSWORD_ERROR' is + returned. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_pubkey_import_url +------------------------ + + -- Function: int gnutls_pubkey_import_url (gnutls_pubkey_t KEY, const + char * URL, unsigned int FLAGS) + KEY: A key of type 'gnutls_pubkey_t' + + URL: A PKCS 11 url + + FLAGS: One of GNUTLS_PKCS11_OBJ_* flags + + This function will import a public key from the provided URL. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.0 + +gnutls_pubkey_import_x509 +------------------------- + + -- Function: int gnutls_pubkey_import_x509 (gnutls_pubkey_t KEY, + gnutls_x509_crt_t CRT, unsigned int FLAGS) + KEY: The public key + + CRT: The certificate to be imported + + FLAGS: should be zero + + This function will import the given public key to the abstract + 'gnutls_pubkey_t' type. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_import_x509_crq +----------------------------- + + -- Function: int gnutls_pubkey_import_x509_crq (gnutls_pubkey_t KEY, + gnutls_x509_crq_t CRQ, unsigned int FLAGS) + KEY: The public key + + CRQ: The certificate to be imported + + FLAGS: should be zero + + This function will import the given public key to the abstract + 'gnutls_pubkey_t' type. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.5 + +gnutls_pubkey_import_x509_raw +----------------------------- + + -- Function: int gnutls_pubkey_import_x509_raw (gnutls_pubkey_t PKEY, + const gnutls_datum_t * DATA, gnutls_x509_crt_fmt_t FORMAT, + unsigned int FLAGS) + PKEY: The public key + + DATA: The public key data to be imported + + FORMAT: The format of the public key + + FLAGS: should be zero + + This function will import the given public key to the abstract + 'gnutls_pubkey_t' type. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.1.3 + +gnutls_pubkey_init +------------------ + + -- Function: int gnutls_pubkey_init (gnutls_pubkey_t * KEY) + KEY: A pointer to the type to be initialized + + This function will initialize a public key. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_print +------------------- + + -- Function: int gnutls_pubkey_print (gnutls_pubkey_t PUBKEY, + gnutls_certificate_print_formats_t FORMAT, gnutls_datum_t * + OUT) + PUBKEY: The data to be printed + + FORMAT: Indicate the format to use + + OUT: Newly allocated datum with null terminated string. + + This function will pretty print public key information, suitable + for display to a human. + + Only 'GNUTLS_CRT_PRINT_FULL' and 'GNUTLS_CRT_PRINT_FULL_NUMBERS' + are implemented. + + 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:* 3.1.5 + +gnutls_pubkey_set_key_usage +--------------------------- + + -- Function: int gnutls_pubkey_set_key_usage (gnutls_pubkey_t KEY, + unsigned int USAGE) + KEY: a certificate of type 'gnutls_x509_crt_t' + + USAGE: an ORed sequence of the GNUTLS_KEY_* elements. + + This function will set the key usage flags of the public key. This + is only useful if the key is to be exported to a certificate or + certificate request. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_pubkey_set_pin_function +------------------------------ + + -- Function: void gnutls_pubkey_set_pin_function (gnutls_pubkey_t KEY, + gnutls_pin_callback_t FN, void * USERDATA) + KEY: A key of type 'gnutls_pubkey_t' + + FN: the callback + + USERDATA: data associated with the callback + + This function will set a callback function to be used when required + to access the object. This function overrides any other global PIN + functions. + + Note that this function must be called right after initialization + to have effect. + + *Since:* 3.1.0 + +gnutls_pubkey_set_spki +---------------------- + + -- Function: int gnutls_pubkey_set_spki (gnutls_pubkey_t PUBKEY, const + gnutls_x509_spki_t SPKI, unsigned int FLAGS) + PUBKEY: a public key of type 'gnutls_pubkey_t' + + SPKI: a SubjectPublicKeyInfo structure of type + 'gnutls_pubkey_spki_t' + + FLAGS: must be zero + + This function will set the public key information. The provided + 'spki' must be initialized. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.6.0 + +gnutls_pubkey_verify_data2 +-------------------------- + + -- Function: int gnutls_pubkey_verify_data2 (gnutls_pubkey_t PUBKEY, + gnutls_sign_algorithm_t ALGO, unsigned int FLAGS, const + gnutls_datum_t * DATA, const gnutls_datum_t * SIGNATURE) + PUBKEY: Holds the public key + + 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, and zero or positive + code on success. For known to be insecure signatures this function + will return 'GNUTLS_E_INSUFFICIENT_SECURITY' unless the flag + 'GNUTLS_VERIFY_ALLOW_BROKEN' is specified. + + *Since:* 3.0 + +gnutls_pubkey_verify_hash2 +-------------------------- + + -- Function: int gnutls_pubkey_verify_hash2 (gnutls_pubkey_t KEY, + gnutls_sign_algorithm_t ALGO, unsigned int FLAGS, const + gnutls_datum_t * HASH, const gnutls_datum_t * SIGNATURE) + KEY: Holds the public key + + ALGO: The signature algorithm used + + FLAGS: Zero or an OR list of 'gnutls_certificate_verify_flags' + + HASH: holds the hash digest to be verified + + SIGNATURE: contains the signature + + This function will verify the given signed digest, using the + parameters from the public key. Note that unlike + 'gnutls_privkey_sign_hash()' , this function accepts a signature + algorithm instead of a digest algorithm. You can use + 'gnutls_pk_to_sign()' to get the appropriate value. + + *Returns:* In case of a verification failure + 'GNUTLS_E_PK_SIG_VERIFY_FAILED' is returned, and zero or positive + code on success. For known to be insecure signatures this function + will return 'GNUTLS_E_INSUFFICIENT_SECURITY' unless the flag + 'GNUTLS_VERIFY_ALLOW_BROKEN' is specified. + + *Since:* 3.0 + +gnutls_pubkey_verify_params +--------------------------- + + -- Function: int gnutls_pubkey_verify_params (gnutls_pubkey_t KEY) + KEY: should contain a 'gnutls_pubkey_t' type + + This function will verify the public key parameters. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.3.0 + +gnutls_register_custom_url +-------------------------- + + -- Function: int gnutls_register_custom_url (const gnutls_custom_url_st + * ST) + ST: A 'gnutls_custom_url_st' structure + + Register a custom URL. This will affect the following functions: + 'gnutls_url_is_supported()' , 'gnutls_privkey_import_url()' , + gnutls_pubkey_import_url, 'gnutls_x509_crt_import_url()' and all + functions that depend on them, e.g., + 'gnutls_certificate_set_x509_key_file2()' . + + The provided structure and callback functions must be valid + throughout the lifetime of the process. The registration of an + existing URL type will fail with 'GNUTLS_E_INVALID_REQUEST' . + Since GnuTLS 3.5.0 this function can be used to override the + builtin URLs. + + This function is not thread safe. + + *Returns:* returns zero if the given structure was imported or a + negative value otherwise. + + *Since:* 3.4.0 + +gnutls_system_key_add_x509 +-------------------------- + + -- Function: int gnutls_system_key_add_x509 (gnutls_x509_crt_t CRT, + gnutls_x509_privkey_t PRIVKEY, const char * LABEL, char ** + CERT_URL, char ** KEY_URL) + CRT: the certificate to be added + + PRIVKEY: the key to be added + + LABEL: the friendly name to describe the key + + CERT_URL: if non-NULL it will contain an allocated value with the + certificate URL + + KEY_URL: if non-NULL it will contain an allocated value with the + key URL + + This function will added the given key and certificate pair, to the + system list. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_system_key_delete +------------------------ + + -- Function: int gnutls_system_key_delete (const char * CERT_URL, const + char * KEY_URL) + CERT_URL: the URL of the certificate + + KEY_URL: the URL of the key + + This function will delete the key and certificate pair. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_system_key_iter_deinit +----------------------------- + + -- Function: void gnutls_system_key_iter_deinit + (gnutls_system_key_iter_t ITER) + ITER: an iterator of system keys + + This function will deinitialize the iterator. + + *Since:* 3.4.0 + +gnutls_system_key_iter_get_info +------------------------------- + + -- Function: int gnutls_system_key_iter_get_info + (gnutls_system_key_iter_t * ITER, unsigned CERT_TYPE, char ** + CERT_URL, char ** KEY_URL, char ** LABEL, gnutls_datum_t * + DER, unsigned int FLAGS) + ITER: an iterator of the system keys (must be set to 'NULL' + initially) + + CERT_TYPE: A value of gnutls_certificate_type_t which indicates the + type of certificate to look for + + CERT_URL: The certificate URL of the pair (may be 'NULL' ) + + KEY_URL: The key URL of the pair (may be 'NULL' ) + + LABEL: The friendly name (if any) of the pair (may be 'NULL' ) + + DER: if non-NULL the DER data of the certificate + + FLAGS: should be zero + + This function will return on each call a certificate and key pair + URLs, as well as a label associated with them, and the DER-encoded + certificate. When the iteration is complete it will return + 'GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE' . + + Typically 'cert_type' should be 'GNUTLS_CRT_X509' . + + All values set are allocated and must be cleared using + 'gnutls_free()' , + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 3.4.0 + +gnutls_x509_crl_privkey_sign +---------------------------- + + -- Function: int gnutls_x509_crl_privkey_sign (gnutls_x509_crl_t CRL, + gnutls_x509_crt_t ISSUER, gnutls_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. + + Since 2.12.0 + +gnutls_x509_crq_privkey_sign +---------------------------- + + -- Function: int gnutls_x509_crq_privkey_sign (gnutls_x509_crq_t CRQ, + gnutls_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_SHA1' + + 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()' ). + + *Since:* 2.12.0 + +gnutls_x509_crq_set_pubkey +-------------------------- + + -- Function: int gnutls_x509_crq_set_pubkey (gnutls_x509_crq_t CRQ, + gnutls_pubkey_t KEY) + CRQ: should contain a 'gnutls_x509_crq_t' type + + KEY: holds a public key + + This function will set the public parameters from the given public + key to the request. The 'key' can be deallocated after that. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + +gnutls_x509_crt_privkey_sign +---------------------------- + + -- Function: int gnutls_x509_crt_privkey_sign (gnutls_x509_crt_t CRT, + gnutls_x509_crt_t ISSUER, gnutls_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_set_pubkey +-------------------------- + + -- Function: int gnutls_x509_crt_set_pubkey (gnutls_x509_crt_t CRT, + gnutls_pubkey_t KEY) + CRT: should contain a 'gnutls_x509_crt_t' type + + KEY: holds a public key + + This function will set the public parameters from the given public + key to the certificate. The 'key' can be deallocated after that. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + *Since:* 2.12.0 + + +File: gnutls.info, Node: Socket specific API, Next: DANE API, Prev: Abstract key API, Up: API reference + +E.10 Socket specific API +======================== + +The prototypes for the following functions lie in 'gnutls/socket.h'. + +gnutls_transport_is_ktls_enabled +-------------------------------- + + -- Function: gnutls_transport_ktls_enable_flags_t + gnutls_transport_is_ktls_enabled (gnutls_session_t SESSION) + SESSION: is a 'gnutls_session_t' type. + + Checks if KTLS is now enabled and was properly inicialized. + + *Returns:* 'GNUTLS_KTLS_RECV' , 'GNUTLS_KTLS_SEND' , + 'GNUTLS_KTLS_DUPLEX' , otherwise 0 + + *Since:* 3.7.3 + +gnutls_transport_set_fastopen +----------------------------- + + -- Function: void gnutls_transport_set_fastopen (gnutls_session_t + SESSION, int FD, struct sockaddr * CONNECT_ADDR, socklen_t + CONNECT_ADDRLEN, unsigned int FLAGS) + SESSION: is a 'gnutls_session_t' type. + + FD: is the session's socket descriptor + + CONNECT_ADDR: is the address we want to connect to + + CONNECT_ADDRLEN: is the length of 'connect_addr' + + FLAGS: must be zero + + Enables TCP Fast Open (TFO) for the specified TLS client session. + That means that TCP connection establishment and the transmission + of the first TLS client hello packet are combined. The peer's + address must be specified in 'connect_addr' and 'connect_addrlen' , + and the socket specified by 'fd' should not be connected. + + TFO only works for TCP sockets of type AF_INET and AF_INET6. If + the OS doesn't support TCP fast open this function will result to + gnutls using 'connect()' transparently during the first write. + + *Note:* This function overrides all the transport callback + functions. If this is undesirable, TCP Fast Open must be + implemented on the user callback functions without calling this + function. When using this function, transport callbacks must not + be set, and 'gnutls_transport_set_ptr()' or + 'gnutls_transport_set_int()' must not be called. + + On GNU/Linux TFO has to be enabled at the system layer, that is in + /proc/sys/net/ipv4/tcp_fastopen, bit 0 has to be set. + + This function has no effect on server sessions. + + *Since:* 3.5.3 + + +File: gnutls.info, Node: DANE API, Next: Cryptographic API, Prev: Socket specific API, Up: API reference + +E.11 DANE API +============= + +The following functions are to be used for DANE certificate +verification. Their prototypes lie in 'gnutls/dane.h'. Note that you +need to link with the 'libgnutls-dane' library to use them. + +dane_cert_type_name +------------------- + + -- Function: const char * dane_cert_type_name (dane_cert_type_t TYPE) + TYPE: is a DANE match type + + Convert a 'dane_cert_type_t' value to a string. + + *Returns:* a string that contains the name of the specified type, + or 'NULL' . + +dane_cert_usage_name +-------------------- + + -- Function: const char * dane_cert_usage_name (dane_cert_usage_t + USAGE) + USAGE: is a DANE certificate usage + + Convert a 'dane_cert_usage_t' value to a string. + + *Returns:* a string that contains the name of the specified type, + or 'NULL' . + +dane_match_type_name +-------------------- + + -- Function: const char * dane_match_type_name (dane_match_type_t TYPE) + TYPE: is a DANE match type + + Convert a 'dane_match_type_t' value to a string. + + *Returns:* a string that contains the name of the specified type, + or 'NULL' . + +dane_query_data +--------------- + + -- Function: int dane_query_data (dane_query_t Q, unsigned int IDX, + unsigned int * USAGE, unsigned int * TYPE, unsigned int * + MATCH, gnutls_datum_t * DATA) + Q: The query result structure + + IDX: The index of the query response. + + USAGE: The certificate usage (see 'dane_cert_usage_t' ) + + TYPE: The certificate type (see 'dane_cert_type_t' ) + + MATCH: The DANE matching type (see 'dane_match_type_t' ) + + DATA: The DANE data. + + This function will provide the DANE data from the query response. + + *Returns:* On success, 'DANE_E_SUCCESS' (0) is returned, otherwise + a negative error value. + +dane_query_deinit +----------------- + + -- Function: void dane_query_deinit (dane_query_t Q) + Q: The structure to be deinitialized + + This function will deinitialize a DANE query result structure. + +dane_query_entries +------------------ + + -- Function: unsigned int dane_query_entries (dane_query_t Q) + Q: The query result structure + + This function will return the number of entries in a query. + + *Returns:* The number of entries. + +dane_query_status +----------------- + + -- Function: dane_query_status_t dane_query_status (dane_query_t Q) + Q: The query result structure + + This function will return the status of the query response. See + 'dane_query_status_t' for the possible types. + + *Returns:* The status type. + +dane_query_tlsa +--------------- + + -- Function: int dane_query_tlsa (dane_state_t S, dane_query_t * R, + const char * HOST, const char * PROTO, unsigned int PORT) + S: The DANE state structure + + R: A structure to place the result + + HOST: The host name to resolve. + + PROTO: The protocol type (tcp, udp, etc.) + + PORT: The service port number (eg. 443). + + This function will query the DNS server for the TLSA (DANE) data + for the given host. + + *Returns:* On success, 'DANE_E_SUCCESS' (0) is returned, otherwise + a negative error value. + +dane_query_to_raw_tlsa +---------------------- + + -- Function: int dane_query_to_raw_tlsa (dane_query_t Q, unsigned int * + DATA_ENTRIES, char *** DANE_DATA, int ** DANE_DATA_LEN, int * + SECURE, int * BOGUS) + Q: The query result structure + + DATA_ENTRIES: Pointer set to the number of entries in the query + + DANE_DATA: Pointer to contain an array of DNS rdata items, + terminated with a NULL pointer; caller must guarantee that the + referenced data remains valid until 'dane_query_deinit()' is + called. + + DANE_DATA_LEN: Pointer to contain the length n bytes of the + dane_data items + + SECURE: Pointer set true if the result is validated securely, false + if validation failed or the domain queried has no security info + + BOGUS: Pointer set true if the result was not secure due to a + security failure + + This function will provide the DANE data from the query response. + + The pointers dane_data and dane_data_len are allocated with + 'gnutls_malloc()' to contain the data from the query result + structure (individual 'dane_data' items simply point to the + original data and are not allocated separately). The returned + 'dane_data' are only valid during the lifetime of 'q' . + + *Returns:* On success, 'DANE_E_SUCCESS' (0) is returned, otherwise + a negative error value. + +dane_raw_tlsa +------------- + + -- Function: int dane_raw_tlsa (dane_state_t S, dane_query_t * R, char + *const * DANE_DATA, const int * DANE_DATA_LEN, int SECURE, int + BOGUS) + S: The DANE state structure + + R: A structure to place the result + + DANE_DATA: array of DNS rdata items, terminated with a NULL + pointer; caller must guarantee that the referenced data remains + valid until 'dane_query_deinit()' is called. + + DANE_DATA_LEN: the length n bytes of the dane_data items + + SECURE: true if the result is validated securely, false if + validation failed or the domain queried has no security info + + BOGUS: if the result was not secure (secure = 0) due to a security + failure, and the result is due to a security failure, bogus is + true. + + This function will fill in the TLSA (DANE) structure from the given + raw DNS record data. The 'dane_data' must be valid during the + lifetime of the query. + + *Returns:* On success, 'DANE_E_SUCCESS' (0) is returned, otherwise + a negative error value. + +dane_state_deinit +----------------- + + -- Function: void dane_state_deinit (dane_state_t S) + S: The structure to be deinitialized + + This function will deinitialize a DANE query structure. + +dane_state_init +--------------- + + -- Function: int dane_state_init (dane_state_t * S, unsigned int FLAGS) + S: The structure to be initialized + + FLAGS: flags from the 'dane_state_flags' enumeration + + This function will initialize the backend resolver. It is intended + to be used in scenarios where multiple resolvings occur, to + optimize against multiple re-initializations. + + *Returns:* On success, 'DANE_E_SUCCESS' (0) is returned, otherwise + a negative error value. + +dane_state_set_dlv_file +----------------------- + + -- Function: int dane_state_set_dlv_file (dane_state_t S, const char * + FILE) + S: The structure to be deinitialized + + FILE: The file holding the DLV keys. + + This function will set a file with trusted keys for DLV (DNSSEC + Lookaside Validation). + +dane_strerror +------------- + + -- Function: const char * dane_strerror (int ERROR) + ERROR: is a DANE error code, a negative error code + + This function is similar to strerror. The difference is that it + accepts an error number returned by a gnutls function; In case of + an unknown error a descriptive string is sent instead of 'NULL' . + + Error codes are always a negative error code. + + *Returns:* A string explaining the DANE error message. + +dane_verification_status_print +------------------------------ + + -- Function: int dane_verification_status_print (unsigned int STATUS, + gnutls_datum_t * OUT, unsigned int FLAGS) + STATUS: The status flags to be printed + + OUT: Newly allocated datum with (0) terminated string. + + FLAGS: should be zero + + This function will pretty print the status of a verification + process - eg. the one obtained by 'dane_verify_crt()' . + + The output 'out' needs to be deallocated using 'gnutls_free()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + +dane_verify_crt +--------------- + + -- Function: int dane_verify_crt (dane_state_t S, const gnutls_datum_t + * CHAIN, unsigned CHAIN_SIZE, gnutls_certificate_type_t + CHAIN_TYPE, const char * HOSTNAME, const char * PROTO, + unsigned int PORT, unsigned int SFLAGS, unsigned int VFLAGS, + unsigned int * VERIFY) + S: A DANE state structure (may be NULL) + + CHAIN: A certificate chain + + CHAIN_SIZE: The size of the chain + + CHAIN_TYPE: The type of the certificate chain + + HOSTNAME: The hostname associated with the chain + + PROTO: The protocol of the service connecting (e.g. tcp) + + PORT: The port of the service connecting (e.g. 443) + + SFLAGS: Flags for the initialization of 's' (if NULL) + + VFLAGS: Verification flags; an OR'ed list of 'dane_verify_flags_t' + . + + VERIFY: An OR'ed list of 'dane_verify_status_t' . + + This function will verify the given certificate chain against the + CA constrains and/or the certificate available via DANE. If no + information via DANE can be obtained the flag + 'DANE_VERIFY_NO_DANE_INFO' is set. If a DNSSEC signature is not + available for the DANE record then the verify flag + 'DANE_VERIFY_NO_DNSSEC_DATA' is set. + + Due to the many possible options of DANE, there is no single threat + model countered. When notifying the user about DANE verification + results it may be better to mention: DANE verification did not + reject the certificate, rather than mentioning a successful DANE + verication. + + Note that this function is designed to be run in addition to PKIX - + certificate chain - verification. To be run independently the + 'DANE_VFLAG_ONLY_CHECK_EE_USAGE' flag should be specified; then the + function will check whether the key of the peer matches the key + advertized in the DANE entry. + + *Returns:* a negative error code on error and 'DANE_E_SUCCESS' (0) + when the DANE entries were successfully parsed, irrespective of + whether they were verified (see 'verify' for that information). If + no usable entries were encountered + 'DANE_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned. + +dane_verify_crt_raw +------------------- + + -- Function: int dane_verify_crt_raw (dane_state_t S, const + gnutls_datum_t * CHAIN, unsigned CHAIN_SIZE, + gnutls_certificate_type_t CHAIN_TYPE, dane_query_t R, unsigned + int SFLAGS, unsigned int VFLAGS, unsigned int * VERIFY) + S: A DANE state structure (may be NULL) + + CHAIN: A certificate chain + + CHAIN_SIZE: The size of the chain + + CHAIN_TYPE: The type of the certificate chain + + R: DANE data to check against + + SFLAGS: Flags for the initialization of 's' (if NULL) + + VFLAGS: Verification flags; an OR'ed list of 'dane_verify_flags_t' + . + + VERIFY: An OR'ed list of 'dane_verify_status_t' . + + This is the low-level function of 'dane_verify_crt()' . See the + high level function for documentation. + + This function does not perform any resolving, it utilizes cached + entries from 'r' . + + *Returns:* a negative error code on error and 'DANE_E_SUCCESS' (0) + when the DANE entries were successfully parsed, irrespective of + whether they were verified (see 'verify' for that information). If + no usable entries were encountered + 'DANE_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned. + +dane_verify_session_crt +----------------------- + + -- Function: int dane_verify_session_crt (dane_state_t S, + gnutls_session_t SESSION, const char * HOSTNAME, const char * + PROTO, unsigned int PORT, unsigned int SFLAGS, unsigned int + VFLAGS, unsigned int * VERIFY) + S: A DANE state structure (may be NULL) + + SESSION: A gnutls session + + HOSTNAME: The hostname associated with the chain + + PROTO: The protocol of the service connecting (e.g. tcp) + + PORT: The port of the service connecting (e.g. 443) + + SFLAGS: Flags for the initialization of 's' (if NULL) + + VFLAGS: Verification flags; an OR'ed list of 'dane_verify_flags_t' + . + + VERIFY: An OR'ed list of 'dane_verify_status_t' . + + This function will verify session's certificate chain against the + CA constrains and/or the certificate available via DANE. See + 'dane_verify_crt()' for more information. + + This will not verify the chain for validity; unless the DANE + verification is restricted to end certificates, this must be be + performed separately using 'gnutls_certificate_verify_peers3()' . + + *Returns:* a negative error code on error and 'DANE_E_SUCCESS' (0) + when the DANE entries were successfully parsed, irrespective of + whether they were verified (see 'verify' for that information). If + no usable entries were encountered + 'DANE_E_REQUESTED_DATA_NOT_AVAILABLE' will be returned. + + +File: gnutls.info, Node: Cryptographic API, Next: Compatibility API, Prev: DANE API, Up: API reference + +E.12 Cryptographic API +====================== + +The following functions are to be used for low-level cryptographic +operations. Their prototypes lie in 'gnutls/crypto.h'. + +Note that due to historic reasons several functions, (e.g. *note +gnutls_mac_list::, *note gnutls_mac_get_name::) of this API are part of +the *note Core TLS API::. + +gnutls_aead_cipher_decrypt +-------------------------- + + -- Function: int gnutls_aead_cipher_decrypt (gnutls_aead_cipher_hd_t + HANDLE, const void * NONCE, size_t NONCE_LEN, const void * + AUTH, size_t AUTH_LEN, size_t TAG_SIZE, const void * CTEXT, + size_t CTEXT_LEN, void * PTEXT, size_t * PTEXT_LEN) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + NONCE: the nonce to set + + NONCE_LEN: The length of the nonce + + AUTH: additional data to be authenticated + + AUTH_LEN: The length of the data + + TAG_SIZE: The size of the tag to use (use zero for the default) + + CTEXT: the data to decrypt (including the authentication tag) + + CTEXT_LEN: the length of data to decrypt (includes tag size) + + PTEXT: the decrypted data + + PTEXT_LEN: the length of decrypted data (initially must hold the + maximum available size) + + This function will decrypt the given data using the algorithm + specified by the context. This function must be provided the + complete data to be decrypted, including the authentication tag. + On several AEAD ciphers, the authentication tag is appended to the + ciphertext, though this is not a general rule. This function will + fail if the tag verification fails. + + *Returns:* Zero or a negative error code on verification failure or + other error. + + *Since:* 3.4.0 + +gnutls_aead_cipher_decryptv2 +---------------------------- + + -- Function: int gnutls_aead_cipher_decryptv2 (gnutls_aead_cipher_hd_t + HANDLE, const void * NONCE, size_t NONCE_LEN, const giovec_t * + AUTH_IOV, int AUTH_IOVCNT, const giovec_t * IOV, int IOVCNT, + void * TAG, size_t TAG_SIZE) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + NONCE: the nonce to set + + NONCE_LEN: The length of the nonce + + AUTH_IOV: additional data to be authenticated + + AUTH_IOVCNT: The number of buffers in 'auth_iov' + + IOV: the data to decrypt + + IOVCNT: The number of buffers in 'iov' + + TAG: The authentication tag + + TAG_SIZE: The size of the tag to use (use zero for the default) + + This is similar to 'gnutls_aead_cipher_decrypt()' , but it performs + in-place encryption on the provided data buffers. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.6.10 + +gnutls_aead_cipher_deinit +------------------------- + + -- Function: void gnutls_aead_cipher_deinit (gnutls_aead_cipher_hd_t + HANDLE) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + This function will deinitialize all resources occupied by the given + authenticated-encryption context. + + *Since:* 3.4.0 + +gnutls_aead_cipher_encrypt +-------------------------- + + -- Function: int gnutls_aead_cipher_encrypt (gnutls_aead_cipher_hd_t + HANDLE, const void * NONCE, size_t NONCE_LEN, const void * + AUTH, size_t AUTH_LEN, size_t TAG_SIZE, const void * PTEXT, + size_t PTEXT_LEN, void * CTEXT, size_t * CTEXT_LEN) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + NONCE: the nonce to set + + NONCE_LEN: The length of the nonce + + AUTH: additional data to be authenticated + + AUTH_LEN: The length of the data + + TAG_SIZE: The size of the tag to use (use zero for the default) + + PTEXT: the data to encrypt + + PTEXT_LEN: The length of data to encrypt + + CTEXT: the encrypted data including authentication tag + + CTEXT_LEN: the length of encrypted data (initially must hold the + maximum available size, including space for tag) + + This function will encrypt the given data using the algorithm + specified by the context. The output data will contain the + authentication tag. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.4.0 + +gnutls_aead_cipher_encryptv +--------------------------- + + -- Function: int gnutls_aead_cipher_encryptv (gnutls_aead_cipher_hd_t + HANDLE, const void * NONCE, size_t NONCE_LEN, const giovec_t * + AUTH_IOV, int AUTH_IOVCNT, size_t TAG_SIZE, const giovec_t * + IOV, int IOVCNT, void * CTEXT, size_t * CTEXT_LEN) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + NONCE: the nonce to set + + NONCE_LEN: The length of the nonce + + AUTH_IOV: additional data to be authenticated + + AUTH_IOVCNT: The number of buffers in 'auth_iov' + + TAG_SIZE: The size of the tag to use (use zero for the default) + + IOV: the data to be encrypted + + IOVCNT: The number of buffers in 'iov' + + CTEXT: the encrypted data including authentication tag + + CTEXT_LEN: the length of encrypted data (initially must hold the + maximum available size, including space for tag) + + This function will encrypt the provided data buffers using the + algorithm specified by the context. The output data will contain + the authentication tag. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.6.3 + +gnutls_aead_cipher_encryptv2 +---------------------------- + + -- Function: int gnutls_aead_cipher_encryptv2 (gnutls_aead_cipher_hd_t + HANDLE, const void * NONCE, size_t NONCE_LEN, const giovec_t * + AUTH_IOV, int AUTH_IOVCNT, const giovec_t * IOV, int IOVCNT, + void * TAG, size_t * TAG_SIZE) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + NONCE: the nonce to set + + NONCE_LEN: The length of the nonce + + AUTH_IOV: additional data to be authenticated + + AUTH_IOVCNT: The number of buffers in 'auth_iov' + + IOV: the data to be encrypted + + IOVCNT: The number of buffers in 'iov' + + TAG: The authentication tag + + TAG_SIZE: The size of the tag to use (use zero for the default) + + This is similar to 'gnutls_aead_cipher_encrypt()' , but it performs + in-place encryption on the provided data buffers. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.6.10 + +gnutls_aead_cipher_init +----------------------- + + -- Function: int gnutls_aead_cipher_init (gnutls_aead_cipher_hd_t * + HANDLE, gnutls_cipher_algorithm_t CIPHER, const gnutls_datum_t + * KEY) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + CIPHER: the authenticated-encryption algorithm to use + + KEY: The key to be used for encryption + + This function will initialize an context that can be used for + encryption/decryption of data. This will effectively use the + current crypto backend in use by gnutls or the cryptographic + accelerator in use. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.4.0 + +gnutls_aead_cipher_set_key +-------------------------- + + -- Function: int gnutls_aead_cipher_set_key (gnutls_aead_cipher_hd_t + HANDLE, const gnutls_datum_t * KEY) + HANDLE: is a 'gnutls_aead_cipher_hd_t' type. + + KEY: The key to be used for encryption + + This function will set a new key without re-initializing the + context. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.7.5 + +gnutls_cipher_add_auth +---------------------- + + -- Function: int gnutls_cipher_add_auth (gnutls_cipher_hd_t HANDLE, + const void * PTEXT, size_t PTEXT_SIZE) + HANDLE: is a 'gnutls_cipher_hd_t' type + + PTEXT: the data to be authenticated + + PTEXT_SIZE: the length of the data + + This function operates on authenticated encryption with associated + data (AEAD) ciphers and authenticate the input data. This function + can only be called once and before any encryption operations. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.0 + +gnutls_cipher_decrypt +--------------------- + + -- Function: int gnutls_cipher_decrypt (gnutls_cipher_hd_t HANDLE, void + * CTEXT, size_t CTEXT_LEN) + HANDLE: is a 'gnutls_cipher_hd_t' type + + CTEXT: the data to decrypt + + CTEXT_LEN: the length of data to decrypt + + This function will decrypt the given data using the algorithm + specified by the context. + + Note that in AEAD ciphers, this will not check the tag. You will + need to compare the tag sent with the value returned from + 'gnutls_cipher_tag()' . + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_cipher_decrypt2 +---------------------- + + -- Function: int gnutls_cipher_decrypt2 (gnutls_cipher_hd_t HANDLE, + const void * CTEXT, size_t CTEXT_LEN, void * PTEXT, size_t + PTEXT_LEN) + HANDLE: is a 'gnutls_cipher_hd_t' type + + CTEXT: the data to decrypt + + CTEXT_LEN: the length of data to decrypt + + PTEXT: the decrypted data + + PTEXT_LEN: the available length for decrypted data + + This function will decrypt the given data using the algorithm + specified by the context. For block ciphers the 'ctext_len' must + be a multiple of the block size. For the supported ciphers the + plaintext data length will equal the ciphertext size. + + Note that in AEAD ciphers, this will not check the tag. You will + need to compare the tag sent with the value returned from + 'gnutls_cipher_tag()' . + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.12.0 + +gnutls_cipher_decrypt3 +---------------------- + + -- Function: int gnutls_cipher_decrypt3 (gnutls_cipher_hd_t HANDLE, + const void * CTEXT, size_t CTEXT_LEN, void * PTEXT, size_t * + PTEXT_LEN, unsigned FLAGS) + HANDLE: is a 'gnutls_cipher_hd_t' type + + CTEXT: the data to decrypt + + CTEXT_LEN: the length of data to decrypt + + PTEXT: the decrypted data + + PTEXT_LEN: the available length for decrypted data + + FLAGS: flags for padding + + This function will decrypt the given data using the algorithm + specified by the context. If 'flags' is specified, padding for the + decrypted data will be removed accordingly and 'ptext_len' will be + updated. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.7.7 + +gnutls_cipher_deinit +-------------------- + + -- Function: void gnutls_cipher_deinit (gnutls_cipher_hd_t HANDLE) + HANDLE: is a 'gnutls_cipher_hd_t' type + + This function will deinitialize all resources occupied by the given + encryption context. + + *Since:* 2.10.0 + +gnutls_cipher_encrypt +--------------------- + + -- Function: int gnutls_cipher_encrypt (gnutls_cipher_hd_t HANDLE, void + * PTEXT, size_t PTEXT_LEN) + HANDLE: is a 'gnutls_cipher_hd_t' type + + PTEXT: the data to encrypt + + PTEXT_LEN: the length of data to encrypt + + This function will encrypt the given data using the algorithm + specified by the context. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_cipher_encrypt2 +---------------------- + + -- Function: int gnutls_cipher_encrypt2 (gnutls_cipher_hd_t HANDLE, + const void * PTEXT, size_t PTEXT_LEN, void * CTEXT, size_t + CTEXT_LEN) + HANDLE: is a 'gnutls_cipher_hd_t' type + + PTEXT: the data to encrypt + + PTEXT_LEN: the length of data to encrypt + + CTEXT: the encrypted data + + CTEXT_LEN: the available length for encrypted data + + This function will encrypt the given data using the algorithm + specified by the context. For block ciphers the 'ptext_len' must + be a multiple of the block size. For the supported ciphers the + encrypted data length will equal the plaintext size. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.12.0 + +gnutls_cipher_encrypt3 +---------------------- + + -- Function: int gnutls_cipher_encrypt3 (gnutls_cipher_hd_t HANDLE, + const void * PTEXT, size_t PTEXT_LEN, void * CTEXT, size_t * + CTEXT_LEN, unsigned FLAGS) + HANDLE: is a 'gnutls_cipher_hd_t' type + + PTEXT: the data to encrypt + + PTEXT_LEN: the length of data to encrypt + + CTEXT: the encrypted data + + CTEXT_LEN: the length of encrypted data (initially must hold the + maximum available size) + + FLAGS: flags for padding + + This function will encrypt the given data using the algorithm + specified by the context. For block ciphers, 'ptext_len' is + typically a multiple of the block size. If not, the caller can + instruct the function to pad the last block according to 'flags' . + Currently, the only available padding scheme is + 'GNUTLS_CIPHER_PADDING_PKCS7' . + + If 'ctext' is not 'NULL' , it must hold enough space to store + resulting cipher text. To check the required size, this function + can be called with 'ctext' set to 'NULL' . Then 'ctext_len' will + be updated without performing actual encryption. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.7.7 + +gnutls_cipher_get_block_size +---------------------------- + + -- Function: unsigned gnutls_cipher_get_block_size + (gnutls_cipher_algorithm_t ALGORITHM) + ALGORITHM: is an encryption algorithm + + *Returns:* the block size of the encryption algorithm. + + *Since:* 2.10.0 + +gnutls_cipher_get_iv_size +------------------------- + + -- Function: unsigned gnutls_cipher_get_iv_size + (gnutls_cipher_algorithm_t ALGORITHM) + ALGORITHM: is an encryption algorithm + + This function returns the size of the initialization vector (IV) + for the provided algorithm. For algorithms with variable size IV + (e.g., AES-CCM), the returned size will be the one used by TLS. + + *Returns:* block size for encryption algorithm. + + *Since:* 3.2.0 + +gnutls_cipher_get_tag_size +-------------------------- + + -- Function: unsigned gnutls_cipher_get_tag_size + (gnutls_cipher_algorithm_t ALGORITHM) + ALGORITHM: is an encryption algorithm + + This function returns the tag size of an authenticated encryption + algorithm. For non-AEAD algorithms, it returns zero. + + *Returns:* the tag size of the authenticated encryption algorithm. + + *Since:* 3.2.2 + +gnutls_cipher_init +------------------ + + -- Function: int gnutls_cipher_init (gnutls_cipher_hd_t * HANDLE, + gnutls_cipher_algorithm_t CIPHER, const gnutls_datum_t * KEY, + const gnutls_datum_t * IV) + HANDLE: is a 'gnutls_cipher_hd_t' type + + CIPHER: the encryption algorithm to use + + KEY: the key to be used for encryption/decryption + + IV: the IV to use (if not applicable set NULL) + + This function will initialize the 'handle' context to be usable for + encryption/decryption of data. This will effectively use the + current crypto backend in use by gnutls or the cryptographic + accelerator in use. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_cipher_set_iv +-------------------- + + -- Function: void gnutls_cipher_set_iv (gnutls_cipher_hd_t HANDLE, void + * IV, size_t IVLEN) + HANDLE: is a 'gnutls_cipher_hd_t' type + + IV: the IV to set + + IVLEN: the length of the IV + + This function will set the IV to be used for the next encryption + block. + + *Since:* 3.0 + +gnutls_cipher_tag +----------------- + + -- Function: int gnutls_cipher_tag (gnutls_cipher_hd_t HANDLE, void * + TAG, size_t TAG_SIZE) + HANDLE: is a 'gnutls_cipher_hd_t' type + + TAG: will hold the tag + + TAG_SIZE: the length of the tag to return + + This function operates on authenticated encryption with associated + data (AEAD) ciphers and will return the output tag. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.0 + +gnutls_crypto_register_aead_cipher +---------------------------------- + + -- Function: int gnutls_crypto_register_aead_cipher + (gnutls_cipher_algorithm_t ALGORITHM, int PRIORITY, + gnutls_cipher_init_func INIT, gnutls_cipher_setkey_func + SETKEY, gnutls_cipher_aead_encrypt_func AEAD_ENCRYPT, + gnutls_cipher_aead_decrypt_func AEAD_DECRYPT, + gnutls_cipher_deinit_func DEINIT) + ALGORITHM: is the gnutls AEAD cipher identifier + + PRIORITY: is the priority of the algorithm + + INIT: A function which initializes the cipher + + SETKEY: A function which sets the key of the cipher + + AEAD_ENCRYPT: Perform the AEAD encryption + + AEAD_DECRYPT: Perform the AEAD decryption + + DEINIT: A function which deinitializes the cipher + + This function will register a cipher algorithm to be used by + gnutls. Any algorithm registered will override the included + algorithms and by convention kernel implemented algorithms have + priority of 90 and CPU-assisted of 80. The algorithm with the + lowest priority will be used by gnutls. + + In the case the registered init or setkey functions return + 'GNUTLS_E_NEED_FALLBACK' , GnuTLS will attempt to use the next in + priority registered cipher. + + The functions registered will be used with the new AEAD API + introduced in GnuTLS 3.4.0. Internally GnuTLS uses the new AEAD + API. + + *Deprecated:* since 3.7.0 it is no longer possible to override + cipher implementation + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.4.0 + +gnutls_crypto_register_cipher +----------------------------- + + -- Function: int gnutls_crypto_register_cipher + (gnutls_cipher_algorithm_t ALGORITHM, int PRIORITY, + gnutls_cipher_init_func INIT, gnutls_cipher_setkey_func + SETKEY, gnutls_cipher_setiv_func SETIV, + gnutls_cipher_encrypt_func ENCRYPT, gnutls_cipher_decrypt_func + DECRYPT, gnutls_cipher_deinit_func DEINIT) + ALGORITHM: is the gnutls algorithm identifier + + PRIORITY: is the priority of the algorithm + + INIT: A function which initializes the cipher + + SETKEY: A function which sets the key of the cipher + + SETIV: A function which sets the nonce/IV of the cipher (non-AEAD) + + ENCRYPT: A function which performs encryption (non-AEAD) + + DECRYPT: A function which performs decryption (non-AEAD) + + DEINIT: A function which deinitializes the cipher + + This function will register a cipher algorithm to be used by + gnutls. Any algorithm registered will override the included + algorithms and by convention kernel implemented algorithms have + priority of 90 and CPU-assisted of 80. The algorithm with the + lowest priority will be used by gnutls. + + In the case the registered init or setkey functions return + 'GNUTLS_E_NEED_FALLBACK' , GnuTLS will attempt to use the next in + priority registered cipher. + + The functions which are marked as non-AEAD they are not required + when registering a cipher to be used with the new AEAD API + introduced in GnuTLS 3.4.0. Internally GnuTLS uses the new AEAD + API. + + *Deprecated:* since 3.7.0 it is no longer possible to override + cipher implementation + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.4.0 + +gnutls_crypto_register_digest +----------------------------- + + -- Function: int gnutls_crypto_register_digest + (gnutls_digest_algorithm_t ALGORITHM, int PRIORITY, + gnutls_digest_init_func INIT, gnutls_digest_hash_func HASH, + gnutls_digest_output_func OUTPUT, gnutls_digest_deinit_func + DEINIT, gnutls_digest_fast_func HASH_FAST) + ALGORITHM: is the gnutls digest identifier + + PRIORITY: is the priority of the algorithm + + INIT: A function which initializes the digest + + HASH: Perform the hash operation + + OUTPUT: Provide the output of the digest + + DEINIT: A function which deinitializes the digest + + HASH_FAST: Perform the digest operation in one go + + This function will register a digest algorithm to be used by + gnutls. Any algorithm registered will override the included + algorithms and by convention kernel implemented algorithms have + priority of 90 and CPU-assisted of 80. The algorithm with the + lowest priority will be used by gnutls. + + *Deprecated:* since 3.7.0 it is no longer possible to override + cipher implementation + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.4.0 + +gnutls_crypto_register_mac +-------------------------- + + -- Function: int gnutls_crypto_register_mac (gnutls_mac_algorithm_t + ALGORITHM, int PRIORITY, gnutls_mac_init_func INIT, + gnutls_mac_setkey_func SETKEY, gnutls_mac_setnonce_func + SETNONCE, gnutls_mac_hash_func HASH, gnutls_mac_output_func + OUTPUT, gnutls_mac_deinit_func DEINIT, gnutls_mac_fast_func + HASH_FAST) + ALGORITHM: is the gnutls MAC identifier + + PRIORITY: is the priority of the algorithm + + INIT: A function which initializes the MAC + + SETKEY: A function which sets the key of the MAC + + SETNONCE: A function which sets the nonce for the mac (may be + 'NULL' for common MAC algorithms) + + HASH: Perform the hash operation + + OUTPUT: Provide the output of the MAC + + DEINIT: A function which deinitializes the MAC + + HASH_FAST: Perform the MAC operation in one go + + This function will register a MAC algorithm to be used by gnutls. + Any algorithm registered will override the included algorithms and + by convention kernel implemented algorithms have priority of 90 and + CPU-assisted of 80. The algorithm with the lowest priority will be + used by gnutls. + + *Deprecated:* since 3.7.0 it is no longer possible to override + cipher implementation + + *Returns:* 'GNUTLS_E_SUCCESS' on success, otherwise a negative + error code. + + *Since:* 3.4.0 + +gnutls_decode_ber_digest_info +----------------------------- + + -- Function: int gnutls_decode_ber_digest_info (const gnutls_datum_t * + INFO, gnutls_digest_algorithm_t * HASH, unsigned char * + DIGEST, unsigned int * DIGEST_SIZE) + INFO: an RSA BER encoded DigestInfo structure + + HASH: will contain the hash algorithm of the structure + + DIGEST: will contain the hash output of the structure + + DIGEST_SIZE: will contain the hash size of the structure; initially + must hold the maximum size of 'digest' + + This function will parse an RSA PKCS'1' 1.5 DigestInfo structure + and report the hash algorithm used as well as the digest data. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise an error code is returned. + + *Since:* 3.5.0 + +gnutls_decode_gost_rs_value +--------------------------- + + -- Function: int gnutls_decode_gost_rs_value (const gnutls_datum_t * + SIG_VALUE, gnutls_datum_t * R, gnutls_datum_t * S) + SIG_VALUE: will holds a GOST signature according to RFC 4491 + section 2.2.2 + + R: will contain the r value + + S: will contain the s value + + This function will decode the provided 'sig_value' , into 'r' and + 's' elements. See RFC 4491 section 2.2.2 for the format of + signature value. + + The output values may be padded with a zero byte to prevent them + from being interpreted as negative values. The value should be + deallocated using 'gnutls_free()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise an error code is returned. + + *Since:* 3.6.0 + +gnutls_decode_rs_value +---------------------- + + -- Function: int gnutls_decode_rs_value (const gnutls_datum_t * + SIG_VALUE, gnutls_datum_t * R, gnutls_datum_t * S) + SIG_VALUE: holds a Dss-Sig-Value DER or BER encoded structure + + R: will contain the r value + + S: will contain the s value + + This function will decode the provided 'sig_value' , into 'r' and + 's' elements. The Dss-Sig-Value is used for DSA and ECDSA + signatures. + + The output values may be padded with a zero byte to prevent them + from being interpreted as negative values. The value should be + deallocated using 'gnutls_free()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise an error code is returned. + + *Since:* 3.6.0 + +gnutls_encode_ber_digest_info +----------------------------- + + -- Function: int gnutls_encode_ber_digest_info + (gnutls_digest_algorithm_t HASH, const gnutls_datum_t * + DIGEST, gnutls_datum_t * OUTPUT) + HASH: the hash algorithm that was used to get the digest + + DIGEST: must contain the digest data + + OUTPUT: will contain the allocated DigestInfo BER encoded data + + This function will encode the provided digest data, and its + algorithm into an RSA PKCS'1' 1.5 DigestInfo structure. + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise an error code is returned. + + *Since:* 3.5.0 + +gnutls_encode_gost_rs_value +--------------------------- + + -- Function: int gnutls_encode_gost_rs_value (gnutls_datum_t * + SIG_VALUE, const gnutls_datum_t * R, const gnutls_datum_t * S) + SIG_VALUE: will hold a GOST signature according to RFC 4491 section + 2.2.2 + + R: must contain the r value + + S: must contain the s value + + This function will encode the provided r and s values, into binary + representation according to RFC 4491 section 2.2.2, used for GOST R + 34.10-2001 (and thus also for GOST R 34.10-2012) signatures. + + The output value should be deallocated using 'gnutls_free()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise an error code is returned. + + *Since:* 3.6.0 + +gnutls_encode_rs_value +---------------------- + + -- Function: int gnutls_encode_rs_value (gnutls_datum_t * SIG_VALUE, + const gnutls_datum_t * R, const gnutls_datum_t * S) + SIG_VALUE: will hold a Dss-Sig-Value DER encoded structure + + R: must contain the r value + + S: must contain the s value + + This function will encode the provided r and s values, into a + Dss-Sig-Value structure, used for DSA and ECDSA signatures. + + The output value should be deallocated using 'gnutls_free()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise an error code is returned. + + *Since:* 3.6.0 + +gnutls_hash +----------- + + -- Function: int gnutls_hash (gnutls_hash_hd_t HANDLE, const void * + PTEXT, size_t PTEXT_LEN) + HANDLE: is a 'gnutls_hash_hd_t' type + + PTEXT: the data to hash + + PTEXT_LEN: the length of data to hash + + This function will hash the given data using the algorithm + specified by the context. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_hash_copy +---------------- + + -- Function: gnutls_hash_hd_t gnutls_hash_copy (gnutls_hash_hd_t + HANDLE) + HANDLE: is a 'gnutls_hash_hd_t' type + + This function will create a copy of Message Digest context, + containing all its current state. Copying contexts for Message + Digests registered using 'gnutls_crypto_register_digest()' is not + supported and will always result in an error. In addition to that, + some of the Message Digest implementations do not support this + operation. Applications should check the return value and provide + a proper fallback. + + *Returns:* new Message Digest context or NULL in case of an error. + + *Since:* 3.6.9 + +gnutls_hash_deinit +------------------ + + -- Function: void gnutls_hash_deinit (gnutls_hash_hd_t HANDLE, void * + DIGEST) + HANDLE: is a 'gnutls_hash_hd_t' type + + DIGEST: is the output value of the hash + + This function will deinitialize all resources occupied by the given + hash context. + + *Since:* 2.10.0 + +gnutls_hash_fast +---------------- + + -- Function: int gnutls_hash_fast (gnutls_digest_algorithm_t ALGORITHM, + const void * PTEXT, size_t PTEXT_LEN, void * DIGEST) + ALGORITHM: the hash algorithm to use + + PTEXT: the data to hash + + PTEXT_LEN: the length of data to hash + + DIGEST: is the output value of the hash + + This convenience function will hash the given data and return + output on a single call. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_hash_get_len +------------------- + + -- Function: unsigned gnutls_hash_get_len (gnutls_digest_algorithm_t + ALGORITHM) + ALGORITHM: the hash algorithm to use + + This function will return the length of the output data of the + given hash algorithm. + + *Returns:* The length or zero on error. + + *Since:* 2.10.0 + +gnutls_hash_init +---------------- + + -- Function: int gnutls_hash_init (gnutls_hash_hd_t * DIG, + gnutls_digest_algorithm_t ALGORITHM) + DIG: is a 'gnutls_hash_hd_t' type + + ALGORITHM: the hash algorithm to use + + This function will initialize an context that can be used to + produce a Message Digest of data. This will effectively use the + current crypto backend in use by gnutls or the cryptographic + accelerator in use. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_hash_output +------------------ + + -- Function: void gnutls_hash_output (gnutls_hash_hd_t HANDLE, void * + DIGEST) + HANDLE: is a 'gnutls_hash_hd_t' type + + DIGEST: is the output value of the hash + + This function will output the current hash value and reset the + state of the hash. + + *Since:* 2.10.0 + +gnutls_hkdf_expand +------------------ + + -- Function: int gnutls_hkdf_expand (gnutls_mac_algorithm_t MAC, const + gnutls_datum_t * KEY, const gnutls_datum_t * INFO, void * + OUTPUT, size_t LENGTH) + MAC: the mac algorithm used internally + + KEY: the pseudorandom key created with HKDF-Extract + + INFO: the optional informational data + + OUTPUT: the output value of the expand operation + + LENGTH: the desired length of the output key + + This function will derive a variable length keying material from + the pseudorandom key using the HKDF-Expand function as defined in + RFC 5869. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.6.13 + +gnutls_hkdf_extract +------------------- + + -- Function: int gnutls_hkdf_extract (gnutls_mac_algorithm_t MAC, const + gnutls_datum_t * KEY, const gnutls_datum_t * SALT, void * + OUTPUT) + MAC: the mac algorithm used internally + + KEY: the initial keying material + + SALT: the optional salt + + OUTPUT: the output value of the extract operation + + This function will derive a fixed-size key using the HKDF-Extract + function as defined in RFC 5869. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.6.13 + +gnutls_hmac +----------- + + -- Function: int gnutls_hmac (gnutls_hmac_hd_t HANDLE, const void * + PTEXT, size_t PTEXT_LEN) + HANDLE: is a 'gnutls_hmac_hd_t' type + + PTEXT: the data to hash + + PTEXT_LEN: the length of data to hash + + This function will hash the given data using the algorithm + specified by the context. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_hmac_copy +---------------- + + -- Function: gnutls_hmac_hd_t gnutls_hmac_copy (gnutls_hmac_hd_t + HANDLE) + HANDLE: is a 'gnutls_hmac_hd_t' type + + This function will create a copy of MAC context, containing all its + current state. Copying contexts for MACs registered using + 'gnutls_crypto_register_mac()' is not supported and will always + result in an error. In addition to that, some of the MAC + implementations do not support this operation. Applications should + check the return value and provide a proper fallback. + + *Returns:* new MAC context or NULL in case of an error. + + *Since:* 3.6.9 + +gnutls_hmac_deinit +------------------ + + -- Function: void gnutls_hmac_deinit (gnutls_hmac_hd_t HANDLE, void * + DIGEST) + HANDLE: is a 'gnutls_hmac_hd_t' type + + DIGEST: is the output value of the MAC + + This function will deinitialize all resources occupied by the given + hmac context. + + *Since:* 2.10.0 + +gnutls_hmac_fast +---------------- + + -- Function: int gnutls_hmac_fast (gnutls_mac_algorithm_t ALGORITHM, + const void * KEY, size_t KEYLEN, const void * PTEXT, size_t + PTEXT_LEN, void * DIGEST) + ALGORITHM: the hash algorithm to use + + KEY: the key to use + + KEYLEN: the length of the key + + PTEXT: the data to hash + + PTEXT_LEN: the length of data to hash + + DIGEST: is the output value of the hash + + This convenience function will hash the given data and return + output on a single call. Note, this call will not work for MAC + algorithms that require nonce (like UMAC or GMAC). + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_hmac_get_key_size +------------------------ + + -- Function: unsigned gnutls_hmac_get_key_size (gnutls_mac_algorithm_t + ALGORITHM) + ALGORITHM: the mac algorithm to use + + This function will return the size of the key to be used with this + algorithm. On the algorithms which may accept arbitrary key sizes, + the returned size is the MAC key size used in the TLS protocol. + + *Returns:* The key size or zero on error. + + *Since:* 3.6.12 + +gnutls_hmac_get_len +------------------- + + -- Function: unsigned gnutls_hmac_get_len (gnutls_mac_algorithm_t + ALGORITHM) + ALGORITHM: the hmac algorithm to use + + This function will return the length of the output data of the + given hmac algorithm. + + *Returns:* The length or zero on error. + + *Since:* 2.10.0 + +gnutls_hmac_init +---------------- + + -- Function: int gnutls_hmac_init (gnutls_hmac_hd_t * DIG, + gnutls_mac_algorithm_t ALGORITHM, const void * KEY, size_t + KEYLEN) + DIG: is a 'gnutls_hmac_hd_t' type + + ALGORITHM: the HMAC algorithm to use + + KEY: the key to be used for encryption + + KEYLEN: the length of the key + + This function will initialize an context that can be used to + produce a Message Authentication Code (MAC) of data. This will + effectively use the current crypto backend in use by gnutls or the + cryptographic accelerator in use. + + Note that despite the name of this function, it can be used for + other MAC algorithms than HMAC. + + *Returns:* Zero or a negative error code on error. + + *Since:* 2.10.0 + +gnutls_hmac_output +------------------ + + -- Function: void gnutls_hmac_output (gnutls_hmac_hd_t HANDLE, void * + DIGEST) + HANDLE: is a 'gnutls_hmac_hd_t' type + + DIGEST: is the output value of the MAC + + This function will output the current MAC value and reset the state + of the MAC. + + *Since:* 2.10.0 + +gnutls_hmac_set_nonce +--------------------- + + -- Function: void gnutls_hmac_set_nonce (gnutls_hmac_hd_t HANDLE, const + void * NONCE, size_t NONCE_LEN) + HANDLE: is a 'gnutls_hmac_hd_t' type + + NONCE: the data to set as nonce + + NONCE_LEN: the length of data + + This function will set the nonce in the MAC algorithm. + + *Since:* 3.2.0 + +gnutls_mac_get_nonce_size +------------------------- + + -- Function: size_t gnutls_mac_get_nonce_size (gnutls_mac_algorithm_t + ALGORITHM) + ALGORITHM: is an encryption algorithm + + Returns the size of the nonce used by the MAC in TLS. + + *Returns:* length (in bytes) of the given MAC nonce size, or 0. + + *Since:* 3.2.0 + +gnutls_pbkdf2 +------------- + + -- Function: int gnutls_pbkdf2 (gnutls_mac_algorithm_t MAC, const + gnutls_datum_t * KEY, const gnutls_datum_t * SALT, unsigned + ITER_COUNT, void * OUTPUT, size_t LENGTH) + MAC: the mac algorithm used internally + + KEY: the initial keying material + + SALT: the salt + + ITER_COUNT: the iteration count + + OUTPUT: the output value + + LENGTH: the desired length of the output key + + This function will derive a variable length keying material from a + password according to PKCS '5' PBKDF2. + + *Returns:* Zero or a negative error code on error. + + *Since:* 3.6.13 + +gnutls_rnd +---------- + + -- Function: int gnutls_rnd (gnutls_rnd_level_t LEVEL, void * DATA, + size_t LEN) + LEVEL: a security level + + DATA: place to store random bytes + + LEN: The requested size + + This function will generate random data and store it to output + buffer. The value of 'level' should be one of 'GNUTLS_RND_NONCE' , + 'GNUTLS_RND_RANDOM' and 'GNUTLS_RND_KEY' . See the manual and + 'gnutls_rnd_level_t' for detailed information. + + This function is thread-safe and also fork-safe. + + *Returns:* Zero on success, or a negative error code on error. + + *Since:* 2.12.0 + +gnutls_rnd_refresh +------------------ + + -- Function: void gnutls_rnd_refresh ( VOID) + + This function refreshes the random generator state. That is the + current precise time, CPU usage, and other values are input into + its state. + + On a slower rate input from /dev/urandom is mixed too. + + *Since:* 3.1.7 + + +File: gnutls.info, Node: Compatibility API, Prev: Cryptographic API, Up: API reference + +E.13 Compatibility API +====================== + +The following functions are carried over from old GnuTLS released. They +might be removed at a later version. Their prototypes lie in +'gnutls/compat.h'. + +gnutls_compression_get +---------------------- + + -- Function: gnutls_compression_method_t gnutls_compression_get + (gnutls_session_t SESSION) + SESSION: is a 'gnutls_session_t' type. + + Get the currently used compression algorithm. + + *Returns:* the currently used compression method, a + 'gnutls_compression_method_t' value. + +gnutls_compression_get_id +------------------------- + + -- Function: gnutls_compression_method_t gnutls_compression_get_id + (const char * NAME) + NAME: is a compression method name + + The names are compared in a case insensitive way. + + *Returns:* an id of the specified in a string compression method, + or 'GNUTLS_COMP_UNKNOWN' on error. + +gnutls_compression_get_name +--------------------------- + + -- Function: const char * gnutls_compression_get_name + (gnutls_compression_method_t ALGORITHM) + ALGORITHM: is a Compression algorithm + + Convert a 'gnutls_compression_method_t' value to a string. + + *Returns:* a pointer to a string that contains the name of the + specified compression algorithm, or 'NULL' . + +gnutls_compression_list +----------------------- + + -- Function: const gnutls_compression_method_t * + gnutls_compression_list ( VOID) + + Get a list of compression methods. + + *Returns:* a zero-terminated list of 'gnutls_compression_method_t' + integers indicating the available compression methods. + +gnutls_global_set_mem_functions +------------------------------- + + -- Function: void gnutls_global_set_mem_functions + (gnutls_alloc_function ALLOC_FUNC, gnutls_alloc_function + SECURE_ALLOC_FUNC, gnutls_is_secure_function IS_SECURE_FUNC, + gnutls_realloc_function REALLOC_FUNC, gnutls_free_function + FREE_FUNC) + ALLOC_FUNC: it's the default memory allocation function. Like + 'malloc()' . + + SECURE_ALLOC_FUNC: This is the memory allocation function that will + be used for sensitive data. + + IS_SECURE_FUNC: a function that returns 0 if the memory given is + not secure. May be NULL. + + REALLOC_FUNC: A realloc function + + FREE_FUNC: The function that frees allocated data. Must accept a + NULL pointer. + + *Deprecated:* since 3.3.0 it is no longer possible to replace the + internally used memory allocation functions + + This is the function where you set the memory allocation functions + gnutls is going to use. By default the libc's allocation functions + ('malloc()' , 'free()' ), are used by gnutls, to allocate both + sensitive and not sensitive data. This function is provided to set + the memory allocation functions to something other than the + defaults + + This function must be called before 'gnutls_global_init()' is + called. This function is not thread safe. + +gnutls_openpgp_privkey_sign_hash +-------------------------------- + + -- Function: int gnutls_openpgp_privkey_sign_hash + (gnutls_openpgp_privkey_t KEY, const gnutls_datum_t * HASH, + gnutls_datum_t * SIGNATURE) + KEY: Holds the key + + HASH: holds the data to be signed + + SIGNATURE: will contain newly allocated signature + + This function is no-op. + + *Returns:* 'GNUTLS_E_UNIMPLEMENTED_FEATURE' . + +gnutls_priority_compression_list +-------------------------------- + + -- Function: int gnutls_priority_compression_list (gnutls_priority_t + PCACHE, const unsigned int ** LIST) + PCACHE: is a 'gnutls_priority_t' type. + + LIST: will point to an integer list + + Get a list of available compression method in the priority + structure. + + *Returns:* the number of methods, or an error code. + + *Since:* 3.0 + +gnutls_x509_crt_get_preferred_hash_algorithm +-------------------------------------------- + + -- Function: int gnutls_x509_crt_get_preferred_hash_algorithm + (gnutls_x509_crt_t CRT, gnutls_digest_algorithm_t * HASH, + unsigned int * MAND) + CRT: Holds the certificate + + HASH: The result of the call with the hash algorithm used for + signature + + MAND: If non-zero it means that the algorithm MUST use this hash. + May be 'NULL' . + + This function will read the certificate and return the appropriate + digest algorithm to use for signing with this certificate. Some + certificates (i.e. DSA might not be able to sign without the + preferred algorithm). + + *Deprecated:* Please use + 'gnutls_pubkey_get_preferred_hash_algorithm()' . + + *Returns:* the 0 if the hash algorithm is found. A negative error + code is returned on error. + + *Since:* 2.12.0 + +gnutls_x509_privkey_sign_hash +----------------------------- + + -- Function: int gnutls_x509_privkey_sign_hash (gnutls_x509_privkey_t + KEY, const gnutls_datum_t * HASH, gnutls_datum_t * SIGNATURE) + KEY: a key + + HASH: holds the data to be signed + + SIGNATURE: will contain newly allocated signature + + This function will sign the given hash using the private key. Do + not use this function directly unless you know what it is. Typical + signing requires the data to be hashed and stored in special + formats (e.g. BER Digest-Info for RSA). + + This API is provided only for backwards compatibility, and thus + restricted to RSA, DSA and ECDSA key types. For other key types + please use 'gnutls_privkey_sign_hash()' and + 'gnutls_privkey_sign_data()' . + + *Returns:* On success, 'GNUTLS_E_SUCCESS' (0) is returned, + otherwise a negative error value. + + Deprecated in: 2.12.0 + + +File: gnutls.info, Node: Copying Information, Next: Bibliography, Prev: API reference, Up: Top + +Appendix F Copying Information +****************************** + +GNU Free Documentation License +============================== + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + <https://fsf.org/> + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it can + be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as "you". You accept + the license if you copy, modify or distribute the work in a way + requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the + notice that says that the Document is released under this License. + If a section does not fit the above definition of Secondary then it + is not allowed to be designated as Invariant. The Document may + contain zero Invariant Sections. If the Document does not identify + any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed + of pixels) generic paint programs or (for drawings) some widely + available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats + suitable for input to text formatters. A copy made in an otherwise + Transparent file format whose markup, or absence of markup, has + been arranged to thwart or discourage subsequent modification by + readers is not Transparent. An image format is not Transparent if + used for any substantial amount of text. A copy that is not + "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and standard-conforming + simple HTML, PostScript or PDF designed for human modification. + Examples of transparent image formats include PNG, XCF and JPG. + Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, and + the machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow the + conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the title + equally prominent and visible. You may add other material on the + covers in addition. Copying with changes limited to the covers, as + long as they preserve the title of the Document and satisfy these + conditions, can be treated as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a machine-readable + Transparent copy along with each Opaque copy, or state in or with + each Opaque copy a computer-network location from which the general + network-using public has access to download using public-standard + network protocols a complete Transparent copy of the Document, free + of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of copies, + to give them a chance to provide you with an updated version of the + Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus licensing + distribution and modification of the Modified Version to whoever + possesses a copy of it. In addition, you must do these things in + the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that + version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the + Title Page. If there is no section Entitled "History" in the + Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add + an item describing the Modified Version as stated in the + previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in the + "History" section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section + all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, unaltered + in their text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option designate + some or all of these sections as invariant. To do this, add their + titles to the list of Invariant Sections in the Modified Version's + license notice. These titles must be distinct from any other + section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end of + the list of Cover Texts in the Modified Version. Only one passage + of Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document + already includes a cover text for the same cover, previously added + by you or by arrangement made by the same entity you are acting on + behalf of, you may not add another; but you may replace the old + one, on explicit permission from the previous publisher that added + the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination all + of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the documents + in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of a + storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, receipt of a copy of some or all of the + same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + <https://www.gnu.org/licenses/>. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may + choose any version ever published (not as a draft) by the Free + Software Foundation. If the Document specifies that a proxy can + decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + +ADDENDUM: How to use this License for your documents +==================================================== + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + 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''. + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of free +software license, such as the GNU General Public License, to permit +their use in free software. + + +File: gnutls.info, Node: Bibliography, Next: Function and Data Index, Prev: Copying Information, Up: Top + +Bibliography +************ + +[CBCATT] + Bodo Moeller, "Security of CBC Ciphersuites in SSL/TLS: Problems + and Countermeasures", 2002, available from + <https://www.openssl.org/~bodo/tls-cbc.txt>. + +[GPGH] + Mike Ashley, "The GNU Privacy Handbook", 2002, available from + <https://www.gnupg.org/gph/en/manual.pdf>. + +[GUTPKI] + Peter Gutmann, "Everything you never wanted to know about PKI but + were forced to find out", Available from + <https://www.cs.auckland.ac.nz/~pgut001/>. + +[PRNGATTACKS] + John Kelsey and Bruce Schneier, "Cryptanalytic Attacks on + Pseudorandom Number Generators", Available from + <https://www.schneier.com/academic/paperfiles/paper-prngs.pdf>. + +[KEYPIN] + Chris Evans and Chris Palmer, "Public Key Pinning Extension for + HTTP", Available from + <https://tools.ietf.org/html/draft-ietf-websec-key-pinning-01>. + +[NISTSP80057] + NIST Special Publication 800-57, "Recommendation for Key Management + - Part 1: General (Revised)", March 2007, available from + <https://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf>. + +[RFC7413] + Y. Cheng and J. Chu and S. Radhakrishnan and A. Jain, "TCP Fast + Open", December 2014, Available from + <https://www.ietf.org/rfc/rfc7413.txt>. + +[RFC7918] + A. Langley, N. Modadugu, B. Moeller, "Transport Layer Security + (TLS) False Start", August 2016, Available from + <https://www.ietf.org/rfc/rfc7918.txt>. + +[RFC6125] + Peter Saint-Andre and Jeff Hodges, "Representation and Verification + of Domain-Based Application Service Identity within Internet Public + Key Infrastructure Using X.509 (PKIX) Certificates in the Context + of Transport Layer Security (TLS)", March 2011, Available from + <https://www.ietf.org/rfc/rfc6125.txt>. + +[RFC7685] + Adam Langley, "A Transport Layer Security (TLS) ClientHello Padding + Extension", October 2015, Available from + <https://www.ietf.org/rfc/rfc7685.txt>. + +[RFC7613] + Peter Saint-Andre and Alexey Melnikov, "Preparation, Enforcement, + and Comparison of Internationalized Strings Representing Usernames + and Passwords", August 2015, Available from + <https://www.ietf.org/rfc/rfc7613.txt>. + +[RFC2246] + Tim Dierks and Christopher Allen, "The TLS Protocol Version 1.0", + January 1999, Available from + <https://www.ietf.org/rfc/rfc2246.txt>. + +[RFC6083] + M. Tuexen and R. Seggelmann and E. Rescorla, "Datagram Transport + Layer Security (DTLS) for Stream Control Transmission Protocol + (SCTP)", January 2011, Available from + <https://www.ietf.org/rfc/rfc6083.txt>. + +[RFC4418] + Ted Krovetz, "UMAC: Message Authentication Code using Universal + Hashing", March 2006, Available from + <https://www.ietf.org/rfc/rfc4418.txt>. + +[RFC4680] + S. Santesson, "TLS Handshake Message for Supplemental Data", + September 2006, Available from + <https://www.ietf.org/rfc/rfc4680.txt>. + +[RFC7633] + P. Hallam-Baker, "X.509v3 Transport Layer Security (TLS) Feature + Extension", October 2015, Available from + <https://www.ietf.org/rfc/rfc7633.txt>. + +[RFC7919] + D. Gillmor, "Negotiated Finite Field Diffie-Hellman Ephemeral + Parameters for Transport Layer Security (TLS)", August 2016, + Available from <https://www.ietf.org/rfc/rfc7919.txt>. + +[RFC4514] + Kurt D. Zeilenga, "Lightweight Directory Access Protocol (LDAP): + String Representation of Distinguished Names", June 2006, Available + from <https://www.ietf.org/rfc/rfc4513.txt>. + +[RFC4346] + Tim Dierks and Eric Rescorla, "The TLS Protocol Version 1.1", Match + 2006, Available from <https://www.ietf.org/rfc/rfc4346.txt>. + +[RFC4347] + Eric Rescorla and Nagendra Modadugu, "Datagram Transport Layer + Security", April 2006, Available from + <https://www.ietf.org/rfc/rfc4347.txt>. + +[RFC5246] + Tim Dierks and Eric Rescorla, "The TLS Protocol Version 1.2", + August 2008, Available from <https://www.ietf.org/rfc/rfc5246.txt>. + +[RFC2440] + Jon Callas, Lutz Donnerhacke, Hal Finney and Rodney Thayer, + "OpenPGP Message Format", November 1998, Available from + <https://www.ietf.org/rfc/rfc2440.txt>. + +[RFC4880] + Jon Callas, Lutz Donnerhacke, Hal Finney, David Shaw and Rodney + Thayer, "OpenPGP Message Format", November 2007, Available from + <https://www.ietf.org/rfc/rfc4880.txt>. + +[RFC4211] + J. Schaad, "Internet X.509 Public Key Infrastructure Certificate + Request Message Format (CRMF)", September 2005, Available from + <https://www.ietf.org/rfc/rfc4211.txt>. + +[RFC2817] + Rohit Khare and Scott Lawrence, "Upgrading to TLS Within HTTP/1.1", + May 2000, Available from <https://www.ietf.org/rfc/rfc2817.txt> + +[RFC2818] + Eric Rescorla, "HTTP Over TLS", May 2000, Available from + <https://www.ietf/rfc/rfc2818.txt>. + +[RFC2945] + Tom Wu, "The SRP Authentication and Key Exchange System", September + 2000, Available from <https://www.ietf.org/rfc/rfc2945.txt>. + +[RFC7301] + S. Friedl, A. Popov, A. Langley, E. Stephan, "Transport Layer + Security (TLS) Application-Layer Protocol Negotiation Extension", + July 2014, Available from <https://www.ietf.org/rfc/rfc7301.txt>. + +[RFC2986] + Magnus Nystrom and Burt Kaliski, "PKCS 10 v1.7: Certification + Request Syntax Specification", November 2000, Available from + <https://www.ietf.org/rfc/rfc2986.txt>. + +[PKIX] + D. Cooper, S. Santesson, S. Farrel, S. Boeyen, R. Housley, W. Polk, + "Internet X.509 Public Key Infrastructure Certificate and + Certificate Revocation List (CRL) Profile", May 2008, available + from <https://www.ietf.org/rfc/rfc5280.txt>. + +[RFC3749] + Scott Hollenbeck, "Transport Layer Security Protocol Compression + Methods", May 2004, available from + <https://www.ietf.org/rfc/rfc3749.txt>. + +[RFC3820] + Steven Tuecke, Von Welch, Doug Engert, Laura Pearlman, and Mary + Thompson, "Internet X.509 Public Key Infrastructure (PKI) Proxy + Certificate Profile", June 2004, available from + <https://www.ietf.org/rfc/rfc3820>. + +[RFC6520] + R. Seggelmann, M. Tuexen, and M. Williams, "Transport Layer + Security (TLS) and Datagram Transport Layer Security (DTLS) + Heartbeat Extension", February 2012, available from + <https://www.ietf.org/rfc/rfc6520>. + +[RFC5746] + E. Rescorla, M. Ray, S. Dispensa, and N. Oskov, "Transport Layer + Security (TLS) Renegotiation Indication Extension", February 2010, + available from <https://www.ietf.org/rfc/rfc5746>. + +[RFC5280] + D. Cooper, S. Santesson, S. Farrell, S. Boeyen, R. Housley, and W. + Polk, "Internet X.509 Public Key Infrastructure Certificate and + Certificate Revocation List (CRL) Profile", May 2008, available + from <https://www.ietf.org/rfc/rfc5280>. + +[TLSTKT] + Joseph Salowey, Hao Zhou, Pasi Eronen, Hannes Tschofenig, + "Transport Layer Security (TLS) Session Resumption without + Server-Side State", January 2008, available from + <https://www.ietf.org/rfc/rfc5077>. + +[PKCS12] + RSA Laboratories, "PKCS 12 v1.0: Personal Information Exchange + Syntax", June 1999, Available from <https://www.rsa.com>. + +[PKCS11] + RSA Laboratories, "PKCS #11 Base Functionality v2.30: Cryptoki – + Draft 4", July 2009, Available from <https://www.rsa.com>. + +[RESCORLA] + Eric Rescorla, "SSL and TLS: Designing and Building Secure + Systems", 2001 + +[SELKEY] + Arjen Lenstra and Eric Verheul, "Selecting Cryptographic Key + Sizes", 2003, available from + <https://www.win.tue.nl/~klenstra/key.pdf>. + +[SSL3] + Alan Freier, Philip Karlton and Paul Kocher, "The Secure Sockets + Layer (SSL) Protocol Version 3.0", August 2011, Available from + <https://www.ietf.org/rfc/rfc6101.txt>. + +[STEVENS] + Richard Stevens, "UNIX Network Programming, Volume 1", Prentice + Hall PTR, January 1998 + +[TLSEXT] + Simon Blake-Wilson, Magnus Nystrom, David Hopwood, Jan Mikkelsen + and Tim Wright, "Transport Layer Security (TLS) Extensions", June + 2003, Available from <https://www.ietf.org/rfc/rfc3546.txt>. + +[TLSPGP] + Nikos Mavrogiannopoulos, "Using OpenPGP keys for TLS + authentication", January 2011. Available from + <https://www.ietf.org/rfc/rfc6091.txt>. + +[TLSSRP] + David Taylor, Trevor Perrin, Tom Wu and Nikos Mavrogiannopoulos, + "Using SRP for TLS Authentication", November 2007. Available from + <https://www.ietf.org/rfc/rfc5054.txt>. + +[TLSPSK] + Pasi Eronen and Hannes Tschofenig, "Pre-shared key Ciphersuites for + TLS", December 2005, Available from + <https://www.ietf.org/rfc/rfc4279.txt>. + +[TOMSRP] + Tom Wu, "The Stanford SRP Authentication Project", Available at + <https://srp.stanford.edu/>. + +[WEGER] + Arjen Lenstra and Xiaoyun Wang and Benne de Weger, "Colliding X.509 + Certificates", Cryptology ePrint Archive, Report 2005/067, + Available at <https://eprint.iacr.org/>. + +[ECRYPT] + European Network of Excellence in Cryptology II, "ECRYPT II Yearly + Report on Algorithms and Keysizes (2009-2010)", Available at + <https://www.ecrypt.eu.org/documents/D.SPA.13.pdf>. + +[RFC5056] + N. Williams, "On the Use of Channel Bindings to Secure Channels", + November 2007, available from <https://www.ietf.org/rfc/rfc5056>. + +[RFC5764] + D. McGrew, E. Rescorla, "Datagram Transport Layer Security (DTLS) + Extension to Establish Keys for the Secure Real-time Transport + Protocol (SRTP)On the Use of Channel Bindings to Secure Channels", + May 2010, available from <https://www.ietf.org/rfc/rfc5764>. + +[RFC5929] + J. Altman, N. Williams, L. Zhu, "Channel Bindings for TLS", July + 2010, available from <https://www.ietf.org/rfc/rfc5929>. + +[PKCS11URI] + J. Pechanec, D. Moffat, "The PKCS#11 URI Scheme", April 2015, + available from <https://www.ietf.org/rfc/rfc7512>. + +[TPMURI] + C. Latze, N. Mavrogiannopoulos, "The TPMKEY URI Scheme", January + 2013, Work in progress, available from + <https://tools.ietf.org/html/draft-mavrogiannopoulos-tpmuri-01>. + +[ANDERSON] + R. J. Anderson, "Security Engineering: A Guide to Building + Dependable Distributed Systems", John Wiley \& Sons, Inc., 2001. + +[RFC4821] + M. Mathis, J. Heffner, "Packetization Layer Path MTU Discovery", + March 2007, available from <https://www.ietf.org/rfc/rfc4821.txt>. + +[RFC2560] + M. Myers et al, "X.509 Internet Public Key Infrastructure Online + Certificate Status Protocol - OCSP", June 1999, Available from + <https://www.ietf.org/rfc/rfc2560.txt>. + +[RIVESTCRL] + R. L. Rivest, "Can We Eliminate Certificate Revocation Lists?", + Proceedings of Financial Cryptography '98; Springer Lecture Notes + in Computer Science No. 1465 (Rafael Hirschfeld, ed.), February + 1998), pages 178-183, available from + <https://people.csail.mit.edu/rivest/Rivest-CanWeEliminateCertificateRevocationLists.pdf>. + +[RFC9266] + S. Whited, "Channel Bindings for TLS 1.3", July 2022, available + from <https://www.ietf.org/rfc/rfc9266.txt>. + + +File: gnutls.info, Node: Function and Data Index, Next: Concept Index, Prev: Bibliography, Up: Top + +Function and Data Index +*********************** + + +* Menu: + +* dane_cert_type_name: DANE API. (line 13) +* dane_cert_usage_name: DANE API. (line 24) +* dane_match_type_name: DANE API. (line 36) +* dane_query_data: DANE API. (line 47) +* dane_query_deinit: DANE API. (line 70) +* dane_query_entries: DANE API. (line 78) +* dane_query_status: DANE API. (line 88) +* dane_query_tlsa: DANE API. (line 99) +* dane_query_to_raw_tlsa: DANE API. (line 120) +* dane_raw_tlsa: DANE API. (line 155) +* dane_state_deinit: DANE API. (line 185) +* dane_state_init: DANE API. (line 193) +* dane_state_set_dlv_file: DANE API. (line 208) +* dane_strerror: DANE API. (line 220) +* dane_verification_status_print: DANE API. (line 234) +* dane_verify_crt: Certificate verification. + (line 181) +* dane_verify_crt <1>: DANE API. (line 253) +* dane_verify_crt_raw: DANE API. (line 307) +* dane_verify_session_crt: DANE API. (line 343) +* gnutls_aead_cipher_decrypt: Cryptographic API. (line 16) +* gnutls_aead_cipher_decryptv2: Cryptographic API. (line 56) +* gnutls_aead_cipher_deinit: Cryptographic API. (line 88) +* gnutls_aead_cipher_encrypt: Cryptographic API. (line 100) +* gnutls_aead_cipher_encryptv: Symmetric algorithms. + (line 146) +* gnutls_aead_cipher_encryptv <1>: Cryptographic API. (line 136) +* gnutls_aead_cipher_encryptv2: Cryptographic API. (line 172) +* gnutls_aead_cipher_init: Cryptographic API. (line 204) +* gnutls_aead_cipher_set_key: Cryptographic API. (line 225) +* gnutls_alert_get: Handling alerts. (line 18) +* gnutls_alert_get <1>: Core TLS API. (line 11) +* gnutls_alert_get_name: Handling alerts. (line 31) +* gnutls_alert_get_name <1>: Core TLS API. (line 27) +* gnutls_alert_get_strname: Core TLS API. (line 40) +* gnutls_alert_send: Handling alerts. (line 45) +* gnutls_alert_send <1>: Core TLS API. (line 54) +* gnutls_alert_send_appropriate: Core TLS API. (line 78) +* gnutls_alert_set_read_function: Core TLS API. (line 104) +* gnutls_alpn_get_selected_protocol: Core TLS API. (line 118) +* gnutls_alpn_set_protocols: Core TLS API. (line 139) +* gnutls_anon_allocate_client_credentials: Core TLS API. (line 165) +* gnutls_anon_allocate_server_credentials: Core TLS API. (line 176) +* gnutls_anon_free_client_credentials: Core TLS API. (line 187) +* gnutls_anon_free_server_credentials: Core TLS API. (line 196) +* gnutls_anon_set_params_function: Core TLS API. (line 205) +* gnutls_anon_set_server_dh_params: Core TLS API. (line 223) +* gnutls_anon_set_server_known_dh_params: Core TLS API. (line 241) +* gnutls_anon_set_server_params_function: Core TLS API. (line 265) +* gnutls_anti_replay_deinit: Core TLS API. (line 283) +* gnutls_anti_replay_enable: Core TLS API. (line 295) +* gnutls_anti_replay_init: Core TLS API. (line 308) +* gnutls_anti_replay_set_add_function: Core TLS API. (line 324) +* gnutls_anti_replay_set_ptr: Core TLS API. (line 351) +* gnutls_anti_replay_set_window: Core TLS API. (line 363) +* gnutls_auth_client_get_type: Core TLS API. (line 383) +* gnutls_auth_get_type: Core TLS API. (line 400) +* gnutls_auth_server_get_type: Core TLS API. (line 421) +* gnutls_base64_decode2: Core TLS API. (line 438) +* gnutls_base64_encode2: Core TLS API. (line 457) +* gnutls_buffer_append_data: Core TLS API. (line 477) +* gnutls_bye: Data transfer and termination. + (line 155) +* gnutls_bye <1>: Core TLS API. (line 495) +* gnutls_certificate_activation_time_peers: Core TLS API. (line 531) +* gnutls_certificate_allocate_credentials: Core TLS API. (line 545) +* gnutls_certificate_client_get_request_status: Core TLS API. + (line 556) +* gnutls_certificate_expiration_time_peers: Core TLS API. (line 569) +* gnutls_certificate_free_cas: Core TLS API. (line 600) +* gnutls_certificate_free_ca_names: Core TLS API. (line 583) +* gnutls_certificate_free_credentials: Core TLS API. (line 611) +* gnutls_certificate_free_crls: Core TLS API. (line 624) +* gnutls_certificate_free_keys: Core TLS API. (line 634) +* gnutls_certificate_get_crt_raw: Core TLS API. (line 646) +* gnutls_certificate_get_issuer: Core TLS API. (line 673) +* gnutls_certificate_get_ocsp_expiration: OCSP stapling. (line 46) +* gnutls_certificate_get_ocsp_expiration <1>: Core TLS API. (line 703) +* gnutls_certificate_get_ours: Core TLS API. (line 735) +* gnutls_certificate_get_peers: Core TLS API. (line 756) +* gnutls_certificate_get_peers_subkey_id: Core TLS API. (line 781) +* gnutls_certificate_get_trust_list: X509 certificate API. + (line 12) +* gnutls_certificate_get_verify_flags: Core TLS API. (line 796) +* gnutls_certificate_get_x509_crt: Core TLS API. (line 810) +* gnutls_certificate_get_x509_key: Core TLS API. (line 851) +* gnutls_certificate_send_x509_rdn_sequence: Certificate credentials. + (line 192) +* gnutls_certificate_send_x509_rdn_sequence <1>: Core TLS API. + (line 887) +* gnutls_certificate_server_set_request: Certificate credentials. + (line 177) +* gnutls_certificate_server_set_request <1>: Core TLS API. (line 905) +* gnutls_certificate_set_dh_params: Core TLS API. (line 923) +* gnutls_certificate_set_flags: Core TLS API. (line 944) +* gnutls_certificate_set_key: Certificate credentials. + (line 69) +* gnutls_certificate_set_key <1>: Abstract key API. (line 12) +* gnutls_certificate_set_known_dh_params: Core TLS API. (line 959) +* gnutls_certificate_set_ocsp_status_request_file: Core TLS API. + (line 983) +* gnutls_certificate_set_ocsp_status_request_file2: Core TLS API. + (line 1026) +* gnutls_certificate_set_ocsp_status_request_function: Core TLS API. + (line 1063) +* gnutls_certificate_set_ocsp_status_request_function2: Core TLS API. + (line 1098) +* gnutls_certificate_set_ocsp_status_request_mem: Core TLS API. + (line 1144) +* gnutls_certificate_set_params_function: Core TLS API. (line 1186) +* gnutls_certificate_set_pin_function: Certificate credentials. + (line 45) +* gnutls_certificate_set_pin_function <1>: Core TLS API. (line 1205) +* gnutls_certificate_set_rawpk_key_file: Core TLS API. (line 1226) +* gnutls_certificate_set_rawpk_key_mem: Core TLS API. (line 1300) +* gnutls_certificate_set_retrieve_function: Core TLS API. (line 1371) +* gnutls_certificate_set_retrieve_function2: Abstract key API. + (line 63) +* gnutls_certificate_set_retrieve_function3: Abstract key API. + (line 117) +* gnutls_certificate_set_trust_list: X509 certificate API. + (line 30) +* gnutls_certificate_set_verify_flags: Core TLS API. (line 1421) +* gnutls_certificate_set_verify_function: Core TLS API. (line 1434) +* gnutls_certificate_set_verify_limits: Core TLS API. (line 1463) +* gnutls_certificate_set_x509_crl: Core TLS API. (line 1482) +* gnutls_certificate_set_x509_crl_file: Core TLS API. (line 1506) +* gnutls_certificate_set_x509_crl_mem: Core TLS API. (line 1528) +* gnutls_certificate_set_x509_key: Core TLS API. (line 1550) +* gnutls_certificate_set_x509_key_file: Core TLS API. (line 1590) +* gnutls_certificate_set_x509_key_file2: Core TLS API. (line 1642) +* gnutls_certificate_set_x509_key_mem: Core TLS API. (line 1699) +* gnutls_certificate_set_x509_key_mem2: Core TLS API. (line 1740) +* gnutls_certificate_set_x509_simple_pkcs12_file: Core TLS API. + (line 1786) +* gnutls_certificate_set_x509_simple_pkcs12_mem: Core TLS API. + (line 1834) +* gnutls_certificate_set_x509_system_trust: Certificate credentials. + (line 232) +* gnutls_certificate_set_x509_system_trust <1>: Core TLS API. + (line 1884) +* gnutls_certificate_set_x509_trust: Core TLS API. (line 1902) +* gnutls_certificate_set_x509_trust_dir: Core TLS API. (line 1929) +* gnutls_certificate_set_x509_trust_file: Core TLS API. (line 1951) +* gnutls_certificate_set_x509_trust_mem: Core TLS API. (line 1981) +* gnutls_certificate_type_get: Core TLS API. (line 2006) +* gnutls_certificate_type_get2: Core TLS API. (line 2027) +* gnutls_certificate_type_get_id: Core TLS API. (line 2059) +* gnutls_certificate_type_get_name: Core TLS API. (line 2071) +* gnutls_certificate_type_list: Core TLS API. (line 2083) +* gnutls_certificate_verification_profile_get_id: X509 certificate API. + (line 51) +* gnutls_certificate_verification_profile_get_name: X509 certificate API. + (line 65) +* gnutls_certificate_verification_status_print: Core TLS API. + (line 2094) +* gnutls_certificate_verify_flags: Verifying a certificate in the context of TLS session. + (line 6) +* gnutls_certificate_verify_flags <1>: Certificate verification. + (line 6) +* gnutls_certificate_verify_peers: Core TLS API. (line 2119) +* gnutls_certificate_verify_peers2: Core TLS API. (line 2180) +* gnutls_certificate_verify_peers3: Core TLS API. (line 2222) +* gnutls_check_version: Core TLS API. (line 2273) +* gnutls_ciphersuite_get: Core TLS API. (line 2409) +* gnutls_cipher_add_auth: Cryptographic API. (line 241) +* gnutls_cipher_decrypt: Cryptographic API. (line 260) +* gnutls_cipher_decrypt2: Cryptographic API. (line 282) +* gnutls_cipher_decrypt3: Cryptographic API. (line 311) +* gnutls_cipher_deinit: Cryptographic API. (line 338) +* gnutls_cipher_encrypt: Cryptographic API. (line 349) +* gnutls_cipher_encrypt2: Cryptographic API. (line 367) +* gnutls_cipher_encrypt3: Cryptographic API. (line 392) +* gnutls_cipher_get: Core TLS API. (line 2292) +* gnutls_cipher_get_block_size: Cryptographic API. (line 427) +* gnutls_cipher_get_id: Core TLS API. (line 2304) +* gnutls_cipher_get_iv_size: Cryptographic API. (line 438) +* gnutls_cipher_get_key_size: Core TLS API. (line 2316) +* gnutls_cipher_get_name: Core TLS API. (line 2328) +* gnutls_cipher_get_tag_size: Cryptographic API. (line 453) +* gnutls_cipher_init: Cryptographic API. (line 467) +* gnutls_cipher_list: Core TLS API. (line 2340) +* gnutls_cipher_set_iv: Cryptographic API. (line 490) +* gnutls_cipher_suite_get_name: Core TLS API. (line 2356) +* gnutls_cipher_suite_info: Core TLS API. (line 2379) +* gnutls_cipher_tag: Cryptographic API. (line 506) +* gnutls_compression_get: Compatibility API. (line 13) +* gnutls_compression_get_id: Compatibility API. (line 25) +* gnutls_compression_get_name: Compatibility API. (line 37) +* gnutls_compression_list: Compatibility API. (line 49) +* gnutls_compress_certificate_get_selected_method: Core TLS API. + (line 2432) +* gnutls_compress_certificate_set_methods: Core TLS API. (line 2449) +* gnutls_credentials_clear: Core TLS API. (line 2490) +* gnutls_credentials_get: Core TLS API. (line 2498) +* gnutls_credentials_set: Session initialization. + (line 150) +* gnutls_credentials_set <1>: Core TLS API. (line 2527) +* gnutls_crypto_register_aead_cipher: Overriding algorithms. + (line 58) +* gnutls_crypto_register_aead_cipher <1>: Cryptographic API. (line 524) +* gnutls_crypto_register_cipher: Overriding algorithms. + (line 13) +* gnutls_crypto_register_cipher <1>: Cryptographic API. (line 569) +* gnutls_crypto_register_digest: Overriding algorithms. + (line 139) +* gnutls_crypto_register_digest <1>: Cryptographic API. (line 617) +* gnutls_crypto_register_mac: Overriding algorithms. + (line 100) +* gnutls_crypto_register_mac <1>: Cryptographic API. (line 653) +* gnutls_db_check_entry: Core TLS API. (line 2562) +* gnutls_db_check_entry_expire_time: Core TLS API. (line 2578) +* gnutls_db_check_entry_time: Core TLS API. (line 2592) +* gnutls_db_get_default_cache_expiration: Core TLS API. (line 2603) +* gnutls_db_get_ptr: Core TLS API. (line 2611) +* gnutls_db_remove_session: Core TLS API. (line 2622) +* gnutls_db_set_cache_expiration: Core TLS API. (line 2636) +* gnutls_db_set_ptr: Core TLS API. (line 2651) +* gnutls_db_set_remove_function: Core TLS API. (line 2663) +* gnutls_db_set_retrieve_function: Core TLS API. (line 2678) +* gnutls_db_set_store_function: Core TLS API. (line 2698) +* gnutls_decode_ber_digest_info: Cryptographic API. (line 695) +* gnutls_decode_gost_rs_value: Cryptographic API. (line 718) +* gnutls_decode_rs_value: Cryptographic API. (line 743) +* gnutls_deinit: Data transfer and termination. + (line 188) +* gnutls_deinit <1>: Core TLS API. (line 2713) +* gnutls_dh_get_group: Core TLS API. (line 2723) +* gnutls_dh_get_peers_public_bits: Core TLS API. (line 2746) +* gnutls_dh_get_prime_bits: Core TLS API. (line 2760) +* gnutls_dh_get_pubkey: Core TLS API. (line 2776) +* gnutls_dh_get_secret_bits: Core TLS API. (line 2796) +* gnutls_dh_params_cpy: Core TLS API. (line 2809) +* gnutls_dh_params_deinit: Core TLS API. (line 2824) +* gnutls_dh_params_export2_pkcs3: Core TLS API. (line 2833) +* gnutls_dh_params_export_pkcs3: Core TLS API. (line 2857) +* gnutls_dh_params_export_raw: Core TLS API. (line 2884) +* gnutls_dh_params_generate2: Core TLS API. (line 2906) +* gnutls_dh_params_import_dsa: Core TLS API. (line 2936) +* gnutls_dh_params_import_pkcs3: Core TLS API. (line 2951) +* gnutls_dh_params_import_raw: Core TLS API. (line 2973) +* gnutls_dh_params_import_raw2: Core TLS API. (line 2992) +* gnutls_dh_params_import_raw3: Core TLS API. (line 3013) +* gnutls_dh_params_init: Core TLS API. (line 3034) +* gnutls_dh_set_prime_bits: Core TLS API. (line 3045) +* gnutls_digest_get_id: Core TLS API. (line 3073) +* gnutls_digest_get_name: Core TLS API. (line 3086) +* gnutls_digest_get_oid: Core TLS API. (line 3098) +* gnutls_digest_list: Core TLS API. (line 3113) +* gnutls_digest_set_secure: Core TLS API. (line 3127) +* gnutls_dtls_cookie_send: Datagram TLS API. (line 11) +* gnutls_dtls_cookie_verify: Datagram TLS API. (line 45) +* gnutls_dtls_get_data_mtu: Datagram TLS API. (line 74) +* gnutls_dtls_get_mtu: Datagram TLS API. (line 89) +* gnutls_dtls_get_timeout: Setting up the transport layer. + (line 193) +* gnutls_dtls_get_timeout <1>: Datagram TLS API. (line 104) +* gnutls_dtls_prestate_set: Datagram TLS API. (line 121) +* gnutls_dtls_set_data_mtu: Datagram TLS API. (line 139) +* gnutls_dtls_set_mtu: Datagram TLS API. (line 165) +* gnutls_dtls_set_timeouts: Datagram TLS API. (line 182) +* gnutls_early_cipher_get: Core TLS API. (line 3143) +* gnutls_early_prf_hash_get: Core TLS API. (line 3157) +* gnutls_ecc_curve_get: Core TLS API. (line 3172) +* gnutls_ecc_curve_get_id: Core TLS API. (line 3186) +* gnutls_ecc_curve_get_name: Core TLS API. (line 3200) +* gnutls_ecc_curve_get_oid: Core TLS API. (line 3214) +* gnutls_ecc_curve_get_pk: Core TLS API. (line 3228) +* gnutls_ecc_curve_get_size: Core TLS API. (line 3240) +* gnutls_ecc_curve_list: Core TLS API. (line 3250) +* gnutls_ecc_curve_set_enabled: Core TLS API. (line 3262) +* gnutls_encode_ber_digest_info: Cryptographic API. (line 767) +* gnutls_encode_gost_rs_value: Cryptographic API. (line 787) +* gnutls_encode_rs_value: Cryptographic API. (line 810) +* gnutls_error_is_fatal: Data transfer and termination. + (line 82) +* gnutls_error_is_fatal <1>: Core TLS API. (line 3287) +* gnutls_error_to_alert: Handling alerts. (line 66) +* gnutls_error_to_alert <1>: Core TLS API. (line 3307) +* gnutls_est_record_overhead_size: Core TLS API. (line 3326) +* gnutls_ext_get_current_msg: Core TLS API. (line 3353) +* gnutls_ext_get_data: Core TLS API. (line 3371) +* gnutls_ext_get_name: Core TLS API. (line 3390) +* gnutls_ext_get_name2: Core TLS API. (line 3401) +* gnutls_ext_raw_parse: Core TLS API. (line 3418) +* gnutls_ext_register: Core TLS API. (line 3449) +* gnutls_ext_set_data: Core TLS API. (line 3496) +* gnutls_fingerprint: Core TLS API. (line 3513) +* gnutls_fips140_context_deinit: Core TLS API. (line 3540) +* gnutls_fips140_context_init: Core TLS API. (line 3551) +* gnutls_fips140_get_operation_state: FIPS140-2 mode. (line 138) +* gnutls_fips140_get_operation_state <1>: Core TLS API. (line 3564) +* gnutls_fips140_mode_enabled: Core TLS API. (line 3578) +* gnutls_fips140_pop_context: Core TLS API. (line 3596) +* gnutls_fips140_push_context: Core TLS API. (line 3615) +* gnutls_fips140_run_self_tests: Core TLS API. (line 3638) +* gnutls_fips140_set_mode: Core TLS API. (line 3656) +* gnutls_get_library_config: Core TLS API. (line 3682) +* gnutls_get_system_config_file: System-wide configuration of the library. + (line 24) +* gnutls_get_system_config_file <1>: Core TLS API. (line 3711) +* gnutls_global_deinit: Core TLS API. (line 3723) +* gnutls_global_init: Core TLS API. (line 3736) +* gnutls_global_set_audit_log_function: Debugging and auditing. + (line 65) +* gnutls_global_set_audit_log_function <1>: Core TLS API. (line 3765) +* gnutls_global_set_log_function: Core TLS API. (line 3784) +* gnutls_global_set_log_level: Core TLS API. (line 3799) +* gnutls_global_set_mem_functions: Compatibility API. (line 60) +* gnutls_global_set_mutex: Core TLS API. (line 3812) +* gnutls_global_set_time_function: Core TLS API. (line 3841) +* gnutls_gost_paramset_get_name: Core TLS API. (line 3855) +* gnutls_gost_paramset_get_oid: Core TLS API. (line 3869) +* gnutls_group_get: Core TLS API. (line 3883) +* gnutls_group_get_id: Core TLS API. (line 3896) +* gnutls_group_get_name: Core TLS API. (line 3909) +* gnutls_group_list: Core TLS API. (line 3922) +* gnutls_handshake: TLS handshake. (line 10) +* gnutls_handshake <1>: Core TLS API. (line 3936) +* gnutls_handshake_description_get_name: Core TLS API. (line 3979) +* gnutls_handshake_get_last_in: Core TLS API. (line 3991) +* gnutls_handshake_get_last_out: Core TLS API. (line 4008) +* gnutls_handshake_set_hook_function: Virtual hosts and credentials. + (line 56) +* gnutls_handshake_set_hook_function <1>: Core TLS API. (line 4025) +* gnutls_handshake_set_max_packet_length: Core TLS API. (line 4062) +* gnutls_handshake_set_post_client_hello_function: Core TLS API. + (line 4083) +* gnutls_handshake_set_private_extensions: Core TLS API. (line 4114) +* gnutls_handshake_set_random: Core TLS API. (line 4133) +* gnutls_handshake_set_read_function: Core TLS API. (line 4155) +* gnutls_handshake_set_secret_function: Core TLS API. (line 4169) +* gnutls_handshake_set_timeout: TLS handshake. (line 50) +* gnutls_handshake_set_timeout <1>: Core TLS API. (line 4183) +* gnutls_handshake_write: Core TLS API. (line 4203) +* gnutls_hash: Cryptographic API. (line 831) +* gnutls_hash_copy: Cryptographic API. (line 849) +* gnutls_hash_deinit: Cryptographic API. (line 868) +* gnutls_hash_fast: Cryptographic API. (line 882) +* gnutls_hash_get_len: Cryptographic API. (line 902) +* gnutls_hash_init: Cryptographic API. (line 916) +* gnutls_hash_output: Cryptographic API. (line 934) +* gnutls_heartbeat_allowed: Core TLS API. (line 4224) +* gnutls_heartbeat_enable: Core TLS API. (line 4241) +* gnutls_heartbeat_get_timeout: Core TLS API. (line 4265) +* gnutls_heartbeat_ping: Core TLS API. (line 4281) +* gnutls_heartbeat_pong: Core TLS API. (line 4313) +* gnutls_heartbeat_set_timeouts: Core TLS API. (line 4329) +* gnutls_hex2bin: Core TLS API. (line 4351) +* gnutls_hex_decode: Core TLS API. (line 4374) +* gnutls_hex_decode2: Core TLS API. (line 4396) +* gnutls_hex_encode: Core TLS API. (line 4411) +* gnutls_hex_encode2: Core TLS API. (line 4430) +* gnutls_hkdf_expand: Cryptographic API. (line 948) +* gnutls_hkdf_extract: Cryptographic API. (line 972) +* gnutls_hmac: Cryptographic API. (line 993) +* gnutls_hmac_copy: Cryptographic API. (line 1011) +* gnutls_hmac_deinit: Cryptographic API. (line 1029) +* gnutls_hmac_fast: Cryptographic API. (line 1043) +* gnutls_hmac_get_key_size: Cryptographic API. (line 1069) +* gnutls_hmac_get_len: Cryptographic API. (line 1084) +* gnutls_hmac_init: Cryptographic API. (line 1098) +* gnutls_hmac_output: Cryptographic API. (line 1124) +* gnutls_hmac_set_nonce: Cryptographic API. (line 1138) +* gnutls_idna_map: Core TLS API. (line 4448) +* gnutls_idna_reverse_map: Core TLS API. (line 4479) +* gnutls_init: Session initialization. + (line 14) +* gnutls_init <1>: Core TLS API. (line 4505) +* gnutls_key_generate: Core TLS API. (line 4528) +* gnutls_kx_get: Core TLS API. (line 4545) +* gnutls_kx_get_id: Core TLS API. (line 4562) +* gnutls_kx_get_name: Core TLS API. (line 4574) +* gnutls_kx_list: Core TLS API. (line 4586) +* gnutls_load_file: Core TLS API. (line 4598) +* gnutls_mac_get: Core TLS API. (line 4621) +* gnutls_mac_get_id: Core TLS API. (line 4633) +* gnutls_mac_get_key_size: Core TLS API. (line 4646) +* gnutls_mac_get_name: Core TLS API. (line 4658) +* gnutls_mac_get_nonce_size: Cryptographic API. (line 1153) +* gnutls_mac_list: Core TLS API. (line 4670) +* gnutls_memcmp: Core TLS API. (line 4682) +* gnutls_memset: Core TLS API. (line 4703) +* gnutls_ocsp_req_add_cert: OCSP API. (line 12) +* gnutls_ocsp_req_add_cert_id: OCSP API. (line 36) +* gnutls_ocsp_req_deinit: OCSP API. (line 69) +* gnutls_ocsp_req_export: OCSP API. (line 77) +* gnutls_ocsp_req_get_cert_id: OCSP API. (line 91) +* gnutls_ocsp_req_get_extension: OCSP API. (line 131) +* gnutls_ocsp_req_get_nonce: OCSP API. (line 168) +* gnutls_ocsp_req_get_version: OCSP API. (line 187) +* gnutls_ocsp_req_import: OCSP API. (line 200) +* gnutls_ocsp_req_init: OCSP API. (line 216) +* gnutls_ocsp_req_print: OCSP API. (line 227) +* gnutls_ocsp_req_randomize_nonce: OCSP API. (line 250) +* gnutls_ocsp_req_set_extension: OCSP API. (line 263) +* gnutls_ocsp_req_set_nonce: OCSP API. (line 284) +* gnutls_ocsp_resp_check_crt: OCSP API. (line 302) +* gnutls_ocsp_resp_deinit: OCSP API. (line 322) +* gnutls_ocsp_resp_export: OCSP API. (line 330) +* gnutls_ocsp_resp_export2: OCSP API. (line 344) +* gnutls_ocsp_resp_get_certs: OCSP API. (line 363) +* gnutls_ocsp_resp_get_extension: OCSP API. (line 390) +* gnutls_ocsp_resp_get_nonce: OCSP API. (line 427) +* gnutls_ocsp_resp_get_produced: OCSP API. (line 447) +* gnutls_ocsp_resp_get_responder: OCSP API. (line 459) +* gnutls_ocsp_resp_get_responder2: OCSP API. (line 486) +* gnutls_ocsp_resp_get_responder_raw_id: OCSP API. (line 517) +* gnutls_ocsp_resp_get_response: OCSP API. (line 541) +* gnutls_ocsp_resp_get_signature: OCSP API. (line 571) +* gnutls_ocsp_resp_get_signature_algorithm: OCSP API. (line 585) +* gnutls_ocsp_resp_get_single: OCSP certificate status checking. + (line 158) +* gnutls_ocsp_resp_get_single <1>: OCSP API. (line 599) +* gnutls_ocsp_resp_get_status: OCSP API. (line 650) +* gnutls_ocsp_resp_get_version: OCSP API. (line 663) +* gnutls_ocsp_resp_import: OCSP API. (line 676) +* gnutls_ocsp_resp_import2: OCSP API. (line 692) +* gnutls_ocsp_resp_init: OCSP API. (line 712) +* gnutls_ocsp_resp_list_import2: OCSP API. (line 723) +* gnutls_ocsp_resp_print: OCSP API. (line 757) +* gnutls_ocsp_resp_verify: OCSP API. (line 780) +* gnutls_ocsp_resp_verify_direct: OCSP API. (line 818) +* gnutls_ocsp_status_request_enable_client: Core TLS API. (line 4718) +* gnutls_ocsp_status_request_get: Core TLS API. (line 4746) +* gnutls_ocsp_status_request_get2: Core TLS API. (line 4765) +* gnutls_ocsp_status_request_is_checked: Core TLS API. (line 4791) +* gnutls_oid_to_digest: Core TLS API. (line 4825) +* gnutls_oid_to_ecc_curve: Core TLS API. (line 4840) +* gnutls_oid_to_gost_paramset: Core TLS API. (line 4852) +* gnutls_oid_to_mac: Core TLS API. (line 4867) +* gnutls_oid_to_pk: Core TLS API. (line 4882) +* gnutls_oid_to_sign: Core TLS API. (line 4896) +* gnutls_openpgp_privkey_sign_hash: Compatibility API. (line 95) +* gnutls_openpgp_send_cert: Core TLS API. (line 4911) +* gnutls_packet_deinit: Core TLS API. (line 4924) +* gnutls_packet_get: Core TLS API. (line 4935) +* gnutls_pbkdf2: Cryptographic API. (line 1166) +* gnutls_pcert_deinit: Abstract key API. (line 176) +* gnutls_pcert_export_openpgp: Abstract key API. (line 186) +* gnutls_pcert_export_x509: Abstract key API. (line 201) +* gnutls_pcert_import_openpgp: Abstract key API. (line 221) +* gnutls_pcert_import_openpgp_raw: Abstract key API. (line 238) +* gnutls_pcert_import_rawpk: Abstract key API. (line 260) +* gnutls_pcert_import_rawpk_raw: Abstract key API. (line 284) +* gnutls_pcert_import_x509: Abstract key API. (line 318) +* gnutls_pcert_import_x509_list: Abstract key API. (line 338) +* gnutls_pcert_import_x509_raw: Abstract key API. (line 370) +* gnutls_pcert_list_import_x509_file: Abstract key API. (line 393) +* gnutls_pcert_list_import_x509_raw: Abstract key API. (line 430) +* gnutls_pem_base64_decode: Core TLS API. (line 4953) +* gnutls_pem_base64_decode2: Core TLS API. (line 4977) +* gnutls_pem_base64_encode: Core TLS API. (line 5005) +* gnutls_pem_base64_encode2: Core TLS API. (line 5028) +* gnutls_perror: Core TLS API. (line 5056) +* gnutls_pkcs11_add_provider: PKCS11 Manual Initialization. + (line 13) +* gnutls_pkcs11_add_provider <1>: PKCS 11 API. (line 12) +* gnutls_pkcs11_copy_attached_extension: PKCS 11 API. (line 35) +* gnutls_pkcs11_copy_pubkey: PKCS 11 API. (line 62) +* gnutls_pkcs11_copy_secret_key: PKCS 11 API. (line 94) +* gnutls_pkcs11_copy_x509_crt: PKCS 11 API. (line 119) +* gnutls_pkcs11_copy_x509_crt2: Writing objects. (line 41) +* gnutls_pkcs11_copy_x509_crt2 <1>: PKCS 11 API. (line 141) +* gnutls_pkcs11_copy_x509_privkey: PKCS 11 API. (line 170) +* gnutls_pkcs11_copy_x509_privkey2: Writing objects. (line 13) +* gnutls_pkcs11_copy_x509_privkey2 <1>: PKCS 11 API. (line 197) +* gnutls_pkcs11_crt_is_known: PKCS 11 API. (line 228) +* gnutls_pkcs11_deinit: PKCS 11 API. (line 259) +* gnutls_pkcs11_delete_url: Writing objects. (line 67) +* gnutls_pkcs11_delete_url <1>: PKCS 11 API. (line 270) +* gnutls_pkcs11_get_pin_function: PKCS 11 API. (line 287) +* gnutls_pkcs11_get_raw_issuer: PKCS 11 API. (line 301) +* gnutls_pkcs11_get_raw_issuer_by_dn: PKCS 11 API. (line 327) +* gnutls_pkcs11_get_raw_issuer_by_subject_key_id: PKCS 11 API. + (line 356) +* gnutls_pkcs11_init: PKCS11 Manual Initialization. + (line 38) +* gnutls_pkcs11_init <1>: PKCS 11 API. (line 388) +* gnutls_pkcs11_obj_deinit: PKCS 11 API. (line 415) +* gnutls_pkcs11_obj_export: PKCS 11 API. (line 425) +* gnutls_pkcs11_obj_export2: PKCS 11 API. (line 450) +* gnutls_pkcs11_obj_export3: PKCS 11 API. (line 470) +* gnutls_pkcs11_obj_export_url: PKCS 11 API. (line 492) +* gnutls_pkcs11_obj_flags_get_str: PKCS 11 API. (line 510) +* gnutls_pkcs11_obj_get_exts: PKCS 11 API. (line 526) +* gnutls_pkcs11_obj_get_flags: PKCS 11 API. (line 554) +* gnutls_pkcs11_obj_get_info: Reading objects. (line 28) +* gnutls_pkcs11_obj_get_info <1>: PKCS 11 API. (line 572) +* gnutls_pkcs11_obj_get_ptr: PKCS11 Low Level Access. + (line 31) +* gnutls_pkcs11_obj_get_ptr <1>: PKCS 11 API. (line 606) +* gnutls_pkcs11_obj_get_type: PKCS 11 API. (line 633) +* gnutls_pkcs11_obj_import_url: PKCS 11 API. (line 647) +* gnutls_pkcs11_obj_init: PKCS 11 API. (line 673) +* gnutls_pkcs11_obj_list_import_url3: PKCS 11 API. (line 686) +* gnutls_pkcs11_obj_list_import_url4: PKCS 11 API. (line 733) +* gnutls_pkcs11_obj_set_info: PKCS 11 API. (line 775) +* gnutls_pkcs11_obj_set_pin_function: PKCS 11 API. (line 800) +* gnutls_pkcs11_privkey_cpy: PKCS 11 API. (line 818) +* gnutls_pkcs11_privkey_deinit: PKCS 11 API. (line 835) +* gnutls_pkcs11_privkey_export_pubkey: PKCS 11 API. (line 844) +* gnutls_pkcs11_privkey_export_url: PKCS 11 API. (line 869) +* gnutls_pkcs11_privkey_generate: PKCS 11 API. (line 886) +* gnutls_pkcs11_privkey_generate2: PKCS 11 API. (line 911) +* gnutls_pkcs11_privkey_generate3: PKCS 11 API. (line 947) +* gnutls_pkcs11_privkey_get_info: PKCS 11 API. (line 991) +* gnutls_pkcs11_privkey_get_pk_algorithm: PKCS 11 API. (line 1014) +* gnutls_pkcs11_privkey_import_url: PKCS 11 API. (line 1030) +* gnutls_pkcs11_privkey_init: PKCS 11 API. (line 1050) +* gnutls_pkcs11_privkey_set_pin_function: PKCS 11 API. (line 1068) +* gnutls_pkcs11_privkey_status: PKCS 11 API. (line 1086) +* gnutls_pkcs11_reinit: PKCS 11 API. (line 1100) +* gnutls_pkcs11_set_pin_function: PKCS 11 API. (line 1117) +* gnutls_pkcs11_set_token_function: PKCS 11 API. (line 1132) +* gnutls_pkcs11_token_check_mechanism: PKCS 11 API. (line 1146) +* gnutls_pkcs11_token_get_flags: PKCS 11 API. (line 1171) +* gnutls_pkcs11_token_get_info: PKCS 11 API. (line 1191) +* gnutls_pkcs11_token_get_mechanism: PKCS 11 API. (line 1220) +* gnutls_pkcs11_token_get_ptr: PKCS11 Low Level Access. + (line 12) +* gnutls_pkcs11_token_get_ptr <1>: PKCS 11 API. (line 1240) +* gnutls_pkcs11_token_get_random: PKCS 11 API. (line 1262) +* gnutls_pkcs11_token_get_url: PKCS 11 API. (line 1280) +* gnutls_pkcs11_token_init: PKCS 11 API. (line 1300) +* gnutls_pkcs11_token_set_pin: PKCS 11 API. (line 1319) +* gnutls_pkcs11_type_get_name: PKCS 11 API. (line 1342) +* gnutls_pkcs12_bag_decrypt: PKCS 12 API. (line 12) +* gnutls_pkcs12_bag_deinit: PKCS 12 API. (line 27) +* gnutls_pkcs12_bag_encrypt: PKCS 12 API. (line 71) +* gnutls_pkcs12_bag_enc_info: PKCS 12 API. (line 35) +* gnutls_pkcs12_bag_get_count: PKCS 12 API. (line 88) +* gnutls_pkcs12_bag_get_data: PKCS 12 API. (line 100) +* gnutls_pkcs12_bag_get_friendly_name: PKCS 12 API. (line 118) +* gnutls_pkcs12_bag_get_key_id: PKCS 12 API. (line 137) +* gnutls_pkcs12_bag_get_type: PKCS 12 API. (line 156) +* gnutls_pkcs12_bag_init: PKCS 12 API. (line 170) +* gnutls_pkcs12_bag_set_crl: PKCS 12 API. (line 183) +* gnutls_pkcs12_bag_set_crt: PKCS 12 API. (line 198) +* gnutls_pkcs12_bag_set_data: PKCS 12 API. (line 213) +* gnutls_pkcs12_bag_set_friendly_name: PKCS 12 API. (line 230) +* gnutls_pkcs12_bag_set_key_id: PKCS 12 API. (line 250) +* gnutls_pkcs12_bag_set_privkey: PKCS 12 API. (line 270) +* gnutls_pkcs12_deinit: PKCS 12 API. (line 291) +* gnutls_pkcs12_export: PKCS 12 API. (line 299) +* gnutls_pkcs12_export2: PKCS 12 API. (line 327) +* gnutls_pkcs12_generate_mac: PKCS 12 API. (line 351) +* gnutls_pkcs12_generate_mac2: PKCS 12 API. (line 365) +* gnutls_pkcs12_get_bag: PKCS 12 API. (line 381) +* gnutls_pkcs12_import: PKCS 12 API. (line 401) +* gnutls_pkcs12_init: PKCS 12 API. (line 424) +* gnutls_pkcs12_mac_info: PKCS 12 API. (line 437) +* gnutls_pkcs12_set_bag: PKCS 12 API. (line 470) +* gnutls_pkcs12_simple_parse: Managing encrypted keys. + (line 159) +* gnutls_pkcs12_simple_parse <1>: PKCS 12 API. (line 484) +* gnutls_pkcs12_verify_mac: PKCS 12 API. (line 551) +* gnutls_pkcs7_add_attr: PKCS 7 API. (line 12) +* gnutls_pkcs7_attrs_deinit: PKCS 7 API. (line 36) +* gnutls_pkcs7_deinit: PKCS 7 API. (line 46) +* gnutls_pkcs7_delete_crl: PKCS 7 API. (line 54) +* gnutls_pkcs7_delete_crt: PKCS 7 API. (line 69) +* gnutls_pkcs7_export: PKCS 7 API. (line 84) +* gnutls_pkcs7_export2: PKCS 7 API. (line 111) +* gnutls_pkcs7_get_attr: PKCS 7 API. (line 134) +* gnutls_pkcs7_get_crl_count: PKCS 7 API. (line 161) +* gnutls_pkcs7_get_crl_raw: PKCS 7 API. (line 173) +* gnutls_pkcs7_get_crl_raw2: PKCS 7 API. (line 194) +* gnutls_pkcs7_get_crt_count: PKCS 7 API. (line 214) +* gnutls_pkcs7_get_crt_raw: PKCS 7 API. (line 226) +* gnutls_pkcs7_get_crt_raw2: PKCS 7 API. (line 251) +* gnutls_pkcs7_get_embedded_data: PKCS 7 API. (line 276) +* gnutls_pkcs7_get_embedded_data_oid: PKCS 7 API. (line 303) +* gnutls_pkcs7_get_signature_count: PKCS 7 API. (line 319) +* gnutls_pkcs7_get_signature_info: PKCS 7 API. (line 334) +* gnutls_pkcs7_import: PKCS 7 API. (line 355) +* gnutls_pkcs7_init: PKCS 7 API. (line 377) +* gnutls_pkcs7_print: PKCS 7 API. (line 390) +* gnutls_pkcs7_print_signature_info: PKCS 7 API. (line 413) +* gnutls_pkcs7_set_crl: PKCS 7 API. (line 439) +* gnutls_pkcs7_set_crl_raw: PKCS 7 API. (line 454) +* gnutls_pkcs7_set_crt: PKCS 7 API. (line 468) +* gnutls_pkcs7_set_crt_raw: PKCS 7 API. (line 484) +* gnutls_pkcs7_sign: Cryptographic Message Syntax / PKCS7. + (line 35) +* gnutls_pkcs7_sign <1>: PKCS 7 API. (line 499) +* gnutls_pkcs7_signature_info_deinit: PKCS 7 API. (line 540) +* gnutls_pkcs7_verify: PKCS 7 API. (line 552) +* gnutls_pkcs7_verify_direct: PKCS 7 API. (line 585) +* gnutls_pkcs8_info: X509 certificate API. + (line 79) +* gnutls_pkcs_schema_get_name: X509 certificate API. + (line 119) +* gnutls_pkcs_schema_get_oid: X509 certificate API. + (line 134) +* gnutls_pk_algorithm_get_name: Core TLS API. (line 5065) +* gnutls_pk_bits_to_sec_param: Selecting cryptographic key sizes. + (line 92) +* gnutls_pk_bits_to_sec_param <1>: Core TLS API. (line 5077) +* gnutls_pk_get_id: Core TLS API. (line 5094) +* gnutls_pk_get_name: Core TLS API. (line 5109) +* gnutls_pk_get_oid: Core TLS API. (line 5123) +* gnutls_pk_list: Core TLS API. (line 5138) +* gnutls_pk_to_sign: Core TLS API. (line 5152) +* gnutls_prf: Core TLS API. (line 5167) +* gnutls_prf_early: Core TLS API. (line 5217) +* gnutls_prf_hash_get: Core TLS API. (line 5262) +* gnutls_prf_raw: Core TLS API. (line 5279) +* gnutls_prf_rfc5705: Deriving keys for other applications/protocols. + (line 16) +* gnutls_prf_rfc5705 <1>: Core TLS API. (line 5324) +* gnutls_priority_certificate_type_list: Core TLS API. (line 5371) +* gnutls_priority_certificate_type_list2: Core TLS API. (line 5392) +* gnutls_priority_cipher_list: Core TLS API. (line 5412) +* gnutls_priority_compression_list: Compatibility API. (line 111) +* gnutls_priority_deinit: Core TLS API. (line 5427) +* gnutls_priority_ecc_curve_list: Core TLS API. (line 5436) +* gnutls_priority_get_cipher_suite_index: Core TLS API. (line 5454) +* gnutls_priority_group_list: Core TLS API. (line 5479) +* gnutls_priority_init: Core TLS API. (line 5494) +* gnutls_priority_init2: Core TLS API. (line 5522) +* gnutls_priority_kx_list: Core TLS API. (line 5630) +* gnutls_priority_mac_list: Core TLS API. (line 5646) +* gnutls_priority_protocol_list: Core TLS API. (line 5661) +* gnutls_priority_set: Core TLS API. (line 5677) +* gnutls_priority_set_direct: Core TLS API. (line 5695) +* gnutls_priority_sign_list: Core TLS API. (line 5719) +* gnutls_priority_string_list: Core TLS API. (line 5735) +* gnutls_privkey_decrypt_data: Operations. (line 144) +* gnutls_privkey_decrypt_data <1>: Abstract key API. (line 465) +* gnutls_privkey_decrypt_data2: Abstract key API. (line 488) +* gnutls_privkey_deinit: Abstract key API. (line 515) +* gnutls_privkey_export_dsa_raw: Abstract key API. (line 525) +* gnutls_privkey_export_dsa_raw2: Abstract key API. (line 552) +* gnutls_privkey_export_ecc_raw: Abstract key API. (line 581) +* gnutls_privkey_export_ecc_raw2: Abstract key API. (line 609) +* gnutls_privkey_export_gost_raw2: Abstract key API. (line 639) +* gnutls_privkey_export_openpgp: Abstract key API. (line 675) +* gnutls_privkey_export_pkcs11: Abstract key API. (line 690) +* gnutls_privkey_export_rsa_raw: Abstract key API. (line 709) +* gnutls_privkey_export_rsa_raw2: Abstract key API. (line 744) +* gnutls_privkey_export_x509: Abstract key API. (line 780) +* gnutls_privkey_generate: Abstract key API. (line 800) +* gnutls_privkey_generate2: Public key algorithms. + (line 43) +* gnutls_privkey_generate2 <1>: Abstract key API. (line 841) +* gnutls_privkey_get_pk_algorithm: Abstract key API. (line 892) +* gnutls_privkey_get_seed: Abstract key API. (line 911) +* gnutls_privkey_get_spki: Abstract key API. (line 936) +* gnutls_privkey_get_type: Abstract key API. (line 956) +* gnutls_privkey_import_dsa_raw: Abstract key API. (line 971) +* gnutls_privkey_import_ecc_raw: Abstract key API. (line 997) +* gnutls_privkey_import_ext: Abstract key API. (line 1025) +* gnutls_privkey_import_ext2: Abstract key API. (line 1060) +* gnutls_privkey_import_ext3: Abstract key API. (line 1099) +* gnutls_privkey_import_ext4: Abstract private keys. + (line 50) +* gnutls_privkey_import_ext4 <1>: Abstract key API. (line 1142) +* gnutls_privkey_import_gost_raw: Abstract key API. (line 1207) +* gnutls_privkey_import_openpgp: Abstract key API. (line 1243) +* gnutls_privkey_import_openpgp_raw: Abstract key API. (line 1260) +* gnutls_privkey_import_pkcs11: Abstract key API. (line 1283) +* gnutls_privkey_import_pkcs11_url: Abstract key API. (line 1309) +* gnutls_privkey_import_rsa_raw: Abstract key API. (line 1326) +* gnutls_privkey_import_tpm_raw: Abstract key API. (line 1359) +* gnutls_privkey_import_tpm_url: Using keys. (line 16) +* gnutls_privkey_import_tpm_url <1>: Abstract key API. (line 1389) +* gnutls_privkey_import_url: Abstract private keys. + (line 24) +* gnutls_privkey_import_url <1>: Abstract key API. (line 1420) +* gnutls_privkey_import_x509: Abstract key API. (line 1440) +* gnutls_privkey_import_x509_raw: Managing encrypted keys. + (line 27) +* gnutls_privkey_import_x509_raw <1>: Abstract key API. (line 1466) +* gnutls_privkey_init: Abstract key API. (line 1493) +* gnutls_privkey_set_flags: Abstract key API. (line 1516) +* gnutls_privkey_set_pin_function: Abstract key API. (line 1532) +* gnutls_privkey_set_spki: Abstract key API. (line 1552) +* gnutls_privkey_sign_data: Operations. (line 80) +* gnutls_privkey_sign_data <1>: Abstract key API. (line 1572) +* gnutls_privkey_sign_data2: Abstract key API. (line 1603) +* gnutls_privkey_sign_hash: Operations. (line 108) +* gnutls_privkey_sign_hash <1>: Abstract key API. (line 1631) +* gnutls_privkey_sign_hash2: Abstract key API. (line 1670) +* gnutls_privkey_status: Abstract key API. (line 1705) +* gnutls_privkey_verify_params: Abstract key API. (line 1721) +* gnutls_privkey_verify_seed: Abstract key API. (line 1734) +* gnutls_protocol_get_id: Core TLS API. (line 5755) +* gnutls_protocol_get_name: Core TLS API. (line 5767) +* gnutls_protocol_get_version: Core TLS API. (line 5779) +* gnutls_protocol_list: Core TLS API. (line 5790) +* gnutls_protocol_set_enabled: Core TLS API. (line 5802) +* gnutls_psk_allocate_client_credentials: Core TLS API. (line 5827) +* gnutls_psk_allocate_server_credentials: Core TLS API. (line 5839) +* gnutls_psk_client_get_hint: Core TLS API. (line 5851) +* gnutls_psk_free_client_credentials: Core TLS API. (line 5870) +* gnutls_psk_free_server_credentials: Core TLS API. (line 5879) +* gnutls_psk_server_get_username: Core TLS API. (line 5888) +* gnutls_psk_server_get_username2: Core TLS API. (line 5908) +* gnutls_psk_set_client_credentials: Core TLS API. (line 5929) +* gnutls_psk_set_client_credentials2: Core TLS API. (line 5955) +* gnutls_psk_set_client_credentials_function: PSK credentials. + (line 22) +* gnutls_psk_set_client_credentials_function <1>: Core TLS API. + (line 5978) +* gnutls_psk_set_client_credentials_function2: Core TLS API. (line 6003) +* gnutls_psk_set_params_function: Core TLS API. (line 6032) +* gnutls_psk_set_server_credentials_file: PSK credentials. (line 59) +* gnutls_psk_set_server_credentials_file <1>: Core TLS API. (line 6050) +* gnutls_psk_set_server_credentials_function: Core TLS API. (line 6072) +* gnutls_psk_set_server_credentials_function2: Core TLS API. (line 6097) +* gnutls_psk_set_server_credentials_hint: Core TLS API. (line 6126) +* gnutls_psk_set_server_dh_params: Core TLS API. (line 6145) +* gnutls_psk_set_server_known_dh_params: Core TLS API. (line 6163) +* gnutls_psk_set_server_params_function: Core TLS API. (line 6187) +* gnutls_pubkey_deinit: Abstract key API. (line 1758) +* gnutls_pubkey_encrypt_data: Operations. (line 60) +* gnutls_pubkey_encrypt_data <1>: Abstract key API. (line 1768) +* gnutls_pubkey_export: Abstract key API. (line 1791) +* gnutls_pubkey_export2: Abstract public keys. + (line 24) +* gnutls_pubkey_export2 <1>: Abstract key API. (line 1822) +* gnutls_pubkey_export_dsa_raw: Abstract key API. (line 1847) +* gnutls_pubkey_export_dsa_raw2: Abstract key API. (line 1874) +* gnutls_pubkey_export_ecc_raw: Abstract key API. (line 1903) +* gnutls_pubkey_export_ecc_raw2: Abstract key API. (line 1931) +* gnutls_pubkey_export_ecc_x962: Abstract key API. (line 1961) +* gnutls_pubkey_export_gost_raw2: Abstract key API. (line 1981) +* gnutls_pubkey_export_rsa_raw: Abstract key API. (line 2015) +* gnutls_pubkey_export_rsa_raw2: Abstract key API. (line 2037) +* gnutls_pubkey_get_key_id: Abstract key API. (line 2061) +* gnutls_pubkey_get_key_usage: Abstract key API. (line 2090) +* gnutls_pubkey_get_openpgp_key_id: Abstract key API. (line 2107) +* gnutls_pubkey_get_pk_algorithm: Abstract key API. (line 2130) +* gnutls_pubkey_get_preferred_hash_algorithm: Abstract key API. + (line 2149) +* gnutls_pubkey_get_spki: Abstract key API. (line 2177) +* gnutls_pubkey_import: Abstract key API. (line 2197) +* gnutls_pubkey_import_dsa_raw: Abstract key API. (line 2218) +* gnutls_pubkey_import_ecc_raw: Abstract key API. (line 2243) +* gnutls_pubkey_import_ecc_x962: Abstract key API. (line 2268) +* gnutls_pubkey_import_gost_raw: Abstract key API. (line 2288) +* gnutls_pubkey_import_openpgp: Abstract key API. (line 2322) +* gnutls_pubkey_import_openpgp_raw: Abstract key API. (line 2339) +* gnutls_pubkey_import_pkcs11: Abstract key API. (line 2362) +* gnutls_pubkey_import_privkey: Abstract key API. (line 2381) +* gnutls_pubkey_import_rsa_raw: Abstract key API. (line 2405) +* gnutls_pubkey_import_tpm_raw: Abstract key API. (line 2425) +* gnutls_pubkey_import_tpm_url: Using keys. (line 44) +* gnutls_pubkey_import_tpm_url <1>: Abstract key API. (line 2452) +* gnutls_pubkey_import_url: Abstract key API. (line 2480) +* gnutls_pubkey_import_x509: Abstract key API. (line 2498) +* gnutls_pubkey_import_x509_crq: Abstract key API. (line 2517) +* gnutls_pubkey_import_x509_raw: Abstract key API. (line 2536) +* gnutls_pubkey_init: Abstract key API. (line 2558) +* gnutls_pubkey_print: Abstract key API. (line 2571) +* gnutls_pubkey_set_key_usage: Abstract key API. (line 2596) +* gnutls_pubkey_set_pin_function: Abstract key API. (line 2614) +* gnutls_pubkey_set_spki: Abstract key API. (line 2634) +* gnutls_pubkey_verify_data2: Operations. (line 9) +* gnutls_pubkey_verify_data2 <1>: Abstract key API. (line 2654) +* gnutls_pubkey_verify_hash2: Operations. (line 33) +* gnutls_pubkey_verify_hash2 <1>: Abstract key API. (line 2681) +* gnutls_pubkey_verify_params: Abstract key API. (line 2711) +* gnutls_random_art: Core TLS API. (line 6205) +* gnutls_range_split: Core TLS API. (line 6232) +* gnutls_reauth: Core TLS API. (line 6258) +* gnutls_record_can_use_length_hiding: Core TLS API. (line 6304) +* gnutls_record_check_corked: Core TLS API. (line 6322) +* gnutls_record_check_pending: Data transfer and termination. + (line 138) +* gnutls_record_check_pending <1>: Core TLS API. (line 6336) +* gnutls_record_cork: Buffered data transfer. + (line 12) +* gnutls_record_cork <1>: Core TLS API. (line 6349) +* gnutls_record_disable_padding: Core TLS API. (line 6363) +* gnutls_record_discard_queued: Core TLS API. (line 6378) +* gnutls_record_get_direction: Asynchronous operation. + (line 65) +* gnutls_record_get_direction <1>: Core TLS API. (line 6397) +* gnutls_record_get_discarded: Datagram TLS API. (line 209) +* gnutls_record_get_max_early_data_size: Core TLS API. (line 6420) +* gnutls_record_get_max_size: Core TLS API. (line 6436) +* gnutls_record_get_state: Core TLS API. (line 6448) +* gnutls_record_overhead_size: Core TLS API. (line 6479) +* gnutls_record_recv: Data transfer and termination. + (line 53) +* gnutls_record_recv <1>: Core TLS API. (line 6492) +* gnutls_record_recv_early_data: Core TLS API. (line 6524) +* gnutls_record_recv_packet: Core TLS API. (line 6552) +* gnutls_record_recv_seq: Data transfer and termination. + (line 108) +* gnutls_record_recv_seq <1>: Core TLS API. (line 6576) +* gnutls_record_send: Data transfer and termination. + (line 12) +* gnutls_record_send <1>: Core TLS API. (line 6603) +* gnutls_record_send2: On Record Padding. (line 23) +* gnutls_record_send2 <1>: Core TLS API. (line 6647) +* gnutls_record_send_early_data: Core TLS API. (line 6680) +* gnutls_record_send_file: Core TLS API. (line 6708) +* gnutls_record_send_range: Core TLS API. (line 6737) +* gnutls_record_set_max_early_data_size: Core TLS API. (line 6766) +* gnutls_record_set_max_recv_size: Core TLS API. (line 6785) +* gnutls_record_set_max_size: Core TLS API. (line 6807) +* gnutls_record_set_state: Core TLS API. (line 6836) +* gnutls_record_set_timeout: Core TLS API. (line 6857) +* gnutls_record_uncork: Buffered data transfer. + (line 23) +* gnutls_record_uncork <1>: Core TLS API. (line 6876) +* gnutls_register_custom_url: Application-specific keys. + (line 69) +* gnutls_register_custom_url <1>: Abstract key API. (line 2724) +* gnutls_rehandshake: TLS 1.2 re-authentication. + (line 70) +* gnutls_rehandshake <1>: Core TLS API. (line 6901) +* gnutls_rnd: Random number generation. + (line 22) +* gnutls_rnd <1>: Cryptographic API. (line 1191) +* gnutls_rnd_refresh: Cryptographic API. (line 1213) +* gnutls_safe_renegotiation_status: TLS 1.2 re-authentication. + (line 44) +* gnutls_safe_renegotiation_status <1>: Core TLS API. (line 6941) +* gnutls_sec_param_get_name: Core TLS API. (line 6956) +* gnutls_sec_param_to_pk_bits: Selecting cryptographic key sizes. + (line 76) +* gnutls_sec_param_to_pk_bits <1>: Core TLS API. (line 6970) +* gnutls_sec_param_to_symmetric_bits: Core TLS API. (line 6989) +* gnutls_server_name_get: Core TLS API. (line 7003) +* gnutls_server_name_set: Core TLS API. (line 7042) +* gnutls_session_channel_binding: Core TLS API. (line 7073) +* gnutls_session_enable_compatibility_mode: Core TLS API. (line 7094) +* gnutls_session_etm_status: Core TLS API. (line 7114) +* gnutls_session_ext_master_secret_status: Core TLS API. (line 7127) +* gnutls_session_ext_register: Core TLS API. (line 7141) +* gnutls_session_force_valid: Core TLS API. (line 7197) +* gnutls_session_get_data: Core TLS API. (line 7208) +* gnutls_session_get_data2: Core TLS API. (line 7228) +* gnutls_session_get_desc: Core TLS API. (line 7276) +* gnutls_session_get_flags: Core TLS API. (line 7293) +* gnutls_session_get_id: Core TLS API. (line 7312) +* gnutls_session_get_id2: Session resumption. (line 49) +* gnutls_session_get_id2 <1>: Core TLS API. (line 7346) +* gnutls_session_get_keylog_function: Core TLS API. (line 7379) +* gnutls_session_get_master_secret: Core TLS API. (line 7393) +* gnutls_session_get_ptr: Core TLS API. (line 7409) +* gnutls_session_get_random: Core TLS API. (line 7421) +* gnutls_session_get_verify_cert_status: Core TLS API. (line 7441) +* gnutls_session_is_resumed: Session resumption. (line 40) +* gnutls_session_is_resumed <1>: Core TLS API. (line 7461) +* gnutls_session_key_update: Core TLS API. (line 7473) +* gnutls_session_resumption_requested: Session resumption. (line 150) +* gnutls_session_resumption_requested <1>: Core TLS API. (line 7500) +* gnutls_session_set_data: Core TLS API. (line 7513) +* gnutls_session_set_id: Core TLS API. (line 7536) +* gnutls_session_set_keylog_function: Core TLS API. (line 7557) +* gnutls_session_set_premaster: Core TLS API. (line 7571) +* gnutls_session_set_ptr: Core TLS API. (line 7606) +* gnutls_session_set_verify_cert: Certificate credentials. + (line 267) +* gnutls_session_set_verify_cert <1>: Core TLS API. (line 7619) +* gnutls_session_set_verify_cert2: Core TLS API. (line 7652) +* gnutls_session_set_verify_function: Core TLS API. (line 7684) +* gnutls_session_set_verify_output_function: X509 certificate API. + (line 149) +* gnutls_session_supplemental_register: Core TLS API. (line 7713) +* gnutls_session_ticket_enable_client: Core TLS API. (line 7749) +* gnutls_session_ticket_enable_server: Session resumption. (line 117) +* gnutls_session_ticket_enable_server <1>: Core TLS API. (line 7765) +* gnutls_session_ticket_key_generate: Session resumption. (line 137) +* gnutls_session_ticket_key_generate <1>: Core TLS API. (line 7788) +* gnutls_session_ticket_send: Session resumption. (line 170) +* gnutls_session_ticket_send <1>: Core TLS API. (line 7804) +* gnutls_set_default_priority: Core TLS API. (line 7822) +* gnutls_set_default_priority_append: Core TLS API. (line 7848) +* gnutls_sign_algorithm_get: Core TLS API. (line 7884) +* gnutls_sign_algorithm_get_client: Core TLS API. (line 7898) +* gnutls_sign_algorithm_get_requested: Core TLS API. (line 7913) +* gnutls_sign_get_hash_algorithm: Core TLS API. (line 7940) +* gnutls_sign_get_id: Core TLS API. (line 7955) +* gnutls_sign_get_name: Core TLS API. (line 7967) +* gnutls_sign_get_oid: Core TLS API. (line 7979) +* gnutls_sign_get_pk_algorithm: Core TLS API. (line 7993) +* gnutls_sign_is_secure: Core TLS API. (line 8011) +* gnutls_sign_is_secure2: Core TLS API. (line 8021) +* gnutls_sign_list: Core TLS API. (line 8033) +* gnutls_sign_set_secure: Core TLS API. (line 8044) +* gnutls_sign_set_secure_for_certs: Core TLS API. (line 8073) +* gnutls_sign_supports_pk_algorithm: Core TLS API. (line 8103) +* gnutls_srp_allocate_client_credentials: Core TLS API. (line 8121) +* gnutls_srp_allocate_server_credentials: Core TLS API. (line 8133) +* gnutls_srp_base64_decode: Core TLS API. (line 8145) +* gnutls_srp_base64_decode2: Core TLS API. (line 8167) +* gnutls_srp_base64_encode: Core TLS API. (line 8187) +* gnutls_srp_base64_encode2: Core TLS API. (line 8209) +* gnutls_srp_free_client_credentials: Core TLS API. (line 8230) +* gnutls_srp_free_server_credentials: Core TLS API. (line 8239) +* gnutls_srp_server_get_username: Core TLS API. (line 8248) +* gnutls_srp_set_client_credentials: Core TLS API. (line 8261) +* gnutls_srp_set_client_credentials_function: SRP credentials. + (line 19) +* gnutls_srp_set_client_credentials_function <1>: Core TLS API. + (line 8284) +* gnutls_srp_set_prime_bits: Core TLS API. (line 8317) +* gnutls_srp_set_server_credentials_file: SRP credentials. (line 56) +* gnutls_srp_set_server_credentials_file <1>: Core TLS API. (line 8338) +* gnutls_srp_set_server_credentials_function: SRP credentials. + (line 72) +* gnutls_srp_set_server_credentials_function <1>: Core TLS API. + (line 8357) +* gnutls_srp_set_server_fake_salt_seed: Core TLS API. (line 8395) +* gnutls_srp_verifier: Authentication using SRP. + (line 45) +* gnutls_srp_verifier <1>: Core TLS API. (line 8432) +* gnutls_srtp_get_keys: SRTP. (line 32) +* gnutls_srtp_get_keys <1>: Core TLS API. (line 8461) +* gnutls_srtp_get_mki: Core TLS API. (line 8499) +* gnutls_srtp_get_profile_id: Core TLS API. (line 8517) +* gnutls_srtp_get_profile_name: Core TLS API. (line 8533) +* gnutls_srtp_get_selected_profile: Core TLS API. (line 8548) +* gnutls_srtp_set_mki: Core TLS API. (line 8564) +* gnutls_srtp_set_profile: Core TLS API. (line 8581) +* gnutls_srtp_set_profile_direct: Core TLS API. (line 8598) +* gnutls_store_commitment: Certificate verification. + (line 115) +* gnutls_store_commitment <1>: Core TLS API. (line 8619) +* gnutls_store_pubkey: Certificate verification. + (line 64) +* gnutls_store_pubkey <1>: Core TLS API. (line 8659) +* gnutls_strerror: Core TLS API. (line 8708) +* gnutls_strerror_name: Core TLS API. (line 8722) +* gnutls_subject_alt_names_deinit: X509 certificate API. + (line 178) +* gnutls_subject_alt_names_get: X509 certificate API. + (line 189) +* gnutls_subject_alt_names_init: X509 certificate API. + (line 218) +* gnutls_subject_alt_names_set: X509 certificate API. + (line 232) +* gnutls_supplemental_get_name: Core TLS API. (line 8737) +* gnutls_supplemental_recv: Core TLS API. (line 8750) +* gnutls_supplemental_register: Core TLS API. (line 8765) +* gnutls_supplemental_send: Core TLS API. (line 8796) +* gnutls_system_key_add_x509: Abstract key API. (line 2750) +* gnutls_system_key_delete: Abstract key API. (line 2776) +* gnutls_system_key_iter_deinit: Abstract key API. (line 2792) +* gnutls_system_key_iter_get_info: Application-specific keys. + (line 20) +* gnutls_system_key_iter_get_info <1>: Abstract key API. (line 2803) +* gnutls_system_recv_timeout: Core TLS API. (line 8810) +* gnutls_tdb_deinit: Core TLS API. (line 8833) +* gnutls_tdb_init: Core TLS API. (line 8842) +* gnutls_tdb_set_store_commitment_func: Core TLS API. (line 8853) +* gnutls_tdb_set_store_func: Core TLS API. (line 8873) +* gnutls_tdb_set_verify_func: Core TLS API. (line 8892) +* gnutls_tpm_get_registered: TPM API. (line 12) +* gnutls_tpm_key_list_deinit: TPM API. (line 27) +* gnutls_tpm_key_list_get_url: TPM API. (line 38) +* gnutls_tpm_privkey_delete: Key generation. (line 52) +* gnutls_tpm_privkey_delete <1>: Using keys. (line 82) +* gnutls_tpm_privkey_delete <2>: TPM API. (line 60) +* gnutls_tpm_privkey_generate: Key generation. (line 9) +* gnutls_tpm_privkey_generate <1>: TPM API. (line 76) +* gnutls_transport_get_int: Core TLS API. (line 8914) +* gnutls_transport_get_int2: Core TLS API. (line 8928) +* gnutls_transport_get_ptr: Core TLS API. (line 8945) +* gnutls_transport_get_ptr2: Core TLS API. (line 8958) +* gnutls_transport_is_ktls_enabled: Socket specific API. + (line 11) +* gnutls_transport_set_errno: Setting up the transport layer. + (line 116) +* gnutls_transport_set_errno <1>: Core TLS API. (line 8974) +* gnutls_transport_set_errno_function: Core TLS API. (line 8997) +* gnutls_transport_set_fastopen: Reducing round-trips. + (line 22) +* gnutls_transport_set_fastopen <1>: Socket specific API. + (line 25) +* gnutls_transport_set_int: Core TLS API. (line 9015) +* gnutls_transport_set_int2: Core TLS API. (line 9033) +* gnutls_transport_set_ptr: Core TLS API. (line 9055) +* gnutls_transport_set_ptr2: Core TLS API. (line 9068) +* gnutls_transport_set_pull_function: Setting up the transport layer. + (line 56) +* gnutls_transport_set_pull_function <1>: Core TLS API. (line 9085) +* gnutls_transport_set_pull_timeout_function: Setting up the transport layer. + (line 71) +* gnutls_transport_set_pull_timeout_function <1>: Setting up the transport layer. + (line 156) +* gnutls_transport_set_pull_timeout_function <2>: Core TLS API. + (line 9103) +* gnutls_transport_set_push_function: Setting up the transport layer. + (line 23) +* gnutls_transport_set_push_function <1>: Core TLS API. (line 9143) +* gnutls_transport_set_vec_push_function: Setting up the transport layer. + (line 40) +* gnutls_transport_set_vec_push_function <1>: Core TLS API. (line 9163) +* gnutls_url_is_supported: Abstract public keys. + (line 57) +* gnutls_url_is_supported <1>: Core TLS API. (line 9182) +* gnutls_utf8_password_normalize: Core TLS API. (line 9196) +* gnutls_verify_stored_pubkey: Certificate verification. + (line 18) +* gnutls_verify_stored_pubkey <1>: Core TLS API. (line 9221) +* gnutls_x509_aia_deinit: X509 certificate API. + (line 259) +* gnutls_x509_aia_get: X509 certificate API. + (line 269) +* gnutls_x509_aia_init: X509 certificate API. + (line 303) +* gnutls_x509_aia_set: X509 certificate API. + (line 316) +* gnutls_x509_aki_deinit: X509 certificate API. + (line 343) +* gnutls_x509_aki_get_cert_issuer: X509 certificate API. + (line 353) +* gnutls_x509_aki_get_id: X509 certificate API. + (line 385) +* gnutls_x509_aki_init: X509 certificate API. + (line 403) +* gnutls_x509_aki_set_cert_issuer: X509 certificate API. + (line 416) +* gnutls_x509_aki_set_id: X509 certificate API. + (line 448) +* gnutls_x509_cidr_to_rfc5280: X509 certificate API. + (line 465) +* gnutls_x509_crl_check_issuer: X509 certificate API. + (line 490) +* gnutls_x509_crl_deinit: X509 certificate API. + (line 505) +* gnutls_x509_crl_dist_points_deinit: X509 certificate API. + (line 513) +* gnutls_x509_crl_dist_points_get: X509 certificate API. + (line 524) +* gnutls_x509_crl_dist_points_init: X509 certificate API. + (line 550) +* gnutls_x509_crl_dist_points_set: X509 certificate API. + (line 564) +* gnutls_x509_crl_export: X509 certificate API. + (line 588) +* gnutls_x509_crl_export2: X509 certificate API. + (line 614) +* gnutls_x509_crl_get_authority_key_gn_serial: X509 certificate API. + (line 637) +* gnutls_x509_crl_get_authority_key_id: X509 certificate API. + (line 674) +* gnutls_x509_crl_get_crt_count: X509 certificate API. + (line 702) +* gnutls_x509_crl_get_crt_serial: PKIX certificate revocation lists. + (line 56) +* gnutls_x509_crl_get_crt_serial <1>: X509 certificate API. + (line 714) +* gnutls_x509_crl_get_dn_oid: X509 certificate API. + (line 740) +* gnutls_x509_crl_get_extension_data: X509 certificate API. + (line 763) +* gnutls_x509_crl_get_extension_data2: X509 certificate API. + (line 793) +* gnutls_x509_crl_get_extension_info: X509 certificate API. + (line 816) +* gnutls_x509_crl_get_extension_oid: X509 certificate API. + (line 850) +* gnutls_x509_crl_get_issuer_dn: X509 certificate API. + (line 875) +* gnutls_x509_crl_get_issuer_dn2: X509 certificate API. + (line 900) +* gnutls_x509_crl_get_issuer_dn3: X509 certificate API. + (line 923) +* gnutls_x509_crl_get_issuer_dn_by_oid: X509 certificate API. + (line 949) +* gnutls_x509_crl_get_next_update: X509 certificate API. + (line 985) +* gnutls_x509_crl_get_number: X509 certificate API. + (line 999) +* gnutls_x509_crl_get_raw_issuer_dn: X509 certificate API. + (line 1021) +* gnutls_x509_crl_get_signature: X509 certificate API. + (line 1037) +* gnutls_x509_crl_get_signature_algorithm: X509 certificate API. + (line 1054) +* gnutls_x509_crl_get_signature_oid: X509 certificate API. + (line 1070) +* gnutls_x509_crl_get_this_update: X509 certificate API. + (line 1090) +* gnutls_x509_crl_get_version: X509 certificate API. + (line 1101) +* gnutls_x509_crl_import: X509 certificate API. + (line 1111) +* gnutls_x509_crl_init: X509 certificate API. + (line 1131) +* gnutls_x509_crl_iter_crt_serial: X509 certificate API. + (line 1146) +* gnutls_x509_crl_iter_deinit: X509 certificate API. + (line 1179) +* gnutls_x509_crl_list_import: X509 certificate API. + (line 1188) +* gnutls_x509_crl_list_import2: X509 certificate API. + (line 1219) +* gnutls_x509_crl_print: X509 certificate API. + (line 1248) +* gnutls_x509_crl_privkey_sign: PKIX certificate revocation lists. + (line 133) +* gnutls_x509_crl_privkey_sign <1>: Abstract key API. (line 2841) +* gnutls_x509_crl_set_authority_key_id: X509 certificate API. + (line 1268) +* gnutls_x509_crl_set_crt: X509 certificate API. + (line 1289) +* gnutls_x509_crl_set_crt_serial: X509 certificate API. + (line 1307) +* gnutls_x509_crl_set_next_update: X509 certificate API. + (line 1327) +* gnutls_x509_crl_set_number: X509 certificate API. + (line 1346) +* gnutls_x509_crl_set_this_update: X509 certificate API. + (line 1366) +* gnutls_x509_crl_set_version: X509 certificate API. + (line 1380) +* gnutls_x509_crl_sign: X509 certificate API. + (line 1396) +* gnutls_x509_crl_sign2: PKIX certificate revocation lists. + (line 102) +* gnutls_x509_crl_sign2 <1>: X509 certificate API. + (line 1415) +* gnutls_x509_crl_verify: X509 certificate API. + (line 1449) +* gnutls_x509_crq_deinit: X509 certificate API. + (line 1482) +* gnutls_x509_crq_export: X509 certificate API. + (line 1491) +* gnutls_x509_crq_export2: X509 certificate API. + (line 1519) +* gnutls_x509_crq_get_attribute_by_oid: X509 certificate API. + (line 1543) +* gnutls_x509_crq_get_attribute_data: X509 certificate API. + (line 1572) +* gnutls_x509_crq_get_attribute_info: X509 certificate API. + (line 1601) +* gnutls_x509_crq_get_basic_constraints: X509 certificate API. + (line 1632) +* gnutls_x509_crq_get_challenge_password: X509 certificate API. + (line 1662) +* gnutls_x509_crq_get_dn: X509 certificate API. + (line 1680) +* gnutls_x509_crq_get_dn2: X509 certificate API. + (line 1704) +* gnutls_x509_crq_get_dn3: X509 certificate API. + (line 1728) +* gnutls_x509_crq_get_dn_by_oid: X509 certificate API. + (line 1755) +* gnutls_x509_crq_get_dn_oid: X509 certificate API. + (line 1789) +* gnutls_x509_crq_get_extension_by_oid: X509 certificate API. + (line 1809) +* gnutls_x509_crq_get_extension_by_oid2: X509 certificate API. + (line 1839) +* gnutls_x509_crq_get_extension_data: X509 certificate API. + (line 1867) +* gnutls_x509_crq_get_extension_data2: X509 certificate API. + (line 1897) +* gnutls_x509_crq_get_extension_info: X509 certificate API. + (line 1922) +* gnutls_x509_crq_get_key_id: X509 certificate API. + (line 1956) +* gnutls_x509_crq_get_key_purpose_oid: X509 certificate API. + (line 1985) +* gnutls_x509_crq_get_key_rsa_raw: X509 certificate API. + (line 2013) +* gnutls_x509_crq_get_key_usage: X509 certificate API. + (line 2033) +* gnutls_x509_crq_get_pk_algorithm: X509 certificate API. + (line 2059) +* gnutls_x509_crq_get_pk_oid: X509 certificate API. + (line 2079) +* gnutls_x509_crq_get_private_key_usage_period: X509 certificate API. + (line 2098) +* gnutls_x509_crq_get_signature_algorithm: X509 certificate API. + (line 2119) +* gnutls_x509_crq_get_signature_oid: X509 certificate API. + (line 2138) +* gnutls_x509_crq_get_spki: X509 certificate API. + (line 2158) +* gnutls_x509_crq_get_subject_alt_name: X509 certificate API. + (line 2174) +* gnutls_x509_crq_get_subject_alt_othername_oid: X509 certificate API. + (line 2211) +* gnutls_x509_crq_get_tlsfeatures: X509 certificate API. + (line 2247) +* gnutls_x509_crq_get_version: X509 certificate API. + (line 2279) +* gnutls_x509_crq_import: X509 certificate API. + (line 2291) +* gnutls_x509_crq_init: X509 certificate API. + (line 2312) +* gnutls_x509_crq_print: X509 certificate API. + (line 2324) +* gnutls_x509_crq_privkey_sign: Abstract key API. (line 2877) +* gnutls_x509_crq_set_attribute_by_oid: X509 certificate API. + (line 2346) +* gnutls_x509_crq_set_basic_constraints: X509 certificate API. + (line 2371) +* gnutls_x509_crq_set_challenge_password: X509 certificate API. + (line 2393) +* gnutls_x509_crq_set_dn: X509 certificate API. + (line 2408) +* gnutls_x509_crq_set_dn_by_oid: X509 certificate API. + (line 2426) +* gnutls_x509_crq_set_extension_by_oid: X509 certificate API. + (line 2455) +* gnutls_x509_crq_set_key: PKCS 10 certificate requests. + (line 31) +* gnutls_x509_crq_set_key <1>: X509 certificate API. + (line 2479) +* gnutls_x509_crq_set_key_purpose_oid: X509 certificate API. + (line 2494) +* gnutls_x509_crq_set_key_rsa_raw: X509 certificate API. + (line 2516) +* gnutls_x509_crq_set_key_usage: X509 certificate API. + (line 2535) +* gnutls_x509_crq_set_private_key_usage_period: X509 certificate API. + (line 2551) +* gnutls_x509_crq_set_pubkey: Operations. (line 168) +* gnutls_x509_crq_set_pubkey <1>: Abstract key API. (line 2914) +* gnutls_x509_crq_set_spki: X509 certificate API. + (line 2568) +* gnutls_x509_crq_set_subject_alt_name: X509 certificate API. + (line 2592) +* gnutls_x509_crq_set_subject_alt_othername: X509 certificate API. + (line 2617) +* gnutls_x509_crq_set_tlsfeatures: X509 certificate API. + (line 2645) +* gnutls_x509_crq_set_version: X509 certificate API. + (line 2663) +* gnutls_x509_crq_sign: X509 certificate API. + (line 2678) +* gnutls_x509_crq_sign2: PKCS 10 certificate requests. + (line 43) +* gnutls_x509_crq_sign2 <1>: X509 certificate API. + (line 2699) +* gnutls_x509_crq_verify: X509 certificate API. + (line 2734) +* gnutls_x509_crt_check_email: X509 certificate API. + (line 2753) +* gnutls_x509_crt_check_hostname: X509 certificate API. + (line 2770) +* gnutls_x509_crt_check_hostname2: X509 certificate API. + (line 2788) +* gnutls_x509_crt_check_ip: X509 certificate API. + (line 2829) +* gnutls_x509_crt_check_issuer: X509 certificate API. + (line 2849) +* gnutls_x509_crt_check_key_purpose: X509 certificate API. + (line 2868) +* gnutls_x509_crt_check_revocation: X509 certificate API. + (line 2889) +* gnutls_x509_crt_cpy_crl_dist_points: X509 certificate API. + (line 2907) +* gnutls_x509_crt_deinit: X509 certificate API. + (line 2923) +* gnutls_x509_crt_equals: X509 certificate API. + (line 2931) +* gnutls_x509_crt_equals2: X509 certificate API. + (line 2946) +* gnutls_x509_crt_export: X509 certificate API. + (line 2962) +* gnutls_x509_crt_export2: X509 certificate API. + (line 2989) +* gnutls_x509_crt_get_activation_time: X509 certificate API. + (line 3011) +* gnutls_x509_crt_get_authority_info_access: X509 certificate API. + (line 3023) +* gnutls_x509_crt_get_authority_key_gn_serial: X509 certificate API. + (line 3101) +* gnutls_x509_crt_get_authority_key_id: X509 certificate API. + (line 3140) +* gnutls_x509_crt_get_basic_constraints: X509 certificate API. + (line 3167) +* gnutls_x509_crt_get_ca_status: X509 certificate API. + (line 3195) +* gnutls_x509_crt_get_crl_dist_points: X509 certificate API. + (line 3218) +* gnutls_x509_crt_get_dn: X509 certificate API. + (line 3251) +* gnutls_x509_crt_get_dn2: X.509 distinguished names. + (line 14) +* gnutls_x509_crt_get_dn2 <1>: X509 certificate API. + (line 3280) +* gnutls_x509_crt_get_dn3: X509 certificate API. + (line 3303) +* gnutls_x509_crt_get_dn_by_oid: X509 certificate API. + (line 3329) +* gnutls_x509_crt_get_dn_oid: X509 certificate API. + (line 3368) +* gnutls_x509_crt_get_expiration_time: X509 certificate API. + (line 3394) +* gnutls_x509_crt_get_extension_by_oid: X509 certificate API. + (line 3406) +* gnutls_x509_crt_get_extension_by_oid2: X509 certificate API. + (line 3434) +* gnutls_x509_crt_get_extension_data: X509 certificate API. + (line 3462) +* gnutls_x509_crt_get_extension_data2: X509 certificate API. + (line 3490) +* gnutls_x509_crt_get_extension_info: X509 certificate API. + (line 3513) +* gnutls_x509_crt_get_extension_oid: X509 certificate API. + (line 3547) +* gnutls_x509_crt_get_fingerprint: X509 certificate API. + (line 3573) +* gnutls_x509_crt_get_inhibit_anypolicy: X509 certificate API. + (line 3597) +* gnutls_x509_crt_get_issuer: X509 certificate API. + (line 3624) +* gnutls_x509_crt_get_issuer_alt_name: X509 certificate API. + (line 3642) +* gnutls_x509_crt_get_issuer_alt_name2: X509 certificate API. + (line 3685) +* gnutls_x509_crt_get_issuer_alt_othername_oid: X509 certificate API. + (line 3723) +* gnutls_x509_crt_get_issuer_dn: X509 certificate API. + (line 3763) +* gnutls_x509_crt_get_issuer_dn2: X509 certificate API. + (line 3790) +* gnutls_x509_crt_get_issuer_dn3: X509 certificate API. + (line 3813) +* gnutls_x509_crt_get_issuer_dn_by_oid: X509 certificate API. + (line 3839) +* gnutls_x509_crt_get_issuer_dn_oid: X509 certificate API. + (line 3878) +* gnutls_x509_crt_get_issuer_unique_id: X509 certificate API. + (line 3904) +* gnutls_x509_crt_get_key_id: X.509 public and private keys. + (line 13) +* gnutls_x509_crt_get_key_id <1>: X509 certificate API. + (line 3933) +* gnutls_x509_crt_get_key_purpose_oid: X509 certificate API. + (line 3960) +* gnutls_x509_crt_get_key_usage: X509 certificate API. + (line 3990) +* gnutls_x509_crt_get_name_constraints: X509 certificate API. + (line 4013) +* gnutls_x509_crt_get_pk_algorithm: X509 certificate API. + (line 4048) +* gnutls_x509_crt_get_pk_dsa_raw: X509 certificate API. + (line 4070) +* gnutls_x509_crt_get_pk_ecc_raw: X509 certificate API. + (line 4093) +* gnutls_x509_crt_get_pk_gost_raw: X509 certificate API. + (line 4119) +* gnutls_x509_crt_get_pk_oid: X509 certificate API. + (line 4147) +* gnutls_x509_crt_get_pk_rsa_raw: X509 certificate API. + (line 4166) +* gnutls_x509_crt_get_policy: X509 certificate API. + (line 4184) +* gnutls_x509_crt_get_preferred_hash_algorithm: Compatibility API. + (line 127) +* gnutls_x509_crt_get_private_key_usage_period: X509 certificate API. + (line 4211) +* gnutls_x509_crt_get_proxy: X509 certificate API. + (line 4233) +* gnutls_x509_crt_get_raw_dn: X509 certificate API. + (line 4260) +* gnutls_x509_crt_get_raw_issuer_dn: X509 certificate API. + (line 4277) +* gnutls_x509_crt_get_serial: X509 certificate API. + (line 4293) +* gnutls_x509_crt_get_signature: X509 certificate API. + (line 4313) +* gnutls_x509_crt_get_signature_algorithm: X509 certificate API. + (line 4330) +* gnutls_x509_crt_get_signature_oid: X509 certificate API. + (line 4347) +* gnutls_x509_crt_get_spki: X509 certificate API. + (line 4367) +* gnutls_x509_crt_get_subject: X509 certificate API. + (line 4383) +* gnutls_x509_crt_get_subject_alt_name: X509 certificate API. + (line 4401) +* gnutls_x509_crt_get_subject_alt_name2: X509 certificate API. + (line 4441) +* gnutls_x509_crt_get_subject_alt_othername_oid: X509 certificate API. + (line 4477) +* gnutls_x509_crt_get_subject_key_id: X509 certificate API. + (line 4515) +* gnutls_x509_crt_get_subject_unique_id: X509 certificate API. + (line 4537) +* gnutls_x509_crt_get_tlsfeatures: X509 certificate API. + (line 4564) +* gnutls_x509_crt_get_version: X509 certificate API. + (line 4596) +* gnutls_x509_crt_import: X509 certificate API. + (line 4607) +* gnutls_x509_crt_import_pkcs11: PKCS 11 API. (line 1358) +* gnutls_x509_crt_import_url: X509 certificate API. + (line 4628) +* gnutls_x509_crt_init: X509 certificate API. + (line 4652) +* gnutls_x509_crt_list_import: X509 certificate API. + (line 4663) +* gnutls_x509_crt_list_import2: X509 certificate API. + (line 4699) +* gnutls_x509_crt_list_import_pkcs11: PKCS 11 API. (line 1375) +* gnutls_x509_crt_list_import_url: X509 certificate API. + (line 4731) +* gnutls_x509_crt_list_verify: X509 certificate API. + (line 4766) +* gnutls_x509_crt_print: X509 certificate API. + (line 4806) +* gnutls_x509_crt_privkey_sign: Abstract key API. (line 2931) +* gnutls_x509_crt_set_activation_time: X509 certificate API. + (line 4831) +* gnutls_x509_crt_set_authority_info_access: X509 certificate API. + (line 4846) +* gnutls_x509_crt_set_authority_key_id: X509 certificate API. + (line 4872) +* gnutls_x509_crt_set_basic_constraints: X509 certificate API. + (line 4890) +* gnutls_x509_crt_set_ca_status: X509 certificate API. + (line 4910) +* gnutls_x509_crt_set_crl_dist_points: X509 certificate API. + (line 4927) +* gnutls_x509_crt_set_crl_dist_points2: X509 certificate API. + (line 4947) +* gnutls_x509_crt_set_crq: X509 certificate API. + (line 4972) +* gnutls_x509_crt_set_crq_extensions: X509 certificate API. + (line 5014) +* gnutls_x509_crt_set_crq_extension_by_oid: X509 certificate API. + (line 4992) +* gnutls_x509_crt_set_dn: X509 certificate API. + (line 5031) +* gnutls_x509_crt_set_dn_by_oid: X509 certificate API. + (line 5054) +* gnutls_x509_crt_set_expiration_time: X509 certificate API. + (line 5083) +* gnutls_x509_crt_set_extension_by_oid: X509 certificate API. + (line 5099) +* gnutls_x509_crt_set_flags: X509 certificate API. + (line 5123) +* gnutls_x509_crt_set_inhibit_anypolicy: X509 certificate API. + (line 5139) +* gnutls_x509_crt_set_issuer_alt_name: X509 certificate API. + (line 5154) +* gnutls_x509_crt_set_issuer_alt_othername: X509 certificate API. + (line 5184) +* gnutls_x509_crt_set_issuer_dn: X509 certificate API. + (line 5215) +* gnutls_x509_crt_set_issuer_dn_by_oid: X509 certificate API. + (line 5233) +* gnutls_x509_crt_set_issuer_unique_id: X509 certificate API. + (line 5266) +* gnutls_x509_crt_set_key: X509 certificate API. + (line 5285) +* gnutls_x509_crt_set_key_purpose_oid: X509 certificate API. + (line 5303) +* gnutls_x509_crt_set_key_usage: X509 certificate API. + (line 5323) +* gnutls_x509_crt_set_name_constraints: X509 certificate API. + (line 5337) +* gnutls_x509_crt_set_pin_function: X509 certificate API. + (line 5358) +* gnutls_x509_crt_set_policy: X509 certificate API. + (line 5378) +* gnutls_x509_crt_set_private_key_usage_period: X509 certificate API. + (line 5402) +* gnutls_x509_crt_set_proxy: X509 certificate API. + (line 5419) +* gnutls_x509_crt_set_proxy_dn: X509 certificate API. + (line 5442) +* gnutls_x509_crt_set_pubkey: Operations. (line 182) +* gnutls_x509_crt_set_pubkey <1>: Abstract key API. (line 2965) +* gnutls_x509_crt_set_serial: X509 certificate API. + (line 5468) +* gnutls_x509_crt_set_spki: X509 certificate API. + (line 5494) +* gnutls_x509_crt_set_subject_alternative_name: X509 certificate API. + (line 5582) +* gnutls_x509_crt_set_subject_alt_name: X509 certificate API. + (line 5518) +* gnutls_x509_crt_set_subject_alt_othername: X509 certificate API. + (line 5551) +* gnutls_x509_crt_set_subject_key_id: X509 certificate API. + (line 5606) +* gnutls_x509_crt_set_subject_unique_id: X509 certificate API. + (line 5623) +* gnutls_x509_crt_set_tlsfeatures: X509 certificate API. + (line 5642) +* gnutls_x509_crt_set_version: X509 certificate API. + (line 5660) +* gnutls_x509_crt_sign: X509 certificate API. + (line 5682) +* gnutls_x509_crt_sign2: X509 certificate API. + (line 5701) +* gnutls_x509_crt_verify: X509 certificate API. + (line 5735) +* gnutls_x509_crt_verify_data2: X509 certificate API. + (line 5762) +* gnutls_x509_ct_sct_get: X509 certificate API. + (line 5792) +* gnutls_x509_ct_sct_get_version: X509 certificate API. + (line 5823) +* gnutls_x509_dn_deinit: X509 certificate API. + (line 5845) +* gnutls_x509_dn_export: X509 certificate API. + (line 5856) +* gnutls_x509_dn_export2: X509 certificate API. + (line 5883) +* gnutls_x509_dn_get_rdn_ava: X.509 distinguished names. + (line 53) +* gnutls_x509_dn_get_rdn_ava <1>: X509 certificate API. + (line 5906) +* gnutls_x509_dn_get_str: X509 certificate API. + (line 5937) +* gnutls_x509_dn_get_str2: X509 certificate API. + (line 5956) +* gnutls_x509_dn_import: X509 certificate API. + (line 5981) +* gnutls_x509_dn_init: X509 certificate API. + (line 6000) +* gnutls_x509_dn_oid_known: X509 certificate API. + (line 6016) +* gnutls_x509_dn_oid_name: X509 certificate API. + (line 6032) +* gnutls_x509_dn_set_str: X509 certificate API. + (line 6049) +* gnutls_x509_ext_ct_export_scts: X509 certificate API. + (line 6069) +* gnutls_x509_ext_ct_import_scts: X509 certificate API. + (line 6087) +* gnutls_x509_ext_ct_scts_deinit: X509 certificate API. + (line 6109) +* gnutls_x509_ext_ct_scts_init: X509 certificate API. + (line 6119) +* gnutls_x509_ext_deinit: X509 certificate API. + (line 6131) +* gnutls_x509_ext_export_aia: X509 certificate API. + (line 6141) +* gnutls_x509_ext_export_authority_key_id: X509 certificate API. + (line 6160) +* gnutls_x509_ext_export_basic_constraints: X509 certificate API. + (line 6179) +* gnutls_x509_ext_export_crl_dist_points: X509 certificate API. + (line 6200) +* gnutls_x509_ext_export_inhibit_anypolicy: X509 certificate API. + (line 6220) +* gnutls_x509_ext_export_key_purposes: X509 certificate API. + (line 6240) +* gnutls_x509_ext_export_key_usage: X509 certificate API. + (line 6259) +* gnutls_x509_ext_export_name_constraints: X509 certificate API. + (line 6278) +* gnutls_x509_ext_export_policies: X509 certificate API. + (line 6297) +* gnutls_x509_ext_export_private_key_usage_period: X509 certificate API. + (line 6317) +* gnutls_x509_ext_export_proxy: X509 certificate API. + (line 6338) +* gnutls_x509_ext_export_subject_alt_names: X509 certificate API. + (line 6367) +* gnutls_x509_ext_export_subject_key_id: X509 certificate API. + (line 6386) +* gnutls_x509_ext_export_tlsfeatures: X509 certificate API. + (line 6405) +* gnutls_x509_ext_import_aia: X509 certificate API. + (line 6424) +* gnutls_x509_ext_import_authority_key_id: X509 certificate API. + (line 6445) +* gnutls_x509_ext_import_basic_constraints: X509 certificate API. + (line 6466) +* gnutls_x509_ext_import_crl_dist_points: X509 certificate API. + (line 6485) +* gnutls_x509_ext_import_inhibit_anypolicy: X509 certificate API. + (line 6505) +* gnutls_x509_ext_import_key_purposes: X509 certificate API. + (line 6529) +* gnutls_x509_ext_import_key_usage: X509 certificate API. + (line 6550) +* gnutls_x509_ext_import_name_constraints: X509 certificate API. + (line 6574) +* gnutls_x509_ext_import_policies: X509 certificate API. + (line 6607) +* gnutls_x509_ext_import_private_key_usage_period: X509 certificate API. + (line 6626) +* gnutls_x509_ext_import_proxy: X509 certificate API. + (line 6646) +* gnutls_x509_ext_import_subject_alt_names: X509 certificate API. + (line 6675) +* gnutls_x509_ext_import_subject_key_id: X509 certificate API. + (line 6699) +* gnutls_x509_ext_import_tlsfeatures: X509 certificate API. + (line 6718) +* gnutls_x509_ext_print: X509 certificate API. + (line 6744) +* gnutls_x509_key_purpose_deinit: X509 certificate API. + (line 6766) +* gnutls_x509_key_purpose_get: X509 certificate API. + (line 6777) +* gnutls_x509_key_purpose_init: X509 certificate API. + (line 6800) +* gnutls_x509_key_purpose_set: X509 certificate API. + (line 6814) +* gnutls_x509_name_constraints_add_excluded: X509 certificate API. + (line 6830) +* gnutls_x509_name_constraints_add_permitted: X509 certificate API. + (line 6856) +* gnutls_x509_name_constraints_check: X509 certificate API. + (line 6881) +* gnutls_x509_name_constraints_check_crt: X509 certificate API. + (line 6906) +* gnutls_x509_name_constraints_deinit: X509 certificate API. + (line 6931) +* gnutls_x509_name_constraints_get_excluded: X509 certificate API. + (line 6942) +* gnutls_x509_name_constraints_get_permitted: X509 certificate API. + (line 6972) +* gnutls_x509_name_constraints_init: X509 certificate API. + (line 7002) +* gnutls_x509_othername_to_virtual: X509 certificate API. + (line 7016) +* gnutls_x509_policies_deinit: X509 certificate API. + (line 7038) +* gnutls_x509_policies_get: X509 certificate API. + (line 7049) +* gnutls_x509_policies_init: X509 certificate API. + (line 7074) +* gnutls_x509_policies_set: X509 certificate API. + (line 7088) +* gnutls_x509_policy_release: X509 certificate API. + (line 7105) +* gnutls_x509_privkey_cpy: X509 certificate API. + (line 7118) +* gnutls_x509_privkey_deinit: X509 certificate API. + (line 7133) +* gnutls_x509_privkey_export: X509 certificate API. + (line 7142) +* gnutls_x509_privkey_export2: X509 certificate API. + (line 7171) +* gnutls_x509_privkey_export2_pkcs8: X509 certificate API. + (line 7197) +* gnutls_x509_privkey_export_dsa_raw: X509 certificate API. + (line 7233) +* gnutls_x509_privkey_export_ecc_raw: X509 certificate API. + (line 7259) +* gnutls_x509_privkey_export_gost_raw: X509 certificate API. + (line 7287) +* gnutls_x509_privkey_export_pkcs8: X509 certificate API. + (line 7322) +* gnutls_x509_privkey_export_rsa_raw: X509 certificate API. + (line 7361) +* gnutls_x509_privkey_export_rsa_raw2: X509 certificate API. + (line 7389) +* gnutls_x509_privkey_fix: X509 certificate API. + (line 7424) +* gnutls_x509_privkey_generate: X509 certificate API. + (line 7436) +* gnutls_x509_privkey_generate2: X509 certificate API. + (line 7476) +* gnutls_x509_privkey_get_key_id: X509 certificate API. + (line 7528) +* gnutls_x509_privkey_get_pk_algorithm: X509 certificate API. + (line 7555) +* gnutls_x509_privkey_get_pk_algorithm2: X509 certificate API. + (line 7568) +* gnutls_x509_privkey_get_seed: X509 certificate API. + (line 7583) +* gnutls_x509_privkey_get_spki: X509 certificate API. + (line 7608) +* gnutls_x509_privkey_import: X509 certificate API. + (line 7624) +* gnutls_x509_privkey_import2: Managing encrypted keys. + (line 51) +* gnutls_x509_privkey_import2 <1>: X509 certificate API. + (line 7646) +* gnutls_x509_privkey_import_dsa_raw: X509 certificate API. + (line 7676) +* gnutls_x509_privkey_import_ecc_raw: X509 certificate API. + (line 7702) +* gnutls_x509_privkey_import_gost_raw: X509 certificate API. + (line 7729) +* gnutls_x509_privkey_import_openssl: Managing encrypted keys. + (line 248) +* gnutls_x509_privkey_import_openssl <1>: X509 certificate API. + (line 7766) +* gnutls_x509_privkey_import_pkcs8: X509 certificate API. + (line 7790) +* gnutls_x509_privkey_import_rsa_raw: X509 certificate API. + (line 7827) +* gnutls_x509_privkey_import_rsa_raw2: X509 certificate API. + (line 7856) +* gnutls_x509_privkey_init: X509 certificate API. + (line 7890) +* gnutls_x509_privkey_sec_param: X509 certificate API. + (line 7901) +* gnutls_x509_privkey_set_flags: X509 certificate API. + (line 7916) +* gnutls_x509_privkey_set_pin_function: X509 certificate API. + (line 7932) +* gnutls_x509_privkey_set_spki: X509 certificate API. + (line 7952) +* gnutls_x509_privkey_sign_data: X509 certificate API. + (line 7968) +* gnutls_x509_privkey_sign_hash: Compatibility API. (line 154) +* gnutls_x509_privkey_verify_params: X509 certificate API. + (line 8003) +* gnutls_x509_privkey_verify_seed: X509 certificate API. + (line 8015) +* gnutls_x509_rdn_get: X509 certificate API. + (line 8040) +* gnutls_x509_rdn_get2: X509 certificate API. + (line 8063) +* gnutls_x509_rdn_get_by_oid: X509 certificate API. + (line 8087) +* gnutls_x509_rdn_get_oid: X509 certificate API. + (line 8115) +* gnutls_x509_spki_deinit: X509 certificate API. + (line 8138) +* gnutls_x509_spki_get_rsa_pss_params: X509 certificate API. + (line 8148) +* gnutls_x509_spki_init: X509 certificate API. + (line 8168) +* gnutls_x509_spki_set_rsa_pss_params: X509 certificate API. + (line 8183) +* gnutls_x509_tlsfeatures_add: X509 certificate API. + (line 8200) +* gnutls_x509_tlsfeatures_check_crt: X509 certificate API. + (line 8217) +* gnutls_x509_tlsfeatures_deinit: X509 certificate API. + (line 8236) +* gnutls_x509_tlsfeatures_get: X509 certificate API. + (line 8248) +* gnutls_x509_tlsfeatures_init: X509 certificate API. + (line 8268) +* gnutls_x509_trust_list_add_cas: Verifying X.509 certificate paths. + (line 9) +* gnutls_x509_trust_list_add_cas <1>: X509 certificate API. + (line 8283) +* gnutls_x509_trust_list_add_crls: Verifying X.509 certificate paths. + (line 73) +* gnutls_x509_trust_list_add_crls <1>: X509 certificate API. + (line 8318) +* gnutls_x509_trust_list_add_named_crt: Verifying X.509 certificate paths. + (line 41) +* gnutls_x509_trust_list_add_named_crt <1>: X509 certificate API. + (line 8358) +* gnutls_x509_trust_list_add_system_trust: Verifying X.509 certificate paths. + (line 293) +* gnutls_x509_trust_list_add_system_trust <1>: X509 certificate API. + (line 8393) +* gnutls_x509_trust_list_add_trust_dir: X509 certificate API. + (line 8417) +* gnutls_x509_trust_list_add_trust_file: Verifying X.509 certificate paths. + (line 238) +* gnutls_x509_trust_list_add_trust_file <1>: X509 certificate API. + (line 8444) +* gnutls_x509_trust_list_add_trust_mem: Verifying X.509 certificate paths. + (line 266) +* gnutls_x509_trust_list_add_trust_mem <1>: X509 certificate API. + (line 8475) +* gnutls_x509_trust_list_deinit: X509 certificate API. + (line 8505) +* gnutls_x509_trust_list_get_issuer: X509 certificate API. + (line 8522) +* gnutls_x509_trust_list_get_issuer_by_dn: X509 certificate API. + (line 8552) +* gnutls_x509_trust_list_get_issuer_by_subject_key_id: X509 certificate API. + (line 8576) +* gnutls_x509_trust_list_get_ptr: X509 certificate API. + (line 8603) +* gnutls_x509_trust_list_init: X509 certificate API. + (line 8619) +* gnutls_x509_trust_list_iter_deinit: X509 certificate API. + (line 8636) +* gnutls_x509_trust_list_iter_get_ca: X509 certificate API. + (line 8647) +* gnutls_x509_trust_list_remove_cas: X509 certificate API. + (line 8679) +* gnutls_x509_trust_list_remove_trust_file: X509 certificate API. + (line 8704) +* gnutls_x509_trust_list_remove_trust_mem: X509 certificate API. + (line 8726) +* gnutls_x509_trust_list_set_getissuer_function: X509 certificate API. + (line 8747) +* gnutls_x509_trust_list_set_ptr: X509 certificate API. + (line 8787) +* gnutls_x509_trust_list_verify_crt: Verifying X.509 certificate paths. + (line 110) +* gnutls_x509_trust_list_verify_crt <1>: X509 certificate API. + (line 8803) +* gnutls_x509_trust_list_verify_crt2: Verifying X.509 certificate paths. + (line 140) +* gnutls_x509_trust_list_verify_crt2 <1>: X509 certificate API. + (line 8836) +* gnutls_x509_trust_list_verify_named_crt: Verifying X.509 certificate paths. + (line 201) +* gnutls_x509_trust_list_verify_named_crt <1>: X509 certificate API. + (line 8900) + |