35 lines
610 B
Bash
Executable File
35 lines
610 B
Bash
Executable File
#! /bin/sh
|
|
|
|
set -e
|
|
|
|
echo Username: >&2
|
|
read -r USER
|
|
echo Password: >&2
|
|
read -r PWD
|
|
echo "Quota, in MiB (leave empty for unlimited quota):" >&2
|
|
read -r QUOTA
|
|
|
|
PWD=$(printf '%s' $PWD | xxd -p | tr -d '\n')
|
|
SALT=$(openssl rand 32 | xxd -p | tr -d '\n')
|
|
KEY=$(openssl rand 32 | xxd -p | tr -d '\n')
|
|
PWD=$(printf '%s%s' $SALT $PWD)
|
|
|
|
ROUNDS=1000
|
|
|
|
for i in $(seq $ROUNDS)
|
|
do
|
|
printf "\r%d/$ROUNDS" $i >&2
|
|
PWD=$(printf '%s' $PWD | xxd -p -r | sha256sum | cut -d' ' -f1)
|
|
done
|
|
|
|
echo >&2
|
|
cat <<-EOF
|
|
{
|
|
"name": "$USER",
|
|
"password": "$PWD",
|
|
"salt": "$SALT",
|
|
"key": "$KEY",
|
|
"quota": "$QUOTA"
|
|
}
|
|
EOF
|