ref: 41c3cbf1d8b6bcf5e84feacbe34a5ef9d0200587
iron/bin/drawer
#! /bin/bash
CFG_FILE=$HOME/.ironcrypt.cfg
test -f $CFG_FILE && source $CFG_FILE
IRONCRYPT_EXE="ironcrypt"
STORAGE_DIR=$HOME/.secrets
test -d ${STORAGE_DIR} || mkdir -p ${STORAGE_DIR}
function secret_keep_interactive()
{
KEY=$1
HASHKEY=$(echo $KEY | sha1sum | awk '{print $1}')
test -f "$STORAGE_DIR/${HASHKEY}" && echo "Secret exists"
test -f "$STORAGE_DIR/${HASHKEY}" && exit 1
echo "Enter secret"
read secret
echo "$secret" > "$STORAGE_DIR/${HASHKEY}"
${IRONCRYPT_EXE} -e $STORAGE_DIR/${HASHKEY}
}
function secret_keep()
{
KEY=$1
secret=$2
HASHKEY=$(echo $KEY | sha1sum | awk '{print $1}')
test -f "$STORAGE_DIR/${HASHKEY}" && echo "Secret exists"
test -f "$STORAGE_DIR/${HASHKEY}" && exit 1
echo "$secret" > "$STORAGE_DIR/${HASHKEY}"
${IRONCRYPT_EXE} -e $STORAGE_DIR/${HASHKEY}
}
function secret_tell()
{
KEY=$1
HASHKEY=$(echo $KEY | sha1sum | awk '{print $1}')
test -f $STORAGE_DIR/${HASHKEY}.enc || echo "Secret missing"
test -f $STORAGE_DIR/${HASHKEY}.enc || exit 1
${IRONCRYPT_EXE} -d $STORAGE_DIR/${HASHKEY}.enc
secret="$(cat $STORAGE_DIR/${HASHKEY})"
echo "${secret}"
rm $STORAGE_DIR/${HASHKEY}
}
function drawer_usage()
{
prog_name=$(basename $0)
echo "$prog_name <-l|-u|-w|-e> "
echo ""
echo "$prog_name -l : lock secret "
echo "$prog_name -u : unlock secret "
echo "$prog_name -w : write secret to "
echo "$prog_name -r : read secret from - delete "
echo "$prog_name -e : export secret to var "
}
# MAIN
if [ "$#" = 1 ]; then
drawer_usage
exit 1
fi
if [ "$#" = 2 ]; then
opt=$1
argvalue=$2
fi
if [ "$#" = 3 ]; then
opt=$1
argvalue=$2
envvar=$3
fi
if [ "$opt" == "-e" ]; then
secret=$(secret_tell $argvalue)
export $envvar=${secret}
exit 0
elif [ "$opt" == "-u" ]; then
secret_tell $argvalue
exit 0
elif [ "$opt" == "-l" ]; then
secret_keep_interactive $argvalue
exit 0
elif [ "$opt" == "-w" ]; then
secret=$(secret_tell $argvalue)
echo ${secret} > $envvar
exit 0
elif [ "$opt" == "-r" ]; then
secret=$(cat $envvar)
secret_keep $argvalue $secret
exit 0
else
drawer_usage
exit 1
fi
drawer_usage