Index: scripts/crypt_setup.sh =================================================================== diff -u -rcccff32c3345c85f48cc75c85eec37da5b9ce1de -r460049515fde52dba549364579d28e8593d9ed09 --- scripts/crypt_setup.sh (.../crypt_setup.sh) (revision cccff32c3345c85f48cc75c85eec37da5b9ce1de) +++ scripts/crypt_setup.sh (.../crypt_setup.sh) (revision 460049515fde52dba549364579d28e8593d9ed09) @@ -15,6 +15,8 @@ # ############################################################################ +IS_MOUNTED=0 + ERR_CRYPTSETUP_UNKNOWN=100 ERR_CRYPTSETUP_USAGE=101 @@ -32,12 +34,14 @@ ERR_CRYPTSETUP_MOUNT_TYPE=131 ERR_CRYPTSETUP_MOUNT_OPEN=132 ERR_CRYPTSETUP_MOUNT_MOUNT=133 -ERR_CRYPTSETUP_MOUNT_MOUNT=134 +ERR_CRYPTSETUP_MOUNT_ISMOUNT=134 # is used in Application do not modify [DeviceController] +ERR_CRYPTSETUP_MOUNT_CRC=135 LOC_DEV="/dev/mmcblk0p7" LOC_DIR="configurations" LOC_MAP="/dev/mapper/"$LOC_DIR LOC_VAR="/var/"$LOC_DIR +LOC_CRC="settings.crc" DEV_TYP="crypto_LUKS" DEV_MNT="/dev/mapper/configurations on /var/configurations type ext4 (rw,relatime)" @@ -52,8 +56,9 @@ function isMounted() { if [ "$( sudo mount | grep "$DEV_MNT" )" != "" ]; then echo "partition already mounted" - exit $ERR_CRYPTSETUP_MOUNT_MOUNT + return $IS_MOUNTED fi + return 1 } function checkPassword() { @@ -63,6 +68,23 @@ fi } +function checkShaSum() { + cd "$LOC_VAR" + + if [ ! -f "$LOC_CRC" ]; then + echo "Settings CRC failed [crc file does not exists]" + exit $ERR_CRYPTSETUP_MOUNT_CRC + fi + + out=$( sha256sum -c "$LOC_CRC" | grep "FAILED" ) + cd - + + if [ ! "$out" == "" ]; then + echo "Settings CRC FAILED" + exit $ERR_CRYPTSETUP_MOUNT_CRC + fi +} + function checkOutput() { if [ "$3" == "" ]; then out=` eval "$1" 2>&1` @@ -83,23 +105,23 @@ function create_luks_partition() { - if [ "$( mount | grep "$DEV_MNT" )" != "" ]; then - unmount_luks_partition - fi - + isMounted && unmount_luks_partition checkOutput "sudo mkdir -p $LOC_VAR " $ERR_CRYPTSETUP_CREATE_MKDIR - checkOutput "sudo cryptsetup luksFormat $LOC_DEV " $ERR_CRYPTSETUP_CREATE_FORMAT $PASSWORD - checkOutput "sudo cryptsetup luksOpen $LOC_DEV $LOC_DIR" $ERR_CRYPTSETUP_CREATE_OPEN $PASSWORD + checkOutput "sudo cryptsetup luksFormat $LOC_DEV " $ERR_CRYPTSETUP_CREATE_FORMAT $PASSWORD + checkOutput "sudo cryptsetup luksOpen $LOC_DEV $LOC_DIR" $ERR_CRYPTSETUP_CREATE_OPEN $PASSWORD checkOutput "sudo mkfs.ext4 $LOC_MAP " $ERR_CRYPTSETUP_CREATE_MKFS checkOutput "sudo mount -t ext4 $LOC_MAP $LOC_VAR" $ERR_CRYPTSETUP_CREATE_MOUNT } function mount_luks_partition() { - isEncrypted # if encrypted will continue else will exit with error - isMounted # if not mounted will continue else will exit with error - checkOutput "sudo cryptsetup luksOpen $LOC_DEV $LOC_DIR" $ERR_CRYPTSETUP_MOUNT_OPEN $PASSWORD - checkOutput "sudo mount -t ext4 $LOC_MAP $LOC_VAR" $ERR_CRYPTSETUP_MOUNT_MOUNT + isEncrypted # if encrypted will continue else will exit with error + isMounted # if mounted will echo and return 0=IS_MOUNTED + if [ ! $? -eq $IS_MOUNTED ]; then # if not mounted, mount it + checkOutput "sudo cryptsetup luksOpen $LOC_DEV $LOC_DIR" $ERR_CRYPTSETUP_MOUNT_OPEN $PASSWORD + checkOutput "sudo mount -t ext4 $LOC_MAP $LOC_VAR" $ERR_CRYPTSETUP_MOUNT_MOUNT + fi + checkShaSum # if checksum fails echos and exits } function handleCommand() {