Kawe Mazidjatari b3a68ed095 Add EABase, EAThread and DirtySDK to R5sdk
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
2024-04-05 18:29:03 +02:00

99 lines
3.9 KiB
C

/*H********************************************************************************/
/*!
\File cryptcurve.c
\Description
This module implements an interface over our different curve crypto APIs
\Copyright
Copyright (c) Electronic Arts 2018. ALL RIGHTS RESERVED.
*/
/********************************************************************************H*/
/*** Include files ****************************************************************/
#include "DirtySDK/crypt/cryptmont.h"
#include "DirtySDK/crypt/cryptcurve.h"
/*** Variables ********************************************************************/
//! mappings for the dh functions
static const CryptCurveDhT _CryptCurve_Dh[] =
{
{ (CryptCurveInitT *)CryptNistInitDh, (CryptCurvePublicT *)CryptNistPublic, (CryptCurveSecretT *)CryptNistSecret, (CryptCurvePointInitT *)CryptNistPointInitFrom, (CryptCurvePointFinalT *)CryptNistPointFinal, CRYPTCURVE_SECP256R1 },
{ (CryptCurveInitT *)CryptNistInitDh, (CryptCurvePublicT *)CryptNistPublic, (CryptCurveSecretT *)CryptNistSecret, (CryptCurvePointInitT *)CryptNistPointInitFrom, (CryptCurvePointFinalT *)CryptNistPointFinal, CRYPTCURVE_SECP384R1 },
{ (CryptCurveInitT *)CryptMontInit, (CryptCurvePublicT *)CryptMontPublic, (CryptCurveSecretT *)CryptMontSecret, (CryptCurvePointInitT *)CryptMontPointInitFrom, (CryptCurvePointFinalT *)CryptMontPointFinal, CRYPTCURVE_X25519 },
{ (CryptCurveInitT *)CryptMontInit, (CryptCurvePublicT *)CryptMontPublic, (CryptCurveSecretT *)CryptMontSecret, (CryptCurvePointInitT *)CryptMontPointInitFrom, (CryptCurvePointFinalT *)CryptMontPointFinal, CRYPTCURVE_X448 }
};
//! mappings for the dsa functions
static const CryptCurveDsaT _CryptCurve_Dsa[] =
{
{ (CryptCurveInitT *)CryptNistInitDsa, (CryptCurveSignT *)CryptNistSign, (CryptCurveVerifyT *)CryptNistVerify, (CryptCurvePointInitT *)CryptNistPointInitFrom, CRYPTCURVE_SECP256R1 },
{ (CryptCurveInitT *)CryptNistInitDsa, (CryptCurveSignT *)CryptNistSign, (CryptCurveVerifyT *)CryptNistVerify, (CryptCurvePointInitT *)CryptNistPointInitFrom, CRYPTCURVE_SECP384R1 }
};
/*** Public Functions *************************************************************/
/*F********************************************************************************/
/*!
\Function CryptCurveGetDh
\Description
Gets the diffie hellmen functions based on the curve type
\Input iCurveType - type that identifies the curve
\Output
const CryptCurveDhT * - pointer containing functions or NULL (not found)
\Version 05/04/2018 (eesponda)
*/
/********************************************************************************F*/
const CryptCurveDhT *CryptCurveGetDh(int32_t iCurveType)
{
const CryptCurveDhT *pCurve = NULL;
int32_t iCurveIdx;
for (iCurveIdx = 0; iCurveIdx < (signed)(sizeof(_CryptCurve_Dh)/sizeof(_CryptCurve_Dh[0])); iCurveIdx += 1)
{
if (_CryptCurve_Dh[iCurveIdx].iCurveType == iCurveType)
{
pCurve = &_CryptCurve_Dh[iCurveIdx];
break;
}
}
return(pCurve);
}
/*F********************************************************************************/
/*!
\Function CryptCurveGetDsa
\Description
Gets the digital signature algorithm functions based on the curve type
\Input iCurveType - type that identifies the curve
\Output
const CryptCurveDsaT * - pointer containing functions or NULL (not found)
\Version 05/04/2018 (eesponda)
*/
/********************************************************************************F*/
const CryptCurveDsaT *CryptCurveGetDsa(int32_t iCurveType)
{
const CryptCurveDsaT *pCurve = NULL;
int32_t iCurveIdx;
for (iCurveIdx = 0; iCurveIdx < (signed)(sizeof(_CryptCurve_Dsa)/sizeof(_CryptCurve_Dsa[0])); iCurveIdx += 1)
{
if (_CryptCurve_Dsa[iCurveIdx].iCurveType == iCurveType)
{
pCurve = &_CryptCurve_Dsa[iCurveIdx];
break;
}
}
return(pCurve);
}