#!/bin/bash

# this file is a sample on how to write a script to validate checksums
# file CH ALG
# ALG is not mandatory
DEFAULT_ALG="MD5"

if [ $# -gt 0 ] ; then
  FILE="$1"
  #echo "Processing file ${FILE}...."
  if [ $# -gt 1 ] ; then
    CHECKSUM="$2"
    #echo "Against checksum ${CHECKSUM}...."
    if [ $# -gt 2 ] ; then
      ALG="$3"
      #echo "With algorithm ${ALG}...."
    fi
  else
    echo "No checksum specified!"
    exit 0
  fi
else
  echo "No file to be checked!"
  exit 1
fi

case "${ALG:-${DEFAULT_ALG}}" in
  MD5)
    # echo "Computing MD5 checksum..."
    # maybe check if md5sum is installed
    COMPUTED_CHECKSUM=$(md5sum "${FILE}" | cut -d\  -f1)
    ;;
  SHA1)
    # echo "Computing SHA1 checksum..."
    # maybe check if sha1sum is installed
    COMPUTED_CHECKSUM=$(sha1sum "${FILE}" | cut -d\  -f1)
    ;;
  SHA256)
    # echo "Computing SHA256 checksum..."
    # maybe check if sha256sum is installed
    COMPUTED_CHECKSUM=$(sha256sum "${FILE}" | cut -d\  -f1)
    ;;
  SHA512)
    # echo "Computing SHA512 checksum..."
    # maybe check if sha512sum is installed
    COMPUTED_CHECKSUM=$(sha512sum "${FILE}" | cut -d\  -f1)
    ;;
  *)
    echo "Unsupported checksum algorithm!"
    exit 1
esac

# echo "Result: ${COMPUTED_CHECKSUM}"
if [ "${CHECKSUM}" == "${COMPUTED_CHECKSUM}" ] ; then
  # echo "Checksum match found."
  exit 0
else
  exit 1
fi
