#!/bin/sh
#
##	Copyright (c) 1965-2004 Unizeto Sp. z o.o. All rights reserved
##
## 	Wojtek Slusarczyk <wslusarczyk@certum.pl>
##

PATH="$PATH":~/bin:/bin:/usr/bin:/usr/local/bin:/usr/ucb/bin:/ccs/bin

case $1 in

--help)
	if [ $(echo "$LANG" | head -c 2) = "pl" ]; then
	    echo ""
	    echo "Wywołaj toolsign z opcjami: { -weryfikuj | -podpisz }"
	    echo ""
	else
	    echo ""
	    echo "Usage:	 toolsign { -verify | -sign }"
	    echo ""
    fi	    
    exit 0
    ;;

-sign|-podpisz|-sygnuj) 
    
    # Podpis cyfrowy objektu
    
    openssl smime -sign -in "$2" \
    -signer "$HOME"/my.pem -out "$2".sig \
    -outform DER -binary
    exit 0
    ;;

-verify|--verify|-weryfikacja|-weryfikuj)

    # Weryfikcacja Podpisu
    
if test "$3" = ""; then
         ARG="$2".sig
    else
	 ARG="$3"
fi   

preferences=$(echo "$LANG" | head -c 2)

if [ "$preferences" = "pl" ]; then

    TEXT1="Wywołaj $name z opcjami:	PLIK [SYGNATURA]"
    TEXT2="		PLIK:		nazwa podpisanego cyfrowo pliku"
    TEXT3="		SYGNATURA:	nazwa pliku z podpisem (binarny PKCS#7)"
    TEXT4="Nie znaleziono sygnatury:	$ARG"
    TEXT5="Plik Sygnatury:		$ARG"
    TEXT6="Podpisany Plik:		$2"
    TEXT7="Weryfikacja Certyfikatu:	OK"
    TEXT8="Weryfikacja Certyfikatu:	ZŁY CERTYFIKAT"
    TEXT9="Weryfikacja Podpisu:		OK"
    TEXT10="Weryfikacja Podpisu		BŁĄD PODPISU"

else

    LC_ALL=C \
    LC_COLLATE=C \
    LANG=C
    
    TEXT1="Usage $0:	FILE [SIGNATURE]"
    TEXT2="		FILE:		tar, rpm, deb or other signed data"
    TEXT3="		SIGNATURE:	signature of signed data (PKCS#7 DER)"
    TEXT4="Can't find file's signature - $ARG"
    TEXT5="Signature file:			$ARG"
    TEXT6="Signed file:				$2"
    TEXT7="Certificate verification:		OK"
    TEXT8="Certificate verification:		Bad Certificate"
    TEXT9="Signature verification:		OK"
    TEXT10="Signature verification:		Signature Error"
fi

    if test  "$2" = ""; then 

    echo ""
    echo "0 = $0"
    echo "1 = `echo $1`"
    echo "2 = $2"
    echo "3 = $3"
    echo ""
    
    echo "$TEXT1"
    echo ""
    echo "$TEXT2"
    echo "$TEXT3"
    echo ""
    exit 0
    fi     

    if test ! -s "$ARG"; then 

	echo ""
	echo "$TEXT4"
	echo ""
	exit 0
    fi	
	echo ""
	echo "$TEXT5"
	echo "$TEXT6"
	echo ""

    # Poszukiwanie katalogu z certyfikatami root CA do weryfikacji

    verifing=`openssl pkcs7 \
		    -inform DER \
		    -print_certs \
		    -in "$ARG" | openssl verify -CAfile "$HOME"/my.pem \
		    | cut -c 8-10`

    if [ "$verifing" = "OK" ]; then

	echo -en "\\033[1;32m"    
	echo "$TEXT7"
	echo -en "\\033[0;39m"    
    else
	echo -en "\\033[1;31m" 
	echo "$TEXT8"
	echo -en "\\033[0;39m"    
	echo ""
    exit 0
    fi

    podpiscyfrowy=`openssl smime \
		    -verify \
		    -in "$ARG" \
		    -content "$2" \
		    -inform DER \
		    -out /dev/null \
		    -CAfile "$HOME"/my.pem \
		    -noverify 2>/dev/stdout`

    if [ "$podpiscyfrowy" = "Verification successful" ]; then 		    
    
        echo -en "\\033[1;32m"   			 
	echo "$TEXT9"
        echo -en "\\033[0;39m"    
	echo ""
	
    else
        echo -en "\\033[1;31m"    
	echo "$TEXT10"
        echo -en "\\033[0;39m"    
	echo ""
    fi
    exit 0
    ;;
*)
    $0 --help;
    exit 1
    ;;
    esac
done

exit 0


