]> granicus.if.org Git - p11-kit/commitdiff
Add basic tool for p11-kit.
authorStef Walter <stefw@collabora.co.uk>
Tue, 5 Apr 2011 14:56:08 +0000 (16:56 +0200)
committerStef Walter <stefw@collabora.co.uk>
Tue, 5 Apr 2011 15:49:34 +0000 (17:49 +0200)
List modules:
 $ p11-kit -l

.gitignore
Makefile.am
configure.ac
tools/Makefile.am [new file with mode: 0644]
tools/p11-kit.c [new file with mode: 0644]

index 2a16de92bc6be8515c71fd6828a47ace2dc527b6..cd9a488b603654d97bd62757404d03fc3a8be9df 100644 (file)
@@ -66,3 +66,5 @@ temp.txt
 /tests/hash-test
 /tests/conf-test
 /tests/uri-test
+
+/tools/p11-kit
index b5eccbba12e7d12fabaae638ee63926ff9192676..a0dd689020432f25099a43adacf7b72dd2cb6df3 100644 (file)
@@ -1,6 +1,7 @@
 
 SUBDIRS = \
        p11-kit \
+       tools \
        tests \
        doc \
        po
index 2892c70cd8b1b9523c5f59b788f92b6f9bec6726..d86c3189c9b8b909d72569e8feea943d047cfbdf 100644 (file)
@@ -153,6 +153,7 @@ AC_CONFIG_FILES([Makefile
        p11-kit/Makefile
        p11-kit/p11-kit.pc
        tests/Makefile
+       tools/Makefile
 ])
 AC_OUTPUT
 
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644 (file)
index 0000000..03f11e6
--- /dev/null
@@ -0,0 +1,12 @@
+
+INCLUDES = \
+       -I$(top_srcdir) \
+       -I$(top_srcdir)/p11-kit \
+       -DSRCDIR=\"$(srcdir)\" \
+       -DP11_KIT_API_SUBJECT_TO_CHANGE
+
+bin_PROGRAMS = \
+       p11-kit
+
+p11_kit_LDADD = \
+       $(top_builddir)/p11-kit/libp11-kit.la
diff --git a/tools/p11-kit.c b/tools/p11-kit.c
new file mode 100644 (file)
index 0000000..7e84416
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2011, Collabora Ltd.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *     * Redistributions of source code must retain the above
+ *       copyright notice, this list of conditions and the
+ *       following disclaimer.
+ *     * Redistributions in binary form must reproduce the
+ *       above copyright notice, this list of conditions and
+ *       the following disclaimer in the documentation and/or
+ *       other materials provided with the distribution.
+ *     * The names of contributors to this software may not be
+ *       used to endorse or promote products derived from this
+ *       software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * Author: Stef Walter <stefw@collabora.co.uk>
+ */
+
+#include "config.h"
+
+#include <assert.h>
+#include <err.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "p11-kit.h"
+
+typedef int (*operation) (int argc, char *argv[]);
+int verbose = 0;
+
+static void
+usage (void)
+{
+       fprintf (stderr, "usage: p11-kit [-v] -l\n");
+       fprintf (stderr, "       p11-kit -h\n");
+       exit (2);
+}
+
+static int
+list_modules (int argc, char *argv[])
+{
+       CK_FUNCTION_LIST_PTR *module_list;
+       char *name;
+       char *path;
+       CK_RV rv;
+       int i;
+
+       if (argc != 0)
+               usage ();
+
+       rv = p11_kit_initialize_registered ();
+       if (rv != CKR_OK)
+               errx (1, "couldn't initialize registered modules: %s",
+                     p11_kit_strerror (rv));
+
+       module_list = p11_kit_registered_modules ();
+       for (i = 0; module_list[i]; i++) {
+               name = p11_kit_registered_module_to_name (module_list[i]);
+               path = p11_kit_registered_option (module_list[i], "module");
+
+               printf ("%s: %s\n",
+                       name ? name : "(null)",
+                       path ? path : "(null)");
+
+               free (name);
+               free (path);
+       }
+
+       return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+       operation oper = NULL;
+       int opt;
+
+       while ((opt = getopt (argc, argv, "lv")) != -1) {
+               switch (opt) {
+               case 'l':
+                       if (oper != NULL)
+                               usage ();
+                       oper = list_modules;
+                       break;
+               case 'v':
+                       verbose = 1;
+                       setenv ("P11_KIT_DEBUG", "all", 1);
+                       break;
+               case 'h':
+               case '?':
+                       usage();
+                       break;
+               }
+       }
+
+       if (!oper)
+               usage ();
+
+       argc -= optind;
+       argv += optind;
+
+       return (oper) (argc, argv);
+}