Strict Hierarchical Check of Trust Chain Final
diff --git a/nlsr_km.c b/nlsr_km.c
index 81c4a80..e3fa463 100644
--- a/nlsr_km.c
+++ b/nlsr_km.c
@@ -156,25 +156,6 @@
}
-/*
-int
-process_incoming_content(struct ccn_closure* selfp,
- struct ccn_upcall_info* info){
-
- printf("process_incoming_content called\n");
-
- int res=verify_key(info->content_ccnb,info->pco->offset[CCN_PCO_E],info->pco);
-
- if ( res != 0 ){
- printf("Error in verfiying keys !! :( \n");
- }
- else{
- printf("Key verification is successful :)\n");
- }
- return 0;
-}
-*/
-
char *
get_orig_router_from_lsa_name(struct ccn_charbuf * content_name)
{
@@ -188,7 +169,7 @@
struct ccn_indexbuf *components=ccn_indexbuf_create();
struct ccn_charbuf *name=ccn_charbuf_create();
- ccn_name_from_uri(name,"/ndn/routing/nlsr/LSA");
+ ccn_name_from_uri(name,nlsr->slice_prefix);
ccn_name_split (name, components);
start=components->n-2;
ccn_charbuf_destroy(&name);
@@ -232,11 +213,47 @@
}
+char *
+get_orig_router_from_info_content_name(struct ccn_charbuf * content_name)
+{
+ int start,end;
+
+ start=0;
+
+ struct ccn_indexbuf *comps=ccn_indexbuf_create();
+ ccn_name_split (content_name, comps);
+
+ end=check_for_name_component_in_name(content_name,comps,"nlsr");
+
+
+ struct ccn_charbuf *temp=ccn_charbuf_create();
+ ccn_name_init(temp);
+ ccn_name_append_components( temp, content_name->buf,
+ comps->buf[start],
+ comps->buf[end]);
+
+ struct ccn_charbuf *temp1=ccn_charbuf_create();
+ ccn_uri_append(temp1, temp->buf, temp->length, 0);
+
+ char *orig_router=(char *)calloc(strlen(ccn_charbuf_as_string(temp1))+1,
+ sizeof(char));
+ memcpy(orig_router,ccn_charbuf_as_string(temp1),
+ strlen(ccn_charbuf_as_string(temp1)));
+ orig_router[strlen(orig_router)]='\0';
+
+ ccn_charbuf_destroy(&temp);
+ ccn_charbuf_destroy(&temp1);
+ ccn_indexbuf_destroy(&comps);
+ return orig_router;
+
+
+}
+
int
check_key_name_hierarchy(const unsigned char *ccnb,
struct ccn_parsed_ContentObject *pco,
- int key_type){
+ int key_type, int content_type){
printf("check_key_name_hierarchy called\n");
if (key_type == UNKNOWN_KEY ){
return 1;
@@ -260,7 +277,13 @@
if ( key_type == NLSR_KEY){
char *orig_router_key_name=get_orig_router_from_key_name(key_name,0,0);
- char *orig_router_content_name=get_orig_router_from_lsa_name(content_name);
+ char *orig_router_content_name;
+ if ( content_type == 1 ){
+ orig_router_content_name=get_orig_router_from_lsa_name(content_name);
+ }
+ else if ( content_type == 0 ){
+ orig_router_content_name=get_orig_router_from_info_content_name(content_name);
+ }
printf("Orig Router (Key Name):%s\n",orig_router_key_name);
printf("Orig Router (Content Name):%s\n",orig_router_content_name);
@@ -354,7 +377,8 @@
int
verify_key(const unsigned char *ccnb,
- struct ccn_parsed_ContentObject *pco){
+ struct ccn_parsed_ContentObject *pco,
+ int content_type){
if ( nlsr->debugging )
printf("verify key called\n");
int ret=-1;
@@ -383,7 +407,7 @@
if ( chk_verify == 0 ){
if ( nlsr->debugging )
- printf("Verification Successful :)\n");
+ printf("Content verification Successful :)\n");
if ( counter == 3){
if ( nlsr->debugging )
@@ -394,15 +418,17 @@
ret=0;
}
else{
- //ret=verify_key(result->buf,&temp_pco);
if ( nlsr->isStrictHierchicalKeyCheck ){
- int key_name_test=check_key_name_hierarchy(ccnb,pco,key_type);
+ int key_name_test=check_key_name_hierarchy(ccnb,
+ pco,
+ key_type,
+ content_type);
if ( key_name_test == 1){
- ret=verify_key(result->buf,&temp_pco);
+ ret=verify_key(result->buf,&temp_pco,content_type);
}
}
else{
- ret=verify_key(result->buf,&temp_pco);
+ ret=verify_key(result->buf,&temp_pco,content_type);
}
}
}
diff --git a/nlsr_km.h b/nlsr_km.h
index 59847f5..bb935fa 100644
--- a/nlsr_km.h
+++ b/nlsr_km.h
@@ -30,6 +30,7 @@
struct ccn_parsed_ContentObject *pco);
int verify_key(const unsigned char *ccnb,
- struct ccn_parsed_ContentObject *pco);
+ struct ccn_parsed_ContentObject *pco,
+ int content_type);
#endif
diff --git a/nlsr_ndn.c b/nlsr_ndn.c
index aa58904..b43a57d 100644
--- a/nlsr_ndn.c
+++ b/nlsr_ndn.c
@@ -499,7 +499,6 @@
writeLogg(__FILE__,__FUNCTION__,__LINE__,"process_incoming_content_info"
" called \n");
- //int res;
struct name_prefix *nbr=(struct name_prefix *)malloc(sizeof(struct name_prefix ));
get_nbr(nbr,selfp,info);
@@ -513,54 +512,38 @@
if ( contain_key_name(info->content_ccnb, info->pco) == 1){
- //struct ccn_charbuf *key_name=get_key_name(info->content_ccnb, info->pco);
- //struct ccn_charbuf *orig_router_kn=ccn_charbuf_create();
- //res=get_orig_router_from_key_name(orig_router_kn,key_name);
- //if( res == 0){
- //struct ccn_charbuf *rtr_uri = ccn_charbuf_create();
- //ccn_uri_append(rtr_uri, orig_router_kn->buf,
- // orig_router_kn->length, 0);
- //printf("Orig Router from Key name: %s\n",
- // ccn_charbuf_as_string(rtr_uri));
-
- //if( strcmp(nbr->name,ccn_charbuf_as_string(rtr_uri)) == 0){
- int res_verify=verify_key(info->content_ccnb,info->pco);
+ int res_verify=verify_key(info->content_ccnb,info->pco,0);
- if ( res_verify != 0 ){
- printf("Error in verfiying keys !! :( \n");
- }
- else{
- printf("Key verification is successful :)\n");
- update_adjacent_timed_out_zero_to_adl(nbr);
- update_adjacent_status_to_adl(nbr,NBR_ACTIVE);
- print_adjacent_from_adl();
+ if ( res_verify != 0 ){
+ printf("Error in verfiying keys !! :( \n");
+ }
+ else{
+ printf("Key verification is successful :)\n");
+ update_adjacent_timed_out_zero_to_adl(nbr);
+ update_adjacent_status_to_adl(nbr,NBR_ACTIVE);
+ print_adjacent_from_adl();
- if(!nlsr->is_build_adj_lsa_sheduled){
- if ( nlsr->debugging )
- printf("Scheduling Build and Install Adj LSA...\n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"Scheduling"
+ if(!nlsr->is_build_adj_lsa_sheduled){
+ if ( nlsr->debugging )
+ printf("Scheduling Build and Install Adj LSA...\n");
+ if ( nlsr->detailed_logging )
+ writeLogg(__FILE__,__FUNCTION__,__LINE__,"Scheduling"
"Build and Install Adj LSA...\n");
- nlsr->event_build_adj_lsa = ccn_schedule_event(
+ nlsr->event_build_adj_lsa = ccn_schedule_event(
nlsr->sched, 100000,
&build_and_install_adj_lsa, NULL, 0);
- nlsr->is_build_adj_lsa_sheduled=1;
- }
- else{
- if ( nlsr->debugging )
- printf("Build and Install Adj LSA already scheduled\n");
- if ( nlsr->detailed_logging )
- writeLogg(__FILE__,__FUNCTION__,__LINE__,"Build and Install Adj LSA"
+ nlsr->is_build_adj_lsa_sheduled=1;
+ }
+ else{
+ if ( nlsr->debugging )
+ printf("Build and Install Adj LSA already scheduled\n");
+ if ( nlsr->detailed_logging )
+ writeLogg(__FILE__,__FUNCTION__,__LINE__,"Build and Install Adj LSA"
" already scheduled\n");
- }
+ }
- }
- //}
- //ccn_charbuf_destroy(&rtr_uri);
- //}
- //ccn_charbuf_destroy(&key_name);
- //ccn_charbuf_destroy(&orig_router_kn);
+ }
}
/*
update_adjacent_timed_out_zero_to_adl(nbr);
diff --git a/nlsr_sync.c b/nlsr_sync.c
index bc5eb43..c673259 100644
--- a/nlsr_sync.c
+++ b/nlsr_sync.c
@@ -239,39 +239,23 @@
int chk_cont=ccn_parse_ContentObject(ptr,length,&pcobuf1,NULL);
printf("Content Parsing result: %d\n",chk_cont);
if ( contain_key_name(ptr, &pcobuf1) == 1){
- //struct ccn_charbuf *key_name=get_key_name(ptr, &pcobuf1);
- //struct ccn_charbuf *orig_router_kn=ccn_charbuf_create();
- //res=get_orig_router_from_key_name(orig_router_kn,key_name);
- //if( res == 0){
- //struct ccn_charbuf *rtr_uri = ccn_charbuf_create();
- //ccn_uri_append(rtr_uri, orig_router_kn->buf,
- // orig_router_kn->length, 0);
- //printf("Orig Router from Key name: %s\n",
- // ccn_charbuf_as_string(rtr_uri));
-
- //if( strcmp(orig_router,ccn_charbuf_as_string(rtr_uri)) == 0){
- int res_verify=verify_key(ptr,&pcobuf1);
+ int res_verify=verify_key(ptr,&pcobuf1,1);
- if ( res_verify != 0 ){
- printf("Error in verfiying keys !! :( \n");
- }
- else{
- printf("Key verification is successful :)\n");
- ptr_in=ptr;
- length_in=length;
- ccn_content_get_value(ptr_in, length_in, &pcobuf1,
+ if ( res_verify != 0 ){
+ printf("Error in verfiying keys !! :( \n");
+ }
+ else{
+ printf("Key verification is successful :)\n");
+ ptr_in=ptr;
+ length_in=length;
+ ccn_content_get_value(ptr_in, length_in, &pcobuf1,
&ptr_in, &length_in);
- *content_data = (unsigned char *) calloc(length_in,
+ *content_data = (unsigned char *) calloc(length_in,
sizeof(char *));
- memcpy (*content_data, ptr_in, length_in);
- ret=0;
- }
- //}
- //ccn_charbuf_destroy(&rtr_uri);
- //}
- //ccn_charbuf_destroy(&key_name);
- //ccn_charbuf_destroy(&orig_router_kn);
+ memcpy (*content_data, ptr_in, length_in);
+ ret=0;
+ }
}
}
}