Packet Signing & Key Verification: Complete
diff --git a/nlsr_km.c b/nlsr_km.c
index 995db18..a6d7347 100644
--- a/nlsr_km.c
+++ b/nlsr_km.c
@@ -176,7 +176,7 @@
 */
 
 int 
-verify_key(const unsigned char *ccnb,size_t size, 
+verify_key(const unsigned char *ccnb, 
 										struct ccn_parsed_ContentObject *pco){
 	if ( nlsr->debugging )
 		printf("verify key called\n");
@@ -216,7 +216,7 @@
 					ret=0;
 				}
 				else{
-					ret=verify_key(result->buf,temp_pco.offset[CCN_PCO_E],&temp_pco);
+					ret=verify_key(result->buf,&temp_pco);
 				}
 			}
 		}
diff --git a/nlsr_km.h b/nlsr_km.h
index f509bc8..59847f5 100644
--- a/nlsr_km.h
+++ b/nlsr_km.h
@@ -29,7 +29,7 @@
 struct ccn_charbuf * get_key_name(const unsigned char *ccnb, 
 					struct ccn_parsed_ContentObject *pco);
 
-int verify_key(const unsigned char *ccnb, size_t size, 
+int verify_key(const unsigned char *ccnb, 
 					struct ccn_parsed_ContentObject *pco);
 
 #endif
diff --git a/nlsr_ndn.c b/nlsr_ndn.c
index b907570..4d0df28 100644
--- a/nlsr_ndn.c
+++ b/nlsr_ndn.c
@@ -269,7 +269,7 @@
 	
 
 	int res;
-	struct ccn_charbuf *data=ccn_charbuf_create();
+	//struct ccn_charbuf *data=ccn_charbuf_create();
     	struct ccn_charbuf *name=ccn_charbuf_create();
     	
 
@@ -278,7 +278,7 @@
 	if (res >= 0)
 	{
 		
-
+		/*
 		struct ccn_charbuf *pubid = ccn_charbuf_create();
 		struct ccn_charbuf *pubkey = ccn_charbuf_create();
 
@@ -298,9 +298,23 @@
 
 		char *raw_data=(char *)malloc(20);
 		memset(raw_data,0,20);
-		sprintf(raw_data,"%s", nlsr->lsdb->lsdb_version);	
+		sprintf(raw_data,"%s", nlsr->lsdb->lsdb_version);
+		*/	
 
-		res= ccn_sign_content(nlsr->ccn, data, name, &sp, "info",strlen("info")); 
+		struct ccn_charbuf *resultbuf=ccn_charbuf_create();
+
+		res=sign_content_with_user_defined_keystore(name,
+											resultbuf,
+											"info",
+											strlen("info"),
+											nlsr->keystore_path,
+											nlsr->keystore_passphrase,
+											nlsr->root_key_prefix,
+											nlsr->site_name,
+											nlsr->router_name);
+
+
+		//res= ccn_sign_content(nlsr->ccn, data, name, &sp, "info",strlen("info")); 
 		if(res >= 0)
 		{
 			if ( nlsr->debugging )
@@ -310,7 +324,7 @@
 									" is successful \n");
 
 		}
-    		res=ccn_put(nlsr->ccn,data->buf,data->length);		
+    		res=ccn_put(nlsr->ccn,resultbuf->buf,resultbuf->length);		
 		if(res >= 0)
 		{
 			if ( nlsr->debugging )
@@ -341,13 +355,13 @@
 		}
 
 		free(nbr);
-		free(raw_data);
-		ccn_charbuf_destroy(&sp.template_ccnb);
-		ccn_charbuf_destroy(&pubid);
-		ccn_charbuf_destroy(&pubkey);
+		//free(raw_data);
+		//ccn_charbuf_destroy(&sp.template_ccnb);
+		//ccn_charbuf_destroy(&pubid);
+		//ccn_charbuf_destroy(&pubkey);
 	}
 
-	ccn_charbuf_destroy(&data);
+	//ccn_charbuf_destroy(&data);
 	ccn_charbuf_destroy(&name);
 
 }
@@ -413,7 +427,8 @@
 			if ( nlsr->detailed_logging )
 				writeLogg(__FILE__,__FUNCTION__,__LINE__,"Unverified Content"
 										" Received ..Waiting for verification\n");
-			return CCN_UPCALL_RESULT_VERIFY;
+			//return CCN_UPCALL_RESULT_VERIFY;
+			process_incoming_timed_out_interest(selfp,info);
 	    break;
 
         default:
@@ -484,6 +499,7 @@
 		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);
 
@@ -495,34 +511,60 @@
 								"ghbor: %s Length:%d\n",nbr->name,nbr->length);
 
 
+	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);
 
-	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 Build and Inst"
-															"all Adj LSA...\n");
-		nlsr->event_build_adj_lsa = ccn_schedule_event(nlsr->sched, 100000, 
+					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->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);	
 	}
 
 
+
+
 	free(nbr);
 
 
diff --git a/nlsr_sync.c b/nlsr_sync.c
index fd884cb..80b0175 100644
--- a/nlsr_sync.c
+++ b/nlsr_sync.c
@@ -249,8 +249,7 @@
 					
 					if( strcmp(orig_router,ccn_charbuf_as_string(rtr_uri)) == 0){
 						
-						int res_verify=verify_key(ptr,pcobuf1.offset[CCN_PCO_E],
-																	&pcobuf1);
+						int res_verify=verify_key(ptr,&pcobuf1);
 
 						if ( res_verify != 0 ){
 							printf("Error in verfiying keys !! :( \n");
@@ -780,6 +779,7 @@
 	ccn_run(temp_ccn, 100);
 	ccn_charbuf_destroy(&name);
 	ccn_destroy(&temp_ccn);
+	ccn_charbuf_destroy(&resultbuf);
 
 	return 0;
 }