keys.c File Reference

Go to the source code of this file.

Functions

ldns_key_listldns_key_list_new ()
 Creates a new empty key list.
ldns_keyldns_key_new ()
 Creates a new empty key structure.
ldns_status ldns_key_new_frm_fp (ldns_key **k, FILE *fp)
 Creates a new priv key based on the contents of the file pointed by fp.
ldns_status ldns_key_new_frm_engine (ldns_key **key, ENGINE *e, char *key_id, ldns_algorithm alg)
 Read the key with the given id from the given engine and store it in the given ldns_key structure.
ldns_status ldns_key_new_frm_fp_l (ldns_key **key, FILE *fp, int *line_nr)
 Creates a new private key based on the contents of the file pointed by fp.
RSA * ldns_key_new_frm_fp_rsa (FILE *f)
 frm_fp helper function.
RSA * ldns_key_new_frm_fp_rsa_l (FILE *f, int *line_nr)
 frm_fp helper function.
DSA * ldns_key_new_frm_fp_dsa (FILE *f)
 frm_fp helper function.
DSA * ldns_key_new_frm_fp_dsa_l (FILE *f, int *line_nr)
 frm_fp helper function.
unsigned char * ldns_key_new_frm_fp_hmac (FILE *f, size_t *hmac_size)
 frm_fp helper function.
unsigned char * ldns_key_new_frm_fp_hmac_l (FILE *f, int *line_nr, size_t *hmac_size)
 frm_fp helper function.
ldns_keyldns_key_new_frm_algorithm (ldns_signing_algorithm alg, uint16_t size)
 Creates a new key based on the algorithm.
void ldns_key_print (FILE *output, const ldns_key *k)
 print a private key to the file ouput
void ldns_key_set_algorithm (ldns_key *k, ldns_signing_algorithm l)
 Set the key's algorithm.
void ldns_key_set_flags (ldns_key *k, uint16_t f)
 Set the key's flags.
void ldns_key_set_evp_key (ldns_key *k, EVP_PKEY *e)
 Set the key's evp key.
void ldns_key_set_rsa_key (ldns_key *k, RSA *r)
 Set the key's rsa data.
void ldns_key_set_dsa_key (ldns_key *k, DSA *d)
 Set the key's dsa data.
void ldns_key_set_hmac_key (ldns_key *k, unsigned char *hmac)
 Set the key's hmac data.
void ldns_key_set_hmac_size (ldns_key *k, size_t hmac_size)
 Set the key's hmac size.
void ldns_key_set_origttl (ldns_key *k, uint32_t t)
 Set the key's original ttl.
void ldns_key_set_inception (ldns_key *k, uint32_t i)
 Set the key's inception date (seconds after epoch).
void ldns_key_set_expiration (ldns_key *k, uint32_t e)
 Set the key's expiration date (seconds after epoch).
void ldns_key_set_pubkey_owner (ldns_key *k, ldns_rdf *r)
 Set the key's pubkey owner.
void ldns_key_set_keytag (ldns_key *k, uint16_t tag)
 Set the key's key tag.
size_t ldns_key_list_key_count (const ldns_key_list *key_list)
 returns the number of keys in the key list
ldns_keyldns_key_list_key (const ldns_key_list *key, size_t nr)
 returns a pointer to the key in the list at the given position
ldns_signing_algorithm ldns_key_algorithm (const ldns_key *k)
 return the signing alg of the key
void ldns_key_set_use (ldns_key *k, bool v)
 set the use flag
bool ldns_key_use (const ldns_key *k)
 return the use flag
EVP_PKEY * ldns_key_evp_key (const ldns_key *k)
 returns the (openssl) EVP struct contained in the key
RSA * ldns_key_rsa_key (const ldns_key *k)
 returns the (openssl) RSA struct contained in the key
DSA * ldns_key_dsa_key (const ldns_key *k)
 returns the (openssl) DSA struct contained in the key
unsigned char * ldns_key_hmac_key (const ldns_key *k)
 return the hmac key data
size_t ldns_key_hmac_size (const ldns_key *k)
 return the hmac key size
