diff options
Diffstat (limited to 'lib/keychain.h')
| -rw-r--r-- | lib/keychain.h | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/keychain.h b/lib/keychain.h index c96b74ecce..dc35c2ea39 100644 --- a/lib/keychain.h +++ b/lib/keychain.h @@ -6,6 +6,8 @@  #ifndef _ZEBRA_KEYCHAIN_H  #define _ZEBRA_KEYCHAIN_H +#include "memory.h" +#include "northbound.h"  #include "qobj.h"  #ifdef __cplusplus @@ -44,6 +46,10 @@ struct keychain_algo_info {  	const char *desc;  }; +extern const struct frr_yang_module_info ietf_key_chain_info; +extern const struct frr_yang_module_info ietf_key_chain_cli_info; +extern const struct frr_yang_module_info ietf_key_chain_deviation_info; +  extern const struct keychain_algo_info algo_info[];  uint16_t keychain_get_block_size(enum keychain_hash_algo key);  uint16_t keychain_get_hash_len(enum keychain_hash_algo key); @@ -55,6 +61,8 @@ const char *keychain_get_algo_name_by_id(enum keychain_hash_algo key);  struct keychain {  	char *name; +	char *desc; +	time_t last_touch;  	struct list *key; @@ -81,13 +89,43 @@ struct key {  };  DECLARE_QOBJ_TYPE(key); +DECLARE_MTYPE(KEY); +DECLARE_MTYPE(KEYCHAIN); +DECLARE_MTYPE(KEYCHAIN_DESC); + +/* keychain implementation */ +extern struct list *keychain_list; +struct keychain *keychain_lookup(const char *name); +struct keychain *keychain_get(const char *name); +void keychain_delete(struct keychain *keychain); +struct key *key_lookup(const struct keychain *keychain, uint32_t index); +struct key *key_get(const struct keychain *keychain, uint32_t index); +void key_delete(struct keychain *keychain, struct key *key); + +void keychain_cli_init(void); +extern void key_chains_key_chain_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +extern void key_chains_key_chain_cli_write_end(struct vty *vty, const struct lyd_node *dnode); +extern void key_chains_key_chain_description_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +void key_chains_key_chain_key_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +extern void key_chains_key_chain_key_cli_write_end(struct vty *vty, const struct lyd_node *dnode); +extern void key_chains_key_chain_key_lifetime_send_accept_lifetime_start_date_time_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +extern void key_chains_key_chain_key_lifetime_send_lifetime_start_date_time_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +extern void key_chains_key_chain_key_lifetime_accept_lifetime_start_date_time_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +extern void key_chains_key_chain_key_crypto_algorithm_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +extern void key_chains_key_chain_key_key_string_keystring_cli_write(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); + +/* keychain users */  extern void keychain_init(void); +extern void keychain_init_new(bool in_backend);  extern void keychain_terminate(void);  extern struct keychain *keychain_lookup(const char *);  extern struct key *key_lookup_for_accept(const struct keychain *, uint32_t);  extern struct key *key_match_for_accept(const struct keychain *, const char *);  extern struct key *key_lookup_for_send(const struct keychain *);  const char *keychain_algo_str(enum keychain_hash_algo hash_algo); + + +  #ifdef __cplusplus  }  #endif  | 
