• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * kernel_driver.c
3  *
4  * a test driver for the crypto_kernel
5  *
6  * David A. McGrew
7  * Cisco Systems, Inc.
8  */
9 /*
10  *
11  * Copyright(c) 2001-2006 Cisco Systems, Inc.
12  * All rights reserved.
13  *
14  * Redistribution and use in source and binary forms, with or without
15  * modification, are permitted provided that the following conditions
16  * are met:
17  *
18  *   Redistributions of source code must retain the above copyright
19  *   notice, this list of conditions and the following disclaimer.
20  *
21  *   Redistributions in binary form must reproduce the above
22  *   copyright notice, this list of conditions and the following
23  *   disclaimer in the documentation and/or other materials provided
24  *   with the distribution.
25  *
26  *   Neither the name of the Cisco Systems, Inc. nor the names of its
27  *   contributors may be used to endorse or promote products derived
28  *   from this software without specific prior written permission.
29  *
30  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
33  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
34  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
35  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
36  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
37  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
41  * OF THE POSSIBILITY OF SUCH DAMAGE.
42  *
43  */
44 
45 
46 #include <stdio.h>           /* for printf() */
47 #include <unistd.h>          /* for getopt() */
48 #include "crypto_kernel.h"
49 
50 void
usage(char * prog_name)51 usage(char *prog_name) {
52   printf("usage: %s [ -v ][ -d debug_module ]*\n", prog_name);
53   exit(255);
54 }
55 
56 int
main(int argc,char * argv[])57 main (int argc, char *argv[]) {
58   extern char *optarg;
59   int q;
60   int do_validation      = 0;
61   err_status_t status;
62 
63   if (argc == 1)
64     usage(argv[0]);
65 
66   /* initialize kernel - we need to do this before anything else */
67   status = crypto_kernel_init();
68   if (status) {
69     printf("error: crypto_kernel init failed\n");
70     exit(1);
71   }
72   printf("crypto_kernel successfully initalized\n");
73 
74   /* process input arguments */
75   while (1) {
76     q = getopt(argc, argv, "vd:");
77     if (q == -1)
78       break;
79     switch (q) {
80     case 'v':
81       do_validation = 1;
82       break;
83     case 'd':
84       status = crypto_kernel_set_debug_module(optarg, 1);
85       if (status) {
86 	printf("error: set debug module (%s) failed\n", optarg);
87 	exit(1);
88       }
89       break;
90     default:
91       usage(argv[0]);
92     }
93   }
94 
95   if (do_validation) {
96     printf("checking crypto_kernel status...\n");
97     status = crypto_kernel_status();
98     if (status) {
99       printf("failed\n");
100       exit(1);
101     }
102     printf("crypto_kernel passed self-tests\n");
103   }
104 
105   status = crypto_kernel_shutdown();
106   if (status) {
107     printf("error: crypto_kernel shutdown failed\n");
108     exit(1);
109   }
110   printf("crypto_kernel successfully shut down\n");
111 
112   return 0;
113 }
114 
115 /*
116  * crypto_kernel_cipher_test() is a test of the cipher interface
117  * of the crypto_kernel
118  */
119 
120 err_status_t
crypto_kernel_cipher_test(void)121 crypto_kernel_cipher_test(void) {
122 
123   /* not implemented yet! */
124 
125   return err_status_ok;
126 }
127