123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /***************************************************************************
- Copyright (C) Mindtree Consulting Ltd.
- This module is a confidential and proprietary property of Mindtree and
- a possession or use of this module requires written permission of Mindtree.
- ***************************************************************************/
- /**
- * \file crypto.h
- * Contains the Interface definition of Cryptographic functions required by
- * the Host Controller Firmware.
- *
- * \date 2007-05-09
- */
- #ifndef _CRYPTO_H_
- #define _CRYPTO_H_
- /* ========================= Include File Section ========================= */
- #include "btypes.h"
- #ifdef ENABLE_LE_ECDH
- /* #define FILE_INPUT */
- #define ECPD_ALT_ALG1
- #define ECPA_ALT_ALG1
- #include "mpal.h"
- /* ====================== Macro Declaration Section ======================= */
- /* ==================== Data Types Declaration Section ==================== */
- /**
- * SSP Private Key type. The private key is represented in binary format with
- * MSB byte ordering.
- */
- typedef u8 ssp_prkey_t[DHKEY_LEN];
- /**
- * SSP Publick Key type. Each coordinate of the public key is represented in
- * binary format with MSB byte ordering.
- */
- typedef struct
- {
- u8 x[DHKEY_LEN]; /**< X coordinate (Format(MSB): 23..0) */
- u8 y[DHKEY_LEN]; /**< Y coordinate (Format(MSB): 47..DHKEY_LEN) */
- } ssp_pukey_t;
- /**
- * SSP Diffie-Hellman Key (generated shared key) type. The dhkey is
- * represented in binary format with MSB byte ordering.
- */
- typedef u8 ssp_dhkey_t[DHKEY_LEN];
- /* ================ Exported Variables Declaration Section ================ */
- /* ============================= Macros Section ============================== */
- #ifdef CRYPTO_STANDALONE_ECDH
- /**
- * The ECDH algorithm will be used in standalone configuration (in Windows
- * builds) . So, there should be no references to /platform/<platform_name>
- * APIs.
- * This define should be enabled for Windows builds, and should not be enabled
- * for other platforms.
- */
- /* Return 32-bit value here. */
- #define CRYPTO_GET_RNG_SEED() 0xDEADC0DE
- #else /* CRYPTO_STANDALONE_ECDH */
- #define CRYPTO_GET_RNG_SEED pf_get_rng_seed
- #endif /* CRYPTO_STANDALONE_ECDH */
- /* ============================= API Section ============================== */
- void ssp_init(void);
- void ssp_shutdown(void);
- #ifdef ECDH_TIME_SLICE
- #ifdef CRYPTO_TEST_FRAMEWORK
- u8 ssp_get_ecdh_keypair(const ssp_prkey_t* priv, OUT ssp_pukey_t* pub);
- #else
- u8 ssp_get_ecdh_keypair(OUT ssp_prkey_t* priv, OUT ssp_pukey_t* pub);
- #endif
- u8 ssp_get_dhkey(ssp_prkey_t* priv, ssp_pukey_t* pub,
- OUT ssp_dhkey_t* dhkey);
- #else
- #ifdef CRYPTO_TEST_FRAMEWORK
- u8 ssp_get_ecdh_keypair(const ssp_prkey_t* priv, OUT ssp_pukey_t* pub);
- #else
- u8 ssp_get_ecdh_keypair(OUT ssp_prkey_t* priv, OUT ssp_pukey_t* pub);
- #endif
- u8 ssp_get_dhkey(ssp_prkey_t* priv, ssp_pukey_t* pub,
- OUT ssp_dhkey_t* dhkey);
- #endif
- #endif /* ENABLE_LE_ECDH */
- #endif /* _CRYPTO_H_ */
|