From b09130b92e71a98dccc0a5c399ae33435fe2579c Mon Sep 17 00:00:00 2001
From: Jonas Olausson <j.olausson@student.unimelb.edu.au>
Date: Wed, 23 May 2018 20:18:44 +1000
Subject: [PATCH] removed path manipulation

---
 certexample                                   | Bin 16292 -> 16292 bytes
 certexample.c                                 |  71 ++++++++----------
 .../sample_input.csv => sample_input.csv      |   0
 ...nput_single.csv => sample_input_single.csv |   0
 .../sample_output.csv => sample_output.csv    |   0
 sample_certs/testeight.crt => testeight.crt   |   0
 sample_certs/testeleven.crt => testeleven.crt |   0
 sample_certs/testfive.crt => testfive.crt     |   0
 sample_certs/testfour.crt => testfour.crt     |   0
 sample_certs/testnine.crt => testnine.crt     |   0
 sample_certs/testone.crt => testone.crt       |   0
 sample_certs/testseven.crt => testseven.crt   |   0
 sample_certs/testsix.crt => testsix.crt       |   0
 sample_certs/testten.crt => testten.crt       |   0
 sample_certs/testthree.crt => testthree.crt   |   0
 sample_certs/testtwo.crt => testtwo.crt       |   0
 16 files changed, 33 insertions(+), 38 deletions(-)
 rename sample_certs/sample_input.csv => sample_input.csv (100%)
 rename sample_certs/sample_input_single.csv => sample_input_single.csv (100%)
 rename sample_certs/sample_output.csv => sample_output.csv (100%)
 rename sample_certs/testeight.crt => testeight.crt (100%)
 rename sample_certs/testeleven.crt => testeleven.crt (100%)
 rename sample_certs/testfive.crt => testfive.crt (100%)
 rename sample_certs/testfour.crt => testfour.crt (100%)
 rename sample_certs/testnine.crt => testnine.crt (100%)
 rename sample_certs/testone.crt => testone.crt (100%)
 rename sample_certs/testseven.crt => testseven.crt (100%)
 rename sample_certs/testsix.crt => testsix.crt (100%)
 rename sample_certs/testten.crt => testten.crt (100%)
 rename sample_certs/testthree.crt => testthree.crt (100%)
 rename sample_certs/testtwo.crt => testtwo.crt (100%)

diff --git a/certexample b/certexample
index d1746d435261cd0a4018b32bfe4e346b2ad4dafd..adcbba2d1dfb87c18b47852663885bcac745763a 100755
GIT binary patch
delta 2916
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

delta 3122
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

diff --git a/certexample.c b/certexample.c
index b997503..2f40704 100644
--- a/certexample.c
+++ b/certexample.c
@@ -15,7 +15,7 @@
 #include <assert.h>
 #include <time.h>
 #include <openssl/asn1_mac.h>
-
+#define DEBUG 0
 const ASN1_TIME *X509_get0_notBefore(const X509 *x);
 char** str_split(const char* a_str, const char a_delim);
 char* concat(char *s1, char *s2);
@@ -43,12 +43,11 @@ char *str_slice_to_end(const char *str, int begin);
 
 
 int main(int argc, char **argv){
+
     int LINE_BUFFER=100;
     char line[LINE_BUFFER];
-
-    FILE *csv_input = fopen(concat("./sample_certs/",argv[1]), "r");
+    FILE *csv_input = fopen(argv[1], "r");
     FILE *csv_output = fopen("output_test.csv" ,"w");
-
     //for each line in the csv file, process each certificate
     OpenSSL_add_all_algorithms();
     ERR_load_BIO_strings();
@@ -57,7 +56,10 @@ int main(int argc, char **argv){
     int n = 0;
     while (fgets(line, LINE_BUFFER, csv_input) != NULL){
 
-        printf("CSV LINE # %d\n", n);
+        if(DEBUG){
+            printf("CSV LINE # %d\n", n);
+        }
+
         BIO *certificate_bio = NULL;
         X509 *cert = NULL;
         X509_NAME *cert_issuer = NULL;
@@ -65,16 +67,18 @@ int main(int argc, char **argv){
         STACK_OF(X509_EXTENSION) * ext_list;
         certificate_bio = BIO_new(BIO_s_file());
         //here we are able to access each line
-        line[strlen(line)-1] = '\0';
 
+        //get rid of newline
+        line[strlen(line)-1] = '\0';
 
         char **csv_row_elements = str_split(line, ',');
 
-        printf("\tFILE: %s\n",csv_row_elements[0]);
-        printf("\tURL: %s\n",csv_row_elements[1]);
-
+        if(DEBUG){
+            printf("\tFILE: %s\n",csv_row_elements[0]);
+            printf("\tURL: %s\n",csv_row_elements[1]);
+        }
 
-        char *certificate_file = concat("./sample_certs/", csv_row_elements[0]);
+        char *certificate_file = csv_row_elements[0];
 
         const char *url = csv_row_elements[1];
         //for some reason splitting keeps mututating the original string
@@ -86,32 +90,30 @@ int main(int argc, char **argv){
             fprintf(stderr, "Error in reading cert BIO filename");
             exit(EXIT_FAILURE);
         }
-
         //load certiifcate
         if (!(cert = PEM_read_bio_X509(certificate_bio, NULL, 0, NULL))){
             fprintf(stderr, "Error in loading certificate");
             exit(EXIT_FAILURE);
         }
-        // printf ("\tBASIC CONSTRAINT: %s\n",get_basic_constraints(cert));
-        // printf ("\tBASIC CONSTRAINT VALIDATION: %d\n",validate_basic_constraints(get_basic_constraints(cert)));
-        //
-        // // printf ("\tKEY USAGE: %s\n",get_key_usage(cert));
-        // printf ("\tKEY USAGE VALIDATION: %d\n",validate_key_usage(get_key_usage(cert)));
-        //
-        // // printf ("\tKEY LENGTH BITS: %d\n",get_public_key_length(cert));
-        //
-        // printf ("\tKEY LENGTH VALIDATION: %d\n",validate_key_length(get_public_key_length(cert)));
-        //
-        // // printf ("\tNot Before compared to Current:  %s\n",compare_not_before(cert));
-        // // printf ("\tNot After compared to Current:  %s\n",compare_not_after(cert));
-        // printf("\tNOT BEFORE VALIDATION %d\n", validate_not_before(cert));
-        // printf("\tNOT AFTER VALIDATION %d\n", validate_not_after(cert));
-        // // printf ("\tCommon Name:  %s\n",get_domain_name(cert));
-        //
-        // printf("\tCOMMON NAME AND SAN VALIDATION %d\n", validate_CN_and_SAN(url, cert));
-        // printf ("%d", 0 || 1);
-        // printf("FINAL VALIDATION %d\n", validate_certificate(url, cert));
-        // printf("\t%s\n", unchanged_url);
+
+        if(DEBUG){
+            printf ("\tBASIC CONSTRAINT: %s\n",get_basic_constraints(cert));
+            printf ("\tBASIC CONSTRAINT VALIDATION: %d\n",validate_basic_constraints(get_basic_constraints(cert)));
+            printf ("\tKEY USAGE: %s\n",get_key_usage(cert));
+            printf ("\tKEY USAGE VALIDATION: %d\n",validate_key_usage(get_key_usage(cert)));
+            printf ("\tKEY LENGTH BITS: %d\n",get_public_key_length(cert));
+            printf ("\tKEY LENGTH VALIDATION: %d\n",validate_key_length(get_public_key_length(cert)));
+            printf ("\tNot Before compared to Current:  %s\n",compare_not_before(cert));
+            printf ("\tNot After compared to Current:  %s\n",compare_not_after(cert));
+            printf("\tNOT BEFORE VALIDATION %d\n", validate_not_before(cert));
+            printf("\tNOT AFTER VALIDATION %d\n", validate_not_after(cert));
+            printf ("\tCommon Name:  %s\n",get_domain_name(cert));
+            printf("\tCOMMON NAME AND SAN VALIDATION %d\n", validate_CN_and_SAN(url, cert));
+            printf ("%d", 0 || 1);
+            printf("FINAL VALIDATION %d\n", validate_certificate(url, cert));
+            printf("\t%s\n", unchanged_url);
+        }
+
         fprintf(csv_output,"%s,", csv_row_elements[0]);
         fprintf(csv_output,"%s,", unchanged_url);
         fprintf(csv_output,"%d\n", validate_certificate(url, cert));
@@ -376,7 +378,6 @@ int validate_basic_constraints(char* basic_constraints){
     }
     return 0;
 }
-
 int validate_wildcard_string(const char *hostname, char*hostname_with_wildcard){
 
 
@@ -467,7 +468,6 @@ int validate_certificate(const char *url, X509 *cert){
         return 0;
     }
 }
-
 int find_first_instanceof(const char *str, char delim){
     int i;
     for (i=0;i<=strlen(str);i++){
@@ -478,13 +478,8 @@ int find_first_instanceof(const char *str, char delim){
     }
     return -1;
 }
-
-
 char *str_slice_to_end(const char *str, int begin){
   char *tmp = (char *)str;
-
   tmp = (tmp+=begin+1);
-
-  printf("\tSLICE: %s\n",tmp);
   return tmp;
 }
diff --git a/sample_certs/sample_input.csv b/sample_input.csv
similarity index 100%
rename from sample_certs/sample_input.csv
rename to sample_input.csv
diff --git a/sample_certs/sample_input_single.csv b/sample_input_single.csv
similarity index 100%
rename from sample_certs/sample_input_single.csv
rename to sample_input_single.csv
diff --git a/sample_certs/sample_output.csv b/sample_output.csv
similarity index 100%
rename from sample_certs/sample_output.csv
rename to sample_output.csv
diff --git a/sample_certs/testeight.crt b/testeight.crt
similarity index 100%
rename from sample_certs/testeight.crt
rename to testeight.crt
diff --git a/sample_certs/testeleven.crt b/testeleven.crt
similarity index 100%
rename from sample_certs/testeleven.crt
rename to testeleven.crt
diff --git a/sample_certs/testfive.crt b/testfive.crt
similarity index 100%
rename from sample_certs/testfive.crt
rename to testfive.crt
diff --git a/sample_certs/testfour.crt b/testfour.crt
similarity index 100%
rename from sample_certs/testfour.crt
rename to testfour.crt
diff --git a/sample_certs/testnine.crt b/testnine.crt
similarity index 100%
rename from sample_certs/testnine.crt
rename to testnine.crt
diff --git a/sample_certs/testone.crt b/testone.crt
similarity index 100%
rename from sample_certs/testone.crt
rename to testone.crt
diff --git a/sample_certs/testseven.crt b/testseven.crt
similarity index 100%
rename from sample_certs/testseven.crt
rename to testseven.crt
diff --git a/sample_certs/testsix.crt b/testsix.crt
similarity index 100%
rename from sample_certs/testsix.crt
rename to testsix.crt
diff --git a/sample_certs/testten.crt b/testten.crt
similarity index 100%
rename from sample_certs/testten.crt
rename to testten.crt
diff --git a/sample_certs/testthree.crt b/testthree.crt
similarity index 100%
rename from sample_certs/testthree.crt
rename to testthree.crt
diff --git a/sample_certs/testtwo.crt b/testtwo.crt
similarity index 100%
rename from sample_certs/testtwo.crt
rename to testtwo.crt
-- 
GitLab