build canl-proxy-init example
authorMarcel Poul <marcel.poul@cern.ch>
Sun, 26 Feb 2012 14:44:37 +0000 (14:44 +0000)
committerMarcel Poul <marcel.poul@cern.ch>
Sun, 26 Feb 2012 14:44:37 +0000 (14:44 +0000)
emi.canl.canl-c/Makefile
emi.canl.canl-c/examples/grid-proxy-init.c

index ece85c0..9189773 100644 (file)
@@ -28,6 +28,9 @@ LFLAGS_CLI=-L. -lcanl_c
 CFLAGS_SER=-Wall -g -I${top_srcdir}/src -I.
 LFLAGS_SER=-L. -lcanl_c
 
+CFLAGS_PRX=-Wall -g -I${top_srcdir}/src -I.
+LFLAGS_PRX=-L. -lcanl_c
+
 HEAD_CANL=canl.h canl_locl.h canl_err.h canl_cred.h canl_ssl.h
 
 SRC_CLI=canl_sample_client.c
@@ -38,6 +41,10 @@ SRC_SER=canl_sample_server.c
 HEAD_SER=canl.h
 OBJ_SER=canl_sample_server.lo
 
+SRC_PRX=grid-proxy-init.c
+HEAD_PRX=canl.h canl_cred.h
+OBJ_PRX=canl_proxy_init.lo
+
 CFLAGS:=-Wall -g -I${top_srcdir}/src/proxy -I. ${CFLAGS}
 
 LIBCANL=libcanl_c.la
@@ -56,7 +63,7 @@ version_info:=-version-info ${shell \
 major:=${shell \
        perl -e '$$,=":"; @F=split "\\.","${module.version}"; print $$F[0]+$$F[1]+${offset}' }
 
-all: ${LIBCANL} server client
+all: ${LIBCANL} server client proxy
 
 ${LIBCANL}:\
        canl.lo canl_err.lo canl_dns.lo canl_ssl.lo canl_cert.lo canl_cred.lo                   \
@@ -90,6 +97,13 @@ server: ${OBJ_SER}
 ${OBJ_SER}: ${SRC_SER} ${HEAD_SER} ${LIBCANL}
        ${COMPILE} -c ${top_srcdir}/examples/${SRC_SER} ${CFLAGS_SER} -o $@
 
+proxy: ${OBJ_PRX}
+       ${LINK} $< ${LFLAGS_PRX} -o $@
+
+${OBJ_PRX}: ${SRC_PRX} ${HEAD_PRX} ${LIBCANL}
+       ${COMPILE} -c ${top_srcdir}/examples/${SRC_PRX} ${CFLAGS_PRX} -o $@
+
+
 canl_err.h: canl_error_codes 
        ${top_srcdir}/src/gen_err_codes.pl < $^ > $@
 
@@ -104,14 +118,19 @@ install: all
        mkdir -p ${DESTDIR}${PREFIX}${prefix}/include
        ${INSTALL} -m 755 server ${DESTDIR}${PREFIX}${prefix}/bin/emi-canl-server
        ${INSTALL} -m 755 client ${DESTDIR}${PREFIX}${prefix}/bin/emi-canl-client
+       ${INSTALL} -m 755 proxy \
+               ${DESTDIR}${PREFIX}${prefix}/bin/emi-canl-proxy-init
        ${INSTALL} -m 755 ${LIBCANL} ${DESTDIR}${PREFIX}${prefix}/${libdir}
-       ${INSTALL} -m 644 ${top_srcdir}/src/canl.h ${top_srcdir}/src/canl_ssl.h canl_err.h ${DESTDIR}${PREFIX}${prefix}/include
+       ${INSTALL} -m 644 ${top_srcdir}/src/canl.h \
+               ${top_srcdir}/src/canl_ssl.h canl_err.h \
+               ${DESTDIR}${PREFIX}${prefix}/include
 
 stage: all
        $(MAKE) install PREFIX=${stagedir}
 
 clean:
-       rm -rfv *.o *.lo ${LIBCANL} .libs client server ${top_srcdir}/*.c ${top_srcdir}/*.h lex.backup stage
+       rm -rfv *.o *.lo ${LIBCANL} .libs client server \
+               ${top_srcdir}/*.c ${top_srcdir}/*.h lex.backup stage
 
 distclean:
        rm -rvf Makefile.inc config.status project/changelog *.spec debian/
index 118e37d..f48c180 100644 (file)
@@ -1,12 +1,15 @@
 #include <canl.h>
 #include <canl_cred.h>
 
+#define BITS 1024
+#define LIFETIME 600
+#define USERCERT "$HOME/.globus/usercert.pem"
+#define USERKEY "$HOME/.globus/userkey.pem"
 int
 main(int argc, char *argv[])
 {
     canl_cred signer = NULL;
     canl_cred proxy = NULL;
-    canl_x509_req proxy_req = NULL;
     canl_ctx ctx = NULL;
     canl_err_code ret;
 
@@ -17,23 +20,22 @@ main(int argc, char *argv[])
     }
 
 /* First create a certificate request with a brand-new keypair */
-    ret = canl_req_create(ctx, &proxy_req);
+    ret = canl_cred_new(ctx, &proxy);
+    ret = canl_cred_new_req(ctx, proxy, BITS);
     if (ret) {
        fprintf(stderr, "Failed to create certificate request container: %s\n",
                canl_get_error_message(ctx));
        return 1;
     }
 
-/* Create a new structure for the proxy certificate to be signed copying the key-pairs just created */
-    ret = canl_cred_new(ctx, &proxy);
-    ret = canl_cred_load_req(ctx, proxy, proxy_req);
-    ret = canl_cred_set_lifetime(ctx, proxy, 60*10);
+    /*Create key-pairs implicitly*/
+    ret = canl_cred_set_lifetime(ctx, proxy, LIFETIME);
     ret = canl_cred_set_cert_type(ctx, proxy, CANL_RFC);
 
-/* Load the signing credentials */
+    /* Load the signing credentials */
     ret = canl_cred_new(ctx, &signer);
-    ret = canl_cred_load_cert_file(ctx, signer, "$HOME/.globus/usercert.pem");
-    ret = canl_cred_load_priv_key_file(ctx, signer, "$HOME/.globus/userkey.pem", NULL, NULL);
+    ret = canl_cred_load_cert_file(ctx, signer, USERCERT);
+    ret = canl_cred_load_priv_key_file(ctx, signer, USERKEY, NULL, NULL);
     /* export lookup routines ?? */
 
 #ifdef VOMS
@@ -55,8 +57,6 @@ end:
        canl_cred_free(ctx, signer);
     if (proxy)
        canl_cred_free(ctx, proxy);
-    if (proxy_req)
-       canl_req_free(ctx, proxy_req);
     if (ctx)
        canl_free_ctx(ctx);