iron.git

ref: 261a306e87671cb561ed3905816d7389b1eddb50

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