Packet Signing & Key Verification Stage: Middle
diff --git a/nlsr_km_util.c b/nlsr_km_util.c
index ee55252..6750c67 100644
--- a/nlsr_km_util.c
+++ b/nlsr_km_util.c
@@ -65,6 +65,44 @@
return key_name;
}
+
+int
+get_orig_router_from_key_name(struct ccn_charbuf *orig_router ,struct ccn_charbuf *name)
+{
+ int res;
+ struct ccn_indexbuf *name_comps;
+
+ name_comps = ccn_indexbuf_create();
+ res = ccn_name_split(name, name_comps);
+ if ( res < 0 ){
+ ccn_indexbuf_destroy(&name_comps);
+ return res;
+ }
+ else{
+ res=ccn_name_chop(name, name_comps, -2);
+ if ( res < 0 ){
+ ccn_indexbuf_destroy(&name_comps);
+ return res;
+ }
+ else{
+ res=check_for_tag_component_in_name(name,name_comps,"R.N.Start");
+ if ( res > 0 ){
+ ccn_name_init(orig_router);
+ ccn_name_append_components(orig_router,name->buf,
+ name_comps->buf[res+1],
+ name_comps->buf[name_comps->n - 1]);
+ }
+ else{
+ ccn_indexbuf_destroy(&name_comps);
+ return -1;
+ }
+ }
+ }
+
+ ccn_indexbuf_destroy(&name_comps);
+ return 0;
+}
+
int
check_for_name_component_in_name(const struct ccn_charbuf *name,
const struct ccn_indexbuf *indx,