@echo off
setlocal

set checking_dir="%~1"
if %checking_dir%=="" (
    set checking_dir="."
)

set print_mode="%~2"

echo Directory: "%checking_dir%"
echo Print mode: "%print_mode%"

call :print_hash %checking_dir% "*.msi"
call :print_hash %checking_dir% "*.exe"
call :print_hash %checking_dir% "*.dll"
call :print_hash %checking_dir% "*.sys"

if %print_mode%=="PRINT_CERT" (
    call :print_cert %checking_dir% "*.msi"
    call :print_cert %checking_dir% "*.exe"
    call :print_cert %checking_dir% "*.dll"
    call :print_cert %checking_dir% "*.sys"
)
GOTO :EOF

:print_hash
    set _dir=%~1
    set _mask=%~2
    for /R "%_dir%" %%f in (%_mask%) do (
        call certutil.exe -hashfile "%%f" SHA1
    )
    GOTO :EOF

:print_cert
    set _dir=%~1
    set _mask=%~2
    for /R "%_dir%" %%f in (%_mask%) do (
        call signtool.exe verify /pa /v "%%f"
    )
    GOTO :EOF
