libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 3e1bc57a79987fd7b39670f3dab340561cc5397f
parent cf9ed7910a034b8b38f982a499af0cd7a53754fc
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 16 Nov 2008 05:28:37 +0000

dce

Diffstat:
Msrc/daemon/https/gnutls.h | 22----------------------
Msrc/daemon/https/minitasn1/libtasn1.h | 6------
Msrc/daemon/https/minitasn1/structure.c | 104-------------------------------------------------------------------------------
Msrc/daemon/https/tls/gnutls_x509.c | 247-------------------------------------------------------------------------------
Msrc/daemon/https/x509/common.c | 105-------------------------------------------------------------------------------
Msrc/daemon/https/x509/common.h | 5-----
Dsrc/daemon/https/x509/x509-api.texi | 2943-------------------------------------------------------------------------------
Msrc/daemon/https/x509/x509.c | 81-------------------------------------------------------------------------------
Msrc/daemon/https/x509/x509.h | 2--
9 files changed, 0 insertions(+), 3515 deletions(-)

diff --git a/src/daemon/https/gnutls.h b/src/daemon/https/gnutls.h @@ -459,28 +459,6 @@ extern "C" void MHD__gnutls_certificate_free_ca_names (MHD_gtls_cert_credentials_t sc); void MHD__gnutls_certificate_free_crls (MHD_gtls_cert_credentials_t sc); - int MHD__gnutls_certificate_set_x509_trust_file (MHD_gtls_cert_credentials_t - res, const char *CAFILE, - MHD_gnutls_x509_crt_fmt_t - type); - int MHD__gnutls_certificate_set_x509_trust_mem (MHD_gtls_cert_credentials_t - res, - const MHD_gnutls_datum_t * - CA, - MHD_gnutls_x509_crt_fmt_t - type); - - int MHD__gnutls_certificate_set_x509_crl_file (MHD_gtls_cert_credentials_t - res, const char *crlfile, - MHD_gnutls_x509_crt_fmt_t - type); - int MHD__gnutls_certificate_set_x509_crl_mem (MHD_gtls_cert_credentials_t - res, - const MHD_gnutls_datum_t * - CRL, - MHD_gnutls_x509_crt_fmt_t - type); - /* * CERTFILE is an x509 certificate in PEM form. * KEYFILE is a pkcs-1 private key in PEM form (for RSA keys). diff --git a/src/daemon/https/minitasn1/libtasn1.h b/src/daemon/https/minitasn1/libtasn1.h @@ -163,9 +163,6 @@ extern "C" MHD__asn1_retCode MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len); - MHD__asn1_retCode MHD__asn1_number_of_elements (ASN1_TYPE element, - const char *name, int *num); - MHD__asn1_retCode MHD__asn1_der_coding (ASN1_TYPE element, const char *name, void *ider, int *len, char *ErrorDescription); @@ -180,9 +177,6 @@ extern "C" const char *name_element, int *start, int *end); - const char *MHD__asn1_find_structure_from_oid (ASN1_TYPE definitions, - const char *oidValue); - /* DER utility functions. */ int MHD__asn1_get_tag_der (const unsigned char *der, int der_len, diff --git a/src/daemon/https/minitasn1/structure.c b/src/daemon/https/minitasn1/structure.c @@ -583,107 +583,3 @@ MHD__asn1_create_element (ASN1_TYPE definitions, const char *source_name, return res; } - - -/** - * MHD__asn1_number_of_elements - Counts the number of elements of a structure. - * @element: pointer to the root of an ASN1 structure. - * @name: the name of a sub-structure of ROOT. - * @num: pointer to an integer where the result will be stored - * - * Counts the number of elements of a sub-structure called NAME with - * names equal to "?1","?2", ... - * - * Returns: - * - * ASN1_SUCCESS: Creation OK. - * - * ASN1_ELEMENT_NOT_FOUND: NAME isn't known. - * - * ASN1_GENERIC_ERROR: Pointer num equal to NULL. - * - **/ -MHD__asn1_retCode -MHD__asn1_number_of_elements (ASN1_TYPE element, const char *name, int *num) -{ - node_asn *node, *p; - - if (num == NULL) - return ASN1_GENERIC_ERROR; - - *num = 0; - - node = MHD__asn1_find_node (element, name); - if (node == NULL) - return ASN1_ELEMENT_NOT_FOUND; - - p = node->down; - - while (p) - { - if ((p->name) && (p->name[0] == '?')) - (*num)++; - p = p->right; - } - - return ASN1_SUCCESS; -} - - -/** - * MHD__asn1_find_structure_from_oid - Locate structure defined by a specific OID. - * @definitions: ASN1 definitions - * @oidValue: value of the OID to search (e.g. "1.2.3.4"). - * - * Search the structure that is defined just after an OID definition. - * - * Returns: NULL when OIDVALUE not found, otherwise the pointer to a - * constant string that contains the element name defined just - * after the OID. - * - **/ -const char * -MHD__asn1_find_structure_from_oid (ASN1_TYPE definitions, - const char *oidValue) -{ - char definitionsName[MAX_NAME_SIZE], name[2 * MAX_NAME_SIZE + 1]; - char value[MAX_NAME_SIZE]; - ASN1_TYPE p; - int len; - MHD__asn1_retCode result; - - if ((definitions == ASN1_TYPE_EMPTY) || (oidValue == NULL)) - return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ - - - strcpy (definitionsName, definitions->name); - strcat (definitionsName, "."); - - /* search the OBJECT_ID into definitions */ - p = definitions->down; - while (p) - { - if ((type_field (p->type) == TYPE_OBJECT_ID) && - (p->type & CONST_ASSIGN)) - { - strcpy (name, definitionsName); - strcat (name, p->name); - - len = MAX_NAME_SIZE; - result = MHD__asn1_read_value (definitions, name, value, &len); - - if ((result == ASN1_SUCCESS) && (!strcmp (oidValue, value))) - { - p = p->right; - if (p == NULL) /* reach the end of ASN1 definitions */ - return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ - - return p->name; - } - } - p = p->right; - } - - return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ -} - diff --git a/src/daemon/https/tls/gnutls_x509.c b/src/daemon/https/tls/gnutls_x509.c @@ -546,69 +546,6 @@ MHD__gnutls_certificate_set_x509_key_mem (MHD_gtls_cert_credentials_t return 0; } -static int -generate_rdn_seq (MHD_gtls_cert_credentials_t res) -{ - MHD_gnutls_datum_t tmp; - int ret; - unsigned size, i; - opaque *pdata; - - /* Generate the RDN sequence - * This will be sent to clients when a certificate - * request message is sent. - */ - - /* FIXME: in case of a client it is not needed - * to do that. This would save time and memory. - * However we don't have that information available - * here. - */ - - size = 0; - for (i = 0; i < res->x509_ncas; i++) - { - if ((ret = - MHD_gnutls_x509_crt_get_raw_dn (res->x509_ca_list[i], &tmp)) < 0) - { - MHD_gnutls_assert (); - return ret; - } - size += (2 + tmp.size); - MHD__gnutls_free_datum (&tmp); - } - - if (res->x509_rdn_sequence.data != NULL) - MHD_gnutls_free (res->x509_rdn_sequence.data); - - res->x509_rdn_sequence.data = MHD_gnutls_malloc (size); - if (res->x509_rdn_sequence.data == NULL) - { - MHD_gnutls_assert (); - return GNUTLS_E_MEMORY_ERROR; - } - res->x509_rdn_sequence.size = size; - - pdata = res->x509_rdn_sequence.data; - - for (i = 0; i < res->x509_ncas; i++) - { - if ((ret = - MHD_gnutls_x509_crt_get_raw_dn (res->x509_ca_list[i], &tmp)) < 0) - { - MHD__gnutls_free_datum (&res->x509_rdn_sequence); - MHD_gnutls_assert (); - return ret; - } - - MHD_gtls_write_datum16 (pdata, tmp); - pdata += (2 + tmp.size); - MHD__gnutls_free_datum (&tmp); - } - - return 0; -} - /* Returns 0 if it's ok to use the enum MHD_GNUTLS_KeyExchangeAlgorithm with this * certificate (uses the KeyUsage field). */ @@ -668,187 +605,3 @@ MHD__gnutls_check_key_usage (const MHD_gnutls_cert * cert, -static int -parse_pem_ca_mem (MHD_gnutls_x509_crt_t ** cert_list, unsigned *ncerts, - const opaque * input_cert, int input_cert_size) -{ - int i, size; - const opaque *ptr; - MHD_gnutls_datum_t tmp; - int ret, count; - - /* move to the certificate - */ - ptr = memmem (input_cert, input_cert_size, - PEM_CERT_SEP, sizeof (PEM_CERT_SEP) - 1); - if (ptr == NULL) - ptr = memmem (input_cert, input_cert_size, - PEM_CERT_SEP2, sizeof (PEM_CERT_SEP2) - 1); - - if (ptr == NULL) - { - MHD_gnutls_assert (); - return GNUTLS_E_BASE64_DECODING_ERROR; - } - size = input_cert_size - (ptr - input_cert); - - i = *ncerts + 1; - count = 0; - - do - { - - *cert_list = - (MHD_gnutls_x509_crt_t *) MHD_gtls_realloc_fast (*cert_list, - i * - sizeof - (MHD_gnutls_x509_crt_t)); - - if (*cert_list == NULL) - { - MHD_gnutls_assert (); - return GNUTLS_E_MEMORY_ERROR; - } - - ret = MHD_gnutls_x509_crt_init (&cert_list[0][i - 1]); - if (ret < 0) - { - MHD_gnutls_assert (); - return ret; - } - - tmp.data = (opaque *) ptr; - tmp.size = size; - - ret = - MHD_gnutls_x509_crt_import (cert_list[0][i - 1], - &tmp, GNUTLS_X509_FMT_PEM); - if (ret < 0) - { - MHD_gnutls_assert (); - return ret; - } - - /* now we move ptr after the pem header - */ - ptr++; - size--; - /* find the next certificate (if any) - */ - - if (size > 0) - { - char *ptr3; - - ptr3 = memmem (ptr, size, PEM_CERT_SEP, sizeof (PEM_CERT_SEP) - 1); - if (ptr3 == NULL) - ptr3 = memmem (ptr, size, - PEM_CERT_SEP2, sizeof (PEM_CERT_SEP2) - 1); - - ptr = (const opaque *) ptr3; - size = input_cert_size - (ptr - input_cert); - } - else - ptr = NULL; - - i++; - count++; - - } - while (ptr != NULL); - - *ncerts = i - 1; - - return count; -} - -/* Reads a DER encoded certificate list from memory and stores it to - * a MHD_gnutls_cert structure. - * returns the number of certificates parsed. - */ -static int -parse_der_ca_mem (MHD_gnutls_x509_crt_t ** cert_list, unsigned *ncerts, - const void *input_cert, int input_cert_size) -{ - int i; - MHD_gnutls_datum_t tmp; - int ret; - - i = *ncerts + 1; - - *cert_list = - (MHD_gnutls_x509_crt_t *) MHD_gtls_realloc_fast (*cert_list, - i * - sizeof - (MHD_gnutls_x509_crt_t)); - - if (*cert_list == NULL) - { - MHD_gnutls_assert (); - return GNUTLS_E_MEMORY_ERROR; - } - - tmp.data = (opaque *) input_cert; - tmp.size = input_cert_size; - - ret = MHD_gnutls_x509_crt_init (&cert_list[0][i - 1]); - if (ret < 0) - { - MHD_gnutls_assert (); - return ret; - } - - ret = - MHD_gnutls_x509_crt_import (cert_list[0][i - 1], &tmp, - GNUTLS_X509_FMT_DER); - if (ret < 0) - { - MHD_gnutls_assert (); - return ret; - } - - *ncerts = i; - - return 1; /* one certificate parsed */ -} - -/** - * MHD__gnutls_certificate_set_x509_trust_mem - Used to add trusted CAs in a MHD_gtls_cert_credentials_t structure - * @res: is an #MHD_gtls_cert_credentials_t structure. - * @ca: is a list of trusted CAs or a DER certificate - * @type: is DER or PEM - * - * This function adds the trusted CAs in order to verify client or - * server certificates. In case of a client this is not required to - * be called if the certificates are not verified using - * MHD_gtls_certificate_verify_peers2(). This function may be called - * multiple times. - * - * In case of a server the CAs set here will be sent to the client if - * a certificate request is sent. This can be disabled using - * MHD__gnutls_certificate_send_x509_rdn_sequence(). - * - * Returns: the number of certificates processed or a negative value - * on error. - **/ -int -MHD__gnutls_certificate_set_x509_trust_mem (MHD_gtls_cert_credentials_t - res, - const MHD_gnutls_datum_t * ca, - MHD_gnutls_x509_crt_fmt_t type) -{ - int ret, ret2; - - if (type == GNUTLS_X509_FMT_DER) - ret = parse_der_ca_mem (&res->x509_ca_list, &res->x509_ncas, - ca->data, ca->size); - else - ret = parse_pem_ca_mem (&res->x509_ca_list, &res->x509_ncas, - ca->data, ca->size); - - if ((ret2 = generate_rdn_seq (res)) < 0) - return ret2; - - return ret; -} - diff --git a/src/daemon/https/x509/common.c b/src/daemon/https/x509/common.c @@ -446,108 +446,3 @@ MHD__gnutls_x509_get_pk_algorithm (ASN1_TYPE src, return algo; } -/* Reads the DER signed data from the certificate and allocates space and - * returns them into signed_data. - */ -int -MHD__gnutls_x509_get_signed_data (ASN1_TYPE src, - const char *src_name, - MHD_gnutls_datum_t * signed_data) -{ - MHD_gnutls_datum_t der; - int start, end, result; - - result = MHD__gnutls_x509_der_encode (src, "", &der, 0); - if (result < 0) - { - MHD_gnutls_assert (); - return result; - } - - /* Get the signed data - */ - result = MHD__asn1_der_decoding_startEnd (src, der.data, der.size, src_name, - &start, &end); - if (result != ASN1_SUCCESS) - { - result = MHD_gtls_asn2err (result); - MHD_gnutls_assert (); - goto cleanup; - } - - result = - MHD__gnutls_set_datum (signed_data, &der.data[start], end - start + 1); - - if (result < 0) - { - MHD_gnutls_assert (); - goto cleanup; - } - - result = 0; - -cleanup:MHD__gnutls_free_datum (&der); - - return result; -} - -/* Reads the DER signature from the certificate and allocates space and - * returns them into signed_data. - */ -int -MHD__gnutls_x509_get_signature (ASN1_TYPE src, - const char *src_name, - MHD_gnutls_datum_t * signature) -{ - int bits, result, len; - - signature->data = NULL; - signature->size = 0; - - /* Read the signature - */ - bits = 0; - result = MHD__asn1_read_value (src, src_name, NULL, &bits); - - if (result != ASN1_MEM_ERROR) - { - result = MHD_gtls_asn2err (result); - MHD_gnutls_assert (); - goto cleanup; - } - - if (bits % 8 != 0) - { - MHD_gnutls_assert (); - result = GNUTLS_E_CERTIFICATE_ERROR; - goto cleanup; - } - - len = bits / 8; - - signature->data = MHD_gnutls_malloc (len); - if (signature->data == NULL) - { - MHD_gnutls_assert (); - result = GNUTLS_E_MEMORY_ERROR; - return result; - } - - /* read the bit string of the signature - */ - bits = len; - result = MHD__asn1_read_value (src, src_name, signature->data, &bits); - - if (result != ASN1_SUCCESS) - { - result = MHD_gtls_asn2err (result); - MHD_gnutls_assert (); - goto cleanup; - } - - signature->size = len; - - return 0; - -cleanup:return result; -} diff --git a/src/daemon/https/x509/common.h b/src/daemon/https/x509/common.h @@ -81,9 +81,4 @@ int MHD__gnutls_x509_get_pk_algorithm (ASN1_TYPE src, const char *src_name, int MHD__gnutls_asn1_copy_node (ASN1_TYPE * dst, const char *dst_name, ASN1_TYPE src, const char *src_name); -int MHD__gnutls_x509_get_signed_data (ASN1_TYPE src, const char *src_name, - MHD_gnutls_datum_t * signed_data); -int MHD__gnutls_x509_get_signature (ASN1_TYPE src, const char *src_name, - MHD_gnutls_datum_t * signature); - #endif diff --git a/src/daemon/https/x509/x509-api.texi b/src/daemon/https/x509/x509-api.texi @@ -1,2943 +0,0 @@ - -@subheading gnutls_x509_crl_init -@anchor{gnutls_x509_crl_init} -@deftypefun {int} {gnutls_x509_crl_init} (gnutls_x509_crl_t * @var{crl}) -@var{crl}: The structure to be initialized - -This function will initialize a CRL structure. CRL stands for -Certificate Revocation List. A revocation list usually contains -lists of certificate serial numbers that have been revoked -by an Authority. The revocation lists are always signed with -the authority's private key. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_deinit -@anchor{gnutls_x509_crl_deinit} -@deftypefun {void} {gnutls_x509_crl_deinit} (gnutls_x509_crl_t @var{crl}) -@var{crl}: The structure to be initialized - -This function will deinitialize a CRL structure. -@end deftypefun - -@subheading gnutls_x509_crl_import -@anchor{gnutls_x509_crl_import} -@deftypefun {int} {gnutls_x509_crl_import} (gnutls_x509_crl_t @var{crl}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}) -@var{crl}: The structure to store the parsed CRL. - -@var{data}: The DER or PEM encoded CRL. - -@var{format}: One of DER or PEM - -This function will convert the given DER or PEM encoded CRL -to the native gnutls_x509_crl_t format. The output will be stored in 'crl'. - -If the CRL is PEM encoded it should have a header of "X509 CRL". - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_get_issuer_dn -@anchor{gnutls_x509_crl_get_issuer_dn} -@deftypefun {int} {gnutls_x509_crl_get_issuer_dn} (const gnutls_x509_crl_t @var{crl}, char * @var{buf}, size_t * @var{sizeof_buf}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{buf}: a pointer to a structure to hold the peer's name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will copy the name of the CRL issuer in the provided buffer. The name -will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in RFC2253. The output -string will be ASCII or UTF-8 encoded, depending on the certificate data. - -If buf is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not long enough, and -in that case the sizeof_buf will be updated with the required size, and -0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_get_issuer_dn_by_oid -@anchor{gnutls_x509_crl_get_issuer_dn_by_oid} -@deftypefun {int} {gnutls_x509_crl_get_issuer_dn_by_oid} (gnutls_x509_crl_t @var{crl}, const char * @var{oid}, int @var{indx}, unsigned int @var{raw_flag}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{indx}: In case multiple same OIDs exist in the RDN, this specifies which to send. Use zero to get the first one. - -@var{raw_flag}: If non zero returns the raw DER data of the DN part. - -@var{buf}: a pointer to a structure to hold the peer's name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will extract the part of the name of the CRL issuer specified -by the given OID. The output will be encoded as described in RFC2253. The output -string will be ASCII or UTF-8 encoded, depending on the certificate data. - -Some helper macros with popular OIDs can be found in gnutls/x509.h -If raw flag is zero, this function will only return known OIDs as text. Other OIDs -will be DER encoded, as described in RFC2253 -- in hex format with a '\#' prefix. -You can check about known OIDs using @code{gnutls_x509_dn_oid_known()}. - -If buf is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not long enough, and -in that case the sizeof_buf will be updated with the required size, -and 0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_get_dn_oid -@anchor{gnutls_x509_crl_get_dn_oid} -@deftypefun {int} {gnutls_x509_crl_get_dn_oid} (gnutls_x509_crl_t @var{crl}, int @var{indx}, void * @var{oid}, size_t * @var{sizeof_oid}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{indx}: Specifies which DN OID to send. Use zero to get the first one. - -@var{oid}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_oid}: initially holds the size of 'oid' - -This function will extract the requested OID of the name of the CRL issuer, specified -by the given index. - -If oid is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not long enough, and -in that case the sizeof_oid will be updated with the required size. -On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crl_get_signature_algorithm -@anchor{gnutls_x509_crl_get_signature_algorithm} -@deftypefun {int} {gnutls_x509_crl_get_signature_algorithm} (gnutls_x509_crl_t @var{crl}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -This function will return a value of the gnutls_sign_algorithm_t enumeration that -is the signature algorithm. - -Returns a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crl_get_signature -@anchor{gnutls_x509_crl_get_signature} -@deftypefun {int} {gnutls_x509_crl_get_signature} (gnutls_x509_crl_t @var{crl}, char * @var{sig}, size_t * @var{sizeof_sig}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{sig}: a pointer where the signature part will be copied (may be null). - -@var{sizeof_sig}: initially holds the size of @code{sig} - -This function will extract the signature field of a CRL. - -Returns 0 on success, and a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crl_get_version -@anchor{gnutls_x509_crl_get_version} -@deftypefun {int} {gnutls_x509_crl_get_version} (gnutls_x509_crl_t @var{crl}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -This function will return the version of the specified CRL. - -Returns a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crl_get_this_update -@anchor{gnutls_x509_crl_get_this_update} -@deftypefun {time_t} {gnutls_x509_crl_get_this_update} (gnutls_x509_crl_t @var{crl}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -This function will return the time this CRL was issued. - -Returns (time_t)-1 on error. -@end deftypefun - -@subheading gnutls_x509_crl_get_next_update -@anchor{gnutls_x509_crl_get_next_update} -@deftypefun {time_t} {gnutls_x509_crl_get_next_update} (gnutls_x509_crl_t @var{crl}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -This function will return the time the next CRL will be issued. -This field is optional in a CRL so it might be normal to get -an error instead. - -Returns (time_t)-1 on error. -@end deftypefun - -@subheading gnutls_x509_crl_get_crt_count -@anchor{gnutls_x509_crl_get_crt_count} -@deftypefun {int} {gnutls_x509_crl_get_crt_count} (gnutls_x509_crl_t @var{crl}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -This function will return the number of revoked certificates in the -given CRL. - -Returns a negative value on failure. -@end deftypefun - -@subheading gnutls_x509_crl_get_crt_serial -@anchor{gnutls_x509_crl_get_crt_serial} -@deftypefun {int} {gnutls_x509_crl_get_crt_serial} (gnutls_x509_crl_t @var{crl}, int @var{indx}, unsigned char * @var{serial}, size_t * @var{serial_size}, time_t * @var{t}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{indx}: the index of the certificate to extract (starting from 0) - -@var{serial}: where the serial number will be copied - -@var{serial_size}: initially holds the size of serial - -@var{t}: if non null, will hold the time this certificate was revoked - -This function will return the serial number of the specified, by -the index, revoked certificate. - -Returns a negative value on failure. -@end deftypefun - -@subheading gnutls_x509_crl_export -@anchor{gnutls_x509_crl_export} -@deftypefun {int} {gnutls_x509_crl_export} (gnutls_x509_crl_t @var{crl}, gnutls_x509_crt_fmt_t @var{format}, void * @var{output_data}, size_t * @var{output_data_size}) -@var{crl}: Holds the revocation list - -@var{format}: the format of output params. One of PEM or DER. - -@var{output_data}: will contain a private key PEM or DER encoded - -@var{output_data_size}: holds the size of output_data (and will be replaced by the actual size of parameters) - -This function will export the revocation list to DER or PEM format. - -If the buffer provided is not long enough to hold the output, then -GNUTLS_E_SHORT_MEMORY_BUFFER will be returned. - -If the structure is PEM encoded, it will have a header -of "BEGIN X509 CRL". - -Returns 0 on success, and a negative value on failure. -@end deftypefun - -@subheading gnutls_x509_rdn_get -@anchor{gnutls_x509_rdn_get} -@deftypefun {int} {gnutls_x509_rdn_get} (const gnutls_datum_t * @var{idn}, char * @var{buf}, size_t * @var{sizeof_buf}) -@var{idn}: should contain a DER encoded RDN sequence - -@var{buf}: a pointer to a structure to hold the peer's name - -@var{sizeof_buf}: holds the size of @code{buf} - -This function will return the name of the given RDN sequence. The -name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in -RFC2253. - -If the provided buffer is not long enough, returns -GNUTLS_E_SHORT_MEMORY_BUFFER and *sizeof_buf will be updated. On -success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_rdn_get_by_oid -@anchor{gnutls_x509_rdn_get_by_oid} -@deftypefun {int} {gnutls_x509_rdn_get_by_oid} (const gnutls_datum_t * @var{idn}, const char * @var{oid}, int @var{indx}, unsigned int @var{raw_flag}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{idn}: should contain a DER encoded RDN sequence - -@var{oid}: an Object Identifier - -@var{indx}: In case multiple same OIDs exist in the RDN indicates which -to send. Use 0 for the first one. - -@var{raw_flag}: If non zero then the raw DER data are returned. - -@var{buf}: a pointer to a structure to hold the peer's name - -@var{sizeof_buf}: holds the size of @code{buf} - -This function will return the name of the given Object identifier, -of the RDN sequence. The name will be encoded using the rules -from RFC2253. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER and updates *sizeof_buf if -the provided buffer is not long enough, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_rdn_get_oid -@anchor{gnutls_x509_rdn_get_oid} -@deftypefun {int} {gnutls_x509_rdn_get_oid} (const gnutls_datum_t * @var{idn}, int @var{indx}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{idn}: should contain a DER encoded RDN sequence - -@var{indx}: Indicates which OID to return. Use 0 for the first one. - -This function will return the specified Object identifier, of the -RDN sequence. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER and updates *sizeof_buf if -the provided buffer is not long enough, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_dn_oid_known -@anchor{gnutls_x509_dn_oid_known} -@deftypefun {int} {gnutls_x509_dn_oid_known} (const char * @var{oid}) -@var{oid}: holds an Object Identifier in a null terminated string - -This function will inform about known DN OIDs. This is useful since functions -like @code{gnutls_x509_crt_set_dn_by_oid()} use the information on known -OIDs to properly encode their input. Object Identifiers that are not -known are not encoded by these functions, and their input is stored directly -into the ASN.1 structure. In that case of unknown OIDs, you have -the responsibility of DER encoding your data. - -Returns 1 on known OIDs and 0 otherwise. -@end deftypefun - -@subheading gnutls_x509_crt_init -@anchor{gnutls_x509_crt_init} -@deftypefun {int} {gnutls_x509_crt_init} (gnutls_x509_crt_t * @var{cert}) -@var{cert}: The structure to be initialized - -This function will initialize an X.509 certificate structure. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_deinit -@anchor{gnutls_x509_crt_deinit} -@deftypefun {void} {gnutls_x509_crt_deinit} (gnutls_x509_crt_t @var{cert}) -@var{cert}: The structure to be initialized - -This function will deinitialize a CRL structure. -@end deftypefun - -@subheading gnutls_x509_crt_import -@anchor{gnutls_x509_crt_import} -@deftypefun {int} {gnutls_x509_crt_import} (gnutls_x509_crt_t @var{cert}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}) -@var{cert}: The structure to store the parsed certificate. - -@var{data}: The DER or PEM encoded certificate. - -@var{format}: One of DER or PEM - -This function will convert the given DER or PEM encoded Certificate -to the native gnutls_x509_crt_t format. The output will be stored in @code{cert}. - -If the Certificate is PEM encoded it should have a header of "X509 CERTIFICATE", or -"CERTIFICATE". - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_get_issuer_dn -@anchor{gnutls_x509_crt_get_issuer_dn} -@deftypefun {int} {gnutls_x509_crt_get_issuer_dn} (gnutls_x509_crt_t @var{cert}, char * @var{buf}, size_t * @var{sizeof_buf}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{buf}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will copy the name of the Certificate issuer in the -provided buffer. The name will be in the form -"C=xxxx,O=yyyy,CN=zzzz" as described in RFC2253. The output string -will be ASCII or UTF-8 encoded, depending on the certificate data. - -If @code{buf} is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_buf will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_issuer_dn_by_oid -@anchor{gnutls_x509_crt_get_issuer_dn_by_oid} -@deftypefun {int} {gnutls_x509_crt_get_issuer_dn_by_oid} (gnutls_x509_crt_t @var{cert}, const char * @var{oid}, int @var{indx}, unsigned int @var{raw_flag}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{indx}: In case multiple same OIDs exist in the RDN, this specifies which to send. Use zero to get the first one. - -@var{raw_flag}: If non zero returns the raw DER data of the DN part. - -@var{buf}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will extract the part of the name of the Certificate -issuer specified by the given OID. The output, if the raw flag is not -used, will be encoded as described in RFC2253. Thus a string that is -ASCII or UTF-8 encoded, depending on the certificate data. - -Some helper macros with popular OIDs can be found in gnutls/x509.h -If raw flag is zero, this function will only return known OIDs as -text. Other OIDs will be DER encoded, as described in RFC2253 -- -in hex format with a '\#' prefix. You can check about known OIDs -using @code{gnutls_x509_dn_oid_known()}. - -If @code{buf} is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_buf will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_issuer_dn_oid -@anchor{gnutls_x509_crt_get_issuer_dn_oid} -@deftypefun {int} {gnutls_x509_crt_get_issuer_dn_oid} (gnutls_x509_crt_t @var{cert}, int @var{indx}, void * @var{oid}, size_t * @var{sizeof_oid}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{indx}: This specifies which OID to return. Use zero to get the first one. - -@var{oid}: a pointer to a buffer to hold the OID (may be null) - -@var{sizeof_oid}: initially holds the size of @code{oid} - -This function will extract the OIDs of the name of the Certificate -issuer specified by the given index. - -If @code{oid} is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_oid will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_dn -@anchor{gnutls_x509_crt_get_dn} -@deftypefun {int} {gnutls_x509_crt_get_dn} (gnutls_x509_crt_t @var{cert}, char * @var{buf}, size_t * @var{sizeof_buf}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{buf}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will copy the name of the Certificate in the -provided buffer. The name will be in the form -"C=xxxx,O=yyyy,CN=zzzz" as described in RFC2253. The output string -will be ASCII or UTF-8 encoded, depending on the certificate data. - -If @code{buf} is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_buf will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_dn_by_oid -@anchor{gnutls_x509_crt_get_dn_by_oid} -@deftypefun {int} {gnutls_x509_crt_get_dn_by_oid} (gnutls_x509_crt_t @var{cert}, const char * @var{oid}, int @var{indx}, unsigned int @var{raw_flag}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{indx}: In case multiple same OIDs exist in the RDN, this specifies which to send. Use zero to get the first one. - -@var{raw_flag}: If non zero returns the raw DER data of the DN part. - -@var{buf}: a pointer where the DN part will be copied (may be null). - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will extract the part of the name of the Certificate -subject specified by the given OID. The output, if the raw flag is not -used, will be encoded as described in RFC2253. Thus a string that is -ASCII or UTF-8 encoded, depending on the certificate data. - -Some helper macros with popular OIDs can be found in gnutls/x509.h -If raw flag is zero, this function will only return known OIDs as -text. Other OIDs will be DER encoded, as described in RFC2253 -- -in hex format with a '\#' prefix. You can check about known OIDs -using @code{gnutls_x509_dn_oid_known()}. - -If @code{buf} is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_buf will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_dn_oid -@anchor{gnutls_x509_crt_get_dn_oid} -@deftypefun {int} {gnutls_x509_crt_get_dn_oid} (gnutls_x509_crt_t @var{cert}, int @var{indx}, void * @var{oid}, size_t * @var{sizeof_oid}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{indx}: This specifies which OID to return. Use zero to get the first one. - -@var{oid}: a pointer to a buffer to hold the OID (may be null) - -@var{sizeof_oid}: initially holds the size of @code{oid} - -This function will extract the OIDs of the name of the Certificate -subject specified by the given index. - -If oid is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_oid will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_signature_algorithm -@anchor{gnutls_x509_crt_get_signature_algorithm} -@deftypefun {int} {gnutls_x509_crt_get_signature_algorithm} (gnutls_x509_crt_t @var{cert}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -This function will return a value of the gnutls_sign_algorithm_t enumeration that -is the signature algorithm. - -Returns a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_signature -@anchor{gnutls_x509_crt_get_signature} -@deftypefun {int} {gnutls_x509_crt_get_signature} (gnutls_x509_crt_t @var{cert}, char * @var{sig}, size_t * @var{sizeof_sig}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{sig}: a pointer where the signature part will be copied (may be null). - -@var{sizeof_sig}: initially holds the size of @code{sig} - -This function will extract the signature field of a certificate. - -Returns 0 on success, and a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_version -@anchor{gnutls_x509_crt_get_version} -@deftypefun {int} {gnutls_x509_crt_get_version} (gnutls_x509_crt_t @var{cert}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -This function will return the version of the specified Certificate. - -Returns a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_activation_time -@anchor{gnutls_x509_crt_get_activation_time} -@deftypefun {time_t} {gnutls_x509_crt_get_activation_time} (gnutls_x509_crt_t @var{cert}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -This function will return the time this Certificate was or will be activated. - -Returns (time_t)-1 on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_expiration_time -@anchor{gnutls_x509_crt_get_expiration_time} -@deftypefun {time_t} {gnutls_x509_crt_get_expiration_time} (gnutls_x509_crt_t @var{cert}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -This function will return the time this Certificate was or will be expired. - -Returns (time_t)-1 on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_serial -@anchor{gnutls_x509_crt_get_serial} -@deftypefun {int} {gnutls_x509_crt_get_serial} (gnutls_x509_crt_t @var{cert}, void * @var{result}, size_t * @var{result_size}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{result}: The place where the serial number will be copied - -@var{result_size}: Holds the size of the result field. - -This function will return the X.509 certificate's serial number. -This is obtained by the X509 Certificate serialNumber -field. Serial is not always a 32 or 64bit number. Some CAs use -large serial numbers, thus it may be wise to handle it as something -opaque. - -Returns 0 on success and a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_get_subject_key_id -@anchor{gnutls_x509_crt_get_subject_key_id} -@deftypefun {int} {gnutls_x509_crt_get_subject_key_id} (gnutls_x509_crt_t @var{cert}, void * @var{ret}, size_t * @var{ret_size}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{ret}: The place where the identifier will be copied - -@var{ret_size}: Holds the size of the result field. - -@var{critical}: will be non zero if the extension is marked as critical (may be null) - -This function will return the X.509v3 certificate's subject key identifier. -This is obtained by the X.509 Subject Key identifier extension -field (2.5.29.14). - -Returns 0 on success and a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_get_authority_key_id -@anchor{gnutls_x509_crt_get_authority_key_id} -@deftypefun {int} {gnutls_x509_crt_get_authority_key_id} (gnutls_x509_crt_t @var{cert}, void * @var{ret}, size_t * @var{ret_size}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{critical}: will be non zero if the extension is marked as critical (may be null) - -This function will return the X.509v3 certificate authority's key identifier. -This is obtained by the X.509 Authority Key identifier extension -field (2.5.29.35). Note that this function only returns the keyIdentifier -field of the extension. - -Returns 0 on success and a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_get_pk_algorithm -@anchor{gnutls_x509_crt_get_pk_algorithm} -@deftypefun {int} {gnutls_x509_crt_get_pk_algorithm} (gnutls_x509_crt_t @var{cert}, unsigned int * @var{bits}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{bits}: if bits is non null it will hold the size of the parameters' in bits - -This function will return the public key algorithm of an X.509 -certificate. - -If bits is non null, it should have enough size to hold the parameters -size in bits. For RSA the bits returned is the modulus. -For DSA the bits returned are of the public -exponent. - -Returns a member of the gnutls_pk_algorithm_t enumeration on success, -or a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_subject_alt_name -@anchor{gnutls_x509_crt_get_subject_alt_name} -@deftypefun {int} {gnutls_x509_crt_get_subject_alt_name} (gnutls_x509_crt_t @var{cert}, unsigned int @var{seq}, void * @var{ret}, size_t * @var{ret_size}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{seq}: specifies the sequence number of the alt name (0 for the first one, 1 for the second etc.) - -@var{ret}: is the place where the alternative name will be copied to - -@var{ret_size}: holds the size of ret. - -@var{critical}: will be non zero if the extension is marked as critical (may be null) - -This function will return the alternative names, contained in the -given certificate. - -This is specified in X509v3 Certificate Extensions. GNUTLS will -return the Alternative name (2.5.29.17), or a negative error code. - -When the SAN type is otherName, it will extract the data in the -otherName's value field, and @code{GNUTLS_SAN_OTHERNAME} is returned. -You may use @code{gnutls_x509_crt_get_subject_alt_othername_oid()} to get -the corresponding OID and the "virtual" SAN types (e.g., -@code{GNUTLS_SAN_OTHERNAME_XMPP}). - -If an otherName OID is known, the data will be decoded. Otherwise -the returned data will be DER encoded, and you will have to decode -it yourself. Currently, only the RFC 3920 id-on-xmppAddr SAN is -recognized. - -Returns the alternative subject name type on success. The type is -one of the enumerated gnutls_x509_subject_alt_name_t. It will -return @code{GNUTLS_E_SHORT_MEMORY_BUFFER} if @code{ret_size} is not large -enough to hold the value. In that case @code{ret_size} will be updated -with the required size. If the certificate does not have an -Alternative name with the specified sequence number then -@code{GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE} is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_subject_alt_name2 -@anchor{gnutls_x509_crt_get_subject_alt_name2} -@deftypefun {int} {gnutls_x509_crt_get_subject_alt_name2} (gnutls_x509_crt_t @var{cert}, unsigned int @var{seq}, void * @var{ret}, size_t * @var{ret_size}, unsigned int* @var{ret_type}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{seq}: specifies the sequence number of the alt name (0 for the first one, 1 for the second etc.) - -@var{ret}: is the place where the alternative name will be copied to - -@var{ret_size}: holds the size of ret. - -@var{ret_type}: holds the type of the alternative name (one of gnutls_x509_subject_alt_name_t). - -@var{critical}: will be non zero if the extension is marked as critical (may be null) - -This function will return the alternative names, contained in the -given certificate. It is the same as @code{gnutls_x509_crt_get_subject_alt_name()} -except for the fact that it will return the type of the alternative -name in @code{ret_type} even if the function fails for some reason (i.e. -the buffer provided is not enough). - -The return values are the same as with @code{gnutls_x509_crt_get_subject_alt_name()}. -@end deftypefun - -@subheading gnutls_x509_crt_get_subject_alt_othername_oid -@anchor{gnutls_x509_crt_get_subject_alt_othername_oid} -@deftypefun {int} {gnutls_x509_crt_get_subject_alt_othername_oid} (gnutls_x509_crt_t @var{cert}, unsigned int @var{seq}, void * @var{ret}, size_t * @var{ret_size}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{seq}: specifies the sequence number of the alt name (0 for the first one, 1 for the second etc.) - -@var{ret}: is the place where the otherName OID will be copied to - -@var{ret_size}: holds the size of ret. - -This function will extract the type OID of an otherName Subject -Alternative Name, contained in the given certificate, and return -the type as an enumerated element. - -This function is only useful if -@code{gnutls_x509_crt_get_subject_alt_name()} returned -@code{GNUTLS_SAN_OTHERNAME}. - -Returns the alternative subject name type on success. The type is -one of the enumerated gnutls_x509_subject_alt_name_t. For -supported OIDs, it will return one of the virtual -(GNUTLS_SAN_OTHERNAME_*) types, e.g. @code{GNUTLS_SAN_OTHERNAME_XMPP}, -and @code{GNUTLS_SAN_OTHERNAME} for unknown OIDs. It will return -@code{GNUTLS_E_SHORT_MEMORY_BUFFER} if @code{ret_size} is not large enough to -hold the value. In that case @code{ret_size} will be updated with the -required size. If the certificate does not have an Alternative -name with the specified sequence number and with the otherName type -then @code{GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE} is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_basic_constraints -@anchor{gnutls_x509_crt_get_basic_constraints} -@deftypefun {int} {gnutls_x509_crt_get_basic_constraints} (gnutls_x509_crt_t @var{cert}, unsigned int * @var{critical}, int * @var{ca}, int * @var{pathlen}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{critical}: will be non zero if the extension is marked as critical - -@var{ca}: pointer to output integer indicating CA status, may be NULL, -value is 1 if the certificate CA flag is set, 0 otherwise. - -@var{pathlen}: pointer to output integer indicating path length (may be -NULL), non-negative values indicate a present pathLenConstraint -field and the actual value, -1 indicate that the field is absent. - -This function will read the certificate's basic constraints, and -return the certificates CA status. It reads the basicConstraints -X.509 extension (2.5.29.19). - -@strong{Return value:} If the certificate is a CA a positive value will be -returned, or zero if the certificate does not have CA flag set. A -negative value may be returned in case of errors. If the -certificate does not contain the basicConstraints extension -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_ca_status -@anchor{gnutls_x509_crt_get_ca_status} -@deftypefun {int} {gnutls_x509_crt_get_ca_status} (gnutls_x509_crt_t @var{cert}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{critical}: will be non zero if the extension is marked as critical - -This function will return certificates CA status, by reading the -basicConstraints X.509 extension (2.5.29.19). If the certificate is -a CA a positive value will be returned, or zero if the certificate -does not have CA flag set. - -Use @code{gnutls_x509_crt_get_basic_constraints()} if you want to read the -pathLenConstraint field too. - -A negative value may be returned in case of parsing error. -If the certificate does not contain the basicConstraints extension -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_key_usage -@anchor{gnutls_x509_crt_get_key_usage} -@deftypefun {int} {gnutls_x509_crt_get_key_usage} (gnutls_x509_crt_t @var{cert}, unsigned int * @var{key_usage}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{key_usage}: where the key usage bits will be stored - -@var{critical}: will be non zero if the extension is marked as critical - -This function will return certificate's key usage, by reading the -keyUsage X.509 extension (2.5.29.15). The key usage value will ORed values of the: -GNUTLS_KEY_DIGITAL_SIGNATURE, GNUTLS_KEY_NON_REPUDIATION, -GNUTLS_KEY_KEY_ENCIPHERMENT, GNUTLS_KEY_DATA_ENCIPHERMENT, -GNUTLS_KEY_KEY_AGREEMENT, GNUTLS_KEY_KEY_CERT_SIGN, -GNUTLS_KEY_CRL_SIGN, GNUTLS_KEY_ENCIPHER_ONLY, -GNUTLS_KEY_DECIPHER_ONLY. - -A negative value may be returned in case of parsing error. -If the certificate does not contain the keyUsage extension -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_proxy -@anchor{gnutls_x509_crt_get_proxy} -@deftypefun {int} {gnutls_x509_crt_get_proxy} (gnutls_x509_crt_t @var{cert}, unsigned int * @var{critical}, int * @var{pathlen}, char ** @var{policyLanguage}, char ** @var{policy}, size_t * @var{sizeof_policy}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{critical}: will be non zero if the extension is marked as critical - -@var{pathlen}: pointer to output integer indicating path length (may be -NULL), non-negative values indicate a present pCPathLenConstraint -field and the actual value, -1 indicate that the field is absent. - -This function will read the certificate's basic constraints, and -return the certificates CA status. It reads the basicConstraints -X.509 extension (2.5.29.19). - -@strong{Return value:} If the certificate is a CA a positive value will be -returned, or zero if the certificate does not have CA flag set. A -negative value may be returned in case of errors. If the -certificate does not contain the basicConstraints extension -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_extension_by_oid -@anchor{gnutls_x509_crt_get_extension_by_oid} -@deftypefun {int} {gnutls_x509_crt_get_extension_by_oid} (gnutls_x509_crt_t @var{cert}, const char * @var{oid}, int @var{indx}, void * @var{buf}, size_t * @var{sizeof_buf}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{indx}: In case multiple same OIDs exist in the extensions, this specifies which to send. Use zero to get the first one. - -@var{buf}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -@var{critical}: will be non zero if the extension is marked as critical - -This function will return the extension specified by the OID in the certificate. -The extensions will be returned as binary data DER encoded, in the provided -buffer. - -A negative value may be returned in case of parsing error. -If the certificate does not contain the specified extension -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_extension_oid -@anchor{gnutls_x509_crt_get_extension_oid} -@deftypefun {int} {gnutls_x509_crt_get_extension_oid} (gnutls_x509_crt_t @var{cert}, int @var{indx}, void * @var{oid}, size_t * @var{sizeof_oid}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{indx}: Specifies which extension OID to send. Use zero to get the first one. - -@var{oid}: a pointer to a structure to hold the OID (may be null) - -@var{sizeof_oid}: initially holds the size of @code{oid} - -This function will return the requested extension OID in the certificate. -The extension OID will be stored as a string in the provided buffer. - -A negative value may be returned in case of parsing error. -If your have reached the last extension available -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_extension_info -@anchor{gnutls_x509_crt_get_extension_info} -@deftypefun {int} {gnutls_x509_crt_get_extension_info} (gnutls_x509_crt_t @var{cert}, int @var{indx}, void * @var{oid}, size_t * @var{sizeof_oid}, int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{indx}: Specifies which extension OID to send. Use zero to get the first one. - -@var{oid}: a pointer to a structure to hold the OID - -@var{sizeof_oid}: initially holds the size of @code{oid} - -@var{critical}: output variable with critical flag, may be NULL. - -This function will return the requested extension OID in the -certificate, and the critical flag for it. The extension OID will -be stored as a string in the provided buffer. Use -@code{gnutls_x509_crt_get_extension_data()} to extract the data. - -Return 0 on success. A negative value may be returned in case of -parsing error. If you have reached the last extension available -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_extension_data -@anchor{gnutls_x509_crt_get_extension_data} -@deftypefun {int} {gnutls_x509_crt_get_extension_data} (gnutls_x509_crt_t @var{cert}, int @var{indx}, void * @var{data}, size_t * @var{sizeof_data}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{indx}: Specifies which extension OID to send. Use zero to get the first one. - -@var{data}: a pointer to a structure to hold the data (may be null) - -@var{sizeof_data}: initially holds the size of @code{oid} - -This function will return the requested extension data in the -certificate. The extension data will be stored as a string in the -provided buffer. - -Use @code{gnutls_x509_crt_get_extension_info()} to extract the OID and -critical flag. Use @code{gnutls_x509_crt_get_extension_by_oid()} instead, -if you want to get data indexed by the extension OID rather than -sequence. - -Return 0 on success. A negative value may be returned in case of -parsing error. If you have reached the last extension available -GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_raw_issuer_dn -@anchor{gnutls_x509_crt_get_raw_issuer_dn} -@deftypefun {int} {gnutls_x509_crt_get_raw_issuer_dn} (gnutls_x509_crt_t @var{cert}, gnutls_datum_t * @var{start}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{start}: will hold the starting point of the DN - -This function will return a pointer to the DER encoded DN structure -and the length. - -Returns 0 on success or a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_raw_dn -@anchor{gnutls_x509_crt_get_raw_dn} -@deftypefun {int} {gnutls_x509_crt_get_raw_dn} (gnutls_x509_crt_t @var{cert}, gnutls_datum_t * @var{start}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{start}: will hold the starting point of the DN - -This function will return a pointer to the DER encoded DN structure and -the length. - -Returns 0 on success, or a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crt_get_subject -@anchor{gnutls_x509_crt_get_subject} -@deftypefun {int} {gnutls_x509_crt_get_subject} (gnutls_x509_crt_t @var{cert}, gnutls_x509_dn_t * @var{dn}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{dn}: output variable with pointer to opaque DN. - -Return the Certificate's Subject DN as an opaque data type. You -may use @code{gnutls_x509_dn_get_rdn_ava()} to decode the DN. - -@strong{Returns:} Returns 0 on success, or an error code. -@end deftypefun - -@subheading gnutls_x509_crt_get_issuer -@anchor{gnutls_x509_crt_get_issuer} -@deftypefun {int} {gnutls_x509_crt_get_issuer} (gnutls_x509_crt_t @var{cert}, gnutls_x509_dn_t * @var{dn}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{dn}: output variable with pointer to opaque DN - -Return the Certificate's Issuer DN as an opaque data type. You may -use @code{gnutls_x509_dn_get_rdn_ava()} to decode the DN. - -Note that @code{dn} points into the @code{cert} object, and thus you may not -deallocate @code{cert} and continue to access @code{dn}. - -@strong{Returns:} Returns 0 on success, or an error code. -@end deftypefun - -@subheading gnutls_x509_dn_get_rdn_ava -@anchor{gnutls_x509_dn_get_rdn_ava} -@deftypefun {int} {gnutls_x509_dn_get_rdn_ava} (gnutls_x509_dn_t @var{dn}, int @var{irdn}, int @var{iava}, gnutls_x509_ava_st * @var{ava}) -@var{dn}: input variable with opaque DN pointer - -@var{irdn}: index of RDN - -@var{iava}: index of AVA. - -@var{ava}: Pointer to structure which will hold output information. - -Get pointers to data within the DN. - -Note that @code{ava} will contain pointers into the @code{dn} structure, so you -should not modify any data or deallocate it. Note also that the DN -in turn points into the original certificate structure, and thus -you may not deallocate the certificate and continue to access @code{dn}. - -@strong{Returns:} Returns 0 on success, or an error code. -@end deftypefun - -@subheading gnutls_x509_crt_get_fingerprint -@anchor{gnutls_x509_crt_get_fingerprint} -@deftypefun {int} {gnutls_x509_crt_get_fingerprint} (gnutls_x509_crt_t @var{cert}, gnutls_digest_algorithm_t @var{algo}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{algo}: is a digest algorithm - -@var{buf}: a pointer to a structure to hold the fingerprint (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will calculate and copy the certificate's fingerprint -in the provided buffer. - -If the buffer is null then only the size will be filled. - -@strong{Returns:} @code{GNUTLS_E_SHORT_MEMORY_BUFFER} if the provided buffer is -not long enough, and in that case the *sizeof_buf will be updated -with the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_export -@anchor{gnutls_x509_crt_export} -@deftypefun {int} {gnutls_x509_crt_export} (gnutls_x509_crt_t @var{cert}, gnutls_x509_crt_fmt_t @var{format}, void * @var{output_data}, size_t * @var{output_data_size}) -@var{cert}: Holds the certificate - -@var{format}: the format of output params. One of PEM or DER. - -@var{output_data}: will contain a certificate PEM or DER encoded - -@var{output_data_size}: holds the size of output_data (and will be -replaced by the actual size of parameters) - -This function will export the certificate to DER or PEM format. - -If the buffer provided is not long enough to hold the output, then -*output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will -be returned. - -If the structure is PEM encoded, it will have a header -of "BEGIN CERTIFICATE". - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_get_key_id -@anchor{gnutls_x509_crt_get_key_id} -@deftypefun {int} {gnutls_x509_crt_get_key_id} (gnutls_x509_crt_t @var{crt}, unsigned int @var{flags}, unsigned char * @var{output_data}, size_t * @var{output_data_size}) -@var{crt}: Holds the certificate - -@var{flags}: should be 0 for now - -@var{output_data}: will contain the key ID - -@var{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 the depends on the public -key parameters. This ID can be used in checking whether a -certificate corresponds to the given private key. - -If the buffer provided is not long enough to hold the output, then -*output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will -be returned. The output will normally be a SHA-1 hash output, -which is 20 bytes. - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_check_revocation -@anchor{gnutls_x509_crt_check_revocation} -@deftypefun {int} {gnutls_x509_crt_check_revocation} (gnutls_x509_crt_t @var{cert}, const gnutls_x509_crl_t * @var{crl_list}, int @var{crl_list_length}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{crl_list}: should contain a list of gnutls_x509_crl_t structures - -@var{crl_list_length}: the length of the crl_list - -This function will return check if the given certificate is -revoked. It is assumed that the CRLs have been verified before. - -@strong{Returns:} 0 if the certificate is NOT revoked, and 1 if it is. A -negative value is returned on error. -@end deftypefun - -@subheading gnutls_x509_crt_verify_data -@anchor{gnutls_x509_crt_verify_data} -@deftypefun {int} {gnutls_x509_crt_verify_data} (gnutls_x509_crt_t @var{crt}, unsigned int @var{flags}, const gnutls_datum_t * @var{data}, const gnutls_datum_t * @var{signature}) -@var{crt}: Holds the certificate - -@var{flags}: should be 0 for now - -@var{data}: holds the data to be signed - -@var{signature}: contains the signature - -This function will verify the given signed data, using the -parameters from the certificate. - -@strong{Returns:} In case of a verification failure 0 is returned, and 1 on -success. -@end deftypefun - -@subheading gnutls_x509_crt_get_crl_dist_points -@anchor{gnutls_x509_crt_get_crl_dist_points} -@deftypefun {int} {gnutls_x509_crt_get_crl_dist_points} (gnutls_x509_crt_t @var{cert}, unsigned int @var{seq}, void * @var{ret}, size_t * @var{ret_size}, unsigned int * @var{reason_flags}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{seq}: specifies the sequence number of the distribution point (0 for the first one, 1 for the second etc.) - -@var{ret}: is the place where the distribution point will be copied to - -@var{ret_size}: holds the size of ret. - -@var{reason_flags}: Revocation reasons flags. - -@var{critical}: will be non zero if the extension is marked as critical (may be null) - -This function will return the CRL distribution points (2.5.29.31), -contained in the given certificate. - -@code{reason_flags} should be an ORed sequence of -GNUTLS_CRL_REASON_UNUSED, GNUTLS_CRL_REASON_KEY_COMPROMISE, -GNUTLS_CRL_REASON_CA_COMPROMISE, -GNUTLS_CRL_REASON_AFFILIATION_CHANGED, -GNUTLS_CRL_REASON_SUPERSEEDED, -GNUTLS_CRL_REASON_CESSATION_OF_OPERATION, -GNUTLS_CRL_REASON_CERTIFICATE_HOLD, -GNUTLS_CRL_REASON_PRIVILEGE_WITHDRAWN, -GNUTLS_CRL_REASON_AA_COMPROMISE, or zero for all possible reasons. - -This is specified in X509v3 Certificate Extensions. GNUTLS will -return the distribution point type, or a negative error code on -error. - -Returns @code{GNUTLS_E_SHORT_MEMORY_BUFFER} and updates &@code{ret_size} if -&@code{ret_size} is not enough to hold the distribution point, or the -type of the distribution point if everything was ok. The type is -one of the enumerated @code{gnutls_x509_subject_alt_name_t}. If the -certificate does not have an Alternative name with the specified -sequence number then @code{GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE} is -returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_key_purpose_oid -@anchor{gnutls_x509_crt_get_key_purpose_oid} -@deftypefun {int} {gnutls_x509_crt_get_key_purpose_oid} (gnutls_x509_crt_t @var{cert}, int @var{indx}, void * @var{oid}, size_t * @var{sizeof_oid}, unsigned int * @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{indx}: This specifies which OID to return. Use zero to get the first one. - -@var{oid}: a pointer to a buffer to hold the OID (may be null) - -@var{sizeof_oid}: initially holds the size of @code{oid} - -This function will extract the key purpose OIDs of the Certificate -specified by the given index. These are stored in the Extended Key -Usage extension (2.5.29.37) See the GNUTLS_KP_* definitions for -human readable names. - -If @code{oid} is null then only the size will be filled. - -@strong{Returns:} @code{GNUTLS_E_SHORT_MEMORY_BUFFER} if the provided buffer is -not long enough, and in that case the *sizeof_oid will be updated -with the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crt_get_pk_rsa_raw -@anchor{gnutls_x509_crt_get_pk_rsa_raw} -@deftypefun {int} {gnutls_x509_crt_get_pk_rsa_raw} (gnutls_x509_crt_t @var{crt}, gnutls_datum_t * @var{m}, gnutls_datum_t * @var{e}) -@var{crt}: Holds the certificate - -@var{m}: will hold the modulus - -@var{e}: will hold the public exponent - -This function will export the RSA public key's parameters found in -the given structure. The new parameters will be allocated using -@code{gnutls_malloc()} and will be stored in the appropriate datum. - -@strong{Returns:} @code{GNUTLS_E_SUCCESS} on success, otherwise an error. -@end deftypefun - -@subheading gnutls_x509_crt_get_pk_dsa_raw -@anchor{gnutls_x509_crt_get_pk_dsa_raw} -@deftypefun {int} {gnutls_x509_crt_get_pk_dsa_raw} (gnutls_x509_crt_t @var{crt}, gnutls_datum_t * @var{p}, gnutls_datum_t * @var{q}, gnutls_datum_t * @var{g}, gnutls_datum_t * @var{y}) -@var{crt}: Holds the certificate - -@var{p}: will hold the p - -@var{q}: will hold the q - -@var{g}: will hold the g - -@var{y}: will hold the y - -This function will export the DSA public key's parameters found in -the given certificate. The new parameters will be allocated using -@code{gnutls_malloc()} and will be stored in the appropriate datum. - -@strong{Returns:} @code{GNUTLS_E_SUCCESS} on success, otherwise an error. -@end deftypefun - -@subheading gnutls_x509_crt_list_import -@anchor{gnutls_x509_crt_list_import} -@deftypefun {int} {gnutls_x509_crt_list_import} (gnutls_x509_crt_t * @var{certs}, unsigned int * @var{cert_max}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}, unsigned int @var{flags}) -@var{certs}: The structures to store the parsed certificate. Must not be initialized. - -@var{cert_max}: Initially must hold the maximum number of certs. It will be updated with the number of certs available. - -@var{data}: The PEM encoded certificate. - -@var{format}: One of DER or PEM. - -@var{flags}: must be zero or an OR'd sequence of gnutls_certificate_import_flags. - -This function will convert the given PEM encoded certificate list -to the native gnutls_x509_crt_t format. The output will be stored -in @code{certs}. They will be automatically initialized. - -If the Certificate is PEM encoded it should have a header of "X509 -CERTIFICATE", or "CERTIFICATE". - -@strong{Returns:} the number of certificates read or a negative error value. -@end deftypefun - -@subheading gnutls_x509_crt_check_hostname -@anchor{gnutls_x509_crt_check_hostname} -@deftypefun {int} {gnutls_x509_crt_check_hostname} (gnutls_x509_crt_t @var{cert}, const char * @var{hostname}) -@var{cert}: should contain an gnutls_x509_crt_t structure - -@var{hostname}: A null terminated string that contains a DNS name - -This function will check if the given certificate's subject -matches the given hostname. This is a basic implementation of the -matching described in RFC2818 (HTTPS), which takes into account -wildcards, and the DNSName/IPAddress subject alternative name PKIX -extension. - -Returns non zero for a successful match, and zero on failure. -@end deftypefun - -@subheading gnutls_x509_crt_check_issuer -@anchor{gnutls_x509_crt_check_issuer} -@deftypefun {int} {gnutls_x509_crt_check_issuer} (gnutls_x509_crt_t @var{cert}, gnutls_x509_crt_t @var{issuer}) -@var{cert}: is the certificate to be checked - -@var{issuer}: is the certificate of a possible issuer - -This function will check if the given certificate was issued by the -given issuer. It will return true (1) if the given certificate is issued -by the given issuer, and false (0) if not. - -A negative value is returned in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_list_verify -@anchor{gnutls_x509_crt_list_verify} -@deftypefun {int} {gnutls_x509_crt_list_verify} (const gnutls_x509_crt_t * @var{cert_list}, int @var{cert_list_length}, const gnutls_x509_crt_t * @var{CA_list}, int @var{CA_list_length}, const gnutls_x509_crl_t * @var{CRL_list}, int @var{CRL_list_length}, unsigned int @var{flags}, unsigned int * @var{verify}) -@var{cert_list}: is the certificate list to be verified - -@var{cert_list_length}: holds the number of certificate in cert_list - -@var{CA_list}: is the CA list which will be used in verification - -@var{CA_list_length}: holds the number of CA certificate in CA_list - -@var{CRL_list}: holds a list of CRLs. - -@var{CRL_list_length}: the length of CRL list. - -@var{flags}: Flags that may be used to change the verification algorithm. Use OR of the gnutls_certificate_verify_flags enumerations. - -@var{verify}: will hold the certificate verification output. - -This function will try to verify the given certificate list and return its status. -Note that expiration and activation dates are not checked -by this function, you should check them using the appropriate functions. - -If no flags are specified (0), this function will use the -basicConstraints (2.5.29.19) PKIX extension. This means that only a certificate -authority is allowed to sign a certificate. - -You must also check the peer's name in order to check if the verified -certificate belongs to the actual peer. - -The certificate verification output will be put in @code{verify} and will be -one or more of the gnutls_certificate_status_t enumerated elements bitwise or'd. -For a more detailed verification status use @code{gnutls_x509_crt_verify()} per list -element. - -@strong{GNUTLS_CERT_INVALID:} the certificate chain is not valid. - -@strong{GNUTLS_CERT_REVOKED:} a certificate in the chain has been revoked. - -Returns 0 on success and a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_verify -@anchor{gnutls_x509_crt_verify} -@deftypefun {int} {gnutls_x509_crt_verify} (gnutls_x509_crt_t @var{cert}, const gnutls_x509_crt_t * @var{CA_list}, int @var{CA_list_length}, unsigned int @var{flags}, unsigned int * @var{verify}) -@var{cert}: is the certificate to be verified - -@var{CA_list}: is one certificate that is considered to be trusted one - -@var{CA_list_length}: holds the number of CA certificate in CA_list - -@var{flags}: Flags that may be used to change the verification algorithm. Use OR of the gnutls_certificate_verify_flags enumerations. - -@var{verify}: will hold the certificate verification output. - -This function will try to verify the given certificate and return its status. -The verification output in this functions cannot be GNUTLS_CERT_NOT_VALID. - -Returns 0 on success and a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crl_check_issuer -@anchor{gnutls_x509_crl_check_issuer} -@deftypefun {int} {gnutls_x509_crl_check_issuer} (gnutls_x509_crl_t @var{cert}, gnutls_x509_crt_t @var{issuer}) -@var{issuer}: is the certificate of a possible issuer - -This function will check if the given CRL was issued by the -given issuer certificate. It will return true (1) if the given CRL was issued -by the given issuer, and false (0) if not. - -A negative value is returned in case of an error. -@end deftypefun - -@subheading gnutls_x509_crl_verify -@anchor{gnutls_x509_crl_verify} -@deftypefun {int} {gnutls_x509_crl_verify} (gnutls_x509_crl_t @var{crl}, const gnutls_x509_crt_t * @var{CA_list}, int @var{CA_list_length}, unsigned int @var{flags}, unsigned int * @var{verify}) -@var{crl}: is the crl to be verified - -@var{CA_list}: is a certificate list that is considered to be trusted one - -@var{CA_list_length}: holds the number of CA certificates in CA_list - -@var{flags}: Flags that may be used to change the verification algorithm. Use OR of the gnutls_certificate_verify_flags enumerations. - -@var{verify}: will hold the crl verification output. - -This function will try to verify the given crl and return its status. -See @code{gnutls_x509_crt_list_verify()} for a detailed description of -return values. - -Returns 0 on success and a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_privkey_init -@anchor{gnutls_x509_privkey_init} -@deftypefun {int} {gnutls_x509_privkey_init} (gnutls_x509_privkey_t * @var{key}) -@var{key}: The structure to be initialized - -This function will initialize an private key structure. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_deinit -@anchor{gnutls_x509_privkey_deinit} -@deftypefun {void} {gnutls_x509_privkey_deinit} (gnutls_x509_privkey_t @var{key}) -@var{key}: The structure to be initialized - -This function will deinitialize a private key structure. -@end deftypefun - -@subheading gnutls_x509_privkey_cpy -@anchor{gnutls_x509_privkey_cpy} -@deftypefun {int} {gnutls_x509_privkey_cpy} (gnutls_x509_privkey_t @var{dst}, gnutls_x509_privkey_t @var{src}) -@var{dst}: The destination key, which should be initialized. - -@var{src}: The source key - -This function will copy a private key from source to destination key. -@end deftypefun - -@subheading gnutls_x509_privkey_import -@anchor{gnutls_x509_privkey_import} -@deftypefun {int} {gnutls_x509_privkey_import} (gnutls_x509_privkey_t @var{key}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}) -@var{key}: The structure to store the parsed key - -@var{data}: The DER or PEM encoded certificate. - -@var{format}: One of DER or PEM - -This function will convert the given DER or PEM encoded key -to the native gnutls_x509_privkey_t format. The output will be stored in @code{key} . - -If the key is PEM encoded it should have a header of "RSA PRIVATE KEY", or -"DSA PRIVATE KEY". - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_import_rsa_raw -@anchor{gnutls_x509_privkey_import_rsa_raw} -@deftypefun {int} {gnutls_x509_privkey_import_rsa_raw} (gnutls_x509_privkey_t @var{key}, const gnutls_datum_t * @var{m}, const gnutls_datum_t * @var{e}, const gnutls_datum_t * @var{d}, const gnutls_datum_t * @var{p}, const gnutls_datum_t * @var{q}, const gnutls_datum_t * @var{u}) -@var{key}: The structure to store the parsed key - -@var{m}: holds the modulus - -@var{e}: holds the public exponent - -@var{d}: holds the private exponent - -@var{p}: holds the first prime (p) - -@var{q}: holds the second prime (q) - -@var{u}: holds the coefficient - -This function will convert the given RSA raw parameters -to the native gnutls_x509_privkey_t format. The output will be stored in @code{key}. -@end deftypefun - -@subheading gnutls_x509_privkey_import_dsa_raw -@anchor{gnutls_x509_privkey_import_dsa_raw} -@deftypefun {int} {gnutls_x509_privkey_import_dsa_raw} (gnutls_x509_privkey_t @var{key}, const gnutls_datum_t * @var{p}, const gnutls_datum_t * @var{q}, const gnutls_datum_t * @var{g}, const gnutls_datum_t * @var{y}, const gnutls_datum_t * @var{x}) -@var{key}: The structure to store the parsed key - -@var{p}: holds the p - -@var{q}: holds the q - -@var{g}: holds the g - -@var{y}: holds the y - -@var{x}: holds the x - -This function will convert the given DSA raw parameters -to the native gnutls_x509_privkey_t format. The output will be stored in @code{key}. -@end deftypefun - -@subheading gnutls_x509_privkey_get_pk_algorithm -@anchor{gnutls_x509_privkey_get_pk_algorithm} -@deftypefun {int} {gnutls_x509_privkey_get_pk_algorithm} (gnutls_x509_privkey_t @var{key}) -@var{key}: should contain a gnutls_x509_privkey_t structure - -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 value on error. -@end deftypefun - -@subheading gnutls_x509_privkey_export -@anchor{gnutls_x509_privkey_export} -@deftypefun {int} {gnutls_x509_privkey_export} (gnutls_x509_privkey_t @var{key}, gnutls_x509_crt_fmt_t @var{format}, void * @var{output_data}, size_t * @var{output_data_size}) -@var{key}: Holds the key - -@var{format}: the format of output params. One of PEM or DER. - -@var{output_data}: will contain a private key PEM or DER encoded - -@var{output_data_size}: holds the size of output_data (and will be -replaced by the actual size of parameters) - -This function will export the private key to a PKCS1 structure for -RSA keys, or an integer sequence for DSA keys. The DSA keys are in -the same format with the parameters used by openssl. - -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 RSA PRIVATE KEY". - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_export_rsa_raw -@anchor{gnutls_x509_privkey_export_rsa_raw} -@deftypefun {int} {gnutls_x509_privkey_export_rsa_raw} (gnutls_x509_privkey_t @var{key}, gnutls_datum_t * @var{m}, gnutls_datum_t * @var{e}, gnutls_datum_t * @var{d}, gnutls_datum_t * @var{p}, gnutls_datum_t * @var{q}, gnutls_datum_t * @var{u}) -@var{key}: a structure that holds the rsa parameters - -@var{m}: will hold the modulus - -@var{e}: will hold the public exponent - -@var{d}: will hold the private exponent - -@var{p}: will hold the first prime (p) - -@var{q}: will hold the second prime (q) - -@var{u}: will hold the coefficient - -This function will export the RSA private key's parameters found in the given -structure. The new parameters will be allocated using -@code{gnutls_malloc()} and will be stored in the appropriate datum. -@end deftypefun - -@subheading gnutls_x509_privkey_export_dsa_raw -@anchor{gnutls_x509_privkey_export_dsa_raw} -@deftypefun {int} {gnutls_x509_privkey_export_dsa_raw} (gnutls_x509_privkey_t @var{key}, gnutls_datum_t * @var{p}, gnutls_datum_t * @var{q}, gnutls_datum_t * @var{g}, gnutls_datum_t * @var{y}, gnutls_datum_t * @var{x}) -@var{p}: will hold the p - -@var{q}: will hold the q - -@var{g}: will hold the g - -@var{y}: will hold the y - -@var{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 -@code{gnutls_malloc()} and will be stored in the appropriate datum. -@end deftypefun - -@subheading gnutls_x509_privkey_generate -@anchor{gnutls_x509_privkey_generate} -@deftypefun {int} {gnutls_x509_privkey_generate} (gnutls_x509_privkey_t @var{key}, gnutls_pk_algorithm_t @var{algo}, unsigned int @var{bits}, unsigned int @var{flags}) -@var{key}: should contain a gnutls_x509_privkey_t structure - -@var{algo}: is one of RSA or DSA. - -@var{bits}: the size of the modulus - -@var{flags}: unused for now. Must be 0. - -This function will generate a random private key. Note that -this function must be called on an empty private key. - -Returns 0 on success or a negative value on error. -@end deftypefun - -@subheading gnutls_x509_privkey_get_key_id -@anchor{gnutls_x509_privkey_get_key_id} -@deftypefun {int} {gnutls_x509_privkey_get_key_id} (gnutls_x509_privkey_t @var{key}, unsigned int @var{flags}, unsigned char * @var{output_data}, size_t * @var{output_data_size}) -@var{key}: Holds the key - -@var{flags}: should be 0 for now - -@var{output_data}: will contain the key ID - -@var{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 the depends on the public key -parameters. This ID can be used in checking whether a certificate -corresponds to the given key. - -If the buffer provided is not long enough to hold the output, then -*output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will -be returned. The output will normally be a SHA-1 hash output, -which is 20 bytes. - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_sign_data -@anchor{gnutls_x509_privkey_sign_data} -@deftypefun {int} {gnutls_x509_privkey_sign_data} (gnutls_x509_privkey_t @var{key}, gnutls_digest_algorithm_t @var{digest}, unsigned int @var{flags}, const gnutls_datum_t * @var{data}, void * @var{signature}, size_t * @var{signature_size}) -@var{key}: Holds the key - -@var{digest}: should be MD5 or SHA1 - -@var{flags}: should be 0 for now - -@var{data}: holds the data to be signed - -@var{signature}: will contain the signature - -@var{signature_size}: holds the size of signature (and will be replaced -by the new size) - -This function will sign the given data using a signature algorithm -supported by the private key. Signature algorithms are always used -together with a hash functions. Different hash functions may be -used for the RSA algorithm, but only SHA-1 for the DSA keys. - -If the buffer provided is not long enough to hold the output, then -*signature_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will -be returned. - -In case of failure a negative value will be returned, and -0 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_sign_hash -@anchor{gnutls_x509_privkey_sign_hash} -@deftypefun {int} {gnutls_x509_privkey_sign_hash} (gnutls_x509_privkey_t @var{key}, const gnutls_datum_t * @var{hash}, gnutls_datum_t * @var{signature}) -@var{key}: Holds the key - -@var{hash}: holds the data to be signed - -@var{signature}: will contain newly allocated signature - -This function will sign the given hash using the private key. - -@strong{Return value:} In case of failure a negative value will be returned, -and 0 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_verify_data -@anchor{gnutls_x509_privkey_verify_data} -@deftypefun {int} {gnutls_x509_privkey_verify_data} (gnutls_x509_privkey_t @var{key}, unsigned int @var{flags}, const gnutls_datum_t * @var{data}, const gnutls_datum_t * @var{signature}) -@var{key}: Holds the key - -@var{flags}: should be 0 for now - -@var{data}: holds the data to be signed - -@var{signature}: contains the signature - -This function will verify the given signed data, using the parameters in the -private key. - -In case of a verification failure 0 is returned, and -1 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_fix -@anchor{gnutls_x509_privkey_fix} -@deftypefun {int} {gnutls_x509_privkey_fix} (gnutls_x509_privkey_t @var{key}) -@var{key}: Holds the key - -This function will recalculate the secondary parameters in a key. -In RSA keys, this can be the coefficient and exponent1,2. - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_init -@anchor{gnutls_pkcs7_init} -@deftypefun {int} {gnutls_pkcs7_init} (gnutls_pkcs7_t * @var{pkcs7}) -@var{pkcs7}: The structure to be initialized - -This function will initialize a PKCS7 structure. PKCS7 structures -usually contain lists of X.509 Certificates and X.509 Certificate -revocation lists. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_deinit -@anchor{gnutls_pkcs7_deinit} -@deftypefun {void} {gnutls_pkcs7_deinit} (gnutls_pkcs7_t @var{pkcs7}) -@var{pkcs7}: The structure to be initialized - -This function will deinitialize a PKCS7 structure. -@end deftypefun - -@subheading gnutls_pkcs7_import -@anchor{gnutls_pkcs7_import} -@deftypefun {int} {gnutls_pkcs7_import} (gnutls_pkcs7_t @var{pkcs7}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}) -@var{pkcs7}: The structure to store the parsed PKCS7. - -@var{data}: The DER or PEM encoded PKCS7. - -@var{format}: One of DER or PEM - -This function will convert the given DER or PEM encoded PKCS7 -to the native gnutls_pkcs7_t format. The output will be stored in 'pkcs7'. - -If the PKCS7 is PEM encoded it should have a header of "PKCS7". - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_get_crt_raw -@anchor{gnutls_pkcs7_get_crt_raw} -@deftypefun {int} {gnutls_pkcs7_get_crt_raw} (gnutls_pkcs7_t @var{pkcs7}, int @var{indx}, void * @var{certificate}, size_t * @var{certificate_size}) -@var{indx}: contains the index of the certificate to extract - -@var{certificate}: the contents of the certificate will be copied there (may be null) - -@var{certificate_size}: should hold the size of the certificate - -This function will return a certificate of the PKCS7 or RFC2630 certificate set. -Returns 0 on success. If the provided buffer is not long enough, -then @code{certificate_size} is updated and GNUTLS_E_SHORT_MEMORY_BUFFER is returned. - -After the last certificate has been read GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE -will be returned. -@end deftypefun - -@subheading gnutls_pkcs7_get_crt_count -@anchor{gnutls_pkcs7_get_crt_count} -@deftypefun {int} {gnutls_pkcs7_get_crt_count} (gnutls_pkcs7_t @var{pkcs7}) -This function will return the number of certifcates in the PKCS7 or -RFC2630 certificate set. - -Returns a negative value on failure. -@end deftypefun - -@subheading gnutls_pkcs7_export -@anchor{gnutls_pkcs7_export} -@deftypefun {int} {gnutls_pkcs7_export} (gnutls_pkcs7_t @var{pkcs7}, gnutls_x509_crt_fmt_t @var{format}, void * @var{output_data}, size_t * @var{output_data_size}) -@var{pkcs7}: Holds the pkcs7 structure - -@var{format}: the format of output params. One of PEM or DER. - -@var{output_data}: will contain a structure PEM or DER encoded - -@var{output_data_size}: holds the size of output_data (and will be -replaced by the actual size of parameters) - -This function will export the pkcs7 structure to DER or PEM format. - -If the buffer provided is not long enough to hold the output, then -*output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will -be returned. - -If the structure is PEM encoded, it will have a header -of "BEGIN PKCS7". - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_set_crt_raw -@anchor{gnutls_pkcs7_set_crt_raw} -@deftypefun {int} {gnutls_pkcs7_set_crt_raw} (gnutls_pkcs7_t @var{pkcs7}, const gnutls_datum_t * @var{crt}) -@var{crt}: the DER encoded certificate to be added - -This function will add a certificate to the PKCS7 or RFC2630 certificate set. -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_set_crt -@anchor{gnutls_pkcs7_set_crt} -@deftypefun {int} {gnutls_pkcs7_set_crt} (gnutls_pkcs7_t @var{pkcs7}, gnutls_x509_crt_t @var{crt}) -@var{crt}: the certificate to be copied. - -This function will add a parsed certificate to the PKCS7 or RFC2630 certificate set. -This is a wrapper function over @code{gnutls_pkcs7_set_crt_raw()} . - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_delete_crt -@anchor{gnutls_pkcs7_delete_crt} -@deftypefun {int} {gnutls_pkcs7_delete_crt} (gnutls_pkcs7_t @var{pkcs7}, int @var{indx}) -@var{indx}: the index of the certificate to delete - -This function will delete a certificate from a PKCS7 or RFC2630 certificate set. -Index starts from 0. Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_get_crl_raw -@anchor{gnutls_pkcs7_get_crl_raw} -@deftypefun {int} {gnutls_pkcs7_get_crl_raw} (gnutls_pkcs7_t @var{pkcs7}, int @var{indx}, void * @var{crl}, size_t * @var{crl_size}) -@var{indx}: contains the index of the crl to extract - -@var{crl}: the contents of the crl will be copied there (may be null) - -@var{crl_size}: should hold the size of the crl - -This function will return a crl of the PKCS7 or RFC2630 crl set. -Returns 0 on success. If the provided buffer is not long enough, -then @code{crl_size} is updated and GNUTLS_E_SHORT_MEMORY_BUFFER is returned. - -After the last crl has been read GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE -will be returned. -@end deftypefun - -@subheading gnutls_pkcs7_get_crl_count -@anchor{gnutls_pkcs7_get_crl_count} -@deftypefun {int} {gnutls_pkcs7_get_crl_count} (gnutls_pkcs7_t @var{pkcs7}) -This function will return the number of certifcates in the PKCS7 or -RFC2630 crl set. - -Returns a negative value on failure. -@end deftypefun - -@subheading gnutls_pkcs7_set_crl_raw -@anchor{gnutls_pkcs7_set_crl_raw} -@deftypefun {int} {gnutls_pkcs7_set_crl_raw} (gnutls_pkcs7_t @var{pkcs7}, const gnutls_datum_t * @var{crl}) -@var{crl}: the DER encoded crl to be added - -This function will add a crl to the PKCS7 or RFC2630 crl set. -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_set_crl -@anchor{gnutls_pkcs7_set_crl} -@deftypefun {int} {gnutls_pkcs7_set_crl} (gnutls_pkcs7_t @var{pkcs7}, gnutls_x509_crl_t @var{crl}) -@var{crl}: the DER encoded crl to be added - -This function will add a parsed crl to the PKCS7 or RFC2630 crl set. -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs7_delete_crl -@anchor{gnutls_pkcs7_delete_crl} -@deftypefun {int} {gnutls_pkcs7_delete_crl} (gnutls_pkcs7_t @var{pkcs7}, int @var{indx}) -@var{indx}: the index of the crl to delete - -This function will delete a crl from a PKCS7 or RFC2630 crl set. -Index starts from 0. Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_init -@anchor{gnutls_x509_crq_init} -@deftypefun {int} {gnutls_x509_crq_init} (gnutls_x509_crq_t * @var{crq}) -@var{crq}: The structure to be initialized - -This function will initialize a PKCS10 certificate request structure. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_deinit -@anchor{gnutls_x509_crq_deinit} -@deftypefun {void} {gnutls_x509_crq_deinit} (gnutls_x509_crq_t @var{crq}) -@var{crq}: The structure to be initialized - -This function will deinitialize a CRL structure. -@end deftypefun - -@subheading gnutls_x509_crq_import -@anchor{gnutls_x509_crq_import} -@deftypefun {int} {gnutls_x509_crq_import} (gnutls_x509_crq_t @var{crq}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}) -@var{crq}: The structure to store the parsed certificate request. - -@var{data}: The DER or PEM encoded certificate. - -@var{format}: One of DER or PEM - -This function will convert the given DER or PEM encoded Certificate -to the native gnutls_x509_crq_t format. The output will be stored in @code{cert}. - -If the Certificate is PEM encoded it should have a header of "NEW CERTIFICATE REQUEST". - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_get_dn -@anchor{gnutls_x509_crq_get_dn} -@deftypefun {int} {gnutls_x509_crq_get_dn} (gnutls_x509_crq_t @var{crq}, char * @var{buf}, size_t * @var{sizeof_buf}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{buf}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will copy the name of the Certificate request -subject 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 @code{buf} is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_buf will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crq_get_dn_by_oid -@anchor{gnutls_x509_crq_get_dn_by_oid} -@deftypefun {int} {gnutls_x509_crq_get_dn_by_oid} (gnutls_x509_crq_t @var{crq}, const char * @var{oid}, int @var{indx}, unsigned int @var{raw_flag}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{indx}: In case multiple same OIDs exist in the RDN, this specifies -which to send. Use zero to get the first one. - -@var{raw_flag}: If non zero returns the raw DER data of the DN part. - -@var{buf}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will extract the part of the name of the Certificate -request subject, specified by the given OID. The output will be -encoded as described in RFC2253. The output string will be ASCII -or UTF-8 encoded, depending on the certificate data. - -Some helper macros with popular OIDs can be found in gnutls/x509.h -If raw flag is zero, this function will only return known OIDs as -text. Other OIDs will be DER encoded, as described in RFC2253 -- -in hex format with a '\#' prefix. You can check about known OIDs -using @code{gnutls_x509_dn_oid_known()}. - -If @code{buf} is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_buf will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crq_get_dn_oid -@anchor{gnutls_x509_crq_get_dn_oid} -@deftypefun {int} {gnutls_x509_crq_get_dn_oid} (gnutls_x509_crq_t @var{crq}, int @var{indx}, void * @var{oid}, size_t * @var{sizeof_oid}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{indx}: Specifies which DN OID to send. Use zero to get the first one. - -@var{oid}: a pointer to a structure to hold the name (may be null) - -@var{sizeof_oid}: initially holds the size of @code{oid} - -This function will extract the requested OID of the name of the -Certificate request subject, specified by the given index. - -If oid is null then only the size will be filled. - -Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not -long enough, and in that case the *sizeof_oid will be updated with -the required size. On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crq_get_challenge_password -@anchor{gnutls_x509_crq_get_challenge_password} -@deftypefun {int} {gnutls_x509_crq_get_challenge_password} (gnutls_x509_crq_t @var{crq}, char * @var{pass}, size_t * @var{sizeof_pass}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{pass}: will hold a null terminated password - -@var{sizeof_pass}: Initially holds the size of @code{pass}. - -This function will return the challenge password in the -request. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_set_attribute_by_oid -@anchor{gnutls_x509_crq_set_attribute_by_oid} -@deftypefun {int} {gnutls_x509_crq_set_attribute_by_oid} (gnutls_x509_crq_t @var{crq}, const char * @var{oid}, void * @var{buf}, size_t @var{sizeof_buf}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{buf}: a pointer to a structure that holds the attribute data - -@var{sizeof_buf}: holds the size of @code{buf} - -This function will set the attribute in the certificate request specified -by the given Object ID. The attribute must be be DER encoded. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_get_attribute_by_oid -@anchor{gnutls_x509_crq_get_attribute_by_oid} -@deftypefun {int} {gnutls_x509_crq_get_attribute_by_oid} (gnutls_x509_crq_t @var{crq}, const char * @var{oid}, int @var{indx}, void * @var{buf}, size_t * @var{sizeof_buf}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{indx}: In case multiple same OIDs exist in the attribute list, this specifies -which to send. Use zero to get the first one. - -@var{buf}: a pointer to a structure to hold the attribute data (may be null) - -@var{sizeof_buf}: initially holds the size of @code{buf} - -This function will return the attribute in the certificate request specified -by the given Object ID. The attribute will be DER encoded. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_set_dn_by_oid -@anchor{gnutls_x509_crq_set_dn_by_oid} -@deftypefun {int} {gnutls_x509_crq_set_dn_by_oid} (gnutls_x509_crq_t @var{crq}, const char * @var{oid}, unsigned int @var{raw_flag}, const void * @var{data}, unsigned int @var{sizeof_data}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{oid}: holds an Object Identifier in a null terminated string - -@var{raw_flag}: must be 0, or 1 if the data are DER encoded - -@var{data}: a pointer to the input data - -@var{sizeof_data}: holds the size of @code{data} - -This function will set the part of the name of the Certificate request subject, specified -by the given OID. The input string should be ASCII or UTF-8 encoded. - -Some helper macros with popular OIDs can be found in gnutls/x509.h -With this function you can only set the known OIDs. You can test -for known OIDs using @code{gnutls_x509_dn_oid_known()}. For OIDs that are -not known (by gnutls) you should properly DER encode your data, and -call this function with raw_flag set. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_set_version -@anchor{gnutls_x509_crq_set_version} -@deftypefun {int} {gnutls_x509_crq_set_version} (gnutls_x509_crq_t @var{crq}, unsigned int @var{version}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{version}: holds the version number. For v1 Requests must be 1. - -This function will set the version of the certificate request. For -version 1 requests this must be one. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_get_version -@anchor{gnutls_x509_crq_get_version} -@deftypefun {int} {gnutls_x509_crq_get_version} (gnutls_x509_crq_t @var{crq}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -This function will return the version of the specified Certificate request. - -Returns a negative value on error. -@end deftypefun - -@subheading gnutls_x509_crq_set_key -@anchor{gnutls_x509_crq_set_key} -@deftypefun {int} {gnutls_x509_crq_set_key} (gnutls_x509_crq_t @var{crq}, gnutls_x509_privkey_t @var{key}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{key}: holds a private key - -This function will set the public parameters from the given private key to the -request. Only RSA keys are currently supported. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_set_challenge_password -@anchor{gnutls_x509_crq_set_challenge_password} -@deftypefun {int} {gnutls_x509_crq_set_challenge_password} (gnutls_x509_crq_t @var{crq}, const char * @var{pass}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{pass}: holds a null terminated password - -This function will set a challenge password to be used when revoking the request. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_sign2 -@anchor{gnutls_x509_crq_sign2} -@deftypefun {int} {gnutls_x509_crq_sign2} (gnutls_x509_crq_t @var{crq}, gnutls_x509_privkey_t @var{key}, gnutls_digest_algorithm_t @var{dig}, unsigned int @var{flags}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{key}: holds a private key - -@var{dig}: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless you know what you're doing. - -@var{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 @code{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. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_sign -@anchor{gnutls_x509_crq_sign} -@deftypefun {int} {gnutls_x509_crq_sign} (gnutls_x509_crq_t @var{crq}, gnutls_x509_privkey_t @var{key}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{key}: holds a private key - -This function is the same a @code{gnutls_x509_crq_sign2()} with no flags, and -SHA1 as the hash algorithm. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_export -@anchor{gnutls_x509_crq_export} -@deftypefun {int} {gnutls_x509_crq_export} (gnutls_x509_crq_t @var{crq}, gnutls_x509_crt_fmt_t @var{format}, void * @var{output_data}, size_t * @var{output_data_size}) -@var{crq}: Holds the request - -@var{format}: the format of output params. One of PEM or DER. - -@var{output_data}: will contain a certificate request PEM or DER encoded - -@var{output_data_size}: holds the size of output_data (and will be -replaced by the actual size of parameters) - -This function will export the certificate request to a PKCS10 - -If the buffer provided is not long enough to hold the output, then -GNUTLS_E_SHORT_MEMORY_BUFFER will be returned and -*output_data_size will be updated. - -If the structure is PEM encoded, it will have a header of "BEGIN -NEW CERTIFICATE REQUEST". - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_crq_get_pk_algorithm -@anchor{gnutls_x509_crq_get_pk_algorithm} -@deftypefun {int} {gnutls_x509_crq_get_pk_algorithm} (gnutls_x509_crq_t @var{crq}, unsigned int * @var{bits}) -@var{crq}: should contain a gnutls_x509_crq_t structure - -@var{bits}: if bits is non null it will hold the size of the parameters' in bits - -This function will return the public key algorithm of a PKCS \@code{10} -certificate request. - -If bits is non null, it should have enough size to hold the parameters -size in bits. For RSA the bits returned is the modulus. -For DSA the bits returned are of the public -exponent. - -Returns a member of the gnutls_pk_algorithm_t enumeration on success, -or a negative value on error. -@end deftypefun - -@subheading gnutls_x509_privkey_export_pkcs8 -@anchor{gnutls_x509_privkey_export_pkcs8} -@deftypefun {int} {gnutls_x509_privkey_export_pkcs8} (gnutls_x509_privkey_t @var{key}, gnutls_x509_crt_fmt_t @var{format}, const char * @var{password}, unsigned int @var{flags}, void * @var{output_data}, size_t * @var{output_data_size}) -@var{key}: Holds the key - -@var{format}: the format of output params. One of PEM or DER. - -@var{password}: the password that will be used to encrypt the key. - -@var{flags}: an ORed sequence of gnutls_pkcs_encrypt_flags_t - -@var{output_data}: will contain a private key PEM or DER encoded - -@var{output_data_size}: holds the size of output_data (and will be -replaced by the actual size of parameters) - -This function will export the private key to a PKCS8 structure. -Both RSA and DSA keys can be exported. For DSA keys we use -PKCS @code{11} definitions. If the flags do not specify the encryption -cipher, then the default 3DES (PBES2) will be used. - -The @code{password} can be either ASCII or UTF-8 in the default PBES2 -encryption schemas, or ASCII for the PKCS12 schemas. - -If the buffer provided is not long enough to hold the output, then -*output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will -be returned. - -If the structure is PEM encoded, it will have a header -of "BEGIN ENCRYPTED PRIVATE KEY" or "BEGIN PRIVATE KEY" if -encryption is not used. - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_x509_privkey_import_pkcs8 -@anchor{gnutls_x509_privkey_import_pkcs8} -@deftypefun {int} {gnutls_x509_privkey_import_pkcs8} (gnutls_x509_privkey_t @var{key}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}, const char * @var{password}, unsigned int @var{flags}) -@var{key}: The structure to store the parsed key - -@var{data}: The DER or PEM encoded key. - -@var{format}: One of DER or PEM - -@var{password}: the password to decrypt the key (if it is encrypted). - -@var{flags}: 0 if encrypted or GNUTLS_PKCS_PLAIN if not encrypted. - -This function will convert the given DER or PEM encoded PKCS8 2.0 encrypted key -to the native gnutls_x509_privkey_t format. The output will be stored in @code{key}. -Both RSA and DSA keys can be imported, and flags can only be used to indicate -an unencrypted key. - -The @code{password} can be either ASCII or UTF-8 in the default PBES2 -encryption schemas, or ASCII for the PKCS12 schemas. - -If the Certificate is PEM encoded it should have a header of "ENCRYPTED PRIVATE KEY", -or "PRIVATE KEY". You only need to specify the flags if the key is DER encoded, since -in that case the encryption status cannot be auto-detected. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_init -@anchor{gnutls_pkcs12_init} -@deftypefun {int} {gnutls_pkcs12_init} (gnutls_pkcs12_t * @var{pkcs12}) -@var{pkcs12}: The structure to be initialized - -This function will initialize a PKCS12 structure. PKCS12 structures -usually contain lists of X.509 Certificates and X.509 Certificate -revocation lists. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_deinit -@anchor{gnutls_pkcs12_deinit} -@deftypefun {void} {gnutls_pkcs12_deinit} (gnutls_pkcs12_t @var{pkcs12}) -@var{pkcs12}: The structure to be initialized - -This function will deinitialize a PKCS12 structure. -@end deftypefun - -@subheading gnutls_pkcs12_import -@anchor{gnutls_pkcs12_import} -@deftypefun {int} {gnutls_pkcs12_import} (gnutls_pkcs12_t @var{pkcs12}, const gnutls_datum_t * @var{data}, gnutls_x509_crt_fmt_t @var{format}, unsigned int @var{flags}) -@var{pkcs12}: The structure to store the parsed PKCS12. - -@var{data}: The DER or PEM encoded PKCS12. - -@var{format}: One of DER or PEM - -@var{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 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_export -@anchor{gnutls_pkcs12_export} -@deftypefun {int} {gnutls_pkcs12_export} (gnutls_pkcs12_t @var{pkcs12}, gnutls_x509_crt_fmt_t @var{format}, void * @var{output_data}, size_t * @var{output_data_size}) -@var{pkcs12}: Holds the pkcs12 structure - -@var{format}: the format of output params. One of PEM or DER. - -@var{output_data}: will contain a structure PEM or DER encoded - -@var{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". - -@strong{Return value:} In case of failure a negative value will be -returned, and 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_get_bag -@anchor{gnutls_pkcs12_get_bag} -@deftypefun {int} {gnutls_pkcs12_get_bag} (gnutls_pkcs12_t @var{pkcs12}, int @var{indx}, gnutls_pkcs12_bag_t @var{bag}) -@var{pkcs12}: should contain a gnutls_pkcs12_t structure - -@var{indx}: contains the index of the bag to extract - -@var{bag}: An initialized bag, where the contents of the bag will be copied - -This function will return a Bag from the PKCS12 structure. -Returns 0 on success. - -After the last Bag has been read GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE -will be returned. -@end deftypefun - -@subheading gnutls_pkcs12_set_bag -@anchor{gnutls_pkcs12_set_bag} -@deftypefun {int} {gnutls_pkcs12_set_bag} (gnutls_pkcs12_t @var{pkcs12}, gnutls_pkcs12_bag_t @var{bag}) -@var{pkcs12}: should contain a gnutls_pkcs12_t structure - -@var{bag}: An initialized bag - -This function will insert a Bag into the PKCS12 structure. -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_generate_mac -@anchor{gnutls_pkcs12_generate_mac} -@deftypefun {int} {gnutls_pkcs12_generate_mac} (gnutls_pkcs12_t @var{pkcs12}, const char * @var{pass}) -@var{pkcs12}: should contain a gnutls_pkcs12_t structure - -@var{pass}: The password for the MAC - -This function will generate a MAC for the PKCS12 structure. -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_verify_mac -@anchor{gnutls_pkcs12_verify_mac} -@deftypefun {int} {gnutls_pkcs12_verify_mac} (gnutls_pkcs12_t @var{pkcs12}, const char * @var{pass}) -@var{pkcs12}: should contain a gnutls_pkcs12_t structure - -@var{pass}: The password for the MAC - -This function will verify the MAC for the PKCS12 structure. -Returns 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_bag_init -@anchor{gnutls_pkcs12_bag_init} -@deftypefun {int} {gnutls_pkcs12_bag_init} (gnutls_pkcs12_bag_t * @var{bag}) -@var{bag}: The structure 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 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_bag_deinit -@anchor{gnutls_pkcs12_bag_deinit} -@deftypefun {void} {gnutls_pkcs12_bag_deinit} (gnutls_pkcs12_bag_t @var{bag}) -@var{bag}: The structure to be initialized - -This function will deinitialize a PKCS12 Bag structure. -@end deftypefun - -@subheading gnutls_pkcs12_bag_get_type -@anchor{gnutls_pkcs12_bag_get_type} -@deftypefun {gnutls_pkcs12_bag_type_t} {gnutls_pkcs12_bag_get_type} (gnutls_pkcs12_bag_t @var{bag}, int @var{indx}) -@var{bag}: The bag - -@var{indx}: The element of the bag to get the type - -This function will return the bag's type. One of the gnutls_pkcs12_bag_type_t -enumerations. -@end deftypefun - -@subheading gnutls_pkcs12_bag_get_count -@anchor{gnutls_pkcs12_bag_get_count} -@deftypefun {int} {gnutls_pkcs12_bag_get_count} (gnutls_pkcs12_bag_t @var{bag}) -@var{bag}: The bag - -This function will return the number of the elements withing the bag. -@end deftypefun - -@subheading gnutls_pkcs12_bag_get_data -@anchor{gnutls_pkcs12_bag_get_data} -@deftypefun {int} {gnutls_pkcs12_bag_get_data} (gnutls_pkcs12_bag_t @var{bag}, int @var{indx}, gnutls_datum_t * @var{data}) -@var{bag}: The bag - -@var{indx}: The element of the bag to get the data from - -@var{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 0 on success and a negative error code on error. -@end deftypefun - -@subheading gnutls_pkcs12_bag_set_data -@anchor{gnutls_pkcs12_bag_set_data} -@deftypefun {int} {gnutls_pkcs12_bag_set_data} (gnutls_pkcs12_bag_t @var{bag}, gnutls_pkcs12_bag_type_t @var{type}, const gnutls_datum_t * @var{data}) -@var{bag}: The bag - -@var{type}: The data's type - -@var{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. -@end deftypefun - -@subheading gnutls_pkcs12_bag_set_crt -@anchor{gnutls_pkcs12_bag_set_crt} -@deftypefun {int} {gnutls_pkcs12_bag_set_crt} (gnutls_pkcs12_bag_t @var{bag}, gnutls_x509_crt_t @var{crt}) -@var{bag}: The bag - -@var{crt}: the certificate to be copied. - -This function will insert the given certificate into the -bag. This is just a wrapper over @code{gnutls_pkcs12_bag_set_data()}. - -Returns the index of the added bag on success, or a negative -value on failure. -@end deftypefun - -@subheading gnutls_pkcs12_bag_set_crl -@anchor{gnutls_pkcs12_bag_set_crl} -@deftypefun {int} {gnutls_pkcs12_bag_set_crl} (gnutls_pkcs12_bag_t @var{bag}, gnutls_x509_crl_t @var{crl}) -@var{bag}: The bag - -@var{crl}: the CRL to be copied. - -This function will insert the given CRL into the -bag. This is just a wrapper over @code{gnutls_pkcs12_bag_set_data()}. - -Returns the index of the added bag on success, or a negative -value on failure. -@end deftypefun - -@subheading gnutls_pkcs12_bag_set_key_id -@anchor{gnutls_pkcs12_bag_set_key_id} -@deftypefun {int} {gnutls_pkcs12_bag_set_key_id} (gnutls_pkcs12_bag_t @var{bag}, int @var{indx}, const gnutls_datum_t * @var{id}) -@var{bag}: The bag - -@var{indx}: The bag's element to add the id - -@var{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 0 on success, or a negative value on error. -@end deftypefun - -@subheading gnutls_pkcs12_bag_get_key_id -@anchor{gnutls_pkcs12_bag_get_key_id} -@deftypefun {int} {gnutls_pkcs12_bag_get_key_id} (gnutls_pkcs12_bag_t @var{bag}, int @var{indx}, gnutls_datum_t * @var{id}) -@var{bag}: The bag - -@var{indx}: The bag's element to add the id - -@var{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 0 on success, or a negative value on error. -@end deftypefun - -@subheading gnutls_pkcs12_bag_get_friendly_name -@anchor{gnutls_pkcs12_bag_get_friendly_name} -@deftypefun {int} {gnutls_pkcs12_bag_get_friendly_name} (gnutls_pkcs12_bag_t @var{bag}, int @var{indx}, char ** @var{name}) -@var{bag}: The bag - -@var{indx}: The bag's element to add the id - -@var{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 0 on success, or a negative value on error. -@end deftypefun - -@subheading gnutls_pkcs12_bag_set_friendly_name -@anchor{gnutls_pkcs12_bag_set_friendly_name} -@deftypefun {int} {gnutls_pkcs12_bag_set_friendly_name} (gnutls_pkcs12_bag_t @var{bag}, int @var{indx}, const char * @var{name}) -@var{bag}: The bag - -@var{indx}: The bag's element to add the id - -@var{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 0 on success, or a negative value on error. -@end deftypefun - -@subheading gnutls_pkcs12_bag_decrypt -@anchor{gnutls_pkcs12_bag_decrypt} -@deftypefun {int} {gnutls_pkcs12_bag_decrypt} (gnutls_pkcs12_bag_t @var{bag}, const char * @var{pass}) -@var{bag}: The bag - -@var{pass}: The password used for encryption. This can only be ASCII. - -This function will decrypt the given encrypted bag and return 0 on success. -@end deftypefun - -@subheading gnutls_pkcs12_bag_encrypt -@anchor{gnutls_pkcs12_bag_encrypt} -@deftypefun {int} {gnutls_pkcs12_bag_encrypt} (gnutls_pkcs12_bag_t @var{bag}, const char * @var{pass}, unsigned int @var{flags}) -@var{bag}: The bag - -@var{pass}: The password used for encryption. This can only be ASCII. - -@var{flags}: should be one of gnutls_pkcs_encrypt_flags_t elements bitwise or'd - -This function will encrypt the given bag and return 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_dn_by_oid -@anchor{gnutls_x509_crt_set_dn_by_oid} -@deftypefun {int} {gnutls_x509_crt_set_dn_by_oid} (gnutls_x509_crt_t @var{crt}, const char * @var{oid}, unsigned int @var{raw_flag}, const void * @var{name}, unsigned int @var{sizeof_name}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{oid}: holds an Object Identifier in a null terminated string - -@var{raw_flag}: must be 0, or 1 if the data are DER encoded - -@var{name}: a pointer to the name - -@var{sizeof_name}: holds the size of @code{name} - -This function will set the part of the name of the Certificate subject, specified -by the given OID. The input string should be ASCII or UTF-8 encoded. - -Some helper macros with popular OIDs can be found in gnutls/x509.h -With this function you can only set the known OIDs. You can test -for known OIDs using @code{gnutls_x509_dn_oid_known()}. For OIDs that are -not known (by gnutls) you should properly DER encode your data, and -call this function with raw_flag set. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_issuer_dn_by_oid -@anchor{gnutls_x509_crt_set_issuer_dn_by_oid} -@deftypefun {int} {gnutls_x509_crt_set_issuer_dn_by_oid} (gnutls_x509_crt_t @var{crt}, const char * @var{oid}, unsigned int @var{raw_flag}, const void * @var{name}, unsigned int @var{sizeof_name}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{oid}: holds an Object Identifier in a null terminated string - -@var{raw_flag}: must be 0, or 1 if the data are DER encoded - -@var{name}: a pointer to the name - -@var{sizeof_name}: holds the size of @code{name} - -This function will set the part of the name of the Certificate issuer, specified -by the given OID. The input string should be ASCII or UTF-8 encoded. - -Some helper macros with popular OIDs can be found in gnutls/x509.h -With this function you can only set the known OIDs. You can test -for known OIDs using @code{gnutls_x509_dn_oid_known()}. For OIDs that are -not known (by gnutls) you should properly DER encode your data, and -call this function with raw_flag set. - -Normally you do not need to call this function, since the signing -operation will copy the signer's name as the issuer of the certificate. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_proxy_dn -@anchor{gnutls_x509_crt_set_proxy_dn} -@deftypefun {int} {gnutls_x509_crt_set_proxy_dn} (gnutls_x509_crt_t @var{crt}, gnutls_x509_crt_t @var{eecrt}, unsigned int @var{raw_flag}, const void * @var{name}, unsigned int @var{sizeof_name}) -@var{crt}: a gnutls_x509_crt_t structure with the new proxy cert - -@var{eecrt}: the end entity certificate that will be issuing the proxy - -@var{raw_flag}: must be 0, or 1 if the CN is DER encoded - -@var{name}: a pointer to the CN name, may be NULL (but MUST then be added later) - -@var{sizeof_name}: holds the size of @code{name} - -This function will set the subject in @code{crt} to the end entity's -@code{eecrt} subject name, and add a single Common Name component @code{name} -of size @code{sizeof_name}. This corresponds to the required proxy -certificate naming style. Note that if @code{name} is @code{NULL}, you MUST -set it later by using @code{gnutls_x509_crt_set_dn_by_oid()} or similar. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_version -@anchor{gnutls_x509_crt_set_version} -@deftypefun {int} {gnutls_x509_crt_set_version} (gnutls_x509_crt_t @var{crt}, unsigned int @var{version}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{version}: holds the version number. For X.509v1 certificates must be 1. - -This function will set the version of the certificate. This must -be one for X.509 version 1, and so on. Plain certificates without -extensions must have version set to one. - -To create well-formed certificates, you must specify version 3 if -you use any certificate extensions. Extensions are created by -functions such as gnutls_x509_crt_set_subject_alternative_name or -gnutls_x509_crt_set_key_usage. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_key -@anchor{gnutls_x509_crt_set_key} -@deftypefun {int} {gnutls_x509_crt_set_key} (gnutls_x509_crt_t @var{crt}, gnutls_x509_privkey_t @var{key}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{key}: holds a private key - -This function will set the public parameters from the given private key to the -certificate. Only RSA keys are currently supported. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_crq -@anchor{gnutls_x509_crt_set_crq} -@deftypefun {int} {gnutls_x509_crt_set_crq} (gnutls_x509_crt_t @var{crt}, gnutls_x509_crq_t @var{crq}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{crq}: holds a certificate request - -This function will set the name and public parameters from the given certificate request to the -certificate. Only RSA keys are currently supported. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_extension_by_oid -@anchor{gnutls_x509_crt_set_extension_by_oid} -@deftypefun {int} {gnutls_x509_crt_set_extension_by_oid} (gnutls_x509_crt_t @var{crt}, const char * @var{oid}, const void * @var{buf}, size_t @var{sizeof_buf}, unsigned int @var{critical}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{oid}: holds an Object Identified in null terminated string - -@var{buf}: a pointer to a DER encoded data - -@var{sizeof_buf}: holds the size of @code{buf} - -@var{critical}: should be non zero if the extension is to be marked as critical - -This function will set an the extension, by the specified OID, in the certificate. -The extension data should be binary data DER encoded. - -Returns 0 on success and a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_set_basic_constraints -@anchor{gnutls_x509_crt_set_basic_constraints} -@deftypefun {int} {gnutls_x509_crt_set_basic_constraints} (gnutls_x509_crt_t @var{crt}, unsigned int @var{ca}, int @var{pathLenConstraint}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{ca}: true(1) or false(0). Depending on the Certificate authority status. - -@var{pathLenConstraint}: non-negative values indicate maximum length of path, -and negative values indicate that the pathLenConstraints field should -not be present. - -This function will set the basicConstraints certificate extension. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_ca_status -@anchor{gnutls_x509_crt_set_ca_status} -@deftypefun {int} {gnutls_x509_crt_set_ca_status} (gnutls_x509_crt_t @var{crt}, unsigned int @var{ca}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{ca}: true(1) or false(0). Depending on the Certificate authority status. - -This function will set the basicConstraints certificate extension. -Use @code{gnutls_x509_crt_set_basic_constraints()} if you want to control -the pathLenConstraint field too. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_key_usage -@anchor{gnutls_x509_crt_set_key_usage} -@deftypefun {int} {gnutls_x509_crt_set_key_usage} (gnutls_x509_crt_t @var{crt}, unsigned int @var{usage}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{usage}: an ORed sequence of the GNUTLS_KEY_* elements. - -This function will set the keyUsage certificate extension. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_subject_alternative_name -@anchor{gnutls_x509_crt_set_subject_alternative_name} -@deftypefun {int} {gnutls_x509_crt_set_subject_alternative_name} (gnutls_x509_crt_t @var{crt}, gnutls_x509_subject_alt_name_t @var{type}, const char * @var{data_string}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{type}: is one of the gnutls_x509_subject_alt_name_t enumerations - -@var{data_string}: The data to be set - -This function will set the subject alternative name certificate extension. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_proxy -@anchor{gnutls_x509_crt_set_proxy} -@deftypefun {int} {gnutls_x509_crt_set_proxy} (gnutls_x509_crt_t @var{crt}, int @var{pathLenConstraint}, const char * @var{policyLanguage}, const char * @var{policy}, size_t @var{sizeof_policy}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{pathLenConstraint}: non-negative values indicate maximum length of path, -and negative values indicate that the pathLenConstraints field should -not be present. - -@var{policyLanguage}: OID describing the language of @code{policy}. - -@var{policy}: opaque byte array with policy language, can be @code{NULL} - -@var{sizeof_policy}: size of @code{policy}. - -This function will set the proxyCertInfo extension. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_sign2 -@anchor{gnutls_x509_crt_sign2} -@deftypefun {int} {gnutls_x509_crt_sign2} (gnutls_x509_crt_t @var{crt}, gnutls_x509_crt_t @var{issuer}, gnutls_x509_privkey_t @var{issuer_key}, gnutls_digest_algorithm_t @var{dig}, unsigned int @var{flags}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{issuer}: is the certificate of the certificate issuer - -@var{issuer_key}: holds the issuer's private key - -@var{dig}: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless you know what you're doing. - -@var{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. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_sign -@anchor{gnutls_x509_crt_sign} -@deftypefun {int} {gnutls_x509_crt_sign} (gnutls_x509_crt_t @var{crt}, gnutls_x509_crt_t @var{issuer}, gnutls_x509_privkey_t @var{issuer_key}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{issuer}: is the certificate of the certificate issuer - -@var{issuer_key}: holds the issuer's private key - -This function is the same a @code{gnutls_x509_crt_sign2()} with no flags, and -SHA1 as the hash algorithm. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_activation_time -@anchor{gnutls_x509_crt_set_activation_time} -@deftypefun {int} {gnutls_x509_crt_set_activation_time} (gnutls_x509_crt_t @var{cert}, time_t @var{act_time}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{act_time}: The actual time - -This function will set the time this Certificate was or will be activated. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_set_expiration_time -@anchor{gnutls_x509_crt_set_expiration_time} -@deftypefun {int} {gnutls_x509_crt_set_expiration_time} (gnutls_x509_crt_t @var{cert}, time_t @var{exp_time}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{exp_time}: The actual time - -This function will set the time this Certificate will expire. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_set_serial -@anchor{gnutls_x509_crt_set_serial} -@deftypefun {int} {gnutls_x509_crt_set_serial} (gnutls_x509_crt_t @var{cert}, const void * @var{serial}, size_t @var{serial_size}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{serial}: The serial number - -@var{serial_size}: Holds the size of the serial field. - -This function will set the X.509 certificate's serial number. -Serial is not always a 32 or 64bit number. Some CAs use -large serial numbers, thus it may be wise to handle it as something -opaque. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_set_crl_dist_points -@anchor{gnutls_x509_crt_set_crl_dist_points} -@deftypefun {int} {gnutls_x509_crt_set_crl_dist_points} (gnutls_x509_crt_t @var{crt}, gnutls_x509_subject_alt_name_t @var{type}, const void * @var{data_string}, unsigned int @var{reason_flags}) -@var{crt}: should contain a gnutls_x509_crt_t structure - -@var{type}: is one of the gnutls_x509_subject_alt_name_t enumerations - -@var{data_string}: The data to be set - -@var{reason_flags}: revocation reasons - -This function will set the CRL distribution points certificate extension. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_cpy_crl_dist_points -@anchor{gnutls_x509_crt_cpy_crl_dist_points} -@deftypefun {int} {gnutls_x509_crt_cpy_crl_dist_points} (gnutls_x509_crt_t @var{dst}, gnutls_x509_crt_t @var{src}) -@var{dst}: should contain a gnutls_x509_crt_t structure - -@var{src}: the certificate where the dist points will be copied from - -This function will copy the CRL distribution points certificate -extension, from the source to the destination certificate. -This may be useful to copy from a CA certificate to issued ones. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crt_set_subject_key_id -@anchor{gnutls_x509_crt_set_subject_key_id} -@deftypefun {int} {gnutls_x509_crt_set_subject_key_id} (gnutls_x509_crt_t @var{cert}, const void * @var{id}, size_t @var{id_size}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{id}: The key ID - -@var{id_size}: Holds the size of the serial field. - -This function will set the X.509 certificate's subject key ID extension. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_set_authority_key_id -@anchor{gnutls_x509_crt_set_authority_key_id} -@deftypefun {int} {gnutls_x509_crt_set_authority_key_id} (gnutls_x509_crt_t @var{cert}, const void * @var{id}, size_t @var{id_size}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{id}: The key ID - -@var{id_size}: Holds the size of the serial field. - -This function will set the X.509 certificate's authority key ID extension. -Only the keyIdentifier field can be set with this function. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_set_key_purpose_oid -@anchor{gnutls_x509_crt_set_key_purpose_oid} -@deftypefun {int} {gnutls_x509_crt_set_key_purpose_oid} (gnutls_x509_crt_t @var{cert}, const void * @var{oid}, unsigned int @var{critical}) -@var{cert}: should contain a gnutls_x509_crt_t structure - -@var{oid}: a pointer to a null terminated string that holds the OID - -@var{critical}: Whether this extension will be critical or not - -This function will set the key purpose OIDs of the Certificate. -These are stored in the Extended Key Usage extension (2.5.29.37) -See the GNUTLS_KP_* definitions for human readable names. - -Subsequent calls to this function will append OIDs to the OID list. - -On success 0 is returned. -@end deftypefun - -@subheading gnutls_x509_crl_set_version -@anchor{gnutls_x509_crl_set_version} -@deftypefun {int} {gnutls_x509_crl_set_version} (gnutls_x509_crl_t @var{crl}, unsigned int @var{version}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{version}: holds the version number. For CRLv1 crls must be 1. - -This function will set the version of the CRL. This -must be one for CRL version 1, and so on. The CRLs generated -by gnutls should have a version number of 2. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_sign2 -@anchor{gnutls_x509_crl_sign2} -@deftypefun {int} {gnutls_x509_crl_sign2} (gnutls_x509_crl_t @var{crl}, gnutls_x509_crt_t @var{issuer}, gnutls_x509_privkey_t @var{issuer_key}, gnutls_digest_algorithm_t @var{dig}, unsigned int @var{flags}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{issuer}: is the certificate of the certificate issuer - -@var{issuer_key}: holds the issuer's private key - -@var{dig}: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless you know what you're doing. - -@var{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. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_sign -@anchor{gnutls_x509_crl_sign} -@deftypefun {int} {gnutls_x509_crl_sign} (gnutls_x509_crl_t @var{crl}, gnutls_x509_crt_t @var{issuer}, gnutls_x509_privkey_t @var{issuer_key}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{issuer}: is the certificate of the certificate issuer - -@var{issuer_key}: holds the issuer's private key - -This function is the same a @code{gnutls_x509_crl_sign2()} with no flags, and -SHA1 as the hash algorithm. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_set_this_update -@anchor{gnutls_x509_crl_set_this_update} -@deftypefun {int} {gnutls_x509_crl_set_this_update} (gnutls_x509_crl_t @var{crl}, time_t @var{act_time}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{act_time}: The actual time - -This function will set the time this CRL was issued. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crl_set_next_update -@anchor{gnutls_x509_crl_set_next_update} -@deftypefun {int} {gnutls_x509_crl_set_next_update} (gnutls_x509_crl_t @var{crl}, time_t @var{exp_time}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{exp_time}: The actual time - -This function will set the time this CRL will be updated. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crl_set_crt_serial -@anchor{gnutls_x509_crl_set_crt_serial} -@deftypefun {int} {gnutls_x509_crl_set_crt_serial} (gnutls_x509_crl_t @var{crl}, const void * @var{serial}, size_t @var{serial_size}, time_t @var{revocation_time}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{serial}: The revoked certificate's serial number - -@var{serial_size}: Holds the size of the serial field. - -@var{revocation_time}: The time this certificate was revoked - -This function will set a revoked certificate's serial number to the CRL. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crl_set_crt -@anchor{gnutls_x509_crl_set_crt} -@deftypefun {int} {gnutls_x509_crl_set_crt} (gnutls_x509_crl_t @var{crl}, gnutls_x509_crt_t @var{crt}, time_t @var{revocation_time}) -@var{crl}: should contain a gnutls_x509_crl_t structure - -@var{crt}: should contain a gnutls_x509_crt_t structure with the revoked certificate - -@var{revocation_time}: The time this certificate was revoked - -This function will set a revoked certificate's serial number to the CRL. - -Returns 0 on success, or a negative value in case of an error. -@end deftypefun - -@subheading gnutls_x509_crt_print -@anchor{gnutls_x509_crt_print} -@deftypefun {int} {gnutls_x509_crt_print} (gnutls_x509_crt_t @var{cert}, gnutls_certificate_print_formats_t @var{format}, gnutls_datum_t * @var{out}) -@var{cert}: The structure to be printed - -@var{format}: Indicate the format to use - -@var{out}: Newly allocated datum with zero terminated string. - -This function will pretty print a X.509 certificate, suitable for -display to a human. - -If the format is @code{GNUTLS_X509_CRT_FULL} then all fields of the -certificate will be output, on multiple lines. The -@code{GNUTLS_X509_CRT_ONELINE} format will generate one line with some -selected fields, which is useful for logging purposes. - -The output @code{out} needs to be deallocate using @code{gnutls_free()}. - -Returns 0 on success. -@end deftypefun - -@subheading gnutls_x509_crl_print -@anchor{gnutls_x509_crl_print} -@deftypefun {int} {gnutls_x509_crl_print} (gnutls_x509_crl_t @var{crl}, gnutls_certificate_print_formats_t @var{format}, gnutls_datum_t * @var{out}) -@var{crl}: The structure to be printed - -@var{format}: Indicate the format to use - -@var{out}: Newly allocated datum with zero terminated string. - -This function will pretty print a X.509 certificate revocation -list, suitable for display to a human. - -The output @code{out} needs to be deallocate using @code{gnutls_free()}. - -Returns 0 on success. -@end deftypefun - diff --git a/src/daemon/https/x509/x509.c b/src/daemon/https/x509/x509.c @@ -328,87 +328,6 @@ MHD_gnutls_x509_crt_get_key_usage (MHD_gnutls_x509_crt_t cert, } -static int -MHD__gnutls_x509_crt_get_raw_dn2 (MHD_gnutls_x509_crt_t cert, - const char *whom, - MHD_gnutls_datum_t * start) -{ - ASN1_TYPE c2 = ASN1_TYPE_EMPTY; - int result, len1; - int start1, end1; - MHD_gnutls_datum_t signed_data = { NULL, - 0 - }; - - /* get the issuer of 'cert' - */ - if ((result = - MHD__asn1_create_element (MHD__gnutls_get_pkix (), - "PKIX1.TBSCertificate", - &c2)) != ASN1_SUCCESS) - { - MHD_gnutls_assert (); - return MHD_gtls_asn2err (result); - } - - result = MHD__gnutls_x509_get_signed_data (cert->cert, "tbsCertificate", - &signed_data); - if (result < 0) - { - MHD_gnutls_assert (); - goto cleanup; - } - - result = - MHD__asn1_der_decoding (&c2, signed_data.data, signed_data.size, NULL); - if (result != ASN1_SUCCESS) - { - MHD_gnutls_assert (); - MHD__asn1_delete_structure (&c2); - result = MHD_gtls_asn2err (result); - goto cleanup; - } - - result = - MHD__asn1_der_decoding_startEnd (c2, signed_data.data, signed_data.size, - whom, &start1, &end1); - - if (result != ASN1_SUCCESS) - { - MHD_gnutls_assert (); - result = MHD_gtls_asn2err (result); - goto cleanup; - } - - len1 = end1 - start1 + 1; - - MHD__gnutls_set_datum (start, &signed_data.data[start1], len1); - - result = 0; - -cleanup:MHD__asn1_delete_structure (&c2); - MHD__gnutls_free_datum (&signed_data); - return result; -} - -/** - * MHD_gnutls_x509_crt_get_raw_dn - This function returns the subject's DN DER encoded - * @cert: should contain a MHD_gnutls_x509_crt_t structure - * @start: will hold the starting point of the DN - * - * This function will return a pointer to the DER encoded DN structure and - * the length. - * - * Returns 0 on success, or a negative value on error. - * - **/ -int -MHD_gnutls_x509_crt_get_raw_dn (MHD_gnutls_x509_crt_t cert, - MHD_gnutls_datum_t * start) -{ - return MHD__gnutls_x509_crt_get_raw_dn2 (cert, "subject", start); -} - /** * MHD_gnutls_x509_crt_export - This function will export the certificate * @cert: Holds the certificate diff --git a/src/daemon/https/x509/x509.h b/src/daemon/https/x509/x509.h @@ -193,8 +193,6 @@ extern "C" format, MHD_gnutls_datum_t * out); /* Access to internal Certificate fields. */ - int MHD_gnutls_x509_crt_get_raw_dn (MHD_gnutls_x509_crt_t cert, - MHD_gnutls_datum_t * start); typedef void *MHD_gnutls_x509_dn_t;