#!/usr/bin/env bash
#
# Generates passphrases.
#

# Load functions
LIB="`dirname $0`/../functions"
source "$LIB" write $* || exit 1

# Parameters
SIZE="$3"
FILE="$2"

# Generates a random passphrase
function keyringer_pwgen {
  ENTROPY_BYTES=${1:-40} # in bytes
  ENTROPY_SOURCE="${ENTROPY_SOURCE:-/dev/urandom}"

  # Strip possible newlines if output is wrapped.
  # Also strip trailing = signs as they add nothing to the password's entropy.
  dd bs=1 count=$ENTROPY_BYTES if=$ENTROPY_SOURCE status=none | base64 | tr -d '\n='
  echo
}

# Check
if [ -z "$FILE" ]; then
  echo "Usage: keyringer <keyring> $BASENAME <secret> [size]"
  exit 1
elif [ ! -z "$SIZE" ] && ! echo $SIZE | egrep -q '^[0-9]+$'; then
  echo "$SIZE is not a number"
  exit 1
fi

# Encrypt and store a randomly-generated secret
keyringer_pwgen $SIZE | keyringer_exec encrypt-batch "$BASEDIR" "$FILE" && echo "Secret generated and stored."
