OpenDNSSEC-enforcer 2.1.13
hsm_key.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2014 Jerry Lundström <lundstrom.jerry@gmail.com>
3 * Copyright (c) 2014 .SE (The Internet Infrastructure Foundation).
4 * Copyright (c) 2014 OpenDNSSEC AB (svb)
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
22 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
24 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 */
29
30#ifndef __hsm_key_h
31#define __hsm_key_h
32
33#include "db_object.h"
34
35struct hsm_key;
36struct hsm_key_list;
37typedef struct hsm_key hsm_key_t;
39
40typedef enum hsm_key_state {
48
49typedef enum hsm_key_role {
55extern const db_enum_t hsm_key_enum_set_role[];
56
57#define HSM_KEY_ROLE_SEP(role) ((role) == HSM_KEY_ROLE_KSK || (role) == HSM_KEY_ROLE_CSK)
58
59typedef enum hsm_key_key_type {
63
64typedef enum hsm_key_backup {
72
73#include "hsm_key_ext.h"
74#include "policy.h"
75
79struct hsm_key {
86 char* locator;
88 unsigned int bits;
89 unsigned int algorithm;
91 unsigned int inception;
92 unsigned int is_revoked;
96};
97
103extern hsm_key_t* hsm_key_new(const db_connection_t* connection);
104
111
116extern void hsm_key_free(hsm_key_t* hsm_key);
117
125
132extern int hsm_key_from_result(hsm_key_t* hsm_key, const db_result_t* result);
133
139extern const db_value_t* hsm_key_id(const hsm_key_t* hsm_key);
140
146extern const db_value_t* hsm_key_policy_id(const hsm_key_t* hsm_key);
147
153extern const char* hsm_key_locator(const hsm_key_t* hsm_key);
154
161
167extern unsigned int hsm_key_bits(const hsm_key_t* hsm_key);
168
174extern unsigned int hsm_key_algorithm(const hsm_key_t* hsm_key);
175
182
188extern unsigned int hsm_key_inception(const hsm_key_t* hsm_key);
189
195extern const char* hsm_key_repository(const hsm_key_t* hsm_key);
196
203
211
218extern int hsm_key_set_locator(hsm_key_t* hsm_key, const char* locator_text);
219
227
234extern int hsm_key_set_bits(hsm_key_t* hsm_key, unsigned int bits);
235
242extern int hsm_key_set_algorithm(hsm_key_t* hsm_key, unsigned int algorithm);
243
251
258extern int hsm_key_set_inception(hsm_key_t* hsm_key, unsigned int inception);
259
267
274extern int hsm_key_set_repository(hsm_key_t* hsm_key, const char* repository_text);
275
283
294
305
315extern db_clause_t* hsm_key_bits_clause(db_clause_list_t* clause_list, unsigned int bits);
316
326extern db_clause_t* hsm_key_algorithm_clause(db_clause_list_t* clause_list, unsigned int algorithm);
327
338
348extern db_clause_t* hsm_key_is_revoked_clause(db_clause_list_t* clause_list, unsigned int is_revoked);
349
360
370extern db_clause_t* hsm_key_repository_clause(db_clause_list_t* clause_list, const char* repository_text);
371
382
388extern int hsm_key_create(hsm_key_t* hsm_key);
389
396extern int hsm_key_get_by_id(hsm_key_t* hsm_key, const db_value_t* id);
397
404extern int hsm_key_get_by_locator(hsm_key_t* hsm_key, const char* locator);
405
412extern hsm_key_t* hsm_key_new_get_by_locator(const db_connection_t* connection, const char* locator);
413
419extern int hsm_key_update(hsm_key_t* hsm_key);
420
431extern int hsm_key_count(hsm_key_t* hsm_key, db_clause_list_t* clause_list, size_t* count);
432
448};
449
455extern hsm_key_list_t* hsm_key_list_new(const db_connection_t* connection);
456
463
471
477
488extern int hsm_key_list_copy(hsm_key_list_t* hsm_key_list, const hsm_key_list_t* from_hsm_key_list);
489
497
504extern hsm_key_list_t* hsm_key_list_new_get_by_clauses(const db_connection_t* connection, const db_clause_list_t* clause_list);
505
513
521
530
540
550
560
561#endif
hsm_key_t * hsm_key_list_get_begin(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1888
void hsm_key_free(hsm_key_t *hsm_key)
Definition: hsm_key.c:286
hsm_key_list_t * hsm_key_list_new_copy(const hsm_key_list_t *hsm_key_copy)
Definition: hsm_key.c:1467
const db_enum_t hsm_key_enum_set_role[]
Definition: hsm_key.c:44
enum hsm_key_backup hsm_key_backup_t
int hsm_key_set_role(hsm_key_t *hsm_key, hsm_key_role_t role)
Definition: hsm_key.c:658
int hsm_key_count(hsm_key_t *hsm_key, db_clause_list_t *clause_list, size_t *count)
Definition: hsm_key.c:1435
int hsm_key_set_state(hsm_key_t *hsm_key, hsm_key_state_t state)
Definition: hsm_key.c:625
int hsm_key_copy(hsm_key_t *hsm_key, const hsm_key_t *hsm_key_copy)
Definition: hsm_key.c:307
const char * hsm_key_repository(const hsm_key_t *hsm_key)
Definition: hsm_key.c:568
int hsm_key_list_object_store(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1486
const char * hsm_key_locator(const hsm_key_t *hsm_key)
Definition: hsm_key.c:520
int hsm_key_set_inception(hsm_key_t *hsm_key, unsigned int inception)
Definition: hsm_key.c:671
hsm_key_t * hsm_key_new_get_by_locator(const db_connection_t *connection, const char *locator)
Definition: hsm_key.c:1205
hsm_key_t * hsm_key_new(const db_connection_t *connection)
Definition: hsm_key.c:244
int hsm_key_set_bits(hsm_key_t *hsm_key, unsigned int bits)
Definition: hsm_key.c:638
const hsm_key_t * hsm_key_list_next(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1924
enum hsm_key_state hsm_key_state_t
const hsm_key_t * hsm_key_list_begin(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1832
int hsm_key_update(hsm_key_t *hsm_key)
Definition: hsm_key.c:1225
enum hsm_key_role hsm_key_role_t
int hsm_key_create(hsm_key_t *hsm_key)
Definition: hsm_key.c:927
int hsm_key_set_key_type(hsm_key_t *hsm_key, hsm_key_key_type_t key_type)
Definition: hsm_key.c:681
void hsm_key_list_free(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1496
db_clause_t * hsm_key_policy_id_clause(db_clause_list_t *clause_list, const db_value_t *policy_id)
Definition: hsm_key.c:729
int hsm_key_list_copy(hsm_key_list_t *hsm_key_list, const hsm_key_list_t *from_hsm_key_list)
Definition: hsm_key.c:1524
hsm_key_state
Definition: hsm_key.h:40
@ HSM_KEY_STATE_UNUSED
Definition: hsm_key.h:42
@ HSM_KEY_STATE_INVALID
Definition: hsm_key.h:41
@ HSM_KEY_STATE_PRIVATE
Definition: hsm_key.h:43
@ HSM_KEY_STATE_SHARED
Definition: hsm_key.h:44
@ HSM_KEY_STATE_DELETE
Definition: hsm_key.h:45
unsigned int hsm_key_algorithm(const hsm_key_t *hsm_key)
Definition: hsm_key.c:544
const db_enum_t hsm_key_enum_set_state[]
Definition: hsm_key.c:36
db_clause_t * hsm_key_is_revoked_clause(db_clause_list_t *clause_list, unsigned int is_revoked)
Definition: hsm_key.c:840
hsm_key_list_t * hsm_key_list_new_get_by_policy_id(const db_connection_t *connection, const db_value_t *policy_id)
Definition: hsm_key.c:1809
hsm_key_backup
Definition: hsm_key.h:64
@ HSM_KEY_BACKUP_BACKUP_REQUESTED
Definition: hsm_key.h:68
@ HSM_KEY_BACKUP_NO_BACKUP
Definition: hsm_key.h:66
@ HSM_KEY_BACKUP_INVALID
Definition: hsm_key.h:65
@ HSM_KEY_BACKUP_BACKUP_DONE
Definition: hsm_key.h:69
@ HSM_KEY_BACKUP_BACKUP_REQUIRED
Definition: hsm_key.h:67
int hsm_key_set_repository(hsm_key_t *hsm_key, const char *repository_text)
Definition: hsm_key.c:694
hsm_key_list_t * hsm_key_list_new(const db_connection_t *connection)
Definition: hsm_key.c:1453
enum hsm_key_key_type hsm_key_key_type_t
db_clause_t * hsm_key_backup_clause(db_clause_list_t *clause_list, hsm_key_backup_t backup)
Definition: hsm_key.c:906
int hsm_key_set_backup(hsm_key_t *hsm_key, hsm_key_backup_t backup)
Definition: hsm_key.c:716
unsigned int hsm_key_bits(const hsm_key_t *hsm_key)
Definition: hsm_key.c:536
int hsm_key_get_by_locator(hsm_key_t *hsm_key, const char *locator)
Definition: hsm_key.c:1155
int hsm_key_from_result(hsm_key_t *hsm_key, const db_result_t *result)
Definition: hsm_key.c:405
hsm_key_role
Definition: hsm_key.h:49
@ HSM_KEY_ROLE_INVALID
Definition: hsm_key.h:50
@ HSM_KEY_ROLE_KSK
Definition: hsm_key.h:51
@ HSM_KEY_ROLE_ZSK
Definition: hsm_key.h:52
@ HSM_KEY_ROLE_CSK
Definition: hsm_key.h:53
db_clause_t * hsm_key_algorithm_clause(db_clause_list_t *clause_list, unsigned int algorithm)
Definition: hsm_key.c:798
db_clause_t * hsm_key_repository_clause(db_clause_list_t *clause_list, const char *repository_text)
Definition: hsm_key.c:882
db_clause_t * hsm_key_state_clause(db_clause_list_t *clause_list, hsm_key_state_t state)
Definition: hsm_key.c:756
int hsm_key_set_policy_id(hsm_key_t *hsm_key, const db_value_t *policy_id)
Definition: hsm_key.c:584
const db_value_t * hsm_key_policy_id(const hsm_key_t *hsm_key)
Definition: hsm_key.c:512
hsm_key_t * hsm_key_new_copy(const hsm_key_t *hsm_key)
Definition: hsm_key.c:267
unsigned int hsm_key_inception(const hsm_key_t *hsm_key)
Definition: hsm_key.c:560
const db_value_t * hsm_key_id(const hsm_key_t *hsm_key)
Definition: hsm_key.c:504
int hsm_key_list_get_by_policy_id(hsm_key_list_t *hsm_key_list, const db_value_t *policy_id)
Definition: hsm_key.c:1746
db_clause_t * hsm_key_key_type_clause(db_clause_list_t *clause_list, hsm_key_key_type_t key_type)
Definition: hsm_key.c:861
hsm_key_t * hsm_key_list_get_next(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1990
const db_enum_t hsm_key_enum_set_backup[]
Definition: hsm_key.c:56
db_clause_t * hsm_key_bits_clause(db_clause_list_t *clause_list, unsigned int bits)
Definition: hsm_key.c:777
hsm_key_list_t * hsm_key_list_new_get_by_clauses(const db_connection_t *connection, const db_clause_list_t *clause_list)
Definition: hsm_key.c:1726
int hsm_key_get_by_id(hsm_key_t *hsm_key, const db_value_t *id)
Definition: hsm_key.c:1102
db_clause_t * hsm_key_role_clause(db_clause_list_t *clause_list, hsm_key_role_t role)
Definition: hsm_key.c:819
hsm_key_key_type
Definition: hsm_key.h:59
@ HSM_KEY_KEY_TYPE_RSA
Definition: hsm_key.h:61
@ HSM_KEY_KEY_TYPE_INVALID
Definition: hsm_key.h:60
int hsm_key_list_get_by_clauses(hsm_key_list_t *hsm_key_list, const db_clause_list_t *clause_list)
Definition: hsm_key.c:1684
int hsm_key_set_locator(hsm_key_t *hsm_key, const char *locator_text)
Definition: hsm_key.c:603
int hsm_key_set_algorithm(hsm_key_t *hsm_key, unsigned int algorithm)
Definition: hsm_key.c:648
const db_value_t * policy_id(const policy_t *policy)
Definition: policy.c:805
size_t object_list_position
Definition: hsm_key.h:444
int object_store
Definition: hsm_key.h:441
const db_result_t * result
Definition: hsm_key.h:439
int associated_fetch
Definition: hsm_key.h:446
hsm_key_t * hsm_key
Definition: hsm_key.h:440
policy_list_t * policy_id_list
Definition: hsm_key.h:447
db_result_list_t * result_list
Definition: hsm_key.h:438
hsm_key_t ** object_list
Definition: hsm_key.h:442
int object_list_first
Definition: hsm_key.h:445
size_t object_list_size
Definition: hsm_key.h:443
db_object_t * dbo
Definition: hsm_key.h:437
hsm_key_backup_t backup
Definition: hsm_key.h:95
hsm_key_state_t state
Definition: hsm_key.h:87
const policy_t * associated_policy_id
Definition: hsm_key.h:84
unsigned int inception
Definition: hsm_key.h:91
hsm_key_key_type_t key_type
Definition: hsm_key.h:93
char * locator
Definition: hsm_key.h:86
db_value_t policy_id
Definition: hsm_key.h:83
db_value_t rev
Definition: hsm_key.h:82
unsigned int bits
Definition: hsm_key.h:88
char * repository
Definition: hsm_key.h:94
policy_t * private_policy_id
Definition: hsm_key.h:85
db_value_t id
Definition: hsm_key.h:81
db_object_t * dbo
Definition: hsm_key.h:80
unsigned int is_revoked
Definition: hsm_key.h:92
hsm_key_role_t role
Definition: hsm_key.h:90
unsigned int algorithm
Definition: hsm_key.h:89
Definition: policy.h:60