uint32_t ldns_key_origttl (const ldns_key *k)
 return the original ttl of the key
uint16_t ldns_key_flags (const ldns_key *k)
 return the flag of the key
uint32_t ldns_key_inception (const ldns_key *k)
 return the key's inception date
uint32_t ldns_key_expiration (const ldns_key *k)
 return the key's expiration date
uint16_t ldns_key_keytag (const ldns_key *k)
 return the keytag
ldns_rdfldns_key_pubkey_owner (const ldns_key *k)
 return the public key's owner
void ldns_key_list_set_use (ldns_key_list *keys, bool v)
 Set the 'use' flag for all keys in the list.
void ldns_key_list_set_key_count (ldns_key_list *key, size_t count)
 Set the keylist's key count to count.
bool ldns_key_list_push_key (ldns_key_list *key_list, ldns_key *key)
 pushes a key to a keylist
ldns_keyldns_key_list_pop_key (ldns_key_list *key_list)
 pops the last rr from a keylist
ldns_rrldns_key2rr (const ldns_key *k)
 converts a ldns_key to a public key rr
void ldns_key_free (ldns_key *key)
 frees a key structure
void ldns_key_deep_free (ldns_key *key)
 frees a key structure and all it's internal data
void ldns_key_list_free (ldns_key_list *key_list)
 Frees a key list structure.
ldns_rrldns_read_anchor_file (const char *filename)
 Instantiates a DNSKEY or DS RR from file.

Variables

ldns_lookup_table ldns_signing_algorithms []


Function Documentation

ldns_key_list* ldns_key_list_new (  ) 

Creates a new empty key list.

Returns:
a new ldns_key_list structure pointer

Definition at line 35 of file keys.c.

References ldns_struct_key_list::_key_count, ldns_struct_key_list::_keys, and LDNS_MALLOC.

ldns_key* ldns_key_new (  ) 

ldns_status ldns_key_new_frm_fp ( ldns_key **  k,
FILE *  fp 
)

Creates a new priv key based on the contents of the file pointed by fp.

The file should be in Private-key-format v1.2.

Parameters:
[out] k the new ldns_key structure
[in] fp the file pointer to use
Returns:
an error or LDNS_STATUS_OK

Definition at line 71 of file keys.c.

References ldns_key_new_frm_fp_l().

ldns_status ldns_key_new_frm_engine ( ldns_key **  key,
ENGINE *  e,
char *  key_id,
ldns_algorithm   
)

Read the key with the given id from the given engine and store it in the given ldns_key structure.

The algorithm type is set

Definition at line 78 of file keys.c.

References ldns_struct_key::_key, ldns_struct_key::key, ldns_key_new(), ldns_key_set_algorithm(), LDNS_STATUS_ENGINE_KEY_NOT_LOADED, and LDNS_STATUS_OK.

ldns_status ldns_key_new_frm_fp_l ( ldns_key **  k,
FILE *  fp,
int *  line_nr 
)

RSA* ldns_key_new_frm_fp_rsa ( FILE *  fp  ) 

frm_fp helper function.

This function parses the remainder of the (RSA) priv. key file generated from bind9

Parameters:
[in] fp the file to parse
Returns:
NULL on failure otherwise a RSA structure

Definition at line 222 of file keys.c.

References ldns_key_new_frm_fp_rsa_l().

RSA* ldns_key_new_frm_fp_rsa_l ( FILE *  fp,
int *  line_nr 
)

frm_fp helper function.

This function parses the remainder of the (RSA) priv. key file generated from bind9

Parameters:
[in] fp the file to parse
[in] line_nr pointer to an integer containing the current line number (for debugging purposes)
Returns:
NULL on failure otherwise a RSA structure

Definition at line 228 of file keys.c.

References b64_pton(), ldns_fget_keyword_data_l(), LDNS_FREE, LDNS_MAX_LINELEN, and LDNS_XMALLOC.

DSA* ldns_key_new_frm_fp_dsa ( FILE *  fp  ) 

frm_fp helper function.

This function parses the remainder of the (DSA) priv. key file

