etc/services - sync with NetBSD-8
[minix.git] / external / bsd / bind / dist / bin / pkcs11 / pkcs11-tokens.c
blob737514b283b544581400b59e8f237044f65562da
1 /* $NetBSD: pkcs11-tokens.c,v 1.1.1.4 2014/12/10 03:34:27 christos Exp $ */
3 /*
4 * Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
11 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
13 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
15 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
19 /* Id */
21 /* pkcs11-tokens [-m module] */
23 /*! \file */
25 #include <config.h>
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <fcntl.h>
30 #include <errno.h>
31 #include <string.h>
32 #include <sys/types.h>
34 #include <isc/commandline.h>
35 #include <isc/mem.h>
36 #include <isc/result.h>
37 #include <isc/types.h>
39 #include <pk11/pk11.h>
40 #include <pk11/result.h>
42 int
43 main(int argc, char *argv[]) {
44 isc_result_t result;
45 char *lib_name = NULL;
46 int c, errflg = 0;
47 isc_mem_t *mctx = NULL;
48 pk11_context_t pctx;
50 while ((c = isc_commandline_parse(argc, argv, ":m:")) != -1) {
51 switch (c) {
52 case 'm':
53 lib_name = isc_commandline_argument;
54 break;
55 case ':':
56 fprintf(stderr, "Option -%c requires an operand\n",
57 isc_commandline_option);
58 errflg++;
59 break;
60 case '?':
61 default:
62 fprintf(stderr, "Unrecognised option: -%c\n",
63 isc_commandline_option);
64 errflg++;
68 if (errflg) {
69 fprintf(stderr, "Usage:\n");
70 fprintf(stderr, "\tpkcs11-tokens [-m module]\n");
71 exit(1);
74 if (isc_mem_create(0, 0, &mctx) != ISC_R_SUCCESS) {
75 fprintf(stderr, "isc_mem_create() failed\n");
76 exit(1);
79 pk11_result_register();
81 /* Initialize the CRYPTOKI library */
82 if (lib_name != NULL)
83 pk11_set_lib_name(lib_name);
85 result = pk11_get_session(&pctx, OP_ANY, ISC_FALSE, ISC_FALSE,
86 ISC_FALSE, NULL, 0);
87 if (result == PK11_R_NORANDOMSERVICE ||
88 result == PK11_R_NODIGESTSERVICE ||
89 result == PK11_R_NOAESSERVICE) {
90 fprintf(stderr, "Warning: %s\n", isc_result_totext(result));
91 fprintf(stderr, "This HSM will not work with BIND 9 "
92 "using native PKCS#11.\n\n");
93 } else if (result != ISC_R_SUCCESS) {
94 fprintf(stderr, "Unrecoverable error initializing "
95 "PKCS#11: %s\n", isc_result_totext(result));
96 exit(1);
99 pk11_dump_tokens();
101 if (pctx.handle != NULL)
102 pk11_return_session(&pctx);
103 (void) pk11_finalize();
105 isc_mem_destroy(&mctx);
107 exit(0);