chcp 1251
echo off

set JAR_SIGNER_JDK=C:\Program Files\Java\jdk1.8.0_111
set KEY_TOOL_JRE=%JAR_SIGNER_JDK%\jre
set KEY_TOOL="%KEY_TOOL_JRE%\bin\keytool.exe"
set JAVA_EXE="%KEY_TOOL_JRE%\bin\java.exe" 
REM set PROVIDER=ru.CryptoPro.JCP.JCP
REM set STORE_TYPE=HDImageStore
set PROVIDER=ru.CryptoPro.JCSP.JCSP
set STORE_TYPE=HDIMAGE
set KEY_PASS=11111111
set STORE_PASS=%KEY_PASS%
set TRUST_STORE=trust.store
set PARAMS=-debug -J-Dkeytool.compat=true

REM *** Создать контейнер ГОСТ 2001 ***

call %KEY_TOOL% %PARAMS% -genkey -debug -alias myKey -keysize 512 -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -dname CN=myKey,O=CryptoPro,C=RU -keystore NONE -storepass %STORE_PASS% -keyalg GOST3410EL -sigalg GOST3411withGOST3410EL
IF %errorlevel% NEQ 0 GOTO :error

REM *** Создать контейнер ГОСТ 2012 256 ***

call %KEY_TOOL% %PARAMS% -genkey -alias myKey256 -keysize 512 -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -dname CN=myKey256,O=CryptoPro,C=RU -keystore NONE -storepass %STORE_PASS% -keyalg GOST3410_2012_256 -sigalg GOST3411_2012_256withGOST3410_2012_256
IF %errorlevel% NEQ 0 GOTO :error

REM *** Создать контейнер ГОСТ 2012 512 ***

call %KEY_TOOL% %PARAMS% -genkey -alias myKey512 -keysize 1024 -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -dname CN=myKey512,O=CryptoPro,C=RU -keystore NONE -storepass %STORE_PASS% -keyalg GOST3410_2012_512 -sigalg GOST3411_2012_512withGOST3410_2012_512
IF %errorlevel% NEQ 0 GOTO :error

REM *** Сохранение запроса ГОСТ 2001 ***

call %KEY_TOOL% %PARAMS% -certreq -alias myKey -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -sigalg GOST3411withGOST3410EL -file request.bin
IF %errorlevel% NEQ 0 GOTO :error

REM *** Сохранение запроса ГОСТ 2012 256 ***

call %KEY_TOOL% %PARAMS% -certreq -alias myKey256 -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -sigalg GOST3411_2012_256withGOST3410_2012_256 -file request256.bin
IF %errorlevel% NEQ 0 GOTO :error

REM *** Сохранение запроса ГОСТ 2012 512 ***

call %KEY_TOOL% %PARAMS% -certreq -alias myKey512 -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -sigalg GOST3411_2012_512withGOST3410_2012_512 -file request512.bin
IF %errorlevel% NEQ 0 GOTO :error

REM *** Запись самоподписанного сертификата ГОСТ 2001 ***

call %KEY_TOOL% %PARAMS% -selfcert -alias myKey -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -sigalg GOST3411withGOST3410EL -dname CN=myKey,O=CryptoPro,C=RU
IF %errorlevel% NEQ 0 GOTO :error

REM *** Запись самоподписанного сертификата ГОСТ 2012 256 ***

call %KEY_TOOL% %PARAMS% -selfcert -alias myKey256 -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -sigalg GOST3411_2012_256withGOST3410_2012_256 -dname CN=myKey256,O=CryptoPro,C=RU
IF %errorlevel% NEQ 0 GOTO :error

REM *** Запись самоподписанного сертификата ГОСТ 2012 512 ***

call %KEY_TOOL% %PARAMS% -selfcert -alias myKey512 -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -sigalg GOST3411_2012_512withGOST3410_2012_512 -dname CN=myKey512,O=CryptoPro,C=RU
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт самоподписанного сертификата ГОСТ 2001 ***

call %KEY_TOOL% %PARAMS% -export -alias myKey -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file myKeyCert.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт самоподписанного сертификата ГОСТ 2012 256 ***

call %KEY_TOOL% %PARAMS% -export -alias myKey256 -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file myKey256Cert.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт самоподписанного сертификата ГОСТ 2012 512 ***

call %KEY_TOOL% %PARAMS% -export -alias myKey512 -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file myKey512Cert.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Выпуск сертификата по запросу ГОСТ 2001 (*.p7b) ***

call %JAVA_EXE% SendRequestToMSCA request.bin
IF %errorlevel% NEQ 0 GOTO :error

REM *** Выпуск сертификата по запросу ГОСТ 2012 256 (*.p7b) ***

call %JAVA_EXE% SendRequestToMSCA request256.bin
IF %errorlevel% NEQ 0 GOTO :error

REM *** Выпуск сертификата по запросу ГОСТ 2012 512 (*.p7b) ***

call %JAVA_EXE% SendRequestToMSCA request512.bin
IF %errorlevel% NEQ 0 GOTO :error

REM *** Сохранение цепочки и импорт в контейнер ГОСТ 2001 ***

call %KEY_TOOL% %PARAMS% -import -alias myKey -noprompt -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file request.bin.p7b
IF %errorlevel% NEQ 0 GOTO :error

REM *** Сохранение цепочки и импорт в контейнер ГОСТ 2012 256 ***

call %KEY_TOOL% %PARAMS% -import -alias myKey256 -noprompt -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file request256.bin.p7b
IF %errorlevel% NEQ 0 GOTO :error

REM *** Сохранение цепочки и импорт в контейнер ГОСТ 2012 512 ***

call %KEY_TOOL% %PARAMS% -import -alias myKey512 -noprompt -provider %PROVIDER% -keypass %KEY_PASS% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file request512.bin.p7b
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт сертификата ГОСТ 2001 ***

call %KEY_TOOL% %PARAMS% -export -alias myKey -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file myKeyCert_from_ca.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт сертификата ГОСТ 2012 256 ***

call %KEY_TOOL% %PARAMS% -export -alias myKey256 -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file myKey256Cert_from_ca.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт сертификата ГОСТ 2012 512 ***

call %KEY_TOOL% %PARAMS% -export -alias myKey512 -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS% -file myKey512Cert_from_ca.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Импорт сертификата ГОСТ 2001 в хранилище сертификатов ***

call %KEY_TOOL% %PARAMS% -import -noprompt -alias myCert -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS% -file myKeyCert_from_ca.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Импорт сертификата ГОСТ 2012 256 в хранилище сертификатов ***

call %KEY_TOOL% %PARAMS% -import -noprompt -alias myCert256 -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS% -file myKey256Cert_from_ca.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Импорт сертификата ГОСТ 2012 512 в хранилище сертификатов ***

call %KEY_TOOL% %PARAMS% -import -noprompt -alias myCert512 -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS% -file myKey512Cert_from_ca.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт сертификата ГОСТ 2001 из хранилища ***

call %KEY_TOOL% %PARAMS% -export -alias myCert -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS% -file myKeyCert_from_trust_dup.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт сертификата ГОСТ 2012 256 из хранилища ***

call %KEY_TOOL% %PARAMS% -export -alias myCert256 -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS% -file myKey256Cert_from_trust_dup.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Экспорт сертификата ГОСТ 2012 512 из хранилища ***

call %KEY_TOOL% %PARAMS% -export -alias myCert512 -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS% -file myKey512Cert_from_trust_dup.cer
IF %errorlevel% NEQ 0 GOTO :error

REM *** Удаление контейнера ГОСТ 2001 ***

call %KEY_TOOL% %PARAMS% -delete -alias myKey -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS%
IF %errorlevel% NEQ 0 GOTO :error

REM *** Удаление контейнера ГОСТ 2012 256 ***

call %KEY_TOOL% %PARAMS% -delete -alias myKey256 -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS%
IF %errorlevel% NEQ 0 GOTO :error

REM *** Удаление контейнера ГОСТ 2012 512 ***

call %KEY_TOOL% %PARAMS% -delete -alias myKey512 -provider %PROVIDER% -storetype %STORE_TYPE% -keystore NONE -storepass %STORE_PASS%
IF %errorlevel% NEQ 0 GOTO :error

REM *** Удаление сертификата ГОСТ 2001 из хранилища ***

call %KEY_TOOL% %PARAMS% -delete -alias myCert -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS%
IF %errorlevel% NEQ 0 GOTO :error

REM *** Удаление сертификата ГОСТ 2012 256 из хранилища ***

call %KEY_TOOL% %PARAMS% -delete -alias myCert256 -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS%
IF %errorlevel% NEQ 0 GOTO :error

REM *** Удаление сертификата ГОСТ 2012 512 из хранилища ***

call %KEY_TOOL% %PARAMS% -delete -alias myCert512 -provider ru.CryptoPro.JCP.JCP -storetype CertStore -keystore %TRUST_STORE% -storepass %STORE_PASS%
IF %errorlevel% NEQ 0 GOTO :error

REM *** Удаление хранилища ***

del %TRUST_STORE%

echo "Completed."
@goto :EOF

:error
echo There was an error.