pubkey_speed: Add header and fix usage
[strongswan.git] / scripts / keyid2sql.c
index f7d447a..6e9a133 100644 (file)
@@ -1,7 +1,23 @@
+/*
+ * Copyright (C) 2008 Andreas Steffen
+ * Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
 
 #include <stdio.h>
 #include <library.h>
-#include <debug.h>
+#include <utils/debug.h>
+#include <credentials/keys/private_key.h>
+#include <credentials/keys/public_key.h>
 
 /**
  * print the keyids of a private or public key in sql format
@@ -10,13 +26,12 @@ int main(int argc, char *argv[])
 {
        public_key_t *public;
        private_key_t *private;
-       identification_t *keyid;
        chunk_t chunk;
        char buf[8096];
        int read, n;
-       
+
        library_init(NULL);
-       lib->plugins->load(lib->plugins, IPSEC_PLUGINDIR, "gmp pubkey sha1");
+       lib->plugins->load(lib->plugins, PLUGINS);
        atexit(library_deinit);
 
        read = fread(buf, 1, sizeof(buf), stdin);
@@ -25,51 +40,51 @@ int main(int argc, char *argv[])
                fprintf(stderr, "reading key failed.\n");
                return -1;
        }
-       
+
        chunk = chunk_create(buf, read);
-       
+
        private = lib->creds->create(lib->creds, CRED_PRIVATE_KEY, KEY_RSA,
-                                                                BUILD_BLOB_ASN1_DER, chunk_clone(chunk),
+                                                                BUILD_BLOB_PEM, chunk_clone(chunk),
                                                                 BUILD_END);
        if (private)
        {
-               keyid = private->get_id(private, ID_PUBKEY_INFO_SHA1);
-               chunk = keyid->get_encoding(keyid);
-
-               printf("%d, X'", ID_PUBKEY_INFO_SHA1);
-               for (n = 0; n < chunk.len; n++)
+               if (private->get_fingerprint(private, KEYID_PUBKEY_SHA1, &chunk))
                {
-                       printf("%.2x", chunk.ptr[n]);
+                       printf("%d, X'", ID_KEY_ID);
+                       for (n = 0; n < chunk.len; n++)
+                       {
+                               printf("%.2x", chunk.ptr[n]);
+                       }
+                       printf("'\n");
                }
-               printf("'\n");
                private->destroy(private);
                return 0;
        }
-       
+
        public = lib->creds->create(lib->creds, CRED_PUBLIC_KEY, KEY_ANY,
-                                                               BUILD_BLOB_ASN1_DER, chunk_clone(chunk),
+                                                               BUILD_BLOB_PEM, chunk_clone(chunk),
                                                                BUILD_END);
        if (!public)
        {
                public = lib->creds->create(lib->creds, CRED_PUBLIC_KEY, KEY_RSA,
-                                                                       BUILD_BLOB_ASN1_DER, chunk_clone(chunk),
+                                                                       BUILD_BLOB_PEM, chunk_clone(chunk),
                                                                        BUILD_END);
        }
        if (public)
        {
-               keyid = public->get_id(public, ID_PUBKEY_INFO_SHA1);
-               chunk = keyid->get_encoding(keyid);
-
-               printf("%d, X'", ID_PUBKEY_INFO_SHA1);
-               for (n = 0; n < chunk.len; n++)
+               if (public->get_fingerprint(public, KEYID_PUBKEY_SHA1, &chunk))
                {
-                       printf("%.2x", chunk.ptr[n]);
+                       printf("%d, X'", ID_KEY_ID);
+                       for (n = 0; n < chunk.len; n++)
+                       {
+                               printf("%.2x", chunk.ptr[n]);
+                       }
+                       printf("'\n");
                }
-               printf("'\n");
                public->destroy(public);
                return 0;
        }
-       
+
        fprintf(stderr, "unable to parse input key.\n");
        return -1;
 }