#Use this script to setup your keys. 
#!/bin/bash

EXPECTED_ARGS=3 #site, operator, router
E_BADARGS=65
if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: `basename $0` <site name> <operator name> <router name>"
  echo "Example: `basename $0` memphis.edu user1 memphis.edu/cs/rtr1 (full router name without /ndn/ prefix" 
  exit $E_BADARGS
fi


RESULT=`ps -a | sed -n /ccnr/p`

if [ "${RESULT:-null}" = null ]; then
  echo "ccnr not running, quitting"
  exit
fi


KSUITE=${HOME}/ndn-testbed-key-suite/
echo $KSUITE
if [ ! -d ${KSUITE} ]; then
    echo "This script requires key signing suite available at:"
	echo "git://github.com/named-data/ndn-testbed-key-suite.git"
	echo "If you already have it, set the variable KSUITE of the script accordingly"
	exit
fi

SITE=$1
OP=$2
RTR=$3

if [ ! -d ${SITE}_key ]; then
	mkdir ${SITE}_key
	ccninitkeystore ${SITE}_key
fi

if [ ! -d ${OP}_key ]; then
	mkdir ${OP}_key
	ccninitkeystore ${OP}_key
fi

if [ ! -d "router_key" ]; then
	mkdir router_key
	ccninitkeystore router_key
fi

if [ ! -d "nlsr_key" ]; then
	mkdir nlsr_key
	ccninitkeystore nlsr_key
fi




$KSUITE/bin/ndn-extract-public-key.sh -i ${SITE}_key/.ccnx/.ccnx_keystore -o ${SITE}_key/$SITE.pem
$KSUITE/bin/ndn-extract-public-key.sh -i ${OP}_key/.ccnx/.ccnx_keystore -o ${OP}_key/$OP.pem
$KSUITE/bin/ndn-extract-public-key.sh -i router_key/.ccnx/.ccnx_keystore -o router_key/router.pem
$KSUITE/bin/ndn-extract-public-key.sh -i nlsr_key/.ccnx/.ccnx_keystore -o nlsr_key/nlsr.pem

.$KSUITE/sign.sh -s

#signing operator key
echo "$KSUITE/bin/ndn-publish-key.sh -i "$OP" -a "$SITE" -f ${OP}_key/$OP.pem -F ${SITE}_key/.ccnx/ -P /ndn/keys/$SITE -p /ndn/keys/$SITE/%C1.O.N.Start/$OP -x 365"
$KSUITE/bin/ndn-publish-key.sh -i "$OP" -a "$SITE" -f ${OP}_key/$OP.pem -F ${SITE}_key/.ccnx/ -P /ndn/keys/$SITE -p /ndn/keys/$SITE/%C1.O.N.Start/$OP -x 365

#signing routing key
echo "$KSUITE/bin/ndn-publish-key.sh -i "$RTR" -a "$SITE" -f router_key/router.pem -F ${OP}_key/.ccnx/ -P /ndn/keys/$SITE/%C1.O.N.Start/$OP -p /ndn/keys/$SITE/%C1.R.N.Start/ndn/$RTR -x 365"
$KSUITE/bin/ndn-publish-key.sh -i "$RTR" -a "$SITE" -f router_key/router.pem -F ${OP}_key/.ccnx/ -P /ndn/keys/$SITE/%C1.O.N.Start/$OP -p /ndn/keys/$SITE/%C1.R.N.Start/ndn/$RTR -x 365

#signing nlsr key
echo "$KSUITE/bin/ndn-publish-key.sh -i "NLSR" -a "$RTR" -f nlsr_key/nlsr.pem  -F router_key/.ccnx/ -P /ndn/keys/$SITE/%C1.R.N.Start/ndn/$SITE/$RTR -p /ndn/keys/$SITE/%C1.R.N.Start/ndn/$RTR/nlsr -x 365"
$KSUITE/bin/ndn-publish-key.sh -i "NLSR" -a "$RTR" -f nlsr_key/nlsr.pem  -F router_key/.ccnx/ -P /ndn/keys/$SITE/%C1.R.N.Start/ndn/$SITE/$RTR -p /ndn/keys/$SITE/%C1.R.N.Start/ndn/$RTR/nlsr -x 365
