#!/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 $BASENAME [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."