initialize library in openac
authorAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 21 Mar 2008 10:42:05 +0000 (10:42 -0000)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 21 Mar 2008 10:42:05 +0000 (10:42 -0000)
src/openac/Makefile.am
src/openac/openac.c

index 1d8c8de..433fe51 100644 (file)
@@ -3,6 +3,8 @@ openac_SOURCES = openac.c
 dist_man_MANS = openac.8
 
 INCLUDES = -I$(top_srcdir)/src/libstrongswan
-AM_CFLAGS = -DIPSEC_CONFDIR=\"${confdir}\"
+AM_CFLAGS = -DIPSEC_CONFDIR=\"${confdir}\" \
+            -DIPSEC_DIR=\"${ipsecdir}\" \
+               -DIPSEC_PLUGINDIR=\"${plugindir}\"
 openac_LDADD = $(top_builddir)/src/libstrongswan/libstrongswan.la -lgmp
 
index 0b70726..1cbda67 100755 (executable)
@@ -33,6 +33,7 @@
 #include <time.h>
 #include <gmp.h>
 
+#include <library.h>
 #include <debug.h>
 #include <asn1/asn1.h>
 #include <asn1/ttodata.h>
@@ -297,14 +298,12 @@ int main(int argc, char **argv)
        char *groups = "";
        char buf[BUF_LEN];
 
-       chunk_t serial;
        chunk_t passphrase = { buf, 0 };
+       chunk_t serial = chunk_empty;
        chunk_t attr_chunk = chunk_empty;
 
        int status = 1;
        
-       options_t *options = options_create();
-
        /* enable openac debugging hook */
        dbg = openac_dbg;
 
@@ -312,6 +311,13 @@ int main(int argc, char **argv)
 
        openlog("openac", 0, LOG_AUTHPRIV);
 
+       /* initialize library */
+       library_init(IPSEC_DIR "/strongswan.conf");
+       lib->plugins->load(lib->plugins, IPSEC_PLUGINDIR, "libstrongswan-");
+
+       /* initialize optionsfrom */
+       options_t *options = options_create();
+
        /* handle arguments */
        for (;;)
        {
@@ -568,15 +574,25 @@ int main(int argc, char **argv)
                                                                           BUILD_SIGNING_CERT, signer_cert,
                                                                           BUILD_SIGNING_KEY, signer_key,
                                                                           BUILD_END);
-               attr_chunk = attr_cert->get_encoding(attr_cert);
+               if (!attr_cert)
+               {
+                       status = 1;
+                       goto end;
+               }
        
                /* write the attribute certificate to file */
+               attr_chunk = attr_cert->get_encoding(attr_cert);
                if (chunk_write(attr_chunk, outfile, "attribute cert", 0022, TRUE))
                {
                        write_serial(serial);
                        status = 0;
                }
        }
+       else
+       {
+               usage("some of the mandatory parameters --usercert --cert --key "
+                         "are missing");
+       }
 
 end:
        /* delete all dynamically allocated objects */
@@ -589,5 +605,6 @@ end:
        closelog();
        dbg = dbg_default;
        options->destroy(options);
+       library_deinit();
        exit(status);
 }