dane.c File Reference

Go to the source code of this file.

Functions

ldns_status ldns_dane_create_tlsa_owner (ldns_rdf **tlsa_owner, const ldns_rdf *name, uint16_t port, ldns_dane_transport transport)
 Creates a dname consisting of the given name, prefixed by the service port and type of transport: _port._transport. More...
 
ldns_status ldns_dane_cert2rdf (ldns_rdf **rdf, X509 *cert, ldns_tlsa_selector selector, ldns_tlsa_matching_type matching_type)
 Creates a LDNS_RDF_TYPE_HEX type rdf based on the binary data chosen by the selector and encoded using matching_type. More...
 
ldns_status ldns_dane_select_certificate (X509 **selected_cert, X509 *cert, STACK_OF(X509) *extra_certs, X509_STORE *pkix_validation_store, ldns_tlsa_certificate_usage cert_usage, int offset)
 Selects the certificate from cert, extra_certs or the pkix_validation_store based on the value of cert_usage and index. More...
 
ldns_status ldns_dane_create_tlsa_rr (ldns_rr **tlsa, ldns_tlsa_certificate_usage certificate_usage, ldns_tlsa_selector selector, ldns_tlsa_matching_type matching_type, X509 *cert)
 Creates a TLSA resource record from the certificate. More...
 

Variables

const long NoOpenSSLv2 = 0L
 
const long NoOpenSSLv3 = 0L
 
const long NoOpenTLSv1 = 0L
 
const long NoOpenDTLSv1 = 0L
 
const long NoOpenSSLCompression = 0L
 

Function Documentation

◆ ldns_dane_create_tlsa_owner()

ldns_status ldns_dane_create_tlsa_owner ( ldns_rdf **  tlsa_owner,
const ldns_rdf name,
uint16_t  port,
ldns_dane_transport  transport 
)

Creates a dname consisting of the given name, prefixed by the service port and type of transport: _port._transport.

name.

Parameters
[out]tlsa_ownerThe created dname.
[in]nameThe dname that should be prefixed.
[in]portThe service port number for which the name should be created.
[in]transportThe transport for which the name should be created.
Returns
LDNS_STATUS_OK on success or an error code otherwise.

Definition at line 90 of file dane.c.

References LDNS_DANE_TRANSPORT_SCTP, LDNS_DANE_TRANSPORT_TCP, LDNS_DANE_TRANSPORT_UDP, LDNS_MAX_DOMAINLEN, ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_new_frm_data(), ldns_rdf_size(), LDNS_RDF_TYPE_DNAME, LDNS_STATUS_DANE_UNKNOWN_TRANSPORT, LDNS_STATUS_DOMAINNAME_OVERFLOW, LDNS_STATUS_MEM_ERR, and LDNS_STATUS_OK.

◆ ldns_dane_cert2rdf()

ldns_status ldns_dane_cert2rdf ( ldns_rdf **  rdf,
X509 *  cert,
ldns_tlsa_selector  selector,
ldns_tlsa_matching_type  matching_type 
)

Creates a LDNS_RDF_TYPE_HEX type rdf based on the binary data chosen by the selector and encoded using matching_type.

Parameters
[out]rdfThe created created rdf of type LDNS_RDF_TYPE_HEX.
[in]certThe certificate from which the data is selected
[in]selectorThe full certificate or the public key
[in]matching_typeThe full data or the SHA256 or SHA512 hash of the selected data
Returns
LDNS_STATUS_OK on success or an error code otherwise.

Definition at line 134 of file dane.c.

References LDNS_FREE, ldns_rdf_new(), LDNS_RDF_TYPE_HEX, ldns_sha256(), LDNS_SHA256_DIGEST_LENGTH, ldns_sha512(), LDNS_SHA512_DIGEST_LENGTH, LDNS_STATUS_DANE_UNKNOWN_MATCHING_TYPE, LDNS_STATUS_DANE_UNKNOWN_SELECTOR, LDNS_STATUS_MEM_ERR, LDNS_STATUS_OK, LDNS_STATUS_SSL_ERR, LDNS_TLSA_MATCHING_TYPE_NO_HASH_USED, LDNS_TLSA_MATCHING_TYPE_SHA256, LDNS_TLSA_MATCHING_TYPE_SHA512, LDNS_TLSA_SELECTOR_FULL_CERTIFICATE, LDNS_TLSA_SELECTOR_SUBJECTPUBLICKEYINFO, and LDNS_XMALLOC.

◆ ldns_dane_select_certificate()

ldns_status ldns_dane_select_certificate ( X509 **  selected_cert,
X509 *  cert,
STACK_OF(X509) *  extra_certs,
X509_STORE *  pkix_validation_store,
ldns_tlsa_certificate_usage  cert_usage,
int  index 
)

Selects the certificate from cert, extra_certs or the pkix_validation_store based on the value of cert_usage and index.

Parameters
[out]selected_certThe selected cert.
[in]certThe certificate to validate (or not)
[in]extra_certsIntermediate certificates that might be necessary during validation. May be NULL, except when the certificate usage is "Trust Anchor Assertion" because the trust anchor has to be provided.(otherwise choose a "Domain issued certificate!"
[in]pkix_validation_storeUsed when the certificate usage is "CA constraint" or "Service Certificate Constraint" to validate the certificate and, in case of "CA constraint", select the CA. When pkix_validation_store is NULL, validation is explicitly turned off and the behaviour is then the same as for "Trust anchor assertion" and "Domain issued certificate" respectively.
[in]cert_usageWhich certificate to use and how to validate.
[in]indexUsed to select the trust anchor when certificate usage is "Trust Anchor Assertion". 0 is the last certificate in the validation chain. 1 the one but last, etc. When index is -1, the last certificate is used that MUST be self-signed. This can help to make sure that the intended (self signed) trust anchor is actually present in extra_certs (which is a DANE requirement).
Returns
LDNS_STATUS_OK on success or an error code otherwise.

Definition at line 405 of file dane.c.

References LDNS_TLSA_USAGE_CA_CONSTRAINT, LDNS_TLSA_USAGE_DOMAIN_ISSUED_CERTIFICATE, LDNS_TLSA_USAGE_SERVICE_CERTIFICATE_CONSTRAINT, and LDNS_TLSA_USAGE_TRUST_ANCHOR_ASSERTION.

◆ ldns_dane_create_tlsa_rr()

ldns_status ldns_dane_create_tlsa_rr ( ldns_rr **  tlsa,
ldns_tlsa_certificate_usage  certificate_usage,
ldns_tlsa_selector  selector,
ldns_tlsa_matching_type  matching_type,
X509 *  cert 
)

Creates a TLSA resource record from the certificate.

No PKIX validation is performed! The given certificate is used as data regardless the value of certificate_usage.

Parameters
[out]tlsaThe created TLSA resource record.
[in]certificate_usageThe value for the Certificate Usage field
[in]selectorThe value for the Selector field
[in]matching_typeThe value for the Matching Type field
[in]certThe certificate which data will be represented
Returns
LDNS_STATUS_OK on success or an error code otherwise.

Definition at line 511 of file dane.c.

References ldns_dane_cert2rdf(), ldns_native2rdf_int8(), LDNS_RDF_TYPE_INT8, ldns_rr_free(), ldns_rr_new_frm_type(), ldns_rr_set_rdf(), LDNS_RR_TYPE_TLSA, LDNS_STATUS_MEM_ERR, and LDNS_STATUS_OK.

Variable Documentation

◆ NoOpenSSLv2

const long NoOpenSSLv2 = 0L

Definition at line 44 of file dane.c.

◆ NoOpenSSLv3

const long NoOpenSSLv3 = 0L

Definition at line 49 of file dane.c.

◆ NoOpenTLSv1

const long NoOpenTLSv1 = 0L

Definition at line 54 of file dane.c.

◆ NoOpenDTLSv1

const long NoOpenDTLSv1 = 0L

Definition at line 59 of file dane.c.

◆ NoOpenSSLCompression

const long NoOpenSSLCompression = 0L

Definition at line 64 of file dane.c.