Parameters:
[in] fp the file to parse
Returns:
NULL on failure otherwise a RSA structure

Definition at line 362 of file keys.c.

References ldns_key_new_frm_fp_dsa_l().

DSA* ldns_key_new_frm_fp_dsa_l ( FILE *  fp,
int *  line_nr 
)

frm_fp helper function.

This function parses the remainder of the (DSA) priv. key file

Parameters:
[in] fp the file to parse
[in] line_nr pointer to an integer containing the current line number (for debugging purposes)
Returns:
NULL on failure otherwise a RSA structure

Definition at line 368 of file keys.c.

References b64_pton(), ldns_fget_keyword_data_l(), LDNS_FREE, LDNS_MAX_LINELEN, and LDNS_XMALLOC.

unsigned char* ldns_key_new_frm_fp_hmac ( FILE *  fp,
size_t *  hmac_size 
)

frm_fp helper function.

This function parses the remainder of the (HMAC-MD5) key file This function allocated a buffer that needs to be freed

Parameters:
[in] fp the file to parse
[out] hmac_size the number of bits in the resulting buffer
Returns:
NULL on failure otherwise a newly allocated char buffer

Definition at line 448 of file keys.c.

References ldns_key_new_frm_fp_hmac_l().

unsigned char* ldns_key_new_frm_fp_hmac_l ( FILE *  fp,
int *  line_nr,
size_t *  hmac_size 
)

frm_fp helper function.

This function parses the remainder of the (HMAC-MD5) key file This function allocated a buffer that needs to be freed

Parameters:
[in] fp the file to parse
[in] line_nr pointer to an integer containing the current line number (for error reporting purposes)
[out] hmac_size the number of bits in the resulting buffer
Returns:
NULL on failure otherwise a newly allocated char buffer

Definition at line 454 of file keys.c.

References b64_pton(), ldns_fget_keyword_data_l(), LDNS_FREE, LDNS_MAX_LINELEN, and LDNS_XMALLOC.

ldns_key* ldns_key_new_frm_algorithm ( ldns_signing_algorithm  a,
uint16_t  size 
)

void ldns_key_print ( FILE *  output,
const ldns_key k 
)

print a private key to the file ouput

Parameters:
[in] output the FILE descriptor where to print to
[in] k the ldns_key to print

Definition at line 556 of file keys.c.

References LDNS_FREE, and ldns_key2str().

void ldns_key_set_algorithm ( ldns_key k,
ldns_signing_algorithm  l 
)

Set the key's algorithm.

Parameters:
[in] k the key
[in] l the algorithm

Definition at line 569 of file keys.c.

References ldns_struct_key::_alg.

void ldns_key_set_flags ( ldns_key k,
uint16_t  flags 
)

Set the key's flags.

Parameters:
[in] k the key
[in] flags the flags

Definition at line 575 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

void ldns_key_set_evp_key ( ldns_key k,
EVP_PKEY *  e 
)

Set the key's evp key.

Parameters:
[in] k the key
[in] e the evp key

Definition at line 581 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::key.

void ldns_key_set_rsa_key ( ldns_key k,
RSA *  r 
)

Set the key's rsa data.

Parameters:
[in] k the key
[in] r the rsa data

Definition at line 587 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::key.

void ldns_key_set_dsa_key ( ldns_key k,
DSA *  d 
)

Set the key's dsa data.

Parameters:
[in] k the key
[in] d the dsa data

Definition at line 595 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::key.

void ldns_key_set_hmac_key ( ldns_key k,
unsigned char *  hmac 
)

Set the key's hmac data.

Parameters:
[in] k the key
[in] hmac the raw key data

Definition at line 603 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::hmac.

void ldns_key_set_hmac_size ( ldns_key k,
size_t  hmac_size 
)

Set the key's hmac size.

Parameters:
[in] k the key
[in] hmac_size the size of the hmac data

Definition at line 609 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::hmac.

void ldns_key_set_origttl ( ldns_key k,
uint32_t  t 
)

Set the key's original ttl.

Parameters:
[in] k the key
[in] t the ttl

Definition at line 615 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

void ldns_key_set_inception ( ldns_key k,
uint32_t  i 
)

Set the key's inception date (seconds after epoch).

Parameters:
[in] k the key
[in] i the inception

Definition at line 621 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

void ldns_key_set_expiration ( ldns_key k,
uint32_t  e 
)

Set the key's expiration date (seconds after epoch).

Parameters:
[in] k the key
[in] e the expiration

Definition at line 627 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

void ldns_key_set_pubkey_owner ( ldns_key k,
ldns_rdf r 
)

Set the key's pubkey owner.

Parameters:
[in] k the key
[in] r the owner

Definition at line 633 of file keys.c.

References ldns_struct_key::_pubkey_owner.

void ldns_key_set_keytag ( ldns_key k,
uint16_t  tag 
)

Set the key's key tag.

Parameters:
[in] k the key
[in] tag the keytag

Definition at line 639 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

size_t ldns_key_list_key_count ( const ldns_key_list key_list  ) 

returns the number of keys in the key list

Parameters:
[in] key_list the key_list
Returns:
the numbers of keys in the list

Definition at line 646 of file keys.c.

References ldns_struct_key_list::_key_count.

ldns_key* ldns_key_list_key ( const ldns_key_list key,
size_t  nr 
)

returns a pointer to the key in the list at the given position

Parameters:
[in] key the key
[in] nr the position in the list
Returns:
the key

Definition at line 652 of file keys.c.

References ldns_struct_key_list::_keys, and ldns_key_list_key_count().

ldns_signing_algorithm ldns_key_algorithm ( const ldns_key k  ) 

return the signing alg of the key

Parameters:
[in] k the key
Returns:
the algorithm

Definition at line 662 of file keys.c.

References ldns_struct_key::_alg.

void ldns_key_set_use ( ldns_key k,
bool  v 
)

set the use flag

Parameters:
[in] k the key
[in] v the boolean value to set the _use field to

Definition at line 668 of file keys.c.

References ldns_struct_key::_use.

bool ldns_key_use ( const ldns_key k  ) 

return the use flag

Parameters:
[in] k the key
Returns:
the boolean value of the _use field

Definition at line 676 of file keys.c.

References ldns_struct_key::_use.

EVP_PKEY* ldns_key_evp_key ( const ldns_key k  ) 

returns the (openssl) EVP struct contained in the key

Parameters:
[in] k the key to look in
Returns:
the RSA * structure in the key

Definition at line 685 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::key.

RSA* ldns_key_rsa_key ( const ldns_key k  ) 

returns the (openssl) RSA struct contained in the key

Parameters:
[in] k the key to look in
Returns:
the RSA * structure in the key

Definition at line 691 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::key.

DSA* ldns_key_dsa_key ( const ldns_key k  ) 

returns the (openssl) DSA struct contained in the key

Definition at line 697 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::key.

unsigned char* ldns_key_hmac_key ( const ldns_key k  ) 

return the hmac key data

Parameters:
[in] k the key
Returns:
the hmac key data

Definition at line 703 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::hmac.

size_t ldns_key_hmac_size ( const ldns_key k  ) 

return the hmac key size

Parameters:
[in] k the key
Returns:
the hmac key size

Definition at line 709 of file keys.c.

References ldns_struct_key::_key, and ldns_struct_key::hmac.

uint32_t ldns_key_origttl ( const ldns_key k  ) 

return the original ttl of the key

Parameters:
[in] k the key
Returns:
the original ttl

Definition at line 715 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

uint16_t ldns_key_flags ( const ldns_key k  ) 

return the flag of the key

Parameters:
[in] k the key
Returns:
the flag

Definition at line 721 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

uint32_t ldns_key_inception ( const ldns_key k  ) 

return the key's inception date

Parameters:
[in] k the key
Returns:
the inception date

Definition at line 727 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

uint32_t ldns_key_expiration ( const ldns_key k  ) 

return the key's expiration date

Parameters:
[in] k the key
Returns:
the experiration date

Definition at line 733 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

uint16_t ldns_key_keytag ( const ldns_key k  ) 

return the keytag

Parameters:
[in] k the key
Returns:
the keytag

Definition at line 739 of file keys.c.

References ldns_struct_key::_extra, and ldns_struct_key::dnssec.

ldns_rdf* ldns_key_pubkey_owner ( const ldns_key k  ) 

return the public key's owner

Parameters:
[in] k the key
Returns:
the owner

Definition at line 745 of file keys.c.

References ldns_struct_key::_pubkey_owner.

void ldns_key_list_set_use ( ldns_key_list keys,
bool  v 
)

Set the 'use' flag for all keys in the list.

Parameters:
[in] keys The key_list
[in] v The value to set the use flags to

Definition at line 752 of file keys.c.

References ldns_key_list_key(), ldns_key_list_key_count(), and ldns_key_set_use().

void ldns_key_list_set_key_count ( ldns_key_list key,
size_t  count 
)

Set the keylist's key count to count.

Parameters:
[in] key the key
[in] count the cuont

Definition at line 762 of file keys.c.

References ldns_struct_key_list::_key_count.

bool ldns_key_list_push_key ( ldns_key_list key_list,
ldns_key key 
)

pushes a key to a keylist

Parameters:
[in] key_list the key_list to push to
[in] key the key to push
Returns:
false on error, otherwise true

Definition at line 768 of file keys.c.

References ldns_struct_key_list::_keys, ldns_key_list_key_count(), ldns_key_list_set_key_count(), and LDNS_XREALLOC.

ldns_key* ldns_key_list_pop_key ( ldns_key_list key_list  ) 

pops the last rr from a keylist

Parameters:
[in] key_list the rr_list to pop from
Returns:
NULL if nothing to pop. Otherwise the popped RR

Definition at line 792 of file keys.c.

References ldns_struct_key_list::_keys, ldns_key_list_key(), ldns_key_list_key_count(), ldns_key_list_set_key_count(), and LDNS_XREALLOC.

ldns_rr* ldns_key2rr ( const ldns_key k  ) 

void ldns_key_free ( ldns_key key  ) 

frees a key structure

Parameters:
[in] key the key object to free

Definition at line 980 of file keys.c.

References LDNS_FREE.

void ldns_key_deep_free ( ldns_key key  ) 

frees a key structure and all it's internal data

Parameters:
[in] key the key object to free

Definition at line 986 of file keys.c.

References LDNS_FREE, ldns_key_evp_key(), ldns_key_hmac_key(), ldns_key_pubkey_owner(), and ldns_rdf_deep_free().

void ldns_key_list_free ( ldns_key_list key_list  ) 

Frees a key list structure.

Parameters:
[in] key_list the key list object to free

Definition at line 1020 of file keys.c.

References ldns_struct_key_list::_keys, LDNS_FREE, ldns_key_deep_free(), ldns_key_list_key(), and ldns_key_list_key_count().

ldns_rr* ldns_read_anchor_file ( const char *  filename  ) 

Instantiates a DNSKEY or DS RR from file.

Parameters:
[in] filename the file to read the record from
Returns:
the corresponding RR, or NULL if the parsing failed

Definition at line 1031 of file keys.c.

References LDNS_FREE, ldns_get_errorstr_by_id(), LDNS_MAX_PACKETLEN, ldns_rr_get_type(), ldns_rr_new_frm_str(), LDNS_RR_TYPE_DNSKEY, LDNS_RR_TYPE_DS, LDNS_STATUS_OK, and LDNS_XMALLOC.


Variable Documentation

Initial value:

 {
        { LDNS_SIGN_RSAMD5, "RSAMD5" },
        { LDNS_SIGN_RSASHA1, "RSASHA1" },
        { LDNS_SIGN_RSASHA256, "RSASHA256" },
        { LDNS_SIGN_RSASHA512, "RSASHA512" },
        { LDNS_SIGN_DSA, "DSAMD5" },
        { LDNS_SIGN_HMACMD5, "hmac-md5.sig-alg.reg.int" },
        { 0, NULL }
}

Definition at line 23 of file keys.c.


Generated on Fri Aug 8 02:52:41 2008 for ldns by  doxygen 1.5.6