diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..190c56d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+PortIndex*
+.DS*
diff --git a/net/ccnx/Portfile b/net/ccnx/Portfile
new file mode 100644
index 0000000..a6412eb
--- /dev/null
+++ b/net/ccnx/Portfile
@@ -0,0 +1,88 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+
+PortSystem  1.0
+name        ccnx
+version     0.6.1rc1
+revision    1
+epoch       1
+categories  net
+platforms   darwin
+license     GPL LGPL
+maintainers ucla.edu:alexander.afanasyev
+description ProjectCCNx implementation of Content Centric Networking (CCN) / \
+            Named Data Networking (NDN) architecture
+long_description Project CCNx® exists to develop, promote, and evaluate a new \
+            approach to communication architecture we call content-centric \
+            networking.  We seek to carry out this mission by creating and \
+            publishing open protocol specifications and an open source \
+            software reference implementation of those protocols.  We provide \
+            support for a community of people interested in experimentation, \
+            research, and building applications with this technology, all \
+            contributing to its evolution. 
+homepage    http://www.ccnx.org/
+master_sites http://www.ccnx.org/releases/
+checksums   rmd160 9c8eb49aa8d2edfe5eb873312f6273ca469255a4 \
+            sha256 7ac8f2ac3b6bcda85e9b4df34c025f68d576d98dcadf16eea2ed1c3dcee4d557
+
+# use_parallel_build  yes
+
+depends_lib port:openssl \
+            port:expat \
+            port:libpcap \
+            port:libxml2
+
+# default_variants   +java
+
+configure.env-append OPENSSL_CFLAGS=-I${prefix}/include
+configure.env-append OPENSSL_LIBS=-L${prefix}/lib
+configure.env-append INSTALL_BASE=${prefix}
+configure.cflags-append -DCCNX_DIR=\\\"${prefix}/etc/ccnx\\\"
+
+pre-build {
+    reinplace "s|\$HOME/.ccnx/|${prefix}/etc/ccnx/|g" ${worksrcpath}/csrc/util/ccndstart.sh 
+}
+
+build.env-append OPENSSL_CFLAGS=-I${prefix}/include
+build.env-append OPENSSL_LIBS=-L${prefix}/lib
+build.env-append INSTALL_BASE=${destroot}${prefix}
+build.env-append CCNX_DIR=${destroot}${prefix}/etc/ccnx
+
+destroot.env-append INSTALL_BASE=${destroot}${prefix}
+destroot.env-append CCNX_DIR=${destroot}${prefix}/etc/ccnx
+
+patchfiles    patch-test.diff
+# patchfiles  patch-csrc-lib-dir.mk.diff \
+#             patch-Makefile.diff \
+#             patch-csrc-lib-ccn_client.c.diff \
+#             patch-csrc-configure.diff \
+#             patch-csrc-lib-encodedecodetest.c.diff
+
+startupitem.pidfile     none
+startupitem.start       "${prefix}/bin/ccndstart"
+startupitem.stop        "${prefix}/bin/ccndstop"
+startupitem.restart     "${prefix}/bin/ccndstop && ${prefix}/bin/ccndstart"
+
+startupitem.create      yes
+startupitem.name        ccnx
+
+startupitem.netchange   yes
+startupitem.logevents   yes
+startupitem.logfile     ${prefix}/var/log/ccnx.log
+
+notes "
+In order repo to work, you need to add the following lines at the end of your \[~/.bash_profile\]:
+
+  export CCNR_DIRECTORY=${prefix}/etc/ccnx/repo
+
+To configure environment variables for ccnd, edit your \[${prefix}/etc/ccnx/ccndrc\]. For example,
+  
+  CCND_LOG=${prefix}/var/log/ccnd.log
+  CCND_DEBUG=16
+
+To add static FIB entries, edit your \[${prefix}/etc/ccnx/ccnd.conf\]. For example,
+
+  add ccnx:/ccnx.org udp 224.0.23.170 59695
+
+For more information and documentation, refer to man pages and http://www.ccnx.org website.
+"
diff --git a/net/ccnx/files/patch-Makefile.diff b/net/ccnx/files/patch-Makefile.diff
new file mode 100644
index 0000000..e07a908
--- /dev/null
+++ b/net/ccnx/files/patch-Makefile.diff
@@ -0,0 +1,13 @@
+diff --git Makefile Makefile
+index 2748ac8..34b67af 100644
+--- Makefile
++++ Makefile
+@@ -13,7 +13,7 @@
+ #
+ 
+ # Subdirectories we build in
+-TOPSUBDIRS = doc/manpages doc/technical csrc schema javasrc apps `cat local.subdirs 2>/dev/null || :`
++TOPSUBDIRS = doc/manpages doc/technical csrc schema `cat local.subdirs 2>/dev/null || :`
+ # Packing list for packaging
+ PACKLIST = Makefile README LICENSE NEWS NOTICES configure doc/index.txt $(TOPSUBDIRS) android experiments
+ BLDMSG = printf '=== %s ' 'Building $@ in' && pwd
diff --git a/net/ccnx/files/patch-csrc-configure.diff b/net/ccnx/files/patch-csrc-configure.diff
new file mode 100644
index 0000000..88bf145
--- /dev/null
+++ b/net/ccnx/files/patch-csrc-configure.diff
@@ -0,0 +1,13 @@
+diff --git csrc/configure csrc/configure
+index 962d76a..43ec3ea 100755
+--- csrc/configure
++++ csrc/configure
+@@ -39,7 +39,7 @@ TryAppend "`uname -sr | sed -e 's/ /-/g'`"
+ TryAppend "local"
+ TryScript "`uname`" "$@"
+ TryScript "local" "$@"
+-ProvideDefault CPREFLAGS = -I../include
++ProvideDefault CPREFLAGS = -I../include ${CFLAGS:-}
+ ProvideDefault PCAP_PROGRAMS = ccndumppcap
+ ProvideDefault RESOLV_LIBS = -lresolv
+ ProvideDefault INSTALL_BASE = ${INSTALL_BASE:-/usr/local}
diff --git a/net/ccnx/files/patch-csrc-lib-ccn_client.c.diff b/net/ccnx/files/patch-csrc-lib-ccn_client.c.diff
new file mode 100644
index 0000000..7ca9b07
--- /dev/null
+++ b/net/ccnx/files/patch-csrc-lib-ccn_client.c.diff
@@ -0,0 +1,87 @@
+diff --git csrc/lib/ccn_client.c csrc/lib/ccn_client.c
+index 606fd36..2642e0c 100644
+--- csrc/lib/ccn_client.c
++++ csrc/lib/ccn_client.c
+@@ -2435,6 +2435,7 @@ ccn_load_private_key(struct ccn *h,
+         res = NOTE_ERRNO(h);
+         goto Cleanup;
+     }
++    printf (">>> load_private_key: [%s]\n", keystore_path);
+     res = ccn_keystore_init(keystore,
+                            (char *)keystore_path,
+                            (char *)keystore_passphrase);
+@@ -2487,6 +2488,7 @@ ccn_load_default_key(struct ccn *h,
+     if (h->default_pubid != NULL)
+         return(NOTE_ERR(h, EINVAL));
+     default_pubid = ccn_charbuf_create();
++    printf ("Tring to open keystore [%s]\n", keystore_path);
+     res = ccn_load_private_key(h,
+                                keystore_path,
+                                keystore_passphrase,
+@@ -2607,23 +2609,55 @@ ccn_chk_signing_params(struct ccn *h,
+             temp = ccn_charbuf_create();
+             if (default_pubid == NULL || temp == NULL)
+                 return(NOTE_ERRNO(h));
+-            ccnx_dir = getenv("CCNX_DIR");
+-            if (ccnx_dir == NULL || ccnx_dir[0] == 0) {
+-                home = getenv("HOME");
+-                if (home == NULL)
+-                    home = "";
+-                ccn_charbuf_putf(temp, "%s/.ccnx/.ccnx_keystore", home);
++
++            res = -1;
++#ifdef CCNX_DIR
++            if (res < 0 || default_pubid->length != sizeof(result->pubid)) {
++              // check preconfigured directory
++              ccnx_dir = CCNX_DIR;
++              if (ccnx_dir != NULL && ccnx_dir[0] != 0) {
++                ccn_charbuf_putf(temp, "%s/.ccnx_keystore", ccnx_dir);
++
++                res = ccn_load_private_key(h,
++                                           ccn_charbuf_as_string(temp),
++                                           "Th1s1sn0t8g00dp8ssw0rd.",
++                                           default_pubid);
++              }
+             }
+-            else
++#endif
++            
++            if (res < 0 || default_pubid->length != sizeof(result->pubid)) {
++              // check CCNX_DIR
++              ccnx_dir = getenv("CCNX_DIR");
++              if (ccnx_dir != NULL && ccnx_dir[0] != 0) {
+                 ccn_charbuf_putf(temp, "%s/.ccnx_keystore", ccnx_dir);
+-            res = ccn_load_private_key(h,
+-                                       ccn_charbuf_as_string(temp),
+-                                       "Th1s1sn0t8g00dp8ssw0rd.",
+-                                       default_pubid);
++
++                res = ccn_load_private_key(h,
++                                           ccn_charbuf_as_string(temp),
++                                           "Th1s1sn0t8g00dp8ssw0rd.",
++                                           default_pubid);
++              }
++            }
++            
++            if (res < 0 || default_pubid->length != sizeof(result->pubid)) {
++              // check HOME
++              home = getenv("HOME");
++              if (home != NULL) {
++                ccn_charbuf_putf(temp, "%s/.ccnx/.ccnx_keystore", home);
++                res = ccn_load_private_key(h,
++                                           ccn_charbuf_as_string(temp),
++                                           "Th1s1sn0t8g00dp8ssw0rd.",
++                                           default_pubid);
++              }
++            }
++            
+             if (res == 0 && default_pubid->length == sizeof(result->pubid)) {
+                 h->default_pubid = default_pubid;
+                 default_pubid = NULL;
+             }
++            else {
++              ccn_perror(h, ccn_charbuf_as_string(temp));
++            }
+         }
+         if (h->default_pubid == NULL)
+             res = NOTE_ERRNO(h);
diff --git a/net/ccnx/files/patch-csrc-lib-dir.mk.diff b/net/ccnx/files/patch-csrc-lib-dir.mk.diff
new file mode 100644
index 0000000..1657539
--- /dev/null
+++ b/net/ccnx/files/patch-csrc-lib-dir.mk.diff
@@ -0,0 +1,57 @@
+diff --git csrc/lib/dir.mk csrc/lib/dir.mk
+index 6489299..145eec7 100644
+--- csrc/lib/dir.mk
++++ csrc/lib/dir.mk
+@@ -78,7 +78,7 @@ shlib: $(SHLIBNAME)
+ lib: libccn.a
+ 
+ test: default keystore_check encodedecodetest ccnbtreetest
+-	./encodedecodetest -o /dev/null
++	./encodedecodetest -k $(CCNX_DIR)/.ccnx_keystore -o /dev/null
+ 	./ccnbtreetest
+ 	./ccnbtreetest - < q.dat
+ 	rm -R _bt_*
+@@ -87,12 +87,12 @@ dtag_check: _always
+ 	@./gen_dtag_table 2>/dev/null | diff - ccn_dtag_table.c | grep '^[<]' >/dev/null && echo '*** Warning: ccn_dtag_table.c may be out of sync with tagnames.cvsdict' || :
+ 
+ keystore_check: ccn_initkeystore.sh
+-	test -f "$$HOME/.ccnx/.ccnx_keystore" || $(MAKE) -f dir.mk new_keystore
++	test -f "$(CCNX_DIR)/.ccnx_keystore" || $(MAKE) -f dir.mk new_keystore
+ 
+ new_keystore:
+ 	@echo === CCNx Keystore not found in your home directory
+ 	@echo === I will create one for you now '(^C to abort)'
+-	sleep 1 && sh ccn_initkeystore.sh && sleep 3 && mv .ccnx "$$HOME"
++	sleep 1 && sh ccn_initkeystore.sh && sleep 3 && mkdir -p "$(CCNX_DIR)/" && mv .ccnx/.ccnx_keystore "$(CCNX_DIR)/"
+ 
+ libccn.a: $(LIB_OBJS)
+ 	ar crus $@ $(LIB_OBJS)
+@@ -113,7 +113,7 @@ skel_decode_test: skel_decode_test.o
+ basicparsetest: basicparsetest.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ basicparsetest.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto
+ 
+-encodedecodetest: encodedecodetest.o
++encodedecodetest: encodedecodetest.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ encodedecodetest.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto
+ 
+ ccn_digest.o:
+@@ -149,16 +149,16 @@ ccn_fetch.o:
+ ccn_verifysig.o:
+ 	$(CC) $(CFLAGS) $(OPENSSL_CFLAGS) -c ccn_verifysig.c
+ 
+-ccn_verifysig: ccn_verifysig.o
++ccn_verifysig: ccn_verifysig.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ ccn_verifysig.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto
+ 
+ signbenchtest.o:
+ 	$(CC) $(CFLAGS) $(OPENSSL_CFLAGS) -c signbenchtest.c
+ 
+-signbenchtest: signbenchtest.o
++signbenchtest: signbenchtest.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ signbenchtest.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto 
+ 
+-ccndumppcap: ccndumppcap.o
++ccndumppcap: ccndumppcap.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ ccndumppcap.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto -lpcap
+ 
+ ccnbtreetest.o:
diff --git a/net/ccnx/files/patch-csrc-lib-encodedecodetest.c.diff b/net/ccnx/files/patch-csrc-lib-encodedecodetest.c.diff
new file mode 100644
index 0000000..e0b7720
--- /dev/null
+++ b/net/ccnx/files/patch-csrc-lib-encodedecodetest.c.diff
@@ -0,0 +1,12 @@
+diff --git csrc/lib/encodedecodetest.c csrc/lib/encodedecodetest.c
+index be6a853..21b288b 100644
+--- csrc/lib/encodedecodetest.c
++++ csrc/lib/encodedecodetest.c
+@@ -241,6 +241,7 @@ main (int argc, char *argv[]) {
+         strcat(keystore_name, keystore_suffix);
+     }
+ 
++    printf ("\nWTF %s\n\n", keystore_name);
+     if (0 != ccn_keystore_init(keystore, keystore_name, "Th1s1sn0t8g00dp8ssw0rd.")) {
+         printf("Failed to initialize keystore\n");
+         exit(1);
diff --git a/net/ccnx/files/patch-test.diff b/net/ccnx/files/patch-test.diff
new file mode 100644
index 0000000..5b1a91d
--- /dev/null
+++ b/net/ccnx/files/patch-test.diff
@@ -0,0 +1,218 @@
+diff --git Makefile Makefile
+index 2748ac8..34b67af 100644
+--- Makefile
++++ Makefile
+@@ -13,7 +13,7 @@
+ #
+ 
+ # Subdirectories we build in
+-TOPSUBDIRS = doc/manpages doc/technical csrc schema javasrc apps `cat local.subdirs 2>/dev/null || :`
++TOPSUBDIRS = doc/manpages doc/technical csrc schema `cat local.subdirs 2>/dev/null || :`
+ # Packing list for packaging
+ PACKLIST = Makefile README LICENSE NEWS NOTICES configure doc/index.txt $(TOPSUBDIRS) android experiments
+ BLDMSG = printf '=== %s ' 'Building $@ in' && pwd
+diff --git csrc/configure csrc/configure
+index 962d76a..43ec3ea 100755
+--- csrc/configure
++++ csrc/configure
+@@ -39,7 +39,7 @@ TryAppend "`uname -sr | sed -e 's/ /-/g'`"
+ TryAppend "local"
+ TryScript "`uname`" "$@"
+ TryScript "local" "$@"
+-ProvideDefault CPREFLAGS = -I../include
++ProvideDefault CPREFLAGS = -I../include ${CFLAGS:-}
+ ProvideDefault PCAP_PROGRAMS = ccndumppcap
+ ProvideDefault RESOLV_LIBS = -lresolv
+ ProvideDefault INSTALL_BASE = ${INSTALL_BASE:-/usr/local}
+diff --git csrc/lib/ccn_client.c csrc/lib/ccn_client.c
+index 606fd36..9b3760c 100644
+--- csrc/lib/ccn_client.c
++++ csrc/lib/ccn_client.c
+@@ -2435,6 +2435,7 @@ ccn_load_private_key(struct ccn *h,
+         res = NOTE_ERRNO(h);
+         goto Cleanup;
+     }
++    fprintf (stderr, ">>> load_private_key: [%s]\n", keystore_path);
+     res = ccn_keystore_init(keystore,
+                            (char *)keystore_path,
+                            (char *)keystore_passphrase);
+@@ -2487,6 +2488,7 @@ ccn_load_default_key(struct ccn *h,
+     if (h->default_pubid != NULL)
+         return(NOTE_ERR(h, EINVAL));
+     default_pubid = ccn_charbuf_create();
++    printf ("Tring to open keystore [%s]\n", keystore_path);
+     res = ccn_load_private_key(h,
+                                keystore_path,
+                                keystore_passphrase,
+@@ -2607,23 +2609,58 @@ ccn_chk_signing_params(struct ccn *h,
+             temp = ccn_charbuf_create();
+             if (default_pubid == NULL || temp == NULL)
+                 return(NOTE_ERRNO(h));
+-            ccnx_dir = getenv("CCNX_DIR");
+-            if (ccnx_dir == NULL || ccnx_dir[0] == 0) {
+-                home = getenv("HOME");
+-                if (home == NULL)
+-                    home = "";
+-                ccn_charbuf_putf(temp, "%s/.ccnx/.ccnx_keystore", home);
++
++            res = -1;
++#ifdef CCNX_DIR
++            if (res < 0 || default_pubid->length != sizeof(result->pubid)) {
++              // check preconfigured directory
++              ccnx_dir = CCNX_DIR;
++              if (ccnx_dir != NULL && ccnx_dir[0] != 0) {
++                ccn_charbuf_reset(temp);
++                ccn_charbuf_putf(temp, "%s/.ccnx_keystore", ccnx_dir);
++
++                res = ccn_load_private_key(h,
++                                           ccn_charbuf_as_string(temp),
++                                           "Th1s1sn0t8g00dp8ssw0rd.",
++                                           default_pubid);
++              }
+             }
+-            else
++#endif
++            
++            if (res < 0 || default_pubid->length != sizeof(result->pubid)) {
++              // check CCNX_DIR
++              ccnx_dir = getenv("CCNX_DIR");
++              if (ccnx_dir != NULL && ccnx_dir[0] != 0) {
++                ccn_charbuf_reset(temp);
+                 ccn_charbuf_putf(temp, "%s/.ccnx_keystore", ccnx_dir);
+-            res = ccn_load_private_key(h,
+-                                       ccn_charbuf_as_string(temp),
+-                                       "Th1s1sn0t8g00dp8ssw0rd.",
+-                                       default_pubid);
++
++                res = ccn_load_private_key(h,
++                                           ccn_charbuf_as_string(temp),
++                                           "Th1s1sn0t8g00dp8ssw0rd.",
++                                           default_pubid);
++              }
++            }
++            
++            if (res < 0 || default_pubid->length != sizeof(result->pubid)) {
++              // check HOME
++              home = getenv("HOME");
++              if (home != NULL) {
++                ccn_charbuf_reset(temp);
++                ccn_charbuf_putf(temp, "%s/.ccnx/.ccnx_keystore", home);
++                res = ccn_load_private_key(h,
++                                           ccn_charbuf_as_string(temp),
++                                           "Th1s1sn0t8g00dp8ssw0rd.",
++                                           default_pubid);
++              }
++            }
++            
+             if (res == 0 && default_pubid->length == sizeof(result->pubid)) {
+                 h->default_pubid = default_pubid;
+                 default_pubid = NULL;
+             }
++            else {
++              ccn_perror(h, ccn_charbuf_as_string(temp));
++            }
+         }
+         if (h->default_pubid == NULL)
+             res = NOTE_ERRNO(h);
+diff --git csrc/lib/ccn_initkeystore.sh csrc/lib/ccn_initkeystore.sh
+index 12bc9e3..a171a0e 100755
+--- csrc/lib/ccn_initkeystore.sh
++++ csrc/lib/ccn_initkeystore.sh
+@@ -15,6 +15,7 @@
+ # Create a ccn keystore without relying on java
+ : ${RSA_KEYSIZE:=1024}
+ : ${CCN_USER:=`id -n -u`}
++: ${CCNX_HOME:=.ccnx}
+ Fail () {
+   echo '*** Failed' "$*"
+   exit 1
+@@ -37,6 +38,7 @@ countryName_default		= AU
+ countryName_min			= 2
+ countryName_max			= 2
+ EOF
++RANDFILE=.rnd
+ openssl req    -config openssl.cnf      \
+                -newkey rsa:$RSA_KEYSIZE \
+                -x509                    \
+diff --git csrc/lib/ccn_keystore.c csrc/lib/ccn_keystore.c
+index ac936c3..c103dd8 100644
+--- csrc/lib/ccn_keystore.c
++++ csrc/lib/ccn_keystore.c
+@@ -76,6 +76,8 @@ ccn_keystore_init(struct ccn_keystore *p, char *filename, char *password)
+     int digest_size;
+     int res;
+ 
++    fprintf (stderr, "Trying to open [%s]\n\n", filename);
++    
+     OpenSSL_add_all_algorithms();
+     fp = fopen(filename, "rb");
+     if (fp == NULL)
+diff --git csrc/lib/dir.mk csrc/lib/dir.mk
+index 6489299..145eec7 100644
+--- csrc/lib/dir.mk
++++ csrc/lib/dir.mk
+@@ -78,7 +78,7 @@ shlib: $(SHLIBNAME)
+ lib: libccn.a
+ 
+ test: default keystore_check encodedecodetest ccnbtreetest
+-	./encodedecodetest -o /dev/null
++	./encodedecodetest -k $(CCNX_DIR)/.ccnx_keystore -o /dev/null
+ 	./ccnbtreetest
+ 	./ccnbtreetest - < q.dat
+ 	rm -R _bt_*
+@@ -87,12 +87,12 @@ dtag_check: _always
+ 	@./gen_dtag_table 2>/dev/null | diff - ccn_dtag_table.c | grep '^[<]' >/dev/null && echo '*** Warning: ccn_dtag_table.c may be out of sync with tagnames.cvsdict' || :
+ 
+ keystore_check: ccn_initkeystore.sh
+-	test -f "$$HOME/.ccnx/.ccnx_keystore" || $(MAKE) -f dir.mk new_keystore
++	test -f "$(CCNX_DIR)/.ccnx_keystore" || $(MAKE) -f dir.mk new_keystore
+ 
+ new_keystore:
+ 	@echo === CCNx Keystore not found in your home directory
+ 	@echo === I will create one for you now '(^C to abort)'
+-	sleep 1 && sh ccn_initkeystore.sh && sleep 3 && mv .ccnx "$$HOME"
++	sleep 1 && sh ccn_initkeystore.sh && sleep 3 && mkdir -p "$(CCNX_DIR)/" && mv .ccnx/.ccnx_keystore "$(CCNX_DIR)/"
+ 
+ libccn.a: $(LIB_OBJS)
+ 	ar crus $@ $(LIB_OBJS)
+@@ -113,7 +113,7 @@ skel_decode_test: skel_decode_test.o
+ basicparsetest: basicparsetest.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ basicparsetest.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto
+ 
+-encodedecodetest: encodedecodetest.o
++encodedecodetest: encodedecodetest.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ encodedecodetest.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto
+ 
+ ccn_digest.o:
+@@ -149,16 +149,16 @@ ccn_fetch.o:
+ ccn_verifysig.o:
+ 	$(CC) $(CFLAGS) $(OPENSSL_CFLAGS) -c ccn_verifysig.c
+ 
+-ccn_verifysig: ccn_verifysig.o
++ccn_verifysig: ccn_verifysig.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ ccn_verifysig.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto
+ 
+ signbenchtest.o:
+ 	$(CC) $(CFLAGS) $(OPENSSL_CFLAGS) -c signbenchtest.c
+ 
+-signbenchtest: signbenchtest.o
++signbenchtest: signbenchtest.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ signbenchtest.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto 
+ 
+-ccndumppcap: ccndumppcap.o
++ccndumppcap: ccndumppcap.o libccn.a
+ 	$(CC) $(CFLAGS) -o $@ ccndumppcap.o $(LDLIBS) $(OPENSSL_LIBS) -lcrypto -lpcap
+ 
+ ccnbtreetest.o:
+diff --git csrc/lib/encodedecodetest.c csrc/lib/encodedecodetest.c
+index be6a853..21b288b 100644
+--- csrc/lib/encodedecodetest.c
++++ csrc/lib/encodedecodetest.c
+@@ -241,6 +241,7 @@ main (int argc, char *argv[]) {
+         strcat(keystore_name, keystore_suffix);
+     }
+ 
++    printf ("\nWTF %s\n\n", keystore_name);
+     if (0 != ccn_keystore_init(keystore, keystore_name, "Th1s1sn0t8g00dp8ssw0rd.")) {
+         printf("Failed to initialize keystore\n");
+         exit(1);
