crauth.sh 677 B

123456789101112131415161718192021222324252627282930313233
  1. #!/bin/sh
  2. members_file=$1
  3. [ "$members_file" = "" ] && echo "members file not specified" && exit 1
  4. # read member from client
  5. read member
  6. # lookup user
  7. secret=$(cat $members_file | grep $member | sed 's/;/\n/g' | sed -n 2p)
  8. # when user does not exists, exit with message
  9. if [ "$secret" = "" ]; then
  10. echo "user does not exist"
  11. exit 1
  12. fi
  13. # compute random challenge
  14. challenge=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 3 | head -n 1)
  15. # communicate challenge to client
  16. echo $challenge
  17. # read his response
  18. read response
  19. # check whether response is what should be expected
  20. if [ "$response" != "$(echo $secret$challenge | sha256sum)" ]; then
  21. echo "faulty"
  22. exit 1
  23. fi