00001 /****************************** -*- mode: C -*- ******************************/ 00013 #ifndef C4E_DLC_H 00014 #define C4E_DLC_H 00015 00016 00017 /* INCLUDES ******************************************************************/ 00018 00019 #include "c4e_elements.h" /* C4eElement, C4E_ELEM_DIGITS_NUM() */ 00020 #include "c4e_modn.h" /* C4E_MODN_POW_SPACE() */ 00021 00022 00023 00024 #ifdef __cplusplus 00025 extern "C" { 00026 #endif 00027 00028 00041 /* TYPEDEFS ******************************************************************/ 00042 00043 00053 #define C4E_DLC_ALGO_NONE (0U) 00054 #define C4E_DLC_ALGO_DH (1U) 00055 #define C4E_DLC_ALGO_DSA (2U) 00056 #define C4E_DLC_ALGO_RSA (4U) 00057 #define C4E_DLC_ALGO_ALL (~0U) 00078 typedef struct 00079 { 00104 C4eElemOsp m; 00105 00106 #ifndef C4E_CONFIG_DISABLE_DSA 00107 00126 C4eElemOsp q; 00127 00138 C4eElement g; 00139 00140 #endif /* C4E_CONFIG_DISABLE_DSA */ 00141 00142 } C4eDlcDomain; 00143 00144 00145 00146 /* DEFINES *******************************************************************/ 00147 00148 00158 #define C4E_DLC_GF_BYTES_MAX ((8U * 1024U) / 8U) /* 8192 bit (1024 byte) */ 00159 00160 00161 00162 /* MACROS ********************************************************************/ 00163 00164 00180 /* MACRO *********************************************************************/ 00211 #define C4E_DLC_TMP_NUM(tmpid, keylen) \ 00212 ((tmpid) * C4E_MODN_POW_SPACE(C4E_ELEM_DIGITS_NUM(keylen))) 00213 00214 00220 /* PROTOTYPES ****************************************************************/ 00221 00222 00223 /* FUNCTION ******************************************************************/ 00278 C4eSysStatus c4e_dlc_domchk(C4eArchUint algos, C4E_CONST C4eDlcDomain* dom); 00279 00280 00281 /* FUNCTION ******************************************************************/ 00326 C4eSysStatus c4e_dlc_keychk_prv(C4eArchUint algos, 00327 C4E_CONST C4eDlcDomain* C4E_RESTRICT dom, 00328 C4E_CONST C4eElement* C4E_RESTRICT key, 00329 C4eArchDigit tmp[C4E_RESTRICT]); 00330 00331 00332 00333 /* FUNCTION ******************************************************************/ 00366 C4eSysStatus c4e_dlc_keychk_pub(C4eArchUint algos, 00367 C4E_CONST C4eDlcDomain* C4E_RESTRICT dom, 00368 C4E_CONST C4eElement* C4E_RESTRICT key, 00369 C4eArchDigit tmp[C4E_RESTRICT]); 00370 00375 #ifdef __cplusplus 00376 } 00377 #endif 00378 00379 00380 00381 00382 #endif /* C4E_DLC_H */ 00383 00384 00385 /******************************************************************************/ 00386 /* END OF FILE */ 00387 /******************************************************************************/