check return value and act accordingly
authorMarcel Poul <marcel.poul@cern.ch>
Sun, 26 Feb 2012 15:56:19 +0000 (15:56 +0000)
committerMarcel Poul <marcel.poul@cern.ch>
Sun, 26 Feb 2012 15:56:19 +0000 (15:56 +0000)
emi.canl.canl-c/examples/grid-proxy-init.c

index f48c180..fbfabb0 100644 (file)
@@ -11,44 +11,87 @@ main(int argc, char *argv[])
     canl_cred signer = NULL;
     canl_cred proxy = NULL;
     canl_ctx ctx = NULL;
-    canl_err_code ret;
+    canl_err_code ret = 0;
 
     ctx = canl_create_ctx();
     if (ctx == NULL) {
-       fprintf(stderr, "Failed to create library context\n");
+       fprintf(stderr, "[PROXY-INIT] Failed to create library context\n");
        return 1;
     }
 
-/* First create a certificate request with a brand-new keypair */
+    /* First create a certificate request with a brand-new keypair */
     ret = canl_cred_new(ctx, &proxy);
+    if (ret){
+        fprintf(stderr, "[PROXY-INIT] Proxy context cannot be created"
+                ": %s\n", canl_get_error_message(ctx));
+        goto end;
+    }
     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;
+       fprintf(stderr, "[PROXY-INIT] Failed to create certificate "
+                "request container: %s\n", canl_get_error_message(ctx));
+       goto end;
     }
 
     /*Create key-pairs implicitly*/
     ret = canl_cred_set_lifetime(ctx, proxy, LIFETIME);
+    if (ret)
+       fprintf(stderr, "[PROXY-INIT] Failed set new cert lifetime"
+                ": %s\n", canl_get_error_message(ctx));
+    
     ret = canl_cred_set_cert_type(ctx, proxy, CANL_RFC);
-
+    if (ret)
+       fprintf(stderr, "[PROXY-INIT] Failed set new cert type"
+                ": %s\n", canl_get_error_message(ctx));
+    
     /* Load the signing credentials */
     ret = canl_cred_new(ctx, &signer);
+    if (ret){
+        fprintf(stderr, "[PROXY-INIT] Proxy context cannot be created"
+                ": %s\n", canl_get_error_message(ctx));
+        goto end;
+    }
+    
     ret = canl_cred_load_cert_file(ctx, signer, USERCERT);
+    if (ret){
+        fprintf(stderr, "[PROXY-INIT] Cannot load signer's certificate"
+                ": %s\n", canl_get_error_message(ctx));
+        goto end;
+    }
     ret = canl_cred_load_priv_key_file(ctx, signer, USERKEY, NULL, NULL);
-    /* export lookup routines ?? */
+    if (ret){
+        fprintf(stderr, "[PROXY-INIT] Cannot access signer's key"
+                ": %s\n", canl_get_error_message(ctx));
+        goto end;
+    }
+    /*TODO? export lookup routines ?? */
 
 #ifdef VOMS
     GET_VOMS_EXTS(ctx, signer, STACK_OF(EXTS));
-    foreach (EXTS)
-       ret = canl_cred_set_ext(ctx, proxy, ext);
+    foreach (EXTS) {
+        ret = canl_cred_set_extension(ctx, proxy, ext);
+        if (ret){
+            fprintf(stderr, "[PROXY-INIT] Cannot set voms extension"
+                    ": %s\n", canl_get_error_message(ctx));
+        }
+    }
 #endif
 
 /* Create the proxy certificate */
     ret = canl_cred_sign_proxy(ctx, signer, proxy);
+    if (ret){
+        fprintf(stderr, "[PROXY-INIT] Cannot sign new proxy"
+                ": %s\n", canl_get_error_message(ctx));
+        goto end;
+    }
 
 /* and store it in a file */
     ret = canl_cred_save_proxyfile(ctx, proxy, "/tmp/x509up_u11930");
+    if (ret){
+        fprintf(stderr, "[PROXY-INIT] Cannot save new proxy"
+                ": %s\n", canl_get_error_message(ctx));
+        goto end;
+    }
 
     ret = 0;