Skip to content
Snippets Groups Projects
Commit 5d5920c1 authored by Jonas Olausson's avatar Jonas Olausson
Browse files

made wildcard validation more robust

parent 34afae28
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -36,6 +36,11 @@ int validate_CN_and_SAN(const char *url, X509 *cert);
int validate_not_before(X509 *cert);
int validate_not_after(X509 *cert);
int validate_certificate(const char *url, X509 *cert);
int find_first_instanceof(const char *str, char delim);
char *str_slice_to_end(const char *str, int begin);
int main(int argc, char **argv){
int LINE_BUFFER=100;
......@@ -122,6 +127,7 @@ int main(int argc, char **argv){
}
exit(0);
}
char* get_basic_constraints(X509 *cert){
X509_EXTENSION *ex = X509_get_ext(cert, X509_get_ext_by_NID(cert, NID_basic_constraints, -1));
......@@ -372,17 +378,29 @@ int validate_basic_constraints(char* basic_constraints){
}
int validate_wildcard_string(const char *hostname, char*hostname_with_wildcard){
char **hostname_with_wildcard_split = str_split(hostname_with_wildcard, '.');
char **hostname_split = str_split(hostname, '.');
const char *hostname_with_wildcard_right = hostname_with_wildcard_split[1];
const char *hostname_split_right = hostname_split[1];
char *hostname_with_wildcard_sliced = str_slice_to_end(hostname_with_wildcard, (find_first_instanceof(hostname_with_wildcard, '.')));
char *hostname_sliced = str_slice_to_end(hostname, (find_first_instanceof(hostname, '.')));
// char **hostname_with_wildcard_split = str_split(hostname_with_wildcard, '.');
// char **hostname_split = str_split(hostname, '.');
// const char *hostname_with_wildcard_right = hostname_with_wildcard_split[1];
// const char *hostname_split_right = hostname_split[1];
if(strcasecmp(hostname_split_right, hostname_with_wildcard_right)==0){
printf("\t\tWILDCARD FUNCTION\t\t%s == %s\n", hostname_split_right, hostname_with_wildcard_right);
if(strcasecmp(hostname_with_wildcard_sliced, hostname_sliced)==0){
printf("\t\tWILDCARD FUNCTION\t\t%s == %s\n", hostname_with_wildcard_sliced, hostname_sliced);
return 1;
}
return 0;
}
int validate_key_length(int length){
......@@ -449,3 +467,24 @@ 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++){
if(str[i]==delim){
return i;
}
}
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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment