Initial public release.

This commit is contained in:
Joe Kearney 2025-02-01 19:22:12 -06:00
parent 7b169e8116
commit dac4af8d25
255 changed files with 68595 additions and 2 deletions

View 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