diff --git a/net/ccnx/files/patch-macports-customizations.diff b/net/ccnx/files/patch-macports-customizations.diff
new file mode 100644
index 0000000..5c98dda
--- /dev/null
+++ b/net/ccnx/files/patch-macports-customizations.diff
@@ -0,0 +1,164 @@
+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..a3392fc 100644
+--- csrc/lib/ccn_client.c
++++ csrc/lib/ccn_client.c
+@@ -2607,23 +2607,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/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:
