commit c20ca3a9209afd0f469f91951a9b111f28eaecfe
parent 37792ffdc5fd5d697b7e4df11428689234d361d2
Author: Jaromil <jaromil@dyne.org>
Date: Sat, 25 May 2013 15:05:21 +0200
whitespace cleanup
Diffstat:
M | tomb | | | 666 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
1 file changed, 333 insertions(+), 333 deletions(-)
diff --git a/tomb b/tomb
@@ -60,11 +60,11 @@ option_is_set() {
[[ -n ${(k)opts[$1]} ]];
r=$?
if [[ $2 == out ]]; then
- if [[ $r == 0 ]]; then
- echo 'set'
- else
- echo 'unset'
- fi
+ if [[ $r == 0 ]]; then
+ echo 'set'
+ else
+ echo 'unset'
+ fi
fi
return $r;
}
@@ -159,7 +159,7 @@ progress() {
# progress create 90 formatting the tomb
# progress create 100 tomb created successfully
if ! option_is_set --batch; then
- return
+ return
fi
print "[m][P][$1][$2][$3]" >&2
@@ -184,8 +184,8 @@ check_bin() {
# check for filesystem creation progs
command -v mkfs.ext4 > /dev/null && \
- MKFS="mkfs.ext4 -q -F -j -L" || \
- MKFS="mkfs.ext3 -q -F -j -L"
+ MKFS="mkfs.ext4 -q -F -j -L" || \
+ MKFS="mkfs.ext3 -q -F -j -L"
# check for mktemp
command -v mktemp > /dev/null || MKTEMP=0
@@ -193,17 +193,17 @@ check_bin() {
command -v steghide > /dev/null || STEGHIDE=0
# check for resize
command -v e2fsck resize2fs > /dev/null || RESIZER=0
-
+
if which tomb-kdf-pbkdf2 &> /dev/null; then
- KDF_PBKDF2="tomb-kdf-pbkdf2"
+ KDF_PBKDF2="tomb-kdf-pbkdf2"
else
- local our_pbkdf2
- our_pbkdf2="$(dirname $(readlink -f $TOMBEXEC))/kdf/tomb-kdf-pbkdf2"
- if which $our_pbkdf2 &> /dev/null; then
- KDF_PBKDF2=$our_pbkdf2
- else
- KDF_PBKDF2=
- fi
+ local our_pbkdf2
+ our_pbkdf2="$(dirname $(readlink -f $TOMBEXEC))/kdf/tomb-kdf-pbkdf2"
+ if which $our_pbkdf2 &> /dev/null; then
+ KDF_PBKDF2=$our_pbkdf2
+ else
+ KDF_PBKDF2=
+ fi
fi
}
@@ -252,7 +252,7 @@ safe_dir() {
return 0
else
_warning "WARNING: we cannot ensure we're running in RAM."
- xxx "Wait a bit before retrying... (attempt $tries)"
+ xxx "Wait a bit before retrying... (attempt $tries)"
sync && sleep 0.5
fi
done
@@ -308,7 +308,7 @@ SETPROMPT Password:
GETPIN
EOF`
if [[ `tail -n1 <<<$output` =~ ERR ]]; then
- return 1
+ return 1
fi
head -n1 <<<$output | awk '/^D / { sub(/^D /, ""); print }'
return 0
@@ -336,7 +336,7 @@ check_priv() {
sudok=false
# sudo -n ${TOMBEXEC} &> /dev/null
if ! option_is_set --sudo-pwd; then
- if [ $? != 0 ]; then # if not then ask a password
+ if [ $? != 0 ]; then # if not then ask a password
cat <<EOF | pinentry 2>/dev/null | awk '/^D / { sub(/^D /, ""); print }' | sudo -S -v
OPTION ttyname=$TTY
OPTION lc-ctype=$LANG
@@ -345,30 +345,30 @@ SETDESC Sudo execution of Tomb ${OLDARGS[@]}
SETPROMPT Insert your USER password:
GETPIN
EOF
- fi
+ fi
else
- _verbose "Escalating privileges using sudo-pwd"
- sudo -S -v <<<`option_value --sudo-pwd`
+ _verbose "Escalating privileges using sudo-pwd"
+ sudo -S -v <<<`option_value --sudo-pwd`
fi
sudo "${TOMBEXEC}" -U ${UID} -G ${GID} -T ${TTY} "${(@)OLDARGS}"
exit $?
fi # are we root already
# make sure necessary kernel modules are loaded
- modprobe dm_crypt
-
+ modprobe dm_crypt
+
return 0
}
# }}}
check_command() {
#generic checks; useful for interaction, to check if there are problems
#before wasting user's time
-
+
if ! option_is_set --ignore-swap && ! option_is_set -f; then
- if ! check_swap; then
- error "Swap activated. Disable it with swapoff, or use --ignore-swap"
- exit 1
- fi
+ if ! check_swap; then
+ error "Swap activated. Disable it with swapoff, or use --ignore-swap"
+ exit 1
+ fi
fi
}
@@ -464,22 +464,22 @@ EOF
cat $TOMBEXEC | awk '
/(_verbose|xxx) ".*"$/ { sub( /^(_verbose|xxx)/ , "");
- print "#: _verbose"; print "msgid " $0; print "msgstr \"\"\n" }
+ print "#: _verbose"; print "msgid " $0; print "msgstr \"\"\n" }
/(_success|yes) ".*"$/ { sub( /^(_success|yes)/ , "");
- print "#: _success"; print "msgid " $0; print "msgstr \"\"\n" }
+ print "#: _success"; print "msgid " $0; print "msgstr \"\"\n" }
/(_warning|no) ".*"$/ { sub( /^(_warning|no)/ , "");
- print "#: _warning"; print "msgid " $0; print "msgstr \"\"\n" }
+ print "#: _warning"; print "msgid " $0; print "msgstr \"\"\n" }
/(_failure|die) ".*"$/ { sub( /^(_failure|die)/ , "");
- print "#: _failure"; print "msgid " $0; print "msgstr \"\"\n" }
+ print "#: _failure"; print "msgid " $0; print "msgstr \"\"\n" }
/(_message|say) ".*"$/ { sub( /^(_message|say)/ , "");
- print "#: _message"; print "msgid " $0; print "msgstr \"\"\n" }
+ print "#: _message"; print "msgid " $0; print "msgstr \"\"\n" }
/(_message -n|act) ".*"$/ { sub( /^(_message -n|act)/ , "");
- print "#: _message -n"; print "msgid " $0; print "msgstr \"\"\n" }
+ print "#: _message -n"; print "msgid " $0; print "msgstr \"\"\n" }
'
}
# }}}
@@ -554,8 +554,8 @@ decode_key() {
keyfile=${tombname%%\.*}.tomb.key
if [[ -e "$keyfile" ]]; then
- _warning "Key file $keyfile already exist."
- return 1
+ _warning "Key file $keyfile already exist."
+ return 1
fi
_message "Trying to exhume a key out of image $imagefile"
for c in 1 2 3; do
@@ -612,7 +612,7 @@ BEGIN { ciphers=0 }
exec_safe_bind_hooks() {
if [[ -n ${(k)opts[-o]} ]]; then
- MOUNTOPTS=${opts[-o]}
+ MOUNTOPTS=${opts[-o]}
fi
local MOUNTPOINT="${1}"
local ME=${SUDO_USER:-$(whoami)}
@@ -685,8 +685,8 @@ forge_key() {
_message "Commanded to forge key $1"
if ! [ $1 ]; then
- _warning "no key name specified for creation"
- return 1
+ _warning "no key name specified for creation"
+ return 1
fi
# if swap is on, we remind the user about possible data leaks to disk
@@ -702,7 +702,7 @@ forge_key() {
if [ $? != 0 ]; then
_warning "cannot mount tmpfs filesystem in volatile memory"
rm -r "${keytmp}"
- die "operation aborted."
+ die "operation aborted."
fi
tombkey="$1"
@@ -716,19 +716,19 @@ forge_key() {
chmod 0600 ${keytmp}/tomb.tmp
random_source=/dev/random
if option_is_set --use-urandom; then
- random_source=/dev/urandom
+ random_source=/dev/urandom
fi
if [[ $DD = "dcfldd" ]]; then
- $DD bs=1 count=256 if=$random_source of=${keytmp}/tomb.tmp statusinterval=1
+ $DD bs=1 count=256 if=$random_source of=${keytmp}/tomb.tmp statusinterval=1
else
- $DD bs=1 count=256 if=$random_source of=${keytmp}/tomb.tmp
+ $DD bs=1 count=256 if=$random_source of=${keytmp}/tomb.tmp
fi
if ! [ -r ${keytmp}/tomb.tmp ]; then
_warning "cannot generate encryption key"
umount ${keytmp}
rm -r $keytmp
- die "operation aborted."
+ die "operation aborted."
fi
_success "Choose the password of your key: ${tombkey}"
@@ -742,18 +742,18 @@ forge_key() {
gen_key ${keytmp}/tomb.tmp > ${tombkey}
# this does a check on the file header, virtuosism by hellekin
- # [[ `file =(awk '/^-+BEGIN/,0' $1) -bi` =~ application/pgp ]]
+ # [[ `file =(awk '/^-+BEGIN/,0' $1) -bi` =~ application/pgp ]]
if ! is_valid_key ${tombkey}; then
- _warning "The key does not seem to be valid"
+ _warning "The key does not seem to be valid"
_warning "Dumping contents to screen:"
cat ${tombkey}
_warning "--"
umount ${keytmp}
rm -r $keytmp
- die "operation aborted."
+ die "operation aborted."
fi
- ${=WIPE} ${keytmp}/tomb.tmp # no need really, but anyway
+ ${=WIPE} ${keytmp}/tomb.tmp # no need really, but anyway
umount ${keytmp}
rm -r ${keytmp}
@@ -774,8 +774,8 @@ dig_tomb() {
if ! option_is_set -f && ! option_is_set --ignore-swap; then check_swap; fi
if ! [ $1 ]; then
- _warning "no tomb name specified for creation"
- return 1
+ _warning "no tomb name specified for creation"
+ return 1
fi
@@ -798,7 +798,7 @@ dig_tomb() {
_warning " `ls -lh ${tombdir}/${tombfile}`"
return 1
fi
-
+
_success "Creating a new tomb in ${tombdir}/${tombfile}"
@@ -813,7 +813,7 @@ dig_tomb() {
if [ $? = 0 -a -e ${tombdir}/${tombfile} ]; then
_message " `ls -lh ${tombdir}/${tombfile}`"
else
- die "Error creating the tomb ${tombdir}/${tombfile}, operation aborted."
+ die "Error creating the tomb ${tombdir}/${tombfile}, operation aborted."
fi
_success "Done digging $tombname"
@@ -827,9 +827,9 @@ dig_tomb() {
# it take arguments as the LUKS cipher to be used
lock_tomb_with_key() {
if ! [ $1 ]; then
- _warning "no tomb specified for locking"
+ _warning "no tomb specified for locking"
_warning "usage: tomb lock file.tomb file.tomb.key"
- return 1
+ return 1
fi
tombfile=`basename $1`
@@ -853,10 +853,10 @@ lock_tomb_with_key() {
xxx "loop mounted on ${nstloop}"
_message "checking if the tomb is empty (we never step on somebody else's bones)"
- cryptsetup isLuks ${nstloop}
+ cryptsetup isLuks ${nstloop}
if [ $? = 0 ]; then
- # is it a LUKS encrypted nest? then bail out and avoid reformatting it
- _warning "The tomb was already locked with another key"
+ # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+ _warning "The tomb was already locked with another key"
losetup -d ${nstloop}
die "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
else
@@ -873,11 +873,11 @@ lock_tomb_with_key() {
tombkey=${tombkeydir}/stdin.tmp
else
# take key from a file
- tombkey=`option_value -k`
+ tombkey=`option_value -k`
fi
else
# guess key as lying besides the tomb
- tombkey=${tombdir}/${tombname}.tomb.key
+ tombkey=${tombdir}/${tombname}.tomb.key
fi
if [ -r "${tombkey}" ]; then
@@ -892,13 +892,13 @@ lock_tomb_with_key() {
# [[ `file =(awk '/^-+BEGIN/,0' $1) -bi` =~ application/pgp ]]
if ! is_valid_key ${tombkey}; then
_warning "The key seems invalid, the application/pgp header is missing"
- losetup -d ${nstloop}
+ losetup -d ${nstloop}
die "Operation aborted."
- fi
+ fi
# the encryption cipher for a tomb can be set at creation using -o
- if option_is_set -o; then
- cipher="`option_value -o`"
+ if option_is_set -o; then
+ cipher="`option_value -o`"
else
cipher="aes-cbc-essiv:sha256"
fi
@@ -908,20 +908,20 @@ lock_tomb_with_key() {
_message "a password is required to use key ${keyname}"
local passok=0
if option_is_set --tomb-pwd; then
- tombpass=`option_value --tomb-pwd`
- else
+ tombpass=`option_value --tomb-pwd`
+ else
for c in 1 2 3; do
if [ $c = 1 ]; then
- tombpass=`exec_as_user ${TOMBEXEC} askpass "Insert password to use key: $keyname"`
+ tombpass=`exec_as_user ${TOMBEXEC} askpass "Insert password to use key: $keyname"`
else
- tombpass=`exec_as_user ${TOMBEXEC} askpass "Insert password to use key: $keyname (retry $c)"`
+ tombpass=`exec_as_user ${TOMBEXEC} askpass "Insert password to use key: $keyname (retry $c)"`
fi
- if [[ $? != 0 ]]; then
- losetup -d ${nstloop}
- die "User aborted"
- fi
-
- get_lukskey "${tombpass}" ${tombkey} >/dev/null
+ if [[ $? != 0 ]]; then
+ losetup -d ${nstloop}
+ die "User aborted"
+ fi
+
+ get_lukskey "${tombpass}" ${tombkey} >/dev/null
if [ $? = 0 ]; then
passok=1; _message "Password OK."
break;
@@ -930,7 +930,7 @@ lock_tomb_with_key() {
fi
if [ "$passok" = "0" ]; then
_warning "Password incorrect"
- losetup -d $nstloop
+ losetup -d $nstloop
die "Operation aborted."
fi
@@ -947,12 +947,12 @@ lock_tomb_with_key() {
losetup -d $nstloop
die "Operation aborted."
fi
-
-
-
+
+
+
get_lukskey "${tombpass}" ${tombkey} | \
cryptsetup --key-file - \
- --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+ --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
if ! [ $? = 0 ]; then
_warning "cryptsetup luksOpen returned an error"
unset tombpass
@@ -984,10 +984,10 @@ lock_tomb_with_key() {
# backward compatibility
create_tomb() {
if ! [ $1 ]; then
- _warning "no tomb name specified for creation"
- return 1
+ _warning "no tomb name specified for creation"
+ return 1
fi
-
+
dig_tomb ${=PARAM}
{ test $? = 0 } || { die "Failed to dig tomb, operation aborted." }
@@ -996,13 +996,13 @@ create_tomb() {
# make sure the file has a .tomb extension
tombname=${tombfile%%\.*}
tombfile=${tombname}.tomb
-
+
forge_key ${tombfile}.key
{ test $? = 0 } || { die "Failed to forge key, operation aborted." }
lock_tomb_with_key ${tombfile} -l ${tombfile}.key
{ test $? = 0 } || { die "Failed to lock tomb with key, operation aborted." }
-
+
yes "Tomb $tombname succesfully created"
ls -l ${tombfile}*
}
@@ -1023,25 +1023,25 @@ get_lukskey() {
firstline=`head -n1 $keyfile`
xxx "get_lukskey XXX $keyfile"
if [[ $firstline =~ '^_KDF_' ]]; then
- _verbose "KDF: `cut -d_ -f 3 <<<$firstline`"
- case `cut -d_ -f 3 <<<$firstline` in
- pbkdf2sha1)
- if [[ -z $KDF_PBKDF2 ]]; then
- die "The tomb use kdf method 'pbkdf2', which is unsupported on your system"
- fi
- pbkdf2_param=`cut -d_ -f 4- <<<$firstline | tr '_' ' '`
- tombpass=$(${KDF_PBKDF2} ${=pbkdf2_param} 2> /dev/null <<<$tombpass)
- ;;
- *)
- _failure "No suitable program for KDF `cut -f 3 <<<$firstline`"
- unset tombpass
- return 1
- ;;
- esac
+ _verbose "KDF: `cut -d_ -f 3 <<<$firstline`"
+ case `cut -d_ -f 3 <<<$firstline` in
+ pbkdf2sha1)
+ if [[ -z $KDF_PBKDF2 ]]; then
+ die "The tomb use kdf method 'pbkdf2', which is unsupported on your system"
+ fi
+ pbkdf2_param=`cut -d_ -f 4- <<<$firstline | tr '_' ' '`
+ tombpass=$(${KDF_PBKDF2} ${=pbkdf2_param} 2> /dev/null <<<$tombpass)
+ ;;
+ *)
+ _failure "No suitable program for KDF `cut -f 3 <<<$firstline`"
+ unset tombpass
+ return 1
+ ;;
+ esac
fi
print ${tombpass} | \
gpg --batch --passphrase-fd 0 --no-tty --no-options --status-fd 2 \
- -d "${keyfile}" 2> /dev/null
+ -d "${keyfile}" 2> /dev/null
ret=$?
xxx "gpg decryption returns $ret"
unset tombpass
@@ -1057,29 +1057,29 @@ gen_key() {
local tombpass=""
local tombpasstmp=""
if ! option_is_set --tomb-pwd; then
- while true; do
- # 3 tries to write two times a matching password
- tombpass=`exec_as_user ${TOMBEXEC} askpass "Secure key for ${tombname}"`
- if [[ $? != 0 ]]; then
- die "User aborted"
- fi
- if [ -z $tombpass ]; then
- _warning "you set empty password, which is not possible"
- continue
- fi
- tombpasstmp=$tombpass
- tombpass=`exec_as_user ${TOMBEXEC} askpass "Secure key for ${tombname} (again)"`
- if [[ $? != 0 ]]; then
- die "User aborted"
- fi
- if [ "$tombpasstmp" = "$tombpass" ]; then
- break;
- fi
- unset tombpasstmp
- unset tombpass
- done
+ while true; do
+ # 3 tries to write two times a matching password
+ tombpass=`exec_as_user ${TOMBEXEC} askpass "Secure key for ${tombname}"`
+ if [[ $? != 0 ]]; then
+ die "User aborted"
+ fi
+ if [ -z $tombpass ]; then
+ _warning "you set empty password, which is not possible"
+ continue
+ fi
+ tombpasstmp=$tombpass
+ tombpass=`exec_as_user ${TOMBEXEC} askpass "Secure key for ${tombname} (again)"`
+ if [[ $? != 0 ]]; then
+ die "User aborted"
+ fi
+ if [ "$tombpasstmp" = "$tombpass" ]; then
+ break;
+ fi
+ unset tombpasstmp
+ unset tombpass
+ done
else
- tombpass=`option_value --tomb-pwd`
+ tombpass=`option_value --tomb-pwd`
fi
@@ -1088,40 +1088,40 @@ gen_key() {
_verbose "KDF method chosen is: '`option_value --kdf`'"
kdf_method=$(cut -d: -f1 <<<`option_value --kdf` )
case $kdf_method in
- pbkdf2)
- if [[ -z $KDF_PBKDF2 ]]; then
- die "The tomb use kdf method 'pbkdf2', which is unsupported on your system"
- fi
- # --kdf takes one parameter: iter time (on present machine) in seconds
- seconds=$(cut -d: -f2 -s <<<`option_value --kdf`)
- if [[ -z $seconds ]]; then
- seconds=1
- fi
- local -i microseconds
- microseconds=$((seconds*1000000))
- _verbose "Microseconds: $microseconds"
- pbkdf2_salt=`${KDF_PBKDF2}-gensalt`
- pbkdf2_iter=`${KDF_PBKDF2}-getiter $microseconds`
- # We use a length of 64bytes = 512bits (more than needed!?)
- tombpass=`${KDF_PBKDF2} $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
-
- header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
- ;;
- ""|null)
-
- header=""
- ;;
- *)
- _warning "KDF method non recognized"
- return 1
- header=""
- ;;
+ pbkdf2)
+ if [[ -z $KDF_PBKDF2 ]]; then
+ die "The tomb use kdf method 'pbkdf2', which is unsupported on your system"
+ fi
+ # --kdf takes one parameter: iter time (on present machine) in seconds
+ seconds=$(cut -d: -f2 -s <<<`option_value --kdf`)
+ if [[ -z $seconds ]]; then
+ seconds=1
+ fi
+ local -i microseconds
+ microseconds=$((seconds*1000000))
+ _verbose "Microseconds: $microseconds"
+ pbkdf2_salt=`${KDF_PBKDF2}-gensalt`
+ pbkdf2_iter=`${KDF_PBKDF2}-getiter $microseconds`
+ # We use a length of 64bytes = 512bits (more than needed!?)
+ tombpass=`${KDF_PBKDF2} $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+
+ header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
+ ;;
+ ""|null)
+
+ header=""
+ ;;
+ *)
+ _warning "KDF method non recognized"
+ return 1
+ header=""
+ ;;
esac
echo -n $header
print "${tombpass}" \
| gpg --openpgp --batch --no-options --no-tty --passphrase-fd 0 2>/dev/null \
- -o - -c -a ${lukskey}
+ -o - -c -a ${lukskey}
unset tombpass
}
@@ -1136,8 +1136,8 @@ mount_tomb() {
if ! option_is_set -f && ! option_is_set --ignore-swap; then check_swap; fi
if ! [ ${1} ]; then
- _warning "no tomb name specified for creation"
- return 1
+ _warning "no tomb name specified for creation"
+ return 1
fi
@@ -1168,11 +1168,11 @@ mount_tomb() {
tombkey=${tombkeydir}/stdin.tmp
else
# take key from a file
- tombkey=`option_value -k`
+ tombkey=`option_value -k`
fi
else
# guess key as lying besides the tomb
- tombkey=${tombdir}/${tombfile}.key
+ tombkey=${tombdir}/${tombfile}.key
fi
if ! [ -r ${tombkey} ]; then
_warning "key file not found: ${tombkey}"
@@ -1181,11 +1181,11 @@ mount_tomb() {
fi
if ! [ $2 ]; then
- tombmount=/media/${tombfile}
- _message "mountpoint not specified, using default: $tombmount"
+ tombmount=/media/${tombfile}
+ _message "mountpoint not specified, using default: $tombmount"
elif ! [ -x $2 ]; then
- _warning "mountpoint $2 doesn't exist, operation aborted."
- return 1
+ _warning "mountpoint $2 doesn't exist, operation aborted."
+ return 1
else
tombmount=$2
fi
@@ -1193,7 +1193,7 @@ mount_tomb() {
# check if its already open
mount -l | grep "${tombfile}.*\[$tombname\]$" 2>&1 > /dev/null
if [ $? = 0 ]; then
- _warning "$tombname is already open on $tombmount"
+ _warning "$tombname is already open on $tombmount"
_message "here below its status is reported:"
list_tombs ${tombname}
return 1
@@ -1206,16 +1206,16 @@ mount_tomb() {
nstloop=`losetup -f`
if [ $? = 255 ]; then
- die "too many tomb opened. Please close any of them to open another tomb"
+ die "too many tomb opened. Please close any of them to open another tomb"
fi
losetup -f ${tombdir}/${tombfile}
cryptsetup isLuks ${nstloop}
if [ $? != 0 ]; then
- # is it a LUKS encrypted nest? see cryptsetup(1)
- _warning "$tombfile is not a valid Luks encrypted storage file"
- $norm || rmdir $tombmount 2>/dev/null
- return 1
+ # is it a LUKS encrypted nest? see cryptsetup(1)
+ _warning "$tombfile is not a valid Luks encrypted storage file"
+ $norm || rmdir $tombmount 2>/dev/null
+ return 1
fi
say "this tomb is a valid LUKS encrypted device"
@@ -1235,47 +1235,47 @@ mount_tomb() {
# save date of mount in minutes since 1970
mapdate=`date +%s`
-
+
mapper="tomb.${tombname}.${mapdate}.`basename $nstloop`"
keyname=`basename $tombkey | cut -d. -f1`
_warning "Password is required for key ${keyname}"
for c in 1 2 3; do
- if ! option_is_set --tomb-pwd; then
- tombpass=`exec_as_user ${TOMBEXEC} askpass "Open tomb ${keyname}"`
- if [[ $? != 0 ]]; then
- die "User aborted"
- fi
- else
- tombpass=`option_value --tomb-pwd`
- fi
- get_lukskey "${tombpass}" ${tombkey} | \
- cryptsetup --key-file - luksOpen ${nstloop} ${mapper}
- local ret=$?
- unset tombpass
- if [[ $ret != 0 ]]; then
- if [[ $c = 3 ]] || option_is_set --tomb-pwd; then
- die "Wrong password: aborting"
- fi
- continue
- fi
-
- # if key was from stdin delete temp file and dir
- if [ $tombkeydir ]; then
- ${=WIPE} ${tombkey}
- rmdir $tombkeydir
- fi
-
- if [ -r /dev/mapper/${mapper} ]; then
- break; # password was correct
- fi
+ if ! option_is_set --tomb-pwd; then
+ tombpass=`exec_as_user ${TOMBEXEC} askpass "Open tomb ${keyname}"`
+ if [[ $? != 0 ]]; then
+ die "User aborted"
+ fi
+ else
+ tombpass=`option_value --tomb-pwd`
+ fi
+ get_lukskey "${tombpass}" ${tombkey} | \
+ cryptsetup --key-file - luksOpen ${nstloop} ${mapper}
+ local ret=$?
+ unset tombpass
+ if [[ $ret != 0 ]]; then
+ if [[ $c = 3 ]] || option_is_set --tomb-pwd; then
+ die "Wrong password: aborting"
+ fi
+ continue
+ fi
+
+ # if key was from stdin delete temp file and dir
+ if [ $tombkeydir ]; then
+ ${=WIPE} ${tombkey}
+ rmdir $tombkeydir
+ fi
+
+ if [ -r /dev/mapper/${mapper} ]; then
+ break; # password was correct
+ fi
done
if ! [ -r /dev/mapper/${mapper} ]; then
- losetup -d ${nstloop}
- $norm || rmdir ${tombmount} 2>/dev/null
- die "failure mounting the encrypted file"
+ losetup -d ${nstloop}
+ $norm || rmdir ${tombmount} 2>/dev/null
+ die "failure mounting the encrypted file"
fi
# array: [ cipher, keysize, loopdevice ]
@@ -1326,8 +1326,8 @@ mount_tomb() {
# process bind-hooks (mount -o bind of directories)
# and post-hooks (execute on open)
if ! option_is_set -n ; then
- exec_safe_bind_hooks ${tombmount}
- exec_safe_post_hooks ${tombmount} open
+ exec_safe_bind_hooks ${tombmount}
+ exec_safe_post_hooks ${tombmount} open
fi
return 0
}
@@ -1336,7 +1336,7 @@ mount_tomb() {
# {{{ - Internal operations on mounted tombs
-# list_tomb_mounts
+# list_tomb_mounts
# print out an array of mounted tombs (internal use)
# format is semi-colon separated list of attributes
# if 1st arg is supplied, then list only that tomb
@@ -1352,7 +1352,7 @@ list_tomb_mounts() {
mount -l \
| awk '
BEGIN { main="" }
-/^\/dev\/mapper\/tomb/ {
+/^\/dev\/mapper\/tomb/ {
if(main==$1) next;
print $1 ";" $3 ";" $5 ";" $6 ";" $7
main=$1
@@ -1379,8 +1379,8 @@ BEGIN { main="" }
# needs an argument: name of tomb whose hooks belong
list_tomb_binds() {
if [ "$1" = "" ]; then
- _failure "internal error: list_tomb_binds called without argument."; fi
-
+ _failure "internal error: list_tomb_binds called without argument."; fi
+
# list bind hooks on util-linux 2.20 (Debian 7)
mount -l \
| awk -vtomb="$1" '
@@ -1389,18 +1389,18 @@ BEGIN { main="" }
if($7!=tomb) next;
if(main=="") { main=$1; next; }
if(main==$1)
- print $1 ";" $3 ";" $5 ";" $6 ";" $7
+ print $1 ";" $3 ";" $5 ";" $6 ";" $7
}
'
-
+
# list bind hooks on util-linux 2.17 (Debian 6)
tombmount=`mount -l \
| awk -vtomb="$1" '
/^\/dev\/mapper\/tomb/ { if($7!=tomb) next; print $3; exit; }'`
-
+
mount -l | grep "^$tombmount" \
| awk -vtomb="$1" '
- /bind/ { print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'
+ /bind/ { print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'
}
# }}}
@@ -1411,24 +1411,24 @@ BEGIN { main="" }
slam_tomb() {
# $1 = tomb mount point
if [[ -z `fuser -m "$1" 2> /dev/null` ]]; then
- return 0
+ return 0
fi
#Note: shells are NOT killed by INT or TERM, but they are killed by HUP
for s in TERM HUP KILL; do
- xxx "Sending $s to processes inside the tomb:"
- if option_is_set -D; then
- ps -fp `fuser -m /media/a.tomb 2> /dev/null`|
- while read line; do
- xxx $line
- done
- fi
- fuser -s -m "$1" -k -M -$s
- if [[ -z `fuser -m "$1" 2> /dev/null` ]]; then
- return 0
- fi
- if ! option_is_set -f; then
- sleep 3
- fi
+ xxx "Sending $s to processes inside the tomb:"
+ if option_is_set -D; then
+ ps -fp `fuser -m /media/a.tomb 2> /dev/null`|
+ while read line; do
+ xxx $line
+ done
+ fi
+ fuser -s -m "$1" -k -M -$s
+ if [[ -z `fuser -m "$1" 2> /dev/null` ]]; then
+ return 0
+ fi
+ if ! option_is_set -f; then
+ sleep 3
+ fi
done
return 1
}
@@ -1467,19 +1467,19 @@ umount_tomb() {
xxx "name: $tombname"
xxx "mount: $tombmount"
xxx "mapper: $mapper"
-
+
{ test -e "$mapper" } && {
_warning "Tomb not found: $1"
_warning "Please specify an existing tomb."
return 0 }
-
+
if [ $SLAM ]; then
_success "Slamming tomb $tombname mounted on $tombmount"
_message "Kill all processes busy inside the tomb"
- if ! slam_tomb "$tombmount"; then
+ if ! slam_tomb "$tombmount"; then
_warning "Cannot slam the tomb $tombname"
return 1
- fi
+ fi
else
say "Closing tomb $tombname mounted on $tombmount"
fi
@@ -1494,18 +1494,18 @@ umount_tomb() {
if [[ $? != 0 ]]; then
if [ $SLAM ]; then
_success "Slamming tomb: killing all processes using this hook"
- slam_tomb "$bind_mount"
- if [[ $? == 1 ]]; then
+ slam_tomb "$bind_mount"
+ if [[ $? == 1 ]]; then
_warning "Cannot slam the bind hook $bind_mount"
return 1
- fi
+ fi
umount $bind_mount
else
_warning "Tomb bind hook $bind_mount is busy, cannot close tomb."
fi
fi
done
-
+
# Execute post-hooks for eventual cleanup
if ! option_is_set -n ; then
exec_safe_post_hooks ${tombmount%%/} close
@@ -1515,28 +1515,28 @@ umount_tomb() {
umount ${tombmount}
if ! [ $? = 0 ]; then _warning "Tomb is busy, cannot umount!"
else
- # this means we used a "default" mount point
- { test "${tombmount}" = "/media/${tombname}.tomb" } && {
- rmdir ${tombmount} }
+ # this means we used a "default" mount point
+ { test "${tombmount}" = "/media/${tombname}.tomb" } && {
+ rmdir ${tombmount} }
fi
cryptsetup luksClose $mapper
{ test $? = 0 } || {
_warning "error occurred in cryptsetup luksClose ${mapper}"
return 1 }
-
+
losetup -d "/dev/$tombloop"
-
+
# # kill the status tray widget if still present
# # this makes the widget disappear when closing tomb from cli
# awkmapper=`sed 's:\/:\\\/:g' <<< $mapper`
# statustray_pid=`ps ax | awk "/tomb-status $awkmapper/"' {print $1} '`
# { test "$statustray_pid" = "" } || { kill ${statustray_pid} }
-
+
_success "Tomb $tombname closed: your bones will rest in peace."
-
+
done # loop across mounted tombs
-
+
return 0
}
# }}}
@@ -1553,14 +1553,14 @@ change_passwd() {
# check the keyfile
if ! [ -r $keyfile ]; then
- _warning "key not found: $keyfile"
- return 1
+ _warning "key not found: $keyfile"
+ return 1
fi
if ! is_valid_key $keyfile ; then
- _warning "file doesn't seems to be a tomb key: $keyfile"
- _warning "operation aborted."
- return 1
+ _warning "file doesn't seems to be a tomb key: $keyfile"
+ _warning "operation aborted."
+ return 1
fi
local tmpnewkey lukskey c tombpass tombpasstmp
@@ -1571,37 +1571,37 @@ change_passwd() {
_success "Changing password for $keyfile"
keyname=`basename $keyfile`
if ! option_is_set --tomb-old-pwd; then
- while true; do
- tombpass=`exec_as_user ${TOMBEXEC} askpass "Type old password for ${keyname}" "Change tomb key password"`
- if [[ $? == 1 ]]; then
- die "User aborted"
- fi
- if get_lukskey "${tombpass}" ${keyfile} > ${lukskey}; then
- break
- fi
- done
+ while true; do
+ tombpass=`exec_as_user ${TOMBEXEC} askpass "Type old password for ${keyname}" "Change tomb key password"`
+ if [[ $? == 1 ]]; then
+ die "User aborted"
+ fi
+ if get_lukskey "${tombpass}" ${keyfile} > ${lukskey}; then
+ break
+ fi
+ done
else
- tombpass=`option_value --tomb-old-pwd`
- if ! get_lukskey "${tombpass}" ${keyfile} > ${lukskey}; then
- die "Invalid old password"
- fi
+ tombpass=`option_value --tomb-old-pwd`
+ if ! get_lukskey "${tombpass}" ${keyfile} > ${lukskey}; then
+ die "Invalid old password"
+ fi
fi
{
- gen_key $lukskey > ${tmpnewkey}
-
- if ! is_valid_key $tmpnewkey; then
- die "Error: the newly generated keyfile does not seem valid"
- else
- # copy the new key as the original keyfile name
- cp "${tmpnewkey}" "${keyfile}"
- _success "Your passphrase was successfully updated."
- fi
+ gen_key $lukskey > ${tmpnewkey}
+
+ if ! is_valid_key $tmpnewkey; then
+ die "Error: the newly generated keyfile does not seem valid"
+ else
+ # copy the new key as the original keyfile name
+ cp "${tmpnewkey}" "${keyfile}"
+ _success "Your passphrase was successfully updated."
+ fi
} always {
- _verbose "cleanup: $tmpnewkey $lukskey"
- # wipe all temp file
- ${=WIPE} "${tmpnewkey}"
- ${=WIPE} "${lukskey}"
+ _verbose "cleanup: $tmpnewkey $lukskey"
+ # wipe all temp file
+ ${=WIPE} "${tmpnewkey}"
+ ${=WIPE} "${lukskey}"
}
return $?
@@ -1614,9 +1614,9 @@ change_passwd() {
resize_tomb() {
_message "Commanded to resize tomb $1 to $opts[-s] megabytes"
if ! [ $1 ]; then
- _failure "No tomb name specified for resizing"
+ _failure "No tomb name specified for resizing"
elif ! [ -r "$1" ]; then
- _failure "Cannot find $1"
+ _failure "Cannot find $1"
fi
local c tombpass tombkey
@@ -1628,20 +1628,20 @@ resize_tomb() {
if option_is_set -k ; then
if [[ "`option_value -k`" == "-" ]]; then
- # take key from stdin
- local tombkeydir
- tombkeydir=`safe_dir`
- cat > ${tombkeydir}/stdin.tmp
- tombkey=${tombkeydir}/stdin.tmp
+ # take key from stdin
+ local tombkeydir
+ tombkeydir=`safe_dir`
+ cat > ${tombkeydir}/stdin.tmp
+ tombkey=${tombkeydir}/stdin.tmp
else
- # take key from a file
- tombkey=`option_value -k`
+ # take key from a file
+ tombkey=`option_value -k`
fi
else
# guess key as lying besides the tomb
- tombkey=${tombdir}/${tombfile}.key
+ tombkey=${tombdir}/${tombfile}.key
fi
-
+
if ! [ -r ${tombkey} ]; then
_failure "key file not found: ${tombkey}"
fi
@@ -1650,28 +1650,28 @@ resize_tomb() {
local newtombsize=$opts[-s]
local oldtombsize=`stat -c %s "$1" 2>/dev/null`
local mounted_tomb=`mount -l |
- awk -vtomb="[$tombname]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 }'`
+ awk -vtomb="[$tombname]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 }'`
if [ "$mounted_tomb" ]; then
- _failure "the tomb $tombname is open, to resize it it needs to be close."
+ _failure "the tomb $tombname is open, to resize it it needs to be close."
fi
# MB to bytes conversion
newtombsize=`expr \( $newtombsize \* 1024 \) \* 1024 2> /dev/null`
-
+
if ! [ "$newtombsize" ] ; then
- _failure "You must specify the new size of $tombname"
+ _failure "You must specify the new size of $tombname"
elif [[ $newtombsize != <-> ]]; then
- _failure "Size is not an integer"
+ _failure "Size is not an integer"
elif [ "$newtombsize" -le "$oldtombsize" ]; then
- _failure "the new size must be greater then old tomb size."
+ _failure "the new size must be greater then old tomb size."
fi
local delta=`expr $newtombsize \- $oldtombsize`
-
+
local tombsize_4k=`expr $delta \/ 1024`
tombsize_4k=`expr $tombsize_4k \/ 4 `
-
+
act "Generating ${tombfile} of ${newtombsize}Mb (${tombsize_4k} blocks of 4Kb)"
"$DD" if=/dev/urandom bs=4k count=${tombsize_4k} of="${tmp_resize}"
@@ -1680,19 +1680,19 @@ resize_tomb() {
else
_failure "Error creating the extra resize $tmp_resize, operation aborted."
fi
-
+
cat "${tmp_resize}" >> "$1"
${=WIPE} "${tmp_resize}"
-
+
local nstloop=`losetup -f`
if [ $? = 255 ]; then
- _failure "too many tomb opened. Please close any of them to open another tomb"
+ _failure "too many tomb opened. Please close any of them to open another tomb"
fi
losetup -f "$1"
-
+
local mapdate=`date +%s`
local mapper="tomb.${tombname}.${mapdate}.`basename $nstloop`"
-
+
_message "Password is required for key ${keyname}"
for c in 1 2 3; do
if [ $c = 1 ]; then
@@ -1700,37 +1700,37 @@ resize_tomb() {
else
tombpass=`exec_as_user ${TOMBEXEC} askpass "$keyname (retry $c)"`
fi
- get_lukskey "${tombpass}" ${tombkey} | \
- cryptsetup --key-file - luksOpen ${nstloop} ${mapper}
-
- unset tombpass
-
+ get_lukskey "${tombpass}" ${tombkey} | \
+ cryptsetup --key-file - luksOpen ${nstloop} ${mapper}
+
+ unset tombpass
+
if [ -r /dev/mapper/${mapper} ]; then
break; # password was correct
- fi
+ fi
done
if ! [ -r /dev/mapper/${mapper} ]; then
- losetup -d ${nstloop}
- _failure "failure mounting the encrypted file"
+ losetup -d ${nstloop}
+ _failure "failure mounting the encrypted file"
fi
cryptsetup resize "${mapper}"
if [ $? != 0 ]; then
- losetup -d ${nstloop}
- _failure "cryptsetup failed to resize $mapper"
+ losetup -d ${nstloop}
+ _failure "cryptsetup failed to resize $mapper"
fi
e2fsck -f /dev/mapper/${mapper}
if [ $? != 0 ]; then
- losetup -d ${nstloop}
- _failure "e2fsck failed to check $mapper"
+ losetup -d ${nstloop}
+ _failure "e2fsck failed to check $mapper"
fi
resize2fs /dev/mapper/${mapper}
if [ $? != 0 ]; then
- losetup -d ${nstloop}
- _failure "resize2fs failed to resize $mapper"
+ losetup -d ${nstloop}
+ _failure "resize2fs failed to resize $mapper"
fi
sleep 1 # needs to settle a bit
@@ -1749,7 +1749,7 @@ resize_tomb() {
# index files in all tombs for search
# $1 is optional, to specify a tomb
index_tombs() {
- { command -v updatedb > /dev/null } || {
+ { command -v updatedb > /dev/null } || {
die "Cannot index tombs on this system: updatedb not installed" }
mounted_tombs=(`list_tomb_mounts $1`)
@@ -1773,7 +1773,7 @@ index_tombs() {
done
}
search_tombs() {
- { command -v locate > /dev/null } || {
+ { command -v locate > /dev/null } || {
die "Cannot index tombs on this system: updatedb not installed" }
# list all open tombs
@@ -1795,7 +1795,7 @@ search_tombs() {
no "run 'tomb index' to create indexes"
fi
done
-
+
}
# {{{ - List
@@ -1835,8 +1835,8 @@ list_tombs() {
}
if option_is_set --get-mountpoint; then
- echo $tombmount
- continue
+ echo $tombmount
+ continue
fi
# breaking up such strings is good for translation
print -n "$fg[green]$tombname"
@@ -1872,7 +1872,7 @@ list_tombs() {
if [[ ${tombp} -ge 90 ]]; then
print -n "$fg_no_bold[green]$tombname"
- print "$fg_bold[red] Your tomb is almost full!"
+ print "$fg_bold[red] Your tomb is almost full!"
fi
# now check hooks
@@ -1996,13 +1996,13 @@ main() {
subcommands_opts[resize]="s: -size=s k: -key=k"
subcommands_opts[check]="-ignore-swap"
# subcommands_opts[translate]=""
-
+
### Detect subcommand
local -aU every_opts #every_opts behave like a set; that is, an array with unique elements
for optspec in $subcommands_opts$main_opts; do
- for opt in ${=optspec}; do
- every_opts+=${opt}
- done
+ for opt in ${=optspec}; do
+ every_opts+=${opt}
+ done
done
local -a oldstar
oldstar=($argv)
@@ -2023,12 +2023,12 @@ main() {
unset discardme
subcommand=$1
if [[ -z $subcommand ]]; then
- subcommand="__default"
+ subcommand="__default"
fi
if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
- _warning "There's no such command \"$subcommand\"."
- _failure "Please try -h for help" 127
+ _warning "There's no such command \"$subcommand\"."
+ _failure "Please try -h for help" 127
# die "Subcommand '$subcommand' doesn't exist" 127
fi
argv=(${oldstar})
@@ -2038,7 +2038,7 @@ main() {
# zsh magic: ${=string} will split to multiple arguments when spaces occur
set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
# if there is no option, we don't need parsing
- if [[ -n $cmd_opts ]]; then
+ if [[ -n $cmd_opts ]]; then
zparseopts -M -E -D -Aopts ${cmd_opts}
if [[ $? != 0 ]]; then
_warning "Some error occurred during option processing."
@@ -2066,18 +2066,18 @@ main() {
fi
### End parsing command-specific options
if ! option_is_set --no-color; then
- autoload colors; colors
+ autoload colors; colors
fi
if ! option_is_set --unsecure-dev-mode; then
- for opt in --sudo-pwd --tomb-pwd --use-urandom --tomb-old-pwd; do
- if option_is_set $opt; then
- die "You specified option $opt, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsecure-dev-mode" 127
- fi
- done
+ for opt in --sudo-pwd --tomb-pwd --use-urandom --tomb-old-pwd; do
+ if option_is_set $opt; then
+ die "You specified option $opt, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsecure-dev-mode" 127
+ fi
+ done
fi
# when we run as root, we remember the original uid:gid
- # to set permissions for the calling user and drop privileges
+ # to set permissions for the calling user and drop privileges
if option_is_set -U; then _uid="`option_value -U`"; fi
if option_is_set -G; then _gid="`option_value -G`"; fi
if option_is_set -T; then _tty="`option_value -T`"; fi
@@ -2139,7 +2139,7 @@ main() {
_warning "steghide not installed. Cannot bury your key"
return 1
fi
- encode_key $PARAM[1] $PARAM[2] ;;
+ encode_key $PARAM[1] $PARAM[2] ;;
exhume)
if [ "$STEGHIDE" = 0 ]; then
_warning "steghide not installed. Cannot exhume your key"
@@ -2152,9 +2152,9 @@ main() {
_warning "resize2fs not installed. Cannot resize your tomb."
return 1
fi
- check_priv
- resize_tomb $PARAM[1]
- ;;
+ check_priv
+ resize_tomb $PARAM[1]
+ ;;
# internal commands useful to developers
'source') return 0 ;;