hsm_key_factory.h File Reference
`#include "db/hsm_key.h"`
`#include "db/policy_key.h"`
`#include "daemon/engine.h"`
`#include <time.h>`

Go to the source code of this file.

## Functions

void | hsm_key_factory_deinit (void)
int | hsm_key_factory_generate (engine_type *engine, const db_connection_t *connection, const policy_t *policy, const policy_key_t *policy_key, time_t duration)
int | hsm_key_factory_generate_policy (engine_type *engine, const db_connection_t *connection, const policy_t *policy, time_t duration)
int | hsm_key_factory_generate_all (engine_type *engine, const db_connection_t *connection, time_t duration)
int | hsm_key_factory_schedule_generate_policy (engine_type *engine, const policy_t *policy_orig, time_t duration)
int | hsm_key_factory_schedule_generate_all (engine_type *engine, time_t duration)
hsm_key_t * | hsm_key_factory_get_key (engine_type *engine, const db_connection_t *connection, const policy_key_t *policy_key, hsm_key_state_t hsm_key_state)
int | hsm_key_factory_release_key_id (const db_value_t *hsm_key_id, const db_connection_t *connection)
int | hsm_key_factory_release_key (hsm_key_t *hsm_key, const db_connection_t *connection)
int | hsm_key_factory_delete_key (const db_connection_t *connection)

## Function Documentation

## hsm_key_factory_deinit()

void hsm_key_factory_deinit | ( | void |  | ) |

extern

Definition at line 84 of file hsm_key_factory.c.

Referenced by engine_dealloc().

## hsm_key_factory_delete_key()

int hsm_key_factory_delete_key | ( | const db_connection_t * | connection | ) |

extern

Delete keys that are marked DELETE from the database and the HSM itself,

Returns
  The number of keys actually purged from the HSM.

Definition at line 810 of file hsm_key_factory.c.

References DB_CLAUSE_EQUAL, db_clause_get_value(), db_clause_list_add(), db_clause_list_free(), db_clause_list_new(), db_clause_new(), DB_CLAUSE_OPERATOR_AND, db_clause_set_field(), db_clause_set_operator(), db_clause_set_type(), db_object_delete(), db_value_copy(), db_value_from_text(), hsm_key::dbo, hsm_key_id(), hsm_key_list_free(), hsm_key_list_get_next(), hsm_key_list_new_get_by_clauses(), hsm_key_locator(), hsm_key_state_clause(), HSM_KEY_STATE_DELETE, key_data_count(), key_data_free(), key_data_hsm_key_id_clause(), key_data_new(), and hsm_key::rev.

Referenced by removeDeadKeysNow().

## hsm_key_factory_generate()

int hsm_key_factory_generate | ( | engine_type * | engine,
|  | const db_connection_t * | connection,
|  | const policy_t * | policy,
|  | const policy_key_t * | policy_key,
|  | time_t | duration )

TODO

Returns
  0 success, 1 error

Definition at line 94 of file hsm_key_factory.c.

References db_clause_list_free(), db_clause_list_new(), hsm_key_algorithm_clause(), HSM_KEY_BACKUP_BACKUP_REQUIRED, HSM_KEY_BACKUP_NO_BACKUP, hsm_key_bits_clause(), hsm_key_count(), hsm_key_create(), hsm_key_free(), hsm_key_is_revoked_clause(), hsm_key_key_type_clause(), HSM_KEY_KEY_TYPE_RSA, hsm_key_new(), hsm_key_policy_id_clause(), hsm_key_repository_clause(), hsm_key_role_clause(), hsm_key_set_algorithm(), hsm_key_set_backup(), hsm_key_set_bits(), hsm_key_set_inception(), hsm_key_set_key_type(), hsm_key_set_locator(), hsm_key_set_policy_id(), hsm_key_set_repository(), hsm_key_set_role(), hsm_key_set_state(), hsm_key_state_clause(), HSM_KEY_STATE_UNUSED, policy_key_algorithm(), policy_key_bits(), policy_key_lifetime(), policy_key_policy_id(), policy_key_repository(), policy_key_role_text(), policy_name(), zone_db_count(), zone_db_free(), zone_db_new(), and zone_db_policy_id_clause().

Referenced by hsm_key_factory_generate_all(), and hsm_key_factory_generate_policy().

## hsm_key_factory_generate_all()

int hsm_key_factory_generate_all | ( | engine_type * | engine,
|  | const db_connection_t * | connection,
|  | time_t | duration )

TODO

Returns
  0 success, 1 error

Definition at line 386 of file hsm_key_factory.c.

References hsm_key_factory_generate(), policy_id(), policy_key_list_free(), policy_key_list_new_get_by_policy_id(), policy_key_list_next(), policy_list_free(), policy_list_new_get(), and policy_list_next().

## hsm_key_factory_generate_policy()

int hsm_key_factory_generate_policy | ( | engine_type * | engine,
|  | const db_connection_t * | connection,
|  | const policy_t * | policy,
|  | time_t | duration )

TODO

Returns
  0 success, 1 error

Definition at line 346 of file hsm_key_factory.c.

References hsm_key_factory_generate(), policy_id(), policy_key_list_free(), policy_key_list_new_get_by_policy_id(), policy_key_list_next(), and policy_name().

## hsm_key_factory_get_key()

hsm_key_t * hsm_key_factory_get_key | ( | engine_type * | engine,
|  | const db_connection_t * | connection,
|  | const policy_key_t * | policy_key,
|  | hsm_key_state_t | hsm_key_state )

extern

Allocate a private or shared HSM key for the policy key provided. This will also schedule a task for generating more keys if needed.

Parameters

  [in] | engine | an engine_type.
  [in] | connection | a database connection.
  [in] | policy_key | a policy key.
  [in] | hsm_key_state | indicate if its a private or shared key that should be fetched (HSM_KEY_STATE_PRIVATE | HSM_KEY_STATE_SHARED).

Returns
  an allocated HSM key or NULL on error or if there are no unused keys available for allocation right now.

Definition at line 629 of file hsm_key_factory.c.

References db_clause_list_free(), db_clause_list_new(), hsm_key_algorithm_clause(), hsm_key_bits_clause(), hsm_key_free(), hsm_key_is_revoked_clause(), hsm_key_key_type_clause(), HSM_KEY_KEY_TYPE_RSA, hsm_key_list_free(), hsm_key_list_get_next(), hsm_key_list_new_get_by_clauses(), hsm_key_policy_id_clause(), hsm_key_repository_clause(), hsm_key_role_clause(), hsm_key_set_state(), hsm_key_state_clause(), HSM_KEY_STATE_PRIVATE, HSM_KEY_STATE_SHARED, HSM_KEY_STATE_UNUSED, hsm_key_update(), policy_key_algorithm(), policy_key_bits(), policy_key_policy_id(), and policy_key_repository().

## hsm_key_factory_release_key()

int hsm_key_factory_release_key | ( | hsm_key_t * | hsm_key,
|  | const db_connection_t * | connection )

extern

Release a key, if its not used anyore it will be marked DELETE.

Parameters

  [in] | hsm_key | a hsm_key_t pointer with the hsm_key to release.

Returns
  non-zero on error.

Definition at line 763 of file hsm_key_factory.c.

References db_clause_list_free(), db_clause_list_new(), hsm_key_id(), hsm_key_locator(), hsm_key_set_state(), HSM_KEY_STATE_DELETE, hsm_key_update(), key_data_count(), key_data_free(), key_data_hsm_key_id_clause(), and key_data_new().

## hsm_key_factory_release_key_id()

int hsm_key_factory_release_key_id | ( | const db_value_t * | hsm_key_id,
|  | const db_connection_t * | connection )

extern

Release a key, if its not used anyore it will be marked DELETE.

Parameters

  [in] | hsm_key_id | a db_value_t pointer with the hsm_key database id.

Returns
  non-zero on error.

Definition at line 704 of file hsm_key_factory.c.

References db_clause_list_free(), db_clause_list_new(), hsm_key_free(), hsm_key_get_by_id(), hsm_key_id(), hsm_key_locator(), hsm_key_new(), hsm_key_set_state(), HSM_KEY_STATE_DELETE, hsm_key_update(), key_data_count(), key_data_free(), key_data_hsm_key_id_clause(), and key_data_new().

Referenced by removeDeadKeysNow(), and zonelist_import().

## hsm_key_factory_schedule_generate_all()

int hsm_key_factory_schedule_generate_all | ( | engine_type * | engine,
|  | time_t | duration )

Schedule a task to generate keys for all policies and policy keys we currently have.

Parameters

  [in] | engine | an engine_type.
  [in] | duration | a time_t specifying the duration to generate keys from, if its zero then the duration from conf.xml is taken.

Returns
  non-zero on error.

Definition at line 598 of file hsm_key_factory.c.

References __hsm_key_factory_task::duration, __hsm_key_factory_task::engine, __hsm_key_factory_task::policy, __hsm_key_factory_task::policy_key, and __hsm_key_factory_task::reschedule_enforce_task.

Referenced by autostart(), policy_import(), and zonelist_import().

## hsm_key_factory_schedule_generate_policy()

int hsm_key_factory_schedule_generate_policy | ( | engine_type * | engine,
|  | const policy_t * | policy_orig,
|  | time_t | duration )

Schedule a task to generate keys for a specific policy.

Parameters

  [in] | engine | an engine_type. \prama[in] policy_orig a policy_t pointer to the policy we will generate keys for.
  [in] | duration | a time_t specifying the duration to generate keys from, if its zero then the duration from conf.xml is taken.

Returns
  non-zero on error.

Definition at line 560 of file hsm_key_factory.c.

References __hsm_key_factory_task::duration, __hsm_key_factory_task::engine, __hsm_key_factory_task::policy, policy_free(), __hsm_key_factory_task::policy_key, policy_new_copy(), and __hsm_key_factory_task::reschedule_enforce_task.