OpenDNSSEC-enforcer  1.4.7
test_ksm_policy.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008-2009 Nominet UK. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
17  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
19  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
21  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
23  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  *
25  */
26 
27 /*+
28  * Filename: test_ksm_policy.c - Test Key Purge Module
29  *
30  * Description:
31  * This is a short test module to check the function in the Ksm Purge
32  * module.
33  *
34  * The test program makes use of the CUnit framework, as described in
35  * http://cunit.sourceforge.net
36 -*/
37 
38 #include <stdlib.h>
39 #include <stdio.h>
40 #include <string.h>
41 #include <time.h>
42 
43 #include "CUnit/Basic.h"
44 
45 #include "ksm/ksm.h"
46 #include "test_routines.h"
47 
48 
49 /*+
50  * TestKsmPolicyRead - Test
51  *
52  * Description:
53  * Tests that a polcy can be returned
54 -*/
55 
56 static void TestKsmPolicyRead(void)
57 {
58  int status; /* Status return */
59  KSM_POLICY* policy;
60  policy = (KSM_POLICY *)malloc(sizeof(KSM_POLICY));
61  policy->signer = (KSM_SIGNER_POLICY *)malloc(sizeof(KSM_SIGNER_POLICY));
62  policy->signature = (KSM_SIGNATURE_POLICY *)malloc(sizeof(KSM_SIGNATURE_POLICY));
63  policy->zone = (KSM_ZONE_POLICY *)malloc(sizeof(KSM_ZONE_POLICY));
64  policy->parent = (KSM_PARENT_POLICY *)malloc(sizeof(KSM_PARENT_POLICY));
65  policy->keys = (KSM_COMMON_KEY_POLICY *)malloc(sizeof(KSM_COMMON_KEY_POLICY));
66  policy->ksk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
67  policy->zsk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
68  policy->denial = (KSM_DENIAL_POLICY *)malloc(sizeof(KSM_DENIAL_POLICY));
69  policy->enforcer = (KSM_ENFORCER_POLICY *)malloc(sizeof(KSM_ENFORCER_POLICY));
70  policy->description = (char *)calloc(KSM_POLICY_DESC_LENGTH, sizeof(char));
71 
72  snprintf(policy->name, KSM_NAME_LENGTH, "default");
73 
74  /* Call KsmPolicyRead */
75 
76  status = KsmPolicyRead(policy);
77 
78  CU_ASSERT_EQUAL(status, 0);
79  CU_ASSERT_EQUAL(policy->id, 2);
80 
81  /* Call KsmPolicyRead again */
82 
83  status = KsmPolicyRead(policy);
84 
85  CU_ASSERT_EQUAL(status, 0);
86 
87  KsmPolicyFree(policy);
88 }
89 
90 static void TestKsmPolicyReadId(void)
91 {
92  int status; /* Status return */
93  KSM_POLICY* policy;
94  policy = (KSM_POLICY *)malloc(sizeof(KSM_POLICY));
95  policy->signer = (KSM_SIGNER_POLICY *)malloc(sizeof(KSM_SIGNER_POLICY));
96  policy->signature = (KSM_SIGNATURE_POLICY *)malloc(sizeof(KSM_SIGNATURE_POLICY));
97  policy->zone = (KSM_ZONE_POLICY *)malloc(sizeof(KSM_ZONE_POLICY));
98  policy->parent = (KSM_PARENT_POLICY *)malloc(sizeof(KSM_PARENT_POLICY));
99  policy->keys = (KSM_COMMON_KEY_POLICY *)malloc(sizeof(KSM_COMMON_KEY_POLICY));
100  policy->ksk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
101  policy->zsk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
102  policy->denial = (KSM_DENIAL_POLICY *)malloc(sizeof(KSM_DENIAL_POLICY));
103  policy->enforcer = (KSM_ENFORCER_POLICY *)malloc(sizeof(KSM_ENFORCER_POLICY));
104  policy->description = (char *)calloc(KSM_POLICY_DESC_LENGTH, sizeof(char));
105 
106 
107  policy->id = 2;
108 
109  /* Call KsmPolicyReadFromId */
110 
111  status = KsmPolicyReadFromId(policy);
112 
113  CU_ASSERT_EQUAL(status, 0);
114 
115  /* Call KsmPolicyRead again */
116 
117  status = KsmPolicyReadFromId(policy);
118 
119  CU_ASSERT_EQUAL(status, 0);
120 
121  KsmPolicyFree(policy);
122 }
123 
124 static void TestKsmPolicy2(void)
125 {
126  DB_RESULT result;
127  int status = 0;
128  int i;
129  KSM_POLICY *policy;
130  policy = (KSM_POLICY *)malloc(sizeof(KSM_POLICY));
131  policy->signer = (KSM_SIGNER_POLICY *)malloc(sizeof(KSM_SIGNER_POLICY));
132  policy->signature = (KSM_SIGNATURE_POLICY *)malloc(sizeof(KSM_SIGNATURE_POLICY));
133  policy->zone = (KSM_ZONE_POLICY *)malloc(sizeof(KSM_ZONE_POLICY));
134  policy->parent = (KSM_PARENT_POLICY *)malloc(sizeof(KSM_PARENT_POLICY));
135  policy->keys = (KSM_COMMON_KEY_POLICY *)malloc(sizeof(KSM_COMMON_KEY_POLICY));
136  policy->ksk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
137  policy->zsk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
138  policy->denial = (KSM_DENIAL_POLICY *)malloc(sizeof(KSM_DENIAL_POLICY));
139  policy->enforcer = (KSM_ENFORCER_POLICY *)malloc(sizeof(KSM_ENFORCER_POLICY));
140  policy->description = (char *)calloc(KSM_POLICY_DESC_LENGTH, sizeof(char));
141 
142 
143  for (i=1; i<5 ; i++) {
144  printf("Try: %i\n",i);
145  /* Read all policies */
146  status = KsmPolicyInit(&result, NULL);
147  if (status == 0) {
148  /* get the first policy */
149  status = KsmPolicy(result, policy);
150  while (status == 0) {
151 
152  /* get next policy */
153  status = KsmPolicy(result, policy);
154  }
155  }
156 
157  DbFreeResult(result);
158 
159  }
160 
161  KsmPolicyFree(policy);
162 }
163 
164 /*+
165  * TestKsmPolicySalt - Test
166  *
167  * Description:
168  * Tests that salt can be updated and returned
169 -*/
170 
171 static void TestKsmPolicySalt(void)
172 {
173  int status; /* Status return */
174  KSM_POLICY* policy;
175  policy = (KSM_POLICY *)malloc(sizeof(KSM_POLICY));
176  policy->signer = (KSM_SIGNER_POLICY *)malloc(sizeof(KSM_SIGNER_POLICY));
177  policy->signature = (KSM_SIGNATURE_POLICY *)malloc(sizeof(KSM_SIGNATURE_POLICY));
178  policy->zone = (KSM_ZONE_POLICY *)malloc(sizeof(KSM_ZONE_POLICY));
179  policy->parent = (KSM_PARENT_POLICY *)malloc(sizeof(KSM_PARENT_POLICY));
180  policy->keys = (KSM_COMMON_KEY_POLICY *)malloc(sizeof(KSM_COMMON_KEY_POLICY));
181  policy->ksk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
182  policy->zsk = (KSM_KEY_POLICY *)malloc(sizeof(KSM_KEY_POLICY));
183  policy->denial = (KSM_DENIAL_POLICY *)malloc(sizeof(KSM_DENIAL_POLICY));
184  policy->enforcer = (KSM_ENFORCER_POLICY *)malloc(sizeof(KSM_ENFORCER_POLICY));
185  policy->description = (char *)calloc(KSM_POLICY_DESC_LENGTH, sizeof(char));
186 
187  snprintf(policy->name, KSM_NAME_LENGTH, "default");
188 
189  policy->id = 2;
190  policy->denial->resalt = 0;
191  policy->denial->saltlength = 30;
192 
193  /* Do the salt/resalt */
194 
195  status = KsmPolicyUpdateSalt(policy);
196 
197  CU_ASSERT_EQUAL(status, 0);
198 
199  KsmPolicyFree(policy);
200 
201  DbCommit();
202 }
203 
204 /*
205  * TestKsmPolicy - Create Test Suite
206  *
207  * Description:
208  * Adds the test suite to the CUnit test registry and adds all the tests
209  * to it.
210  *
211  * Arguments:
212  * None.
213  *
214  * Returns:
215  * int
216  * Return status. 0 => Success.
217  */
218 
219 int TestKsmPolicy(void); /* Declaration */
220 int TestKsmPolicy(void)
221 {
222  struct test_testdef tests[] = {
223  {"KsmPolicy", TestKsmPolicyRead},
224  {"KsmPolicyFromId", TestKsmPolicyReadId},
225  {"KsmPolicy2", TestKsmPolicy2},
226  {"KsmPolicySalt", TestKsmPolicySalt},
227  {NULL, NULL}
228  };
229 
230  /* TODO
231  * have been a bit lazy here and reuse TdbSetup etc...
232  * this has the consequence of all the setups running for each suite
233  * if this gets too slow then we will need to separate them out
234  * */
235  return TcuCreateSuite("KsmPolicy", TdbSetup, TdbTeardown, tests);
236 }
void DbFreeResult(DB_RESULT result)
int KsmPolicyInit(DB_RESULT *handle, const char *name)
Definition: ksm_policy.c:69
char name[KSM_NAME_LENGTH]
Definition: ksm.h:242
int KsmPolicy(DB_RESULT handle, KSM_POLICY *data)
Definition: ksm_policy.c:191
KSM_COMMON_KEY_POLICY * keys
Definition: ksm.h:247
int TcuCreateSuite(const char *title, int(*init)(), int(*teardown)(), struct test_testdef *tests)
KSM_KEY_POLICY * zsk
Definition: ksm.h:249
int KsmPolicyUpdateSalt(KSM_POLICY *policy)
Definition: ksm_policy.c:501
int KsmPolicyRead(KSM_POLICY *policy)
Definition: ksm_policy.c:232
#define KSM_NAME_LENGTH
Definition: ksm.h:57
int KsmPolicyReadFromId(KSM_POLICY *policy)
Definition: ksm_policy.c:420
int saltlength
Definition: ksm.h:190
int DbCommit(void)
KSM_PARENT_POLICY * parent
Definition: ksm.h:252
KSM_DENIAL_POLICY * denial
Definition: ksm.h:246
KSM_KEY_POLICY * ksk
Definition: ksm.h:248
KSM_ZONE_POLICY * zone
Definition: ksm.h:251
void KsmPolicyFree(KSM_POLICY *policy)
Definition: ksm_policy.c:997
KSM_SIGNER_POLICY * signer
Definition: ksm.h:244
#define KSM_POLICY_DESC_LENGTH
Definition: ksm.h:60
char * description
Definition: ksm.h:243
int TdbTeardown(void)
int TdbSetup(void)
int TestKsmPolicy(void)
int id
Definition: ksm.h:241
KSM_ENFORCER_POLICY * enforcer
Definition: ksm.h:250
KSM_SIGNATURE_POLICY * signature
Definition: ksm.h:245