OpenDNSSEC-enforcer  2.1.9
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 
35 struct hsm_key;
36 struct hsm_key_list;
37 typedef struct hsm_key hsm_key_t;
38 typedef struct hsm_key_list hsm_key_list_t;
39 
40 typedef enum hsm_key_state {
47 extern const db_enum_t hsm_key_enum_set_state[];
48 
49 typedef enum hsm_key_role {
55 extern 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 
59 typedef enum hsm_key_key_type {
63 
64 typedef enum hsm_key_backup {
71 extern const db_enum_t hsm_key_enum_set_backup[];
72 
73 #include "hsm_key_ext.h"
74 #include "policy.h"
75 
79 struct hsm_key {
86  char* locator;
88  unsigned int bits;
89  unsigned int algorithm;
91  unsigned int inception;
92  unsigned int is_revoked;
94  char* repository;
96 };
97 
103 extern hsm_key_t* hsm_key_new(const db_connection_t* connection);
104 
111 
116 extern void hsm_key_free(hsm_key_t* hsm_key);
117 
125 
132 extern int hsm_key_from_result(hsm_key_t* hsm_key, const db_result_t* result);
133 
139 extern const db_value_t* hsm_key_id(const hsm_key_t* hsm_key);
140 
146 extern const db_value_t* hsm_key_policy_id(const hsm_key_t* hsm_key);
147 
153 extern const char* hsm_key_locator(const hsm_key_t* hsm_key);
154 
161 
167 extern unsigned int hsm_key_bits(const hsm_key_t* hsm_key);
168 
174 extern unsigned int hsm_key_algorithm(const hsm_key_t* hsm_key);
175 
182 
188 extern unsigned int hsm_key_inception(const hsm_key_t* hsm_key);
189 
195 extern const char* hsm_key_repository(const hsm_key_t* hsm_key);
196 
203 
211 
218 extern int hsm_key_set_locator(hsm_key_t* hsm_key, const char* locator_text);
219 
227 
234 extern int hsm_key_set_bits(hsm_key_t* hsm_key, unsigned int bits);
235 
242 extern int hsm_key_set_algorithm(hsm_key_t* hsm_key, unsigned int algorithm);
243 
251 
258 extern int hsm_key_set_inception(hsm_key_t* hsm_key, unsigned int inception);
259 
267 
274 extern int hsm_key_set_repository(hsm_key_t* hsm_key, const char* repository_text);
275 
283 
294 
305 
315 extern db_clause_t* hsm_key_bits_clause(db_clause_list_t* clause_list, unsigned int bits);
316 
326 extern db_clause_t* hsm_key_algorithm_clause(db_clause_list_t* clause_list, unsigned int algorithm);
327 
338 
348 extern db_clause_t* hsm_key_is_revoked_clause(db_clause_list_t* clause_list, unsigned int is_revoked);
349 
360 
370 extern db_clause_t* hsm_key_repository_clause(db_clause_list_t* clause_list, const char* repository_text);
371 
382 
388 extern int hsm_key_create(hsm_key_t* hsm_key);
389 
396 extern int hsm_key_get_by_id(hsm_key_t* hsm_key, const db_value_t* id);
397 
404 extern int hsm_key_get_by_locator(hsm_key_t* hsm_key, const char* locator);
405 
412 extern hsm_key_t* hsm_key_new_get_by_locator(const db_connection_t* connection, const char* locator);
413 
419 extern int hsm_key_update(hsm_key_t* hsm_key);
420 
431 extern int hsm_key_count(hsm_key_t* hsm_key, db_clause_list_t* clause_list, size_t* count);
432 
436 struct hsm_key_list {
448 };
449 
455 extern hsm_key_list_t* hsm_key_list_new(const db_connection_t* connection);
456 
463 
471 
477 
488 extern int hsm_key_list_copy(hsm_key_list_t* hsm_key_list, const hsm_key_list_t* from_hsm_key_list);
489 
497 
504 extern 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_new_copy(const hsm_key_t *hsm_key)
Definition: hsm_key.c:267
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_t * hsm_key_new(const db_connection_t *connection)
Definition: hsm_key.c:244
void hsm_key_free(hsm_key_t *hsm_key)
Definition: hsm_key.c:286
db_clause_t * hsm_key_is_revoked_clause(db_clause_list_t *clause_list, unsigned int is_revoked)
Definition: hsm_key.c:840
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
const char * hsm_key_repository(const hsm_key_t *hsm_key)
Definition: hsm_key.c:568
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
const hsm_key_t * hsm_key_list_begin(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1832
int hsm_key_copy(hsm_key_t *hsm_key, const hsm_key_t *hsm_key_copy)
Definition: hsm_key.c:307
int hsm_key_list_object_store(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1486
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
const hsm_key_t * hsm_key_list_next(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1924
hsm_key_t * hsm_key_list_get_begin(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1888
int hsm_key_set_inception(hsm_key_t *hsm_key, unsigned int inception)
Definition: hsm_key.c:671
db_clause_t * hsm_key_bits_clause(db_clause_list_t *clause_list, unsigned int bits)
Definition: hsm_key.c:777
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_bits(hsm_key_t *hsm_key, unsigned int bits)
Definition: hsm_key.c:638
hsm_key_t * hsm_key_list_get_next(hsm_key_list_t *hsm_key_list)
Definition: hsm_key.c:1990
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
enum hsm_key_state hsm_key_state_t
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
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
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_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
db_clause_t * hsm_key_algorithm_clause(db_clause_list_t *clause_list, unsigned int algorithm)
Definition: hsm_key.c:798
const db_enum_t hsm_key_enum_set_state[]
Definition: hsm_key.c:36
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
enum hsm_key_key_type hsm_key_key_type_t
const db_value_t * hsm_key_policy_id(const hsm_key_t *hsm_key)
Definition: hsm_key.c:512
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_list_t * hsm_key_list_new_copy(const hsm_key_list_t *hsm_key_copy)
Definition: hsm_key.c:1467
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
const char * hsm_key_locator(const hsm_key_t *hsm_key)
Definition: hsm_key.c:520
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_id(const hsm_key_t *hsm_key)
Definition: hsm_key.c:504
unsigned int hsm_key_inception(const hsm_key_t *hsm_key)
Definition: hsm_key.c:560
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_repository_clause(db_clause_list_t *clause_list, const char *repository_text)
Definition: hsm_key.c:882
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
hsm_key_list_t * hsm_key_list_new(const db_connection_t *connection)
Definition: hsm_key.c:1453
const db_enum_t hsm_key_enum_set_backup[]
Definition: hsm_key.c:56
hsm_key_t * hsm_key_new_get_by_locator(const db_connection_t *connection, const char *locator)
Definition: hsm_key.c:1205
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_state_clause(db_clause_list_t *clause_list, hsm_key_state_t state)
Definition: hsm_key.c:756
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