Next: GnuTLS-extra functions, Previous: Core functions, Up: Function reference
The following functions are to be used for X.509 certificate handling. Their prototypes lie in gnutls/x509.h.
bag: The bag
pass: The password used for encryption. This can only be ASCII.
This function will decrypt the given encrypted bag and return 0 on success.
bag: The structure to be initialized
This function will deinitialize a PKCS12 Bag structure.
bag: The bag
pass: The password used for encryption. This can only be ASCII.
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.
bag: The bag
This function will return the number of the elements withing the bag.
bag: The bag
indx: The element of the bag to get the data from
data: where the bag's data will be. Should be treated as constant.
This function will return the bag's data. The data is a constant that is stored into the bag. Should not be accessed after the bag is deleted.
Returns 0 on success and a negative error code on error.
bag: The bag
indx: The bag's element to add the id
name: will hold a pointer to the name (to be treated as const)
This function will return the friendly name, of the specified bag element. The key ID is usually used to distinguish the local private key and the certificate pair.
Returns 0 on success, or a negative value on error.
bag: The bag
indx: The bag's element to add the id
id: where the ID will be copied (to be treated as const)
This function will return the key ID, of the specified bag element. The key ID is usually used to distinguish the local private key and the certificate pair.
Returns 0 on success, or a negative value on error.
bag: The bag
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.
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.
bag: The bag
crl: the CRL to be copied.
This function will insert the given CRL into the bag. This is just a wrapper over
gnutls_pkcs12_bag_set_data()
.Returns the index of the added bag on success, or a negative value on failure.
bag: The bag
crt: the certificate to be copied.
This function will insert the given certificate into the bag. This is just a wrapper over
gnutls_pkcs12_bag_set_data()
.Returns the index of the added bag on success, or a negative value on failure.
bag: The bag
type: The data's type
data: the data to be copied.
This function will insert the given data of the given type into the bag.
Returns the index of the added bag on success, or a negative value on error.
bag: The bag
indx: The bag's element to add the id
name: the name
This function will add the given key friendly name, to the specified, by the index, bag element. The name will be encoded as a 'Friendly name' bag attribute, which is usually used to set a user name to the local private key and the certificate pair.
Returns 0 on success, or a negative value on error.
bag: The bag
indx: The bag's element to add the id
id: the ID
This function will add the given key ID, to the specified, by the index, bag element. The key ID will be encoded as a 'Local key identifier' bag attribute, which is usually used to distinguish the local private key and the certificate pair.
Returns 0 on success, or a negative value on error.
pkcs12: The structure to be initialized
This function will deinitialize a PKCS12 structure.
pkcs12: Holds the pkcs12 structure
format: the format of output params. One of PEM or DER.
output_data: will contain a structure PEM or DER encoded
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will export the pkcs12 structure to DER or PEM format.
If the buffer provided is not long enough to hold the output, then *output_data_size will be updated and GNUTLS_E_SHORT_MEMORY_BUFFER will be returned.
If the structure is PEM encoded, it will have a header of "BEGIN PKCS12".
Return value: In case of failure a negative value will be returned, and 0 on success.
pkcs12: should contain a gnutls_pkcs12_t structure
pass: The password for the MAC
This function will generate a MAC for the PKCS12 structure. Returns 0 on success.
pkcs12: should contain a gnutls_pkcs12_t structure
indx: contains the index of the bag to extract
bag: An initialized bag, where the contents of the bag will be copied
This function will return a Bag from the PKCS12 structure. Returns 0 on success.
After the last Bag has been read GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned.
pkcs12: The structure to store the parsed PKCS12.
data: The DER or PEM encoded PKCS12.
format: One of DER or PEM
flags: an ORed sequence of gnutls_privkey_pkcs8_flags
This function will convert the given DER or PEM encoded PKCS12 to the native gnutls_pkcs12_t format. The output will be stored in 'pkcs12'.
If the PKCS12 is PEM encoded it should have a header of "PKCS12".
Returns 0 on success.
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.
pkcs12: should contain a gnutls_pkcs12_t structure
bag: An initialized bag
This function will insert a Bag into the PKCS12 structure. Returns 0 on success.
pkcs12: should contain a gnutls_pkcs12_t structure
pass: The password for the MAC
This function will verify the MAC for the PKCS12 structure. Returns 0 on success.
pkcs7: The structure to be initialized
This function will deinitialize a PKCS7 structure.
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.
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.
pkcs7: Holds the pkcs7 structure
format: the format of output params. One of PEM or DER.
output_data: will contain a structure PEM or DER encoded
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will export the 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".
Return value: In case of failure a negative value will be returned, and 0 on success.
This function will return the number of certifcates in the PKCS7 or RFC2630 crl set.
Returns a negative value on failure.
indx: contains the index of the crl to extract
crl: the contents of the crl will be copied there (may be null)
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
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.
This function will return the number of certifcates in the PKCS7 or RFC2630 certificate set.
Returns a negative value on failure.
indx: contains the index of the certificate to extract
certificate: the contents of the certificate will be copied there (may be null)
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
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.
pkcs7: The structure to store the parsed PKCS7.
data: The DER or PEM encoded PKCS7.
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.
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.
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.
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.
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.
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
gnutls_pkcs7_set_crt_raw()
.Returns 0 on success.
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.
crl: The structure to be initialized
This function will deinitialize a CRL structure.
crl: Holds the revocation list
format: the format of output params. One of PEM or DER.
output_data: will contain a private key PEM or DER encoded
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will export the revocation list to DER or PEM format.
If the buffer provided is not long enough to hold the output, then GNUTLS_E_SHORT_MEMORY_BUFFER will be returned.
If the structure is PEM encoded, it will have a header of "BEGIN X509 CRL".
Returns 0 on success, and a negative value on failure.
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.
crl: should contain a gnutls_x509_crl_t structure
indx: the index of the certificate to extract (starting from 0)
serial: where the serial number will be copied
serial_size: initially holds the size of serial
t: if non null, will hold the time this certificate was revoked
This function will return the serial number of the specified, by the index, revoked certificate.
Returns a negative value on failure.
crl: should contain a gnutls_x509_crl_t structure
indx: Specifies which DN OID to send. Use zero to get the first one.
oid: a pointer to a structure to hold the name (may be null)
sizeof_oid: initially holds the size of 'oid'
This function will extract the requested OID of the name of the 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.
crl: should contain a gnutls_x509_crl_t structure
oid: holds an Object Identified in null terminated string
indx: In case multiple same OIDs exist in the RDN, this specifies which to send. Use zero to get the first one.
raw_flag: If non zero returns the raw DER data of the DN part.
buf: a pointer to a structure to hold the peer's name (may be null)
sizeof_buf: initially holds the size of
buf
This function will extract the part of the name of the CRL issuer specified by the given OID. The output will be encoded as described in 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
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.
crl: should contain a gnutls_x509_crl_t structure
buf: a pointer to a structure to hold the peer's name (may be null)
sizeof_buf: initially holds the size of
buf
This function will copy the name of the CRL issuer in the provided buffer. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in 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.
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.
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.
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.
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.
crl: The structure to store the parsed CRL.
data: The DER or PEM encoded CRL.
format: One of DER or PEM
This function will convert the given DER or PEM encoded CRL to the native gnutls_x509_crl_t format. The output will be stored in 'crl'.
If the CRL is PEM encoded it should have a header of "X509 CRL".
Returns 0 on success.
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.
crl: should contain a gnutls_x509_crl_t structure
serial: The revoked certificate's serial number
serial_size: Holds the size of the serial field.
revocation_time: The time this certificate was revoked
This function will set a revoked certificate's serial number to the CRL.
Returns 0 on success, or a negative value in case of an error.
crl: should contain a gnutls_x509_crl_t structure
crt: should contain a gnutls_x509_crt_t structure with the revoked certificate
revocation_time: The time this certificate was revoked
This function will set a revoked certificate's serial number to the CRL.
Returns 0 on success, or a negative value in case of an error.
crl: should contain a gnutls_x509_crl_t structure
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.
crl: should contain a gnutls_x509_crl_t structure
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.
crl: should contain a gnutls_x509_crl_t structure
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.
crl: should contain a gnutls_x509_crl_t structure
issuer: is the certificate of the certificate issuer
issuer_key: holds the issuer's private key
dig: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless you know what you're doing.
flags: must be 0
This function will sign the CRL with the issuer's private key, and will copy the issuer's information into the CRL.
This must be the last step in a certificate CRL since all the previously set parameters are now signed.
Returns 0 on success.
crl: should contain a gnutls_x509_crl_t structure
issuer: is the certificate of the certificate issuer
issuer_key: holds the issuer's private key
This function is the same a
gnutls_x509_crl_sign2()
with no flags, and SHA1 as the hash algorithm.Returns 0 on success.
crl: is the crl to be verified
CA_list: is a certificate list that is considered to be trusted one
CA_list_length: holds the number of CA certificates in CA_list
flags: Flags that may be used to change the verification algorithm. Use OR of the gnutls_certificate_verify_flags enumerations.
verify: will hold the crl verification output.
This function will try to verify the given crl and return its status. See
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.
crq: The structure to be initialized
This function will deinitialize a CRL structure.
crq: Holds the request
format: the format of output params. One of PEM or DER.
output_data: will contain a certificate request PEM or DER encoded
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will export the certificate request to a 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".
Return value: In case of failure a negative value will be returned, and 0 on success.
crq: should contain a gnutls_x509_crq_t structure
oid: holds an Object Identified in null terminated string
indx: In case multiple same OIDs exist in the attribute list, this specifies which to send. Use zero to get the first one.
buf: a pointer to a structure to hold the attribute data (may be null)
sizeof_buf: initially holds the size of
buf
This function will return the attribute in the certificate request specified by the given Object ID. The attribute will be DER encoded.
Returns 0 on success.
crq: should contain a gnutls_x509_crq_t structure
pass: will hold a null terminated password
sizeof_pass: Initially holds the size of
pass
.This function will return the challenge password in the request.
Returns 0 on success.
crq: should contain a gnutls_x509_crq_t structure
oid: holds an Object Identified in null terminated string
indx: In case multiple same OIDs exist in the RDN, this specifies which to send. Use zero to get the first one.
raw_flag: If non zero returns the raw DER data of the DN part.
buf: a pointer to a structure to hold the name (may be null)
sizeof_buf: initially holds the size of
buf
This function will extract the part of the name of the Certificate request subject, specified by the given OID. The output will be encoded as described in RFC2253. The output string will be ASCII or UTF-8 encoded, depending on the certificate data.
Some helper macros with popular OIDs can be found in gnutls/x509.h If raw flag is 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
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. On success 0 is returned.
crq: should contain a gnutls_x509_crq_t structure
indx: Specifies which DN OID to send. Use zero to get the first one.
oid: a pointer to a structure to hold the name (may be null)
sizeof_oid: initially holds the size of
oid
This function will extract the requested OID of the name of the Certificate request subject, specified by the given index.
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.
crq: should contain a gnutls_x509_crq_t structure
buf: a pointer to a structure to hold the name (may be null)
sizeof_buf: initially holds the size of
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
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.
crq: should contain a gnutls_x509_crq_t structure
bits: if bits is non null it will hold the size of the parameters' in bits
This function will return the public key algorithm of a PKCS \
10
certificate request.If bits is non null, it should have enough size to hold the parameters size in bits. For RSA the bits returned is the modulus. For DSA the bits returned are of the public exponent.
Returns a member of the gnutls_pk_algorithm_t enumeration on success, or a negative value on error.
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.
crq: The structure to store the parsed certificate request.
data: The DER or PEM encoded certificate.
format: One of DER or PEM
This function will convert the given DER or PEM encoded Certificate to the native gnutls_x509_crq_t format. The output will be stored in
cert
.If the Certificate is PEM encoded it should have a header of "NEW CERTIFICATE REQUEST".
Returns 0 on success.
crq: The structure to be initialized
This function will initialize a PKCS10 certificate request structure.
Returns 0 on success.
crq: should contain a gnutls_x509_crq_t structure
oid: holds an Object Identified in null terminated string
buf: a pointer to a structure that holds the attribute data
sizeof_buf: holds the size of
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.
crq: should contain a gnutls_x509_crq_t structure
pass: holds a null terminated password
This function will set a challenge password to be used when revoking the request.
Returns 0 on success.
crq: should contain a gnutls_x509_crq_t structure
oid: holds an Object Identifier in a null terminated string
raw_flag: must be 0, or 1 if the data are DER encoded
data: a pointer to the input data
sizeof_data: holds the size of
data
This function will set the part of the name of the Certificate request subject, specified by the given OID. The input string should be ASCII or UTF-8 encoded.
Some helper macros with popular OIDs can be found in gnutls/x509.h With this function you can only set the known OIDs. You can test for known OIDs using
gnutls_x509_dn_oid_known()
. For OIDs that are not known (by gnutls) you should properly DER encode your data, and call this function with raw_flag set.Returns 0 on success.
crq: should contain a gnutls_x509_crq_t structure
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.
crq: should contain a gnutls_x509_crq_t structure
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.
crq: should contain a gnutls_x509_crq_t structure
key: holds a private key
dig: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless you know what you're doing.
flags: must be 0
This function will sign the certificate request with a private key. This must be the same key as the one used in
gnutls_x509_crt_set_key()
since a certificate request is self signed.This must be the last step in a certificate request generation since all the previously set parameters are now signed.
Returns 0 on success.
crq: should contain a gnutls_x509_crq_t structure
key: holds a private key
This function is the same a
gnutls_x509_crq_sign2()
with no flags, and SHA1 as the hash algorithm.Returns 0 on success.
cert: should contain an gnutls_x509_crt_t structure
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 subject alternative name PKIX extension.
Returns non zero on success, and zero on failure.
cert: is the certificate to be checked
issuer: is the certificate of a possible issuer
This function will check if the given certificate was issued by the given issuer. It 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.
cert: should contain a gnutls_x509_crt_t structure
crl_list: should contain a list of gnutls_x509_crl_t structures
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.
Returns 0 if the certificate is NOT revoked, and 1 if it is. A negative value is returned on error.
dst: should contain a gnutls_x509_crt_t structure
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.
cert: The structure to be initialized
This function will deinitialize a CRL structure.
cert: Holds the certificate
format: the format of output params. One of PEM or DER.
output_data: will contain a certificate PEM or DER encoded
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will export the certificate to DER or PEM format.
If the buffer provided is not long enough to hold the output, then *output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will be returned.
If the structure is PEM encoded, it will have a header of "BEGIN CERTIFICATE".
Return value: In case of failure a negative value will be returned, and 0 on success.
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.
cert: should contain a gnutls_x509_crt_t structure
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.
cert: should contain a gnutls_x509_crt_t structure
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.
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.
cert: should contain a gnutls_x509_crt_t structure
seq: specifies the sequence number of the distribution point (0 for the first one, 1 for the second etc.)
ret: is the place where the distribution point will be copied to
ret_size: holds the size of ret.
reason_flags: Revocation reasons flags.
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.
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 GNUTLS_E_SHORT_MEMORY_BUFFER and updates &ret_size if &ret_size is not enough to hold the distribution point, or the type of the distribution point if everything was ok. The type is one of the enumerated gnutls_x509_subject_alt_name_t.
If the certificate does not have an Alternative name with the specified sequence number then returns GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE;
cert: should contain a gnutls_x509_crt_t structure
oid: holds an Object Identified in null terminated string
indx: In case multiple same OIDs exist in the RDN, this specifies which to send. Use zero to get the first one.
raw_flag: If non zero returns the raw DER data of the DN part.
buf: a pointer where the DN part will be copied (may be null).
sizeof_buf: initially holds the size of
buf
This function will extract the part of the name of the Certificate subject specified by the given OID. The output, if the raw flag is not used, will be encoded as described in 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
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. On success 0 is returned.
cert: should contain a gnutls_x509_crt_t structure
indx: This specifies which OID to return. Use zero to get the first one.
oid: a pointer to a buffer to hold the OID (may be null)
sizeof_oid: initially holds the size of
oid
This function will extract the OIDs of the name of the Certificate subject specified by the given index.
If oid is null then only the size will be filled.
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.
cert: should contain a gnutls_x509_crt_t structure
buf: a pointer to a structure to hold the name (may be null)
sizeof_buf: initially holds the size of
buf
This function will copy the name of the Certificate in the provided buffer. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in 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. On success 0 is returned.
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.
cert: should contain a gnutls_x509_crt_t structure
oid: holds an Object Identified in null terminated string
indx: In case multiple same OIDs exist in the extensions, this specifies which to send. Use zero to get the first one.
buf: a pointer to a structure to hold the name (may be null)
sizeof_buf: initially holds the size of
buf
critical: will be non zero if the extension is marked as critical
This function will return the extension specified by the OID in the certificate. The extensions will be returned as binary data DER encoded, in the provided buffer.
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.
cert: should contain a gnutls_x509_crt_t structure
indx: Specifies which extension OID to send. Use zero to get the first one.
oid: a pointer to a structure to hold the OID (may be null)
sizeof_oid: initially holds the size of
oid
This function will return the requested extension OID in the certificate. The extension OID will be stored as a string in the provided buffer.
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.
cert: should contain a gnutls_x509_crt_t structure
algo: is a digest algorithm
buf: a pointer to a structure to hold the fingerprint (may be null)
sizeof_buf: initially holds the size of
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.
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.
cert: should contain a gnutls_x509_crt_t structure
oid: holds an Object Identified in null terminated string
indx: In case multiple same OIDs exist in the RDN, this specifies which to send. Use zero to get the first one.
raw_flag: If non zero returns the raw DER data of the DN part.
buf: a pointer to a structure to hold the name (may be null)
sizeof_buf: initially holds the size of
buf
This function will extract the part of the name of the Certificate issuer specified by the given OID. The output, if the raw flag is not used, will be encoded as described in 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
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. On success 0 is returned.
cert: should contain a gnutls_x509_crt_t structure
indx: This specifies which OID to return. Use zero to get the first one.
oid: a pointer to a buffer to hold the OID (may be null)
sizeof_oid: initially holds the size of
oid
This function will extract the OIDs of the name of the Certificate issuer specified by the given index.
If
oid
is null then only the size will be filled.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.
cert: should contain a gnutls_x509_crt_t structure
buf: a pointer to a structure to hold the name (may be null)
sizeof_buf: initially holds the size of
buf
This function will copy the name of the Certificate issuer in the provided buffer. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in 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. On success 0 is returned.
crt: Holds the certificate
flags: should be 0 for now
output_data: will contain the key ID
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will return a unique ID 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.
Return value: In case of failure a negative value will be returned, and 0 on success.
cert: should contain a gnutls_x509_crt_t structure
indx: This specifies which OID to return. Use zero to get the first one.
oid: a pointer to a buffer to hold the OID (may be null)
sizeof_oid: initially holds the size of
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
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.
cert: should contain a gnutls_x509_crt_t structure
key_usage: where the key usage bits will be stored
critical: will be non zero if the extension is marked as critical
This function will return certificate's key usage, by reading the keyUsage X.509 extension (2.5.29.15). The key usage value will ORed values of the: GNUTLS_KEY_DIGITAL_SIGNATURE, GNUTLS_KEY_NON_REPUDIATION, GNUTLS_KEY_KEY_ENCIPHERMENT, GNUTLS_KEY_DATA_ENCIPHERMENT, GNUTLS_KEY_KEY_AGREEMENT, GNUTLS_KEY_KEY_CERT_SIGN, GNUTLS_KEY_CRL_SIGN, GNUTLS_KEY_ENCIPHER_ONLY, GNUTLS_KEY_DECIPHER_ONLY.
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.
cert: should contain a gnutls_x509_crt_t structure
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.
crt: Holds the certificate
p: will hold the p
q: will hold the q
g: will hold the g
y: will hold the y
This function will export the DSA private key's parameters found in the given certificate. The new parameters will be allocated using
gnutls_malloc()
and will be stored in the appropriate datum.
crt: Holds the certificate
m: will hold the modulus
e: will hold the public exponent
This function will export the RSA private key's parameters found in the given structure. The new parameters will be allocated using
gnutls_malloc()
and will be stored in the appropriate datum.
cert: should contain a gnutls_x509_crt_t structure
result: The place where the serial number will be copied
result_size: Holds the size of the result field.
This function will return the X.509 certificate's serial number. This is obtained by the X509 Certificate serialNumber field. Serial is not always a 32 or 64bit number. Some CAs use large serial numbers, thus it may be wise to handle it as something opaque.
Returns 0 on success and a negative value in case of an error.
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.
cert: should contain a gnutls_x509_crt_t structure
seq: specifies the sequence number of the alt name (0 for the first one, 1 for the second etc.)
ret: is the place where the alternative name will be copied to
ret_size: holds the size of ret.
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.
Returns GNUTLS_E_SHORT_MEMORY_BUFFER if &ret_size is not enough to hold the alternative name. In that case &ret_size will be updated. If everything was ok the type of alternative name is returned. The type is one of the enumerated gnutls_x509_subject_alt_name_t.
If the certificate does not have an Alternative name with the specified sequence number then returns GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE;
cert: should contain a gnutls_x509_crt_t structure
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.
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.
cert: The structure to store the parsed certificate.
data: The DER or PEM encoded certificate.
format: One of DER or PEM
This function will convert the given DER or PEM encoded Certificate to the native gnutls_x509_crt_t format. The output will be stored in
cert
.If the Certificate is PEM encoded it should have a header of "X509 CERTIFICATE", or "CERTIFICATE".
Returns 0 on success.
cert: The structure to be initialized
This function will initialize an X.509 certificate structure.
Returns 0 on success.
certs: The structures to store the parsed certificate. Must not be initialized.
cert_max: Initially must hold the maximum number of certs. It will be updated with the number of certs available.
data: The PEM encoded certificate.
format: One of DER or PEM.
flags: must be 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
certs
. They will be automatically initialized.If the Certificate is PEM encoded it should have a header of "X509 CERTIFICATE", or "CERTIFICATE".
Returns the number of certificates read or a negative error value.
cert_list: is the certificate list to be verified
cert_list_length: holds the number of certificate in cert_list
CA_list: is the CA list which will be used in verification
CA_list_length: holds the number of CA certificate in CA_list
CRL_list: holds a list of CRLs.
CRL_list_length: the length of CRL list.
flags: Flags that may be used to change the verification algorithm. Use OR of the gnutls_certificate_verify_flags enumerations.
verify: will hold the certificate verification output.
This function will try to verify the given certificate list and return its status. 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
verify
and will be one or more of the gnutls_certificate_status_t enumerated elements bitwise or'd. For a more detailed verification status usegnutls_x509_crt_verify()
per list element.GNUTLS_CERT_INVALID: the certificate chain is not valid.
GNUTLS_CERT_REVOKED: a certificate in the chain has been revoked.
Returns 0 on success and a negative value in case of an error.
cert: should contain a gnutls_x509_crt_t structure
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.
cert: should contain a gnutls_x509_crt_t structure
id: The key ID
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.
crt: should contain a gnutls_x509_crt_t structure
ca: true(1) or false(0). Depending on the Certificate authority status.
This function will set the basicConstraints certificate extension.
Returns 0 on success.
crt: should contain a gnutls_x509_crt_t structure
type: is one of the gnutls_x509_subject_alt_name_t enumerations
data_string: The data to be set
reason_flags: revocation reasons
This function will set the CRL distribution points certificate extension.
Returns 0 on success.
crt: should contain a gnutls_x509_crt_t structure
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.
crt: should contain a gnutls_x509_crt_t structure
oid: holds an Object Identifier in a null terminated string
raw_flag: must be 0, or 1 if the data are DER encoded
name: a pointer to the name
sizeof_name: holds the size of
name
This function will set the part of the name of the Certificate subject, specified by the given OID. The input string should be ASCII or UTF-8 encoded.
Some helper macros with popular OIDs can be found in gnutls/x509.h With this function you can only set the known OIDs. You can test for known OIDs using
gnutls_x509_dn_oid_known()
. For OIDs that are not known (by gnutls) you should properly DER encode your data, and call this function with raw_flag set.Returns 0 on success.
cert: should contain a gnutls_x509_crt_t structure
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.
crt: should contain a gnutls_x509_crt_t structure
oid: holds an Object Identified in null terminated string
buf: a pointer to a DER encoded data
sizeof_buf: holds the size of
buf
critical: should be non zero if the extension is to be marked as critical
This function will set an the extension, by the specified OID, in the certificate. The extension data should be binary data DER encoded.
Returns 0 on success and a negative value in case of an error.
crt: should contain a gnutls_x509_crt_t structure
oid: holds an Object Identifier in a null terminated string
raw_flag: must be 0, or 1 if the data are DER encoded
name: a pointer to the name
sizeof_name: holds the size of
name
This function will set the part of the name of the Certificate issuer, specified by the given OID. The input string should be ASCII or UTF-8 encoded.
Some helper macros with popular OIDs can be found in gnutls/x509.h With this function you can only set the known OIDs. You can test for known OIDs using
gnutls_x509_dn_oid_known()
. For OIDs that are not known (by gnutls) you should properly DER encode your data, and call this function with raw_flag set.Normally you do not need to call this function, since the signing operation will copy the signer's name as the issuer of the certificate.
Returns 0 on success.
cert: should contain a gnutls_x509_crt_t structure
oid: a pointer to a null terminated string that holds the OID
critical: Whether this extension will be critical or not
This function will set the key purpose OIDs of the Certificate. These are stored in the Extended Key Usage extension (2.5.29.37) See the GNUTLS_KP_* definitions for human readable names.
Subsequent calls to this function will append OIDs to the OID list.
On success 0 is returned.
crt: should contain a gnutls_x509_crt_t structure
usage: an ORed sequence of the GNUTLS_KEY_* elements.
This function will set the keyUsage certificate extension.
Returns 0 on success.
crt: should contain a gnutls_x509_crt_t structure
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.
cert: should contain a gnutls_x509_crt_t structure
serial: The serial number
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.
crt: should contain a gnutls_x509_crt_t structure
type: is one of the gnutls_x509_subject_alt_name_t enumerations
data_string: The data to be set
This function will set the subject alternative name certificate extension.
Returns 0 on success.
cert: should contain a gnutls_x509_crt_t structure
id: The key ID
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.
crt: should contain a gnutls_x509_crt_t structure
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.
Returns 0 on success.
crt: should contain a gnutls_x509_crt_t structure
issuer: is the certificate of the certificate issuer
issuer_key: holds the issuer's private key
dig: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless you know what you're doing.
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.
crt: should contain a gnutls_x509_crt_t structure
issuer: is the certificate of the certificate issuer
issuer_key: holds the issuer's private key
This function is the same a
gnutls_x509_crt_sign2()
with no flags, and SHA1 as the hash algorithm.Returns 0 on success.
cert: should contain a gnutls_x509_crt_t structure
res: The datum that will hold the result
detail: The detail level (must be GNUTLS_XML_SHOW_ALL or GNUTLS_XML_NORMAL)
This function will return the XML structures of the given X.509 certificate. The XML structures are allocated internally (with malloc) and stored into res.
NOTE: This function is currently not implemented. See the NEWS entry for version 1.3.5.
Returns a negative error code in case of an error.
crt: Holds the certificate
flags: should be 0 for now
data: holds the data to be signed
signature: contains the signature
This function will verify the given signed data, using the parameters from the certificate.
In case of a verification failure 0 is returned, and 1 on success.
cert: is the certificate to be verified
CA_list: is one certificate that is considered to be trusted one
CA_list_length: holds the number of CA certificate in CA_list
flags: Flags that may be used to change the verification algorithm. Use OR of the gnutls_certificate_verify_flags enumerations.
verify: will hold the certificate verification output.
This function will try to verify the given certificate and return its status. 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.
oid: holds an Object Identifier in a null terminated string
This function will inform about known DN OIDs. This is useful since functions like
gnutls_x509_crt_set_dn_by_oid()
use the information on known OIDs to properly encode their input. Object Identifiers that are not known are not encoded by these functions, and their input is stored directly into the ASN.1 structure. In that case of unknown OIDs, you have the responsibility of DER encoding your data.Returns 1 on known OIDs and 0 otherwise.
dst: The destination key, which should be initialized.
src: The source key
This function will copy a private key from source to destination key.
key: The structure to be initialized
This function will deinitialize a private key structure.
p: will hold the p
q: will hold the q
g: will hold the g
y: will hold the y
x: will hold the x
This function will export the DSA private key's parameters found in the given structure. The new parameters will be allocated using
gnutls_malloc()
and will be stored in the appropriate datum.
key: Holds the key
format: the format of output params. One of PEM or DER.
password: the password that will be used to encrypt the key.
flags: an ORed sequence of gnutls_pkcs_encrypt_flags_t
output_data: will contain a private key PEM or DER encoded
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will export the private key to a PKCS8 structure. Currently only RSA keys can be exported since there is no documented standard for other keys. If the flags do not specify the encryption cipher, then the default 3DES (PBES2) will be used.
The
password
can be either ASCII or UTF-8 in the default PBES2 encryption schemas, or ASCII for the PKCS12 schemas.If the buffer provided is not long enough to hold the output, then *output_data_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will be returned.
If the structure is PEM encoded, it will have a header of "BEGIN ENCRYPTED PRIVATE KEY" or "BEGIN PRIVATE KEY" if encryption is not used.
Return value: In case of failure a negative value will be returned, and 0 on success.
key: a structure that holds the rsa parameters
m: will hold the modulus
e: will hold the public exponent
d: will hold the private exponent
p: will hold the first prime (p)
q: will hold the second prime (q)
u: will hold the coefficient
This function will export the RSA private key's parameters found in the given structure. The new parameters will be allocated using
gnutls_malloc()
and will be stored in the appropriate datum.
key: Holds the key
format: the format of output params. One of PEM or DER.
output_data: will contain a private key PEM or DER encoded
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will export the private key to a 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".
Return value: In case of failure a negative value will be returned, and 0 on success.
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.
Return value: In case of failure a negative value will be returned, and 0 on success.
key: should contain a gnutls_x509_privkey_t structure
algo: is one of RSA or DSA.
bits: the size of the modulus
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.
key: Holds the key
flags: should be 0 for now
output_data: will contain the key ID
output_data_size: holds the size of output_data (and will be replaced by the actual size of parameters)
This function will return a unique ID 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.
Return value: In case of failure a negative value will be returned, and 0 on success.
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.
key: The structure to store the parsed key
p: holds the p
q: holds the q
g: holds the g
y: holds the y
x: holds the x
This function will convert the given DSA raw parameters to the native gnutls_x509_privkey_t format. The output will be stored in
key
.
key: The structure to store the parsed key
data: The DER or PEM encoded key.
format: One of DER or PEM
password: the password to decrypt the key (if it is encrypted).
flags: 0 if encrypted or GNUTLS_PKCS_PLAIN if not encrypted.
This function will convert the given DER or PEM encoded PKCS8 2.0 encrypted key to the native gnutls_x509_privkey_t format. The output will be stored in
key
. Currently only RSA keys can be imported, and flags can only be used to indicate an unencrypted key.The
password
can be either ASCII or UTF-8 in the default PBES2 encryption schemas, or ASCII for the PKCS12 schemas.If the Certificate is PEM encoded it should have a header of "ENCRYPTED PRIVATE KEY", or "PRIVATE KEY". You only need to specify the flags if the key is DER encoded, since in that case the encryption status cannot be auto-detected.
Returns 0 on success.
key: The structure to store the parsed key
m: holds the modulus
e: holds the public exponent
d: holds the private exponent
p: holds the first prime (p)
q: holds the second prime (q)
u: holds the coefficient
This function will convert the given RSA raw parameters to the native gnutls_x509_privkey_t format. The output will be stored in
key
.
key: The structure to store the parsed key
data: The DER or PEM encoded certificate.
format: One of DER or PEM
This function will convert the given DER or PEM encoded key to the native gnutls_x509_privkey_t format. The output will be stored in
key
.If the key is PEM encoded it should have a header of "RSA PRIVATE KEY", or "DSA PRIVATE KEY".
Returns 0 on success.
key: The structure to be initialized
This function will initialize an private key structure.
Returns 0 on success.
key: Holds the key
digest: should be MD5 or SHA1
flags: should be 0 for now
data: holds the data to be signed
signature: will contain the signature
signature_size: holds the size of signature (and will be replaced by the new size)
This function will sign the given data using a signature algorithm supported by the private key. Signature algorithms are always used together with a hash functions. Different hash functions may be used for the RSA algorithm, but only SHA-1 for the DSA keys.
If the buffer provided is not long enough to hold the output, then *signature_size is updated and GNUTLS_E_SHORT_MEMORY_BUFFER will be returned.
In case of failure a negative value will be returned, and 0 on success.
key: Holds the key
flags: should be 0 for now
data: holds the data to be signed
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.
idn: should contain a DER encoded RDN sequence
oid: an Object Identifier
indx: In case multiple same OIDs exist in the RDN indicates which to send. Use 0 for the first one.
raw_flag: If non zero then the raw DER data are returned.
buf: a pointer to a structure to hold the peer's name
sizeof_buf: holds the size of
buf
This function will return the name of the given Object identifier, of the RDN sequence. The name will be encoded using the rules from RFC2253.
Returns GNUTLS_E_SHORT_MEMORY_BUFFER and updates *sizeof_buf if the provided buffer is not long enough, and 0 on success.
idn: should contain a DER encoded RDN sequence
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.
idn: should contain a DER encoded RDN sequence
buf: a pointer to a structure to hold the peer's name
sizeof_buf: holds the size of
buf
This function will return the name of the given RDN sequence. The name will be in the form "C=xxxx,O=yyyy,CN=zzzz" as described in 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.