Initial public release.
This commit is contained in:
parent
7b169e8116
commit
dac4af8d25
255 changed files with 68595 additions and 2 deletions
143
2020TPCApp0.cydsn/keygen.bat
Normal file
143
2020TPCApp0.cydsn/keygen.bat
Normal file
|
@ -0,0 +1,143 @@
|
|||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::
|
||||
:: File Name: keygen.bat
|
||||
::
|
||||
:: Version: 1.0
|
||||
::
|
||||
:: Description:
|
||||
:: Simple script to generate the RSA-2048 public and private keys using OpenSSL.
|
||||
:: Once created, the script calls a python script to print out the public key
|
||||
:: modulus that is ready to be inserted into cy_publicKey struct in
|
||||
:: cy_si_keyStorage.c.
|
||||
:: The script also generates a 128 bit random number to be used for the AES
|
||||
:: private key and EIV.
|
||||
::
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: Copyright 2017-2018, Cypress Semiconductor Corporation. All rights reserved.
|
||||
:: This software is owned by Cypress Semiconductor Corporation and is protected
|
||||
:: by and subject to worldwide patent and copyright laws and treaties.
|
||||
:: Therefore, you may use this software only as provided in the license agreement
|
||||
:: accompanying the software package from which you obtained this software.
|
||||
:: CYPRESS AND ITS SUPPLIERS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
:: WITH REGARD TO THIS SOFTWARE, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT,
|
||||
:: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
@echo off
|
||||
set OUT_DIR="%~dp0\keys_generated"
|
||||
set LOCAL_DIR=keys_generated
|
||||
set PRIV_NAME=rsa_private_generated.txt
|
||||
set PUB_NAME=rsa_public_generated.txt
|
||||
set MOD_NAME=rsa_to_c_generated.txt
|
||||
|
||||
set AES_TEMP=aes_private_generated_temp.txt
|
||||
set EIV_TEMP=aes_eiv_generated_temp.txt
|
||||
set AES_NAME=aes_private_generated.txt
|
||||
set EIV_NAME=aes_eiv_generated.txt
|
||||
set AES_ARRAY=aes_private_array_generated.txt
|
||||
|
||||
:: Check if OpenSSL and Python are correctly installed
|
||||
set ALLOK=1
|
||||
CALL :testOpenSSL
|
||||
CALL :testPython
|
||||
IF %ALLOK% == 0 (
|
||||
echo.
|
||||
pause
|
||||
goto :end
|
||||
)
|
||||
IF NOT EXIST %OUT_DIR% mkdir %OUT_DIR%
|
||||
|
||||
:: Delete temp files
|
||||
IF EXIST %OUT_DIR%\%AES_TEMP% DEL /F %OUT_DIR%\%AES_TEMP%
|
||||
IF EXIST %OUT_DIR%\%EIV_TEMP% DEL /F %OUT_DIR%\%EIV_TEMP%
|
||||
|
||||
:: Generate the RSA-2048 public and private keys
|
||||
openssl genrsa -out %OUT_DIR%\%PRIV_NAME% 2048
|
||||
openssl rsa -in %OUT_DIR%\%PRIV_NAME% -outform PEM -pubout -out %OUT_DIR%\%PUB_NAME%
|
||||
|
||||
:: Generate a 128bit random number
|
||||
openssl rand -hex -out %OUT_DIR%\%AES_TEMP% 16
|
||||
openssl rand -hex -out %OUT_DIR%\%EIV_TEMP% 16
|
||||
|
||||
:: Check if files exist before processing
|
||||
IF NOT EXIST %LOCAL_DIR%\%AES_TEMP% (
|
||||
echo Could not find OpenSSL generated files. If the error persists, check OpenSSL installation and permissions.
|
||||
echo.
|
||||
pause
|
||||
goto :end
|
||||
)
|
||||
IF NOT EXIST %LOCAL_DIR%\%AES_TEMP% (
|
||||
echo Could not find OpenSSL generated files. If the error persists, check OpenSSL installation and permissions.
|
||||
echo.
|
||||
pause
|
||||
goto :end
|
||||
)
|
||||
|
||||
IF EXIST %OUT_DIR%\%AES_NAME% DEL /F %OUT_DIR%\%AES_NAME%
|
||||
IF EXIST %OUT_DIR%\%EIV_NAME% DEL /F %OUT_DIR%\%EIV_NAME%
|
||||
IF EXIST %OUT_DIR%\%AES_ARRAY% DEL /F %OUT_DIR%\%AES_ARRAY%
|
||||
|
||||
:: Remove new line characters from AES and EIV files
|
||||
FOR /F "Usebackq Tokens=*" %%@ IN ("%LOCAL_DIR%\%AES_TEMP%") DO (
|
||||
<NUL Set /P "=%%@"
|
||||
) >> %LOCAL_DIR%\%AES_NAME%
|
||||
|
||||
FOR /F "Usebackq Tokens=*" %%@ IN ("%LOCAL_DIR%\%EIV_TEMP%") DO (
|
||||
<NUL Set /P "=%%@"
|
||||
) >> %LOCAL_DIR%\%EIV_NAME%
|
||||
|
||||
:: Delete temp files
|
||||
IF EXIST %OUT_DIR%\%AES_TEMP% DEL /F %OUT_DIR%\%AES_TEMP%
|
||||
IF EXIST %OUT_DIR%\%EIV_TEMP% DEL /F %OUT_DIR%\%EIV_TEMP%
|
||||
|
||||
:: Generate a C array with the AES private key
|
||||
setlocal enableDelayedExpansion
|
||||
set /p str=<%LOCAL_DIR%\%AES_NAME%
|
||||
set counter=1
|
||||
set "out="
|
||||
for /f delims^=^ eol^= %%A in ('cmd /u /v:on /c echo(^^!str^^!^|more') do (
|
||||
IF "!counter!" == "1" (
|
||||
set "out=!out!, 0x^%%A"
|
||||
set "counter=0"
|
||||
) ELSE (
|
||||
set "out=!out!%%A"
|
||||
set "counter=1"
|
||||
)
|
||||
)
|
||||
set "out=!out:~2!"
|
||||
|
||||
echo static const uint8_t AES128_Key[16] = {!out!}; >> %OUT_DIR%\%AES_ARRAY%
|
||||
|
||||
:: Create C-code ready public key
|
||||
%~dp0\rsa_to_c.py %OUT_DIR%\%PUB_NAME% > %OUT_DIR%\%MOD_NAME%
|
||||
|
||||
goto :end
|
||||
|
||||
:testOpenSSL
|
||||
openssl version >nul 2>nul
|
||||
IF ERRORLEVEL 1 CALL :errOpenSSL
|
||||
EXIT /B
|
||||
|
||||
:testPython
|
||||
python --version >nul 2>nul
|
||||
IF ERRORLEVEL 1 CALL :errPython
|
||||
EXIT /B
|
||||
|
||||
:errOpenSSL
|
||||
echo.
|
||||
echo OpenSSL could not be found.
|
||||
echo If OpenSSL is installed, add the OpenSSL binaries directory to the system Path variable.
|
||||
echo A restart may be required.
|
||||
set ALLOK=0
|
||||
EXIT /B
|
||||
|
||||
:errPython
|
||||
echo.
|
||||
echo Python could not be found.
|
||||
echo Python is required to generate the RSA public key C array.
|
||||
echo Please install Python or check that it is included in the system Path variable.
|
||||
set ALLOK=0
|
||||
EXIT /B
|
||||
|
||||
:end
|
||||
pause
|
Loading…
Add table
Add a link
Reference in a new issue