/build/ldns-00A0O8/ldns-1.8.4/tsig.c File Reference

Go to the source code of this file.

## Functions

const char * | ldns_tsig_algorithm (const ldns_tsig_credentials *tc)
const char * | ldns_tsig_keyname (const ldns_tsig_credentials *tc)
const char * | ldns_tsig_keydata (const ldns_tsig_credentials *tc)
char * | ldns_tsig_keyname_clone (const ldns_tsig_credentials *tc)
char * | ldns_tsig_keydata_clone (const ldns_tsig_credentials *tc)
signed char | ldns_pkt_tsig_verify (ldns_pkt *pkt, const uint8_t *wire, size_t wirelen, const char *key_name, const char *key_data, const ldns_rdf *orig_mac_rdf)
| verifies the tsig rr for the given packet and key.
signed char | ldns_pkt_tsig_verify_next (ldns_pkt *pkt, const uint8_t *wire, size_t wirelen, const char *key_name, const char *key_data, const ldns_rdf *orig_mac_rdf, int tsig_timers_only)
| verifies the tsig rr for the given packet and key.
ldns_status | ldns_pkt_tsig_sign (ldns_pkt *pkt, const char *key_name, const char *key_data, uint16_t fudge, const char *algorithm_name, const ldns_rdf *query_mac)
| creates a tsig rr for the given packet and key.
ldns_status | ldns_pkt_tsig_sign_next (ldns_pkt *pkt, const char *key_name, const char *key_data, uint16_t fudge, const char *algorithm_name, const ldns_rdf *query_mac, int tsig_timers_only)
| creates a tsig rr for the given packet and key.

## Function Documentation

## ldns_tsig_algorithm()

const char * ldns_tsig_algorithm | ( | const ldns_tsig_credentials * | tc | ) |

Definition at line 22 of file tsig.c.

References ldns_tsig_credentials_struct::algorithm.

## ldns_tsig_keyname()

const char * ldns_tsig_keyname | ( | const ldns_tsig_credentials * | tc | ) |

Definition at line 28 of file tsig.c.

References ldns_tsig_credentials_struct::keyname.

## ldns_tsig_keydata()

const char * ldns_tsig_keydata | ( | const ldns_tsig_credentials * | tc | ) |

Definition at line 34 of file tsig.c.

References ldns_tsig_credentials_struct::keydata.

## ldns_tsig_keyname_clone()

char * ldns_tsig_keyname_clone | ( | const ldns_tsig_credentials * | tc | ) |

Definition at line 40 of file tsig.c.

References ldns_tsig_credentials_struct::keyname.

## ldns_tsig_keydata_clone()

char * ldns_tsig_keydata_clone | ( | const ldns_tsig_credentials * | tc | ) |

Definition at line 46 of file tsig.c.

References ldns_tsig_credentials_struct::keydata.

## ldns_pkt_tsig_verify()

signed char ldns_pkt_tsig_verify | ( | ldns_pkt * | pkt,
|  | const uint8_t * | wire,
|  | size_t | wire_size,
|  | const char * | key_name,
|  | const char * | key_data,
|  | const ldns_rdf * | mac )

verifies the tsig rr for the given packet and key.

The wire must be given too because tsig does not sign normalized packets.

Parameters

  [in] | pkt | the packet to verify
  [in] | wire | needed to verify the mac
  [in] | wire_size | size of wire
  [in] | key_name | the name of the shared key
  [in] | key_data | the key in base 64 format
  [in] | mac | original mac

Returns
  true if tsig is correct, false if not, or if tsig is not set

Definition at line 288 of file tsig.c.

References ldns_pkt_tsig_verify_next().

## ldns_pkt_tsig_verify_next()

signed char ldns_pkt_tsig_verify_next | ( | ldns_pkt * | pkt,
|  | const uint8_t * | wire,
|  | size_t | wire_size,
|  | const char * | key_name,
|  | const char * | key_data,
|  | const ldns_rdf * | mac,
|  | int | tsig_timers_only )

verifies the tsig rr for the given packet and key.

The wire must be given too because tsig does not sign normalized packets.

Parameters

  [in] | pkt | the packet to verify
  [in] | wire | needed to verify the mac
  [in] | wire_size | size of wire
  [in] | key_name | the name of the shared key
  [in] | key_data | the key in base 64 format
  [in] | mac | original mac
  [in] | tsig_timers_only | must be zero for the first packet and positive for subsequent packets. If zero, all digest components are used to verify the _mac. If non-zero, only the TSIG timers are used to verify the mac.

Returns
  true if tsig is correct, false if not, or if tsig is not set

Definition at line 295 of file tsig.c.

References HAVE_CRYPTO_MEMCMP, LDNS_FREE, ldns_pkt_id(), ldns_pkt_set_id(), ldns_pkt_set_tsig(), ldns_pkt_tsig(), ldns_rdf2native_int16(), ldns_rdf_data(), ldns_rdf_deep_free(), ldns_rdf_new_frm_str(), ldns_rdf_size(), LDNS_RDF_TYPE_DNAME, ldns_rr_rd_count(), ldns_rr_rdf(), and LDNS_STATUS_OK.

## ldns_pkt_tsig_sign()

ldns_status ldns_pkt_tsig_sign | ( | ldns_pkt * | pkt,
|  | const char * | key_name,
|  | const char * | key_data,
|  | uint16_t | fudge,
|  | const char * | algorithm_name,
|  | const ldns_rdf * | query_mac )

creates a tsig rr for the given packet and key.

Parameters

  [in] | pkt | the packet to sign
  [in] | key_name | the name of the shared key
  [in] | key_data | the key in base 64 format
  [in] | fudge | seconds of error permitted in time signed
  [in] | algorithm_name | the name of the algorithm used
  [in] | query_mac | is added to the digest if not NULL (so NULL is for signing queries, not NULL is for signing answers)

Returns
  status (OK if success)

Definition at line 376 of file tsig.c.

References ldns_pkt_tsig_sign_next().

## ldns_pkt_tsig_sign_next()

ldns_status ldns_pkt_tsig_sign_next | ( | ldns_pkt * | pkt,
|  | const char * | key_name,
|  | const char * | key_data,
|  | uint16_t | fudge,
|  | const char * | algorithm_name,
|  | const ldns_rdf * | query_mac,
|  | int | tsig_timers_only )

creates a tsig rr for the given packet and key.

Parameters

  [in] | pkt | the packet to sign
  [in] | key_name | the name of the shared key
  [in] | key_data | the key in base 64 format
  [in] | fudge | seconds of error permitted in time signed
  [in] | algorithm_name | the name of the algorithm used
  [in] | query_mac | is added to the digest if not NULL (so NULL is for signing queries, not NULL is for signing answers)
  [in] | tsig_timers_only | must be zero for the first packet and positive for subsequent packets. If zero, all digest components are used to create the query_mac. If non-zero, only the TSIG timers are used to create the query_mac.

Returns
  status (OK if success)

Definition at line 383 of file tsig.c.

References LDNS_FREE, ldns_native2rdf_int16(), ldns_native2rdf_int16_data(), ldns_pkt2wire(), ldns_pkt_id(), ldns_pkt_set_tsig(), ldns_rdf_free(), ldns_rdf_new(), ldns_rdf_new_frm_str(), LDNS_RDF_TYPE_DNAME, LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_TSIGTIME, LDNS_RR_CLASS_ANY, ldns_rr_new(), ldns_rr_push_rdf(), ldns_rr_set_class(), ldns_rr_set_owner(), ldns_rr_set_ttl(), ldns_rr_set_type(), LDNS_RR_TYPE_TSIG, LDNS_STATUS_ERR, LDNS_STATUS_INTERNAL_ERR, LDNS_STATUS_MEM_ERR, LDNS_STATUS_OK, and LDNS_XMALLOC.