mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-10-15 17:27:46 -04:00
Remove unused wolfSSL files. (#197)
* Remove unused wolfSSL files. * Add back some removed ciphers. * Update VS project file.
This commit is contained in:
parent
0e0edd96e8
commit
70dcbe4527
974 changed files with 7 additions and 210690 deletions
|
@ -1,152 +0,0 @@
|
|||
/* esp32-crypt.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
#ifndef __ESP32_CRYPT_H__
|
||||
|
||||
#define __ESP32_CRYPT_H__
|
||||
|
||||
#include "esp_idf_version.h"
|
||||
#include "esp_types.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
#ifdef WOLFSSL_ESP32WROOM32_CRYPT_DEBUG
|
||||
#undef LOG_LOCAL_LEVEL
|
||||
#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG
|
||||
#else
|
||||
#undef LOG_LOCAL_LEVEL
|
||||
#define LOG_LOCAL_LEVEL ESP_LOG_ERROR
|
||||
#endif
|
||||
|
||||
#include <freertos/FreeRTOS.h>
|
||||
#include "soc/dport_reg.h"
|
||||
#include "soc/hwcrypto_reg.h"
|
||||
#include "soc/cpu.h"
|
||||
#include "driver/periph_ctrl.h"
|
||||
#if ESP_IDF_VERSION_MAJOR >= 4 && ESP_IDF_VERSION_MINOR >= 1
|
||||
#include <esp32/rom/ets_sys.h>
|
||||
#else
|
||||
#include <rom/ets_sys.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int esp_CryptHwMutexInit(wolfSSL_Mutex* mutex);
|
||||
int esp_CryptHwMutexLock(wolfSSL_Mutex* mutex, TickType_t xBloxkTime);
|
||||
int esp_CryptHwMutexUnLock(wolfSSL_Mutex* mutex);
|
||||
|
||||
#ifndef NO_AES
|
||||
|
||||
#if ESP_IDF_VERSION_MAJOR >= 4 && ESP_IDF_VERSION_MINOR >= 1
|
||||
#include "esp32/rom/aes.h"
|
||||
#else
|
||||
#include "rom/aes.h"
|
||||
#endif
|
||||
|
||||
typedef enum tagES32_AES_PROCESS {
|
||||
ESP32_AES_LOCKHW = 1,
|
||||
ESP32_AES_UPDATEKEY_ENCRYPT = 2,
|
||||
ESP32_AES_UPDATEKEY_DECRYPT = 3,
|
||||
ESP32_AES_UNLOCKHW = 4
|
||||
} ESP32_AESPROCESS;
|
||||
|
||||
struct Aes;
|
||||
int wc_esp32AesCbcEncrypt(struct Aes* aes, byte* out, const byte* in, word32 sz);
|
||||
int wc_esp32AesCbcDecrypt(struct Aes* aes, byte* out, const byte* in, word32 sz);
|
||||
int wc_esp32AesEncrypt(struct Aes *aes, const byte* in, byte* out);
|
||||
int wc_esp32AesDecrypt(struct Aes *aes, const byte* in, byte* out);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_ESP32WROOM32_CRYPT_DEBUG
|
||||
|
||||
void wc_esp32TimerStart();
|
||||
uint64_t wc_esp32elapsedTime();
|
||||
|
||||
#endif /* WOLFSSL_ESP32WROOM32_CRYPT_DEBUG */
|
||||
|
||||
#if (!defined(NO_SHA) || !defined(NO_SHA256) || defined(WOLFSSL_SHA384) || \
|
||||
defined(WOLFSSL_SHA512)) && \
|
||||
!defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH)
|
||||
|
||||
/* RAW hash function APIs are not implemented with esp32 hardware acceleration*/
|
||||
#define WOLFSSL_NO_HASH_RAW
|
||||
#if ESP_IDF_VERSION_MAJOR >= 4 && ESP_IDF_VERSION_MINOR >= 1
|
||||
#include "esp32/rom/sha.h"
|
||||
#else
|
||||
#include "rom/sha.h"
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
ESP32_SHA_INIT = 0,
|
||||
ESP32_SHA_HW = 1,
|
||||
ESP32_SHA_SW = 2,
|
||||
} ESP32_DOSHA;
|
||||
|
||||
typedef struct {
|
||||
byte isfirstblock;
|
||||
/* 0 , 1 hard, 2 soft */
|
||||
byte mode;
|
||||
/* sha_type */
|
||||
enum SHA_TYPE sha_type;
|
||||
} WC_ESP32SHA;
|
||||
|
||||
int esp_sha_try_hw_lock(WC_ESP32SHA* ctx);
|
||||
void esp_sha_hw_unlock( void );
|
||||
|
||||
struct wc_Sha;
|
||||
int esp_sha_digest_process(struct wc_Sha* sha, byte bockprocess);
|
||||
int esp_sha_process(struct wc_Sha* sha, const byte* data);
|
||||
|
||||
#ifndef NO_SHA256
|
||||
struct wc_Sha256;
|
||||
int esp_sha256_digest_process(struct wc_Sha256* sha, byte bockprocess);
|
||||
int esp_sha256_process(struct wc_Sha256* sha, const byte* data);
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
struct wc_Sha512;
|
||||
int esp_sha512_process(struct wc_Sha512* sha);
|
||||
int esp_sha512_digest_process(struct wc_Sha512* sha, byte blockproc);
|
||||
#endif
|
||||
|
||||
#endif /* NO_SHA && */
|
||||
|
||||
#if !defined(NO_RSA) || defined(HAVE_ECC)
|
||||
|
||||
#ifndef ESP_RSA_TIMEOUT
|
||||
#define ESP_RSA_TIMEOUT 0xFFFFF
|
||||
#endif
|
||||
|
||||
struct fp_int;
|
||||
int esp_mp_mul(struct fp_int* X, struct fp_int* Y, struct fp_int* Z);
|
||||
int esp_mp_exptmod(struct fp_int* G, struct fp_int* X, word32 Xbits, struct fp_int* P,
|
||||
struct fp_int* Y);
|
||||
int esp_mp_mulmod(struct fp_int* X, struct fp_int* Y, struct fp_int* M,
|
||||
struct fp_int* Z);
|
||||
|
||||
#endif /* NO_RSA || HAVE_ECC*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ESP32_CRYPT_H__ */
|
|
@ -1,153 +0,0 @@
|
|||
/* renesas-tsip-crypt.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
#ifndef __RENESAS_TSIP_CRYPT_H__
|
||||
#define __RENESAS_TSIP_CRYPT_H__
|
||||
|
||||
#if defined(WOLFSSL_RENESAS_TSIP_IAREWRX)
|
||||
#include "r_bsp/mcu/all/r_rx_compiler.h"
|
||||
#include "r_bsp/platform.h"
|
||||
#else
|
||||
#include "platform.h"
|
||||
#endif
|
||||
|
||||
#include "r_tsip_rx_if.h"
|
||||
#include <wolfssl/wolfcrypt/logging.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
tsip_Key_SESSION = 1,
|
||||
tsip_Key_AES128 = 2,
|
||||
tsip_Key_AES256 = 3,
|
||||
tsip_Key_RSA1024 = 4,
|
||||
tsip_Key_RSA2048 = 5,
|
||||
tsip_Key_tls_Rsa2048 = 6,
|
||||
tsip_Key_unknown = -1,
|
||||
} wolfssl_TSIP_KEY_IV;
|
||||
|
||||
enum {
|
||||
l_TLS_RSA_WITH_AES_128_CBC_SHA = 0x2F,
|
||||
l_TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x3c,
|
||||
l_TLS_RSA_WITH_AES_256_CBC_SHA = 0x35,
|
||||
l_TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x3d,
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t *encrypted_session_key;
|
||||
uint8_t *iv;
|
||||
uint8_t *encrypted_user_tls_key;
|
||||
tsip_tls_ca_certification_public_key_index_t user_rsa2048_tls_pubindex;
|
||||
} tsip_key_data;
|
||||
|
||||
struct WOLFSSL;
|
||||
|
||||
int tsip_Open( );
|
||||
void tsip_Close( );
|
||||
int tsip_hw_lock();
|
||||
void tsip_hw_unlock( void );
|
||||
int tsip_usable(const struct WOLFSSL *ssl);
|
||||
void tsip_inform_sflash_signedcacert(const byte *ps_flash,
|
||||
const byte *psigned_ca_cert, word32 len);
|
||||
void tsip_inform_cert_sign(const byte *sign);
|
||||
/* set / get key */
|
||||
void tsip_inform_user_keys(byte *encrypted_session_key, byte *iv,
|
||||
byte *encrypted_user_tls_key);
|
||||
|
||||
byte tsip_rootCAverified( );
|
||||
byte tsip_checkCA(word32 cmIdx);
|
||||
int tsip_tls_RootCertVerify(const byte *cert , word32 cert_len,
|
||||
word32 key_n_start, word32 key_n_len,
|
||||
word32 key_e_start, word32 key_e_len,
|
||||
word32 cm_row);
|
||||
int tsip_tls_CertVerify(const byte *cert, word32 certSz,
|
||||
const byte *signature, word32 sigSz,
|
||||
word32 key_n_start, word32 key_n_len,
|
||||
word32 key_e_start, word32 key_e_len,
|
||||
byte *tsip_encRsaKeyIdx);
|
||||
void tsip_inform_key_position(const word32 key_n_start, const word32 key_n_len,
|
||||
const word32 key_e_start, const word32 key_e_len);
|
||||
int tsip_generatePremasterSecret(byte *premaster, word32 preSz);
|
||||
int tsip_generateEncryptPreMasterSecret(struct WOLFSSL *ssl, byte *out,
|
||||
word32 *outSz);
|
||||
int tsip_generateMasterSecret(const byte *pre, const byte *cr,const byte *sr,
|
||||
byte *ms);
|
||||
int tsip_generateSeesionKey(struct WOLFSSL *ssl);
|
||||
int tsip_Sha256Hmac(const struct WOLFSSL *ssl, const byte *myInner,
|
||||
word32 innerSz, const byte *in, word32 sz, byte *digest,
|
||||
word32 verify);
|
||||
int tsip_Sha1Hmac(const struct WOLFSSL *ssl, const byte *myInner,
|
||||
word32 innerSz, const byte *in, word32 sz, byte *digest,
|
||||
word32 verify);
|
||||
|
||||
#if (!defined(NO_SHA) || !defined(NO_SHA256)) && \
|
||||
!defined(NO_WOLFSSL_RENESAS_TSIP_CRYPT_HASH)
|
||||
|
||||
typedef enum {
|
||||
TSIP_SHA1 = 0,
|
||||
TSIP_SHA256 = 1,
|
||||
} TSIP_SHA_TYPE;
|
||||
|
||||
typedef struct {
|
||||
byte* msg;
|
||||
void* heap;
|
||||
word32 used;
|
||||
word32 len;
|
||||
word32 sha_type;
|
||||
} wolfssl_TSIP_Hash;
|
||||
|
||||
/* RAW hash function APIs are not implemented with TSIP */
|
||||
#define WOLFSSL_NO_HASH_RAW
|
||||
|
||||
typedef wolfssl_TSIP_Hash wc_Sha;
|
||||
|
||||
#if !defined(NO_SHA256)
|
||||
typedef wolfssl_TSIP_Hash wc_Sha256;
|
||||
#endif
|
||||
|
||||
#endif /* NO_SHA */
|
||||
|
||||
#if defined(WOLFSSL_RENESAS_TSIP_TLS_AES_CRYPT)
|
||||
typedef struct {
|
||||
tsip_aes_key_index_t tsip_keyIdx;
|
||||
word32 keySize;
|
||||
} TSIP_AES_CTX;
|
||||
|
||||
struct Aes;
|
||||
int wc_tsip_AesCbcEncrypt(struct Aes* aes, byte* out, const byte* in,
|
||||
word32 sz);
|
||||
int wc_tsip_AesCbcDecrypt(struct Aes* aes, byte* out, const byte* in,
|
||||
word32 sz);
|
||||
|
||||
#endif /* WOLFSSL_RENESAS_TSIP_TLS_AES */
|
||||
|
||||
#if defined(WOLFSSL_RENESAS_TSIP_CRYPT_DEBUG)
|
||||
byte *ret2err(word32 ret);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __RENESAS_TSIP_CRYPT_H__ */
|
|
@ -1,50 +0,0 @@
|
|||
/* afalg_hash.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
|
||||
#ifndef WOLF_CRYPT_AFALG_HASH_H
|
||||
#define WOLF_CRYPT_AFALG_HASH_H
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#undef WOLFSSL_NO_HASH_RAW
|
||||
#define WOLFSSL_NO_HASH_RAW
|
||||
|
||||
typedef struct {
|
||||
byte* msg;
|
||||
void* heap;
|
||||
word32 used;
|
||||
word32 len;
|
||||
int alFd;
|
||||
int rdFd;
|
||||
} wolfssl_AFALG_Hash;
|
||||
|
||||
|
||||
|
||||
#if !defined(NO_SHA256) && defined(WOLFSSL_AFALG_HASH)
|
||||
typedef wolfssl_AFALG_Hash wc_Sha256;
|
||||
#endif
|
||||
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_AFALG_XILINX_SHA3)
|
||||
typedef wolfssl_AFALG_Hash wc_Sha3;
|
||||
#endif
|
||||
|
||||
#endif /* WOLF_CRYPT_AFALG_HASH_H */
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
/* wc_afalg.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
|
||||
#ifndef WOLFSSL_AFALG_H
|
||||
#define WOLFSSL_AFALG_H
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <linux/if_alg.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
#define WC_SOCK_NOTSET -1
|
||||
|
||||
/* In some cases these flags are not set in AF_ALG header files.
|
||||
* Documentation provided at kernel.org/doc/html/v4.16/crypto/userspace-if.html
|
||||
* suggests using these values if not set */
|
||||
#ifndef AF_ALG
|
||||
#define AF_ALG 38
|
||||
#endif
|
||||
#ifndef SOL_ALG
|
||||
#define SOL_ALG 279
|
||||
#endif
|
||||
|
||||
WOLFSSL_LOCAL void wc_Afalg_SockAddr(struct sockaddr_alg* in, const char* type, const char* name);
|
||||
WOLFSSL_LOCAL int wc_Afalg_Accept(struct sockaddr_alg* in, int inSz, int sock);
|
||||
WOLFSSL_LOCAL int wc_Afalg_Socket(void);
|
||||
WOLFSSL_LOCAL int wc_Afalg_CreateRead(int sock, const char* type, const char* name);
|
||||
WOLFSSL_LOCAL int wc_Afalg_SetIv(struct cmsghdr* cmsg, byte* iv, word32 ivSz);
|
||||
WOLFSSL_LOCAL int wc_Afalg_SetOp(struct cmsghdr* cmsg, int dir);
|
||||
WOLFSSL_LOCAL int wc_Afalg_SetAad(struct cmsghdr* cmsg, word32 sz);
|
||||
|
||||
#endif /* WOLFSSL_AFALG_H */
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
/* cryptoCell.h
|
||||
*
|
||||
* Copyright (C) 2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef WOLFSSL_CRYPTOCELL_H
|
||||
#define WOLFSSL_CRYPTOCELL_H
|
||||
|
||||
#if defined(WOLFSSL_CRYPTOCELL)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#include "sns_silib.h"
|
||||
|
||||
#ifndef NO_SHA256
|
||||
#include "crys_hash.h"
|
||||
#include "crys_hash_error.h"
|
||||
/* largest possible input data on CC310 DMA. */
|
||||
#define CC310_MAX_LENGTH_DMA (0xFFFF)
|
||||
#endif
|
||||
|
||||
#ifndef NO_AES
|
||||
#include "ssi_aes.h"
|
||||
|
||||
typedef struct aes_context_t {
|
||||
SaSiAesUserContext_t user_ctx; /* CC310 AES User context */
|
||||
SaSiAesUserKeyData_t key; /* CC310 AES key structure */
|
||||
SaSiAesEncryptMode_t mode; /* encrypt or decrypt */
|
||||
} aes_context_t;
|
||||
#define CC310_MAX_LENGTH_DMA_AES (0xFFF0)
|
||||
#endif /* NO_AES */
|
||||
|
||||
#if !defined(WC_NO_RNG)
|
||||
#if defined(WOLFSSL_nRF5x_SDK_15_2)
|
||||
|
||||
/* To fix warning. MIN/MAX are defined in tfm.h and Nordic (re)defines them */
|
||||
#undef MIN
|
||||
#undef MAX
|
||||
/* includes to use RNG on the nRF52 */
|
||||
#include "nrf_drv_rng.h"
|
||||
#include "nrf_assert.h"
|
||||
#endif
|
||||
|
||||
/*RNG Global variables*/
|
||||
extern CRYS_RND_State_t wc_rndState;
|
||||
extern CRYS_RND_WorkBuff_t wc_rndWorkBuff;
|
||||
extern SaSiRndGenerateVectWorkFunc_t wc_rndGenVectFunc;
|
||||
int cc310_random_generate(byte* output, word32 size);
|
||||
#endif
|
||||
|
||||
#ifndef NO_RSA
|
||||
#include "crys_rsa_types.h"
|
||||
#include "crys_rnd.h"
|
||||
#include "crys_rsa_schemes.h"
|
||||
#include "crys_rsa_kg.h"
|
||||
#include "crys_rsa_build.h"
|
||||
|
||||
typedef struct rsa_context_t {
|
||||
CRYS_RSAUserPrivKey_t privKey;
|
||||
CRYS_RSAUserPubKey_t pubKey;
|
||||
} rsa_context_t;
|
||||
CRYS_RSA_HASH_OpMode_t cc310_hashModeRSA(enum wc_HashType hash_type, int isHashed);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ECC
|
||||
#include "crys_ecpki_kg.h"
|
||||
#include "crys_ecpki_dh.h"
|
||||
#include "crys_ecpki_build.h"
|
||||
#include "crys_ecpki_domain.h"
|
||||
#include "crys_ecpki_ecdsa.h"
|
||||
|
||||
typedef struct ecc_context_t {
|
||||
CRYS_ECPKI_UserPrivKey_t privKey;
|
||||
CRYS_ECPKI_UserPublKey_t pubKey;
|
||||
} ecc_context_t;
|
||||
|
||||
CRYS_ECPKI_DomainID_t cc310_mapCurve(int curve_id);
|
||||
CRYS_ECPKI_HASH_OpMode_t cc310_hashModeECC(int hash_size);
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
#if !defined(NO_CRYPT_BENCHMARK) && defined(WOLFSSL_nRF5x_SDK_15_2)
|
||||
/* includes to use Real-time counter (RTC) on nRF52840 */
|
||||
#include "nrf_gpio.h"
|
||||
#include "nrf_drv_rtc.h"
|
||||
#include "nrf_drv_clock.h"
|
||||
#include "boards.h"
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#endif /* NO_CRYPT_BENCHMARK && WOLFSSL_nRF5x_SDK_15_2*/
|
||||
|
||||
int cc310_Init(void);
|
||||
void cc310_Free(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* WOLFSSL_CRYPTOCELL */
|
||||
#endif /* WOLFSSL_CRYPTOCELL_H */
|
|
@ -1,134 +0,0 @@
|
|||
/* atmel.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef _ATECC508_H_
|
||||
#define _ATECC508_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#if defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC_PKCB)
|
||||
#undef SHA_BLOCK_SIZE
|
||||
#define SHA_BLOCK_SIZE SHA_BLOCK_SIZE_REMAP
|
||||
#include <cryptoauthlib.h>
|
||||
#undef SHA_BLOCK_SIZE
|
||||
#endif
|
||||
|
||||
/* ATECC508A only supports ECC P-256 */
|
||||
#define ATECC_KEY_SIZE (32)
|
||||
#define ATECC_PUBKEY_SIZE (ATECC_KEY_SIZE*2) /* X and Y */
|
||||
#define ATECC_SIG_SIZE (ATECC_KEY_SIZE*2) /* R and S */
|
||||
#ifndef ATECC_MAX_SLOT
|
||||
#define ATECC_MAX_SLOT (0x8) /* Only use 0-7 */
|
||||
#endif
|
||||
#define ATECC_INVALID_SLOT (0xFF)
|
||||
|
||||
/* Device Key for signing */
|
||||
#ifndef ATECC_SLOT_AUTH_PRIV
|
||||
#define ATECC_SLOT_AUTH_PRIV (0x0)
|
||||
#endif
|
||||
/* Ephemeral key */
|
||||
#ifndef ATECC_SLOT_ECDHE_PRIV
|
||||
#define ATECC_SLOT_ECDHE_PRIV (0x2)
|
||||
#endif
|
||||
/* Symmetric encryption key */
|
||||
#ifndef ATECC_SLOT_I2C_ENC
|
||||
#define ATECC_SLOT_I2C_ENC (0x04)
|
||||
#endif
|
||||
/* Parent encryption key */
|
||||
#ifndef ATECC_SLOT_ENC_PARENT
|
||||
#define ATECC_SLOT_ENC_PARENT (0x7)
|
||||
#endif
|
||||
|
||||
/* ATECC_KEY_SIZE required for ecc.h */
|
||||
#include <wolfssl/wolfcrypt/ecc.h>
|
||||
|
||||
struct WOLFSSL;
|
||||
struct WOLFSSL_CTX;
|
||||
struct WOLFSSL_X509_STORE_CTX;
|
||||
struct ecc_key;
|
||||
|
||||
/* Atmel port functions */
|
||||
int atmel_init(void);
|
||||
void atmel_finish(void);
|
||||
int atmel_get_random_number(uint32_t count, uint8_t* rand_out);
|
||||
#ifndef ATMEL_GET_RANDOM_BLOCK_DEFINED
|
||||
int atmel_get_random_block(unsigned char* output, unsigned int sz);
|
||||
#define ATMEL_GET_RANDOM_BLOCK_DEFINED
|
||||
#endif
|
||||
long atmel_get_curr_time_and_date(long* tm);
|
||||
|
||||
#ifdef WOLFSSL_ATECC508A
|
||||
|
||||
enum atmelSlotType {
|
||||
ATMEL_SLOT_ANY,
|
||||
ATMEL_SLOT_ENCKEY,
|
||||
ATMEL_SLOT_DEVICE,
|
||||
ATMEL_SLOT_ECDHE,
|
||||
ATMEL_SLOT_ECDHE_ENC,
|
||||
};
|
||||
|
||||
int atmel_ecc_alloc(int slotType);
|
||||
void atmel_ecc_free(int slotId);
|
||||
|
||||
typedef int (*atmel_slot_alloc_cb)(int);
|
||||
typedef void (*atmel_slot_dealloc_cb)(int);
|
||||
int atmel_set_slot_allocator(atmel_slot_alloc_cb alloc,
|
||||
atmel_slot_dealloc_cb dealloc);
|
||||
|
||||
int atmel_ecc_translate_err(int status);
|
||||
int atmel_get_rev_info(word32* revision);
|
||||
void atmel_show_rev_info(void);
|
||||
|
||||
/* The macro ATECC_GET_ENC_KEY can be set to override the default
|
||||
encryption key with your own at build-time */
|
||||
#ifndef ATECC_GET_ENC_KEY
|
||||
#define ATECC_GET_ENC_KEY(enckey, keysize) atmel_get_enc_key_default((enckey), (keysize))
|
||||
#endif
|
||||
int atmel_get_enc_key_default(byte* enckey, word16 keysize);
|
||||
int atmel_ecc_create_pms(int slotId, const uint8_t* peerKey, uint8_t* pms);
|
||||
int atmel_ecc_create_key(int slotId, byte* peerKey);
|
||||
int atmel_ecc_sign(int slotId, const byte* message, byte* signature);
|
||||
int atmel_ecc_verify(const byte* message, const byte* signature,
|
||||
const byte* pubkey, int* verified);
|
||||
|
||||
#endif /* WOLFSSL_ATECC508A */
|
||||
|
||||
#ifdef HAVE_PK_CALLBACKS
|
||||
int atcatls_create_key_cb(struct WOLFSSL* ssl, struct ecc_key* key, unsigned int keySz,
|
||||
int ecc_curve, void* ctx);
|
||||
int atcatls_create_pms_cb(struct WOLFSSL* ssl, struct ecc_key* otherKey,
|
||||
unsigned char* pubKeyDer, word32* pubKeySz,
|
||||
unsigned char* out, word32* outlen,
|
||||
int side, void* ctx);
|
||||
int atcatls_sign_certificate_cb(struct WOLFSSL* ssl, const byte* in, unsigned int inSz,
|
||||
byte* out, word32* outSz, const byte* key, unsigned int keySz, void* ctx);
|
||||
int atcatls_verify_signature_cb(struct WOLFSSL* ssl, const byte* sig, unsigned int sigSz,
|
||||
const byte* hash, unsigned int hashSz, const byte* key, unsigned int keySz,
|
||||
int* result, void* ctx);
|
||||
|
||||
int atcatls_set_callbacks(struct WOLFSSL_CTX* ctx);
|
||||
int atcatls_set_callback_ctx(struct WOLFSSL* ssl, void* user_ctx);
|
||||
#endif
|
||||
|
||||
#endif /* _ATECC508_H_ */
|
|
@ -1,187 +0,0 @@
|
|||
/* caam_driver.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef CAAM_DRIVER_H
|
||||
#define CAAM_DRIVER_H
|
||||
|
||||
#define CAAM_BASE 0xf2100000
|
||||
|
||||
#define CAAM_PAGE 0xf0100000
|
||||
#define CAAM_PAGE_MAX 6
|
||||
|
||||
/******************************************************************************
|
||||
Basic Descriptors
|
||||
****************************************************************************/
|
||||
|
||||
/* descriptor commands */
|
||||
#define CAAM_KEY 0x00000000
|
||||
#define CAAM_LOAD 0x10000000
|
||||
#define CAAM_LOAD_CTX 0x10200000
|
||||
#define CAAM_IMM 0x00800000
|
||||
#define CAAM_FIFO_L 0x20000000
|
||||
#define CAAM_FIFO_S 0x60000000
|
||||
#define CAAM_FIFO_S_SKEY 0x60260000
|
||||
#define CAAM_STORE 0x50000000
|
||||
#define CAAM_STORE_CTX 0x50200000
|
||||
#define CAAM_MOVE 0x78000000
|
||||
#define CAAM_OP 0x80000000
|
||||
#define CAAM_SIG 0x90000000
|
||||
#define CAAM_JUMP 0xA0000000
|
||||
#define CAAM_SEQI 0xF0000000/* SEQ in */
|
||||
#define CAAM_SEQO 0xF8000000/* SEQ out */
|
||||
#define CAAM_HEAD 0xB0800000
|
||||
#define CAAM_NWB 0x00200000
|
||||
|
||||
#define CAAM_BLOB_ENCAP 0x07000000
|
||||
#define CAAM_BLOB_DECAP 0x06000000
|
||||
#define CAAM_OPID_BLOB 0x000D0000
|
||||
|
||||
/* algorithms modes and types */
|
||||
#define CAAM_CLASS1 0x02000000/* i.e. AES */
|
||||
#define CAAM_CLASS2 0x04000000/* i.e. hash algos */
|
||||
|
||||
#define CAAM_ENC 0x00000001
|
||||
#define CAAM_DEC 0x00000000
|
||||
#define CAAM_ALG_INIT 0x00000004
|
||||
#define CAAM_ALG_INITF 0x0000000C
|
||||
#define CAAM_ALG_UPDATE 0x00000000
|
||||
#define CAAM_ALG_FINAL 0x00000008
|
||||
|
||||
/* AES 10h */
|
||||
#define CAAM_AESCTR 0x00100000
|
||||
#define CAAM_AESCBC 0x00100100
|
||||
#define CAAM_AESECB 0x00100200
|
||||
#define CAAM_AESCFB 0x00100300
|
||||
#define CAAM_AESOFB 0x00100400
|
||||
#define CAAM_CMAC 0x00100600
|
||||
#define CAAM_AESCCM 0x00100800
|
||||
|
||||
/* HASH 40h */
|
||||
#define CAAM_MD5 0x00400000
|
||||
#define CAAM_SHA 0x00410000
|
||||
#define CAAM_SHA224 0x00420000
|
||||
#define CAAM_SHA256 0x00430000
|
||||
#define CAAM_SHA384 0x00440000
|
||||
#define CAAM_SHA512 0x00450000
|
||||
|
||||
/* HMAC 40h + 10 AAI */
|
||||
#define CAAM_HMAC_MD5 0x00400010
|
||||
#define CAAM_HMAC_SHA 0x00410010
|
||||
#define CAAM_HMAC_SHA224 0x00420010
|
||||
#define CAAM_HMAC_SHA256 0x00430010
|
||||
#define CAAM_HMAC_SHA384 0x00440010
|
||||
#define CAAM_HMAC_SHA512 0x00450010
|
||||
|
||||
#define CAAM_MD5_CTXSZ (16 + 8)
|
||||
#define CAAM_SHA_CTXSZ (20 + 8)
|
||||
#define CAAM_SHA224_CTXSZ (32 + 8)
|
||||
#define CAAM_SHA256_CTXSZ (32 + 8)
|
||||
#define CAAM_SHA384_CTXSZ (64 + 8)
|
||||
#define CAAM_SHA512_CTXSZ (64 + 8)
|
||||
|
||||
/* RNG 50h */
|
||||
#define CAAM_RNG 0x00500000
|
||||
|
||||
/* Used to get raw entropy from TRNG */
|
||||
#define CAAM_ENTROPY 0x00500001
|
||||
|
||||
#define FIFOL_TYPE_MSG 0x00100000
|
||||
#define FIFOL_TYPE_AAD 0x00300000
|
||||
#define FIFOL_TYPE_FC1 0x00010000
|
||||
#define FIFOL_TYPE_LC1 0x00020000
|
||||
#define FIFOL_TYPE_LC2 0x00040000
|
||||
|
||||
#define FIFOS_TYPE_MSG 0x00300000
|
||||
|
||||
/* continue bit set if more output is expected */
|
||||
#define CAAM_FIFOS_CONT 0x00800000
|
||||
|
||||
#define CAAM_PAGE_SZ 4096
|
||||
|
||||
/* RNG Registers */
|
||||
#define CAAM_RTMCTL CAAM_BASE + 0X0600
|
||||
#define CAAM_RTSDCTL CAAM_BASE + 0X0610
|
||||
#define CAAM_RTFRQMIN CAAM_BASE + 0X0618
|
||||
#define CAAM_RTFRQMAX CAAM_BASE + 0X061C
|
||||
#define CAAM_RDSTA CAAM_BASE + 0X06C0
|
||||
#define CAAM_RTSTATUS CAAM_BASE + 0x063C
|
||||
|
||||
/* each of the following 11 RTENT registers are an offset of 4 from RTENT0 */
|
||||
#define CAAM_RTENT0 CAAM_BASE + 0x0640
|
||||
#define CAAM_RTENT11 CAAM_BASE + 0x066C /* Max RTENT register */
|
||||
|
||||
/* RNG Masks/Values */
|
||||
#ifndef CAAM_ENT_DLY
|
||||
#define CAAM_ENT_DLY 1200 /* @TODO lower value may gain performance */
|
||||
#endif
|
||||
#define CAAM_PRGM 0x00010000 /* Set RTMCTL to program state */
|
||||
#define CAAM_TRNG 0x00000020 /* Set TRNG access */
|
||||
#define CAAM_CTLERR 0x00001000
|
||||
#define CAAM_ENTVAL 0x00000400 /* checking RTMCTL for entropy ready */
|
||||
|
||||
/* Input Job Ring Registers */
|
||||
#define CAAM_IRBAR0 CAAM_BASE + 0x1004
|
||||
#define CAAM_IRSR0 CAAM_BASE + 0x100C
|
||||
#define CAAM_IRJAR0 CAAM_BASE + 0x101C
|
||||
|
||||
/* Output Job Ring Registers */
|
||||
#define CAAM_ORBAR0 CAAM_BASE + 0x1024
|
||||
#define CAAM_ORSR0 CAAM_BASE + 0x102C
|
||||
#define CAAM_ORJAR0 CAAM_BASE + 0x103C
|
||||
|
||||
|
||||
/* Status Registers */
|
||||
#define CAAM_STATUS CAAM_BASE + 0x0FD4
|
||||
#define CAAM_VERSION_MS CAAM_BASE + 0x0FE8
|
||||
#define CAAM_VERSION_LS CAAM_BASE + 0x0FEC
|
||||
#define CAMM_SUPPORT_MS CAAM_BASE + 0x0FF0
|
||||
#define CAMM_SUPPORT_LS CAAM_BASE + 0x0FF4
|
||||
|
||||
|
||||
#define CAAM_C1DSR_LS CAAM_BASE + 0x8014
|
||||
#define CAAM_C1MR CAAM_BASE + 0x8004
|
||||
|
||||
|
||||
/* output FIFO is 16 entries deep and each entry has a two 4 byte registers */
|
||||
#define CAAM_FIFOO_MS CAAM_BASE + 0x87F0
|
||||
#define CAAM_FIFOO_LS CAAM_BASE + 0x87F4
|
||||
|
||||
/* input FIFO is 16 entries deep with each entry having two 4 byte registers
|
||||
All data written to it from IP bus should be in big endian format */
|
||||
#define CAAM_FIFOI_LS CAAM_BASE + 0x87E0
|
||||
|
||||
/* offset of 4 with range 0 .. 13 */
|
||||
#define CAAM_CTX1 CAAM_BASE + 0x8100
|
||||
#define CAAM_CTRIV CAAM_CTX1 + 8 /* AES-CTR iv is in 2 and 3 */
|
||||
#define CAAM_CBCIV CAAM_CTX1 /* AES-CBC iv is in 1 and 2 */
|
||||
|
||||
|
||||
/* instantiate RNG and create JDKEK, TDKEK, and TDSK key */
|
||||
static unsigned int wc_rng_start[] = {
|
||||
CAAM_HEAD | 0x00000006,
|
||||
CAAM_OP | CAAM_CLASS1 | CAAM_RNG | 0x00000004, /* Instantiate RNG handle 0 with TRNG */
|
||||
CAAM_JUMP | 0x02000001, /* wait for Class1 RNG and jump to next cmd */
|
||||
CAAM_LOAD | 0x00880004, /* Load to clear written register */
|
||||
0x00000001, /* reset done interrupt */
|
||||
CAAM_OP | CAAM_CLASS1 | CAAM_RNG | 0x00001000 /* Generate secure keys */
|
||||
};
|
||||
|
||||
#endif /* CAAM_DRIVER_H */
|
|
@ -1,63 +0,0 @@
|
|||
/* wolfcaam.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef WOLF_CRYPT_CAAM_INIT_H
|
||||
#define WOLF_CRYPT_CAAM_INIT_H
|
||||
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
#if defined(WOLFSSL_IMX6_CAAM) || defined(WOLFSSL_IMX6_CAAM_RNG)
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#if defined(__INTEGRITY) || defined(INTEGRITY)
|
||||
#include <INTEGRITY.h>
|
||||
#endif
|
||||
|
||||
WOLFSSL_LOCAL int wc_caamInit(void);
|
||||
WOLFSSL_LOCAL int wc_caamFree(void);
|
||||
WOLFSSL_LOCAL int wc_caamInitRng(void);
|
||||
WOLFSSL_LOCAL int wc_caamFreeRng(void);
|
||||
|
||||
WOLFSSL_LOCAL word32 wc_caamReadRegister(word32 reg);
|
||||
WOLFSSL_LOCAL void wc_caamWriteRegister(word32 reg, word32 value);
|
||||
WOLFSSL_LOCAL int wc_caamAddAndWait(Buffer* buf, word32 arg[4], word32 type);
|
||||
|
||||
WOLFSSL_API int wc_caamSetResource(IODevice ioDev);
|
||||
|
||||
WOLFSSL_API int wc_caamOpenBlob(byte* data, word32 dataSz, byte* out,
|
||||
word32* outSz);
|
||||
WOLFSSL_API int wc_caamCreateBlob(byte* data, word32 dataSz, byte* out,
|
||||
word32* outSz);
|
||||
|
||||
/* additional size that is added by CAAM when creating a blob */
|
||||
#define WC_CAAM_BLOB_SZ 48
|
||||
|
||||
#ifndef WC_CAAM_READ
|
||||
#define WC_CAAM_READ(reg) wc_caamReadRegister((reg))
|
||||
#endif
|
||||
#ifndef WC_CAAM_WRITE
|
||||
#define WC_CAAM_WRITE(reg, x) wc_caamWriteRegister((reg), (x))
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_IMX6_CAAM */
|
||||
|
||||
#endif /* WOLF_CRYPT_CAAM_INIT_H */
|
|
@ -1,88 +0,0 @@
|
|||
/* wolfcaam_sha.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef WOLF_CRYPT_CAAM_SHA_H
|
||||
#define WOLF_CRYPT_CAAM_SHA_H
|
||||
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
#ifdef WOLFSSL_IMX6_CAAM
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#define WOLFSSL_NO_HASH_RAW
|
||||
|
||||
#ifndef WC_CAAM_CTXLEN
|
||||
/* last 8 bytes of context is for length */
|
||||
#define WC_CAAM_CTXLEN 8
|
||||
#endif
|
||||
|
||||
#ifndef WC_CAAM_HASH_BLOCK
|
||||
/* define sha structures and also get the max possible digest. Start with SHA
|
||||
digest size */
|
||||
#define WC_CAAM_HASH_BLOCK 64
|
||||
#endif
|
||||
|
||||
#ifndef WC_CAAM_MAX_DIGEST
|
||||
#define WC_CAAM_MAX_DIGEST 20
|
||||
#ifdef WOLFSSL_SHA224
|
||||
#undef WC_CAAM_MAX_DIGEST
|
||||
#define WC_CAAM_MAX_DIGEST 32
|
||||
#endif
|
||||
|
||||
#ifndef NO_SHA256
|
||||
#undef WC_CAAM_MAX_DIGEST
|
||||
#define WC_CAAM_MAX_DIGEST 32
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SHA384
|
||||
#undef WC_CAAM_MAX_DIGEST
|
||||
#define WC_CAAM_MAX_DIGEST 64
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#undef WC_CAAM_MAX_DIGEST
|
||||
#define WC_CAAM_MAX_DIGEST 64
|
||||
#endif
|
||||
#endif /* WC_CAAM_MAX_DIGEST */
|
||||
|
||||
|
||||
typedef struct wc_Sha {
|
||||
word32 ctx[(WC_CAAM_MAX_DIGEST + WC_CAAM_CTXLEN) / sizeof(word32)];
|
||||
word32 buffLen; /* in bytes */
|
||||
word32 buffer[WC_CAAM_HASH_BLOCK / sizeof(word32)];
|
||||
} wc_Sha;
|
||||
|
||||
#ifndef NO_MD5
|
||||
typedef struct wc_Sha wc_Md5;
|
||||
#endif
|
||||
|
||||
#ifndef NO_SHA256
|
||||
typedef struct wc_Sha wc_Sha256;
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
typedef struct wc_Sha wc_Sha512;
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_IMX6_CAAM */
|
||||
|
||||
#endif /* WOLF_CRYPT_CAAM_SHA_H */
|
|
@ -1,31 +0,0 @@
|
|||
/* cavium_octeon_sync.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL. (formerly known as CyaSSL)
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef _CAVIUM_OCTEON_SYNC_H_
|
||||
#define _CAVIUM_OCTEON_SYNC_H_
|
||||
|
||||
#ifdef HAVE_CAVIUM_OCTEON_SYNC
|
||||
|
||||
WOLFSSL_API int wc_CryptoCb_InitOcteon(void);
|
||||
WOLFSSL_API void wc_CryptoCb_CleanupOcteon(int* id);
|
||||
|
||||
#endif /* HAVE_CAVIUM_OCTEON_SYNC */
|
||||
#endif /* _CAVIUM_OCTEON_SYNC_H_ */
|
|
@ -1,53 +0,0 @@
|
|||
/* wc_devcrypto.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
|
||||
#ifndef WOLFSSL_DEVCRYPTO_H
|
||||
#define WOLFSSL_DEVCRYPTO_H
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#ifdef WOLFSSL_DEVCRYPTO
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <crypto/cryptodev.h>
|
||||
|
||||
typedef struct WC_CRYPTODEV {
|
||||
int cfd;
|
||||
struct session_op sess;
|
||||
} WC_CRYPTODEV;
|
||||
|
||||
WOLFSSL_LOCAL int wc_DevCryptoCreate(WC_CRYPTODEV* ctx, int type, byte* key, word32 keySz);
|
||||
WOLFSSL_LOCAL void wc_DevCryptoFree(WC_CRYPTODEV* ctx);
|
||||
WOLFSSL_LOCAL void wc_SetupCrypt(struct crypt_op* crt, WC_CRYPTODEV* dev,
|
||||
byte* src, int srcSz, byte* dst, byte* dig, int flag);
|
||||
WOLFSSL_LOCAL void wc_SetupCryptSym(struct crypt_op* crt, WC_CRYPTODEV* dev,
|
||||
byte* src, word32 srcSz, byte* dst, byte* iv, int flag);
|
||||
WOLFSSL_LOCAL void wc_SetupCryptAead(struct crypt_auth_op* crt, WC_CRYPTODEV* dev,
|
||||
byte* src, word32 srcSz, byte* dst, byte* iv, word32 ivSz, int flag,
|
||||
byte* authIn, word32 authInSz, byte* authTag, word32 authTagSz);
|
||||
|
||||
#endif /* WOLFSSL_DEVCRYPTO */
|
||||
#endif /* WOLFSSL_DEVCRYPTO_H */
|
||||
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
/* quickassist_sync.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL. (formerly known as CyaSSL)
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef _INTEL_QUICKASSIST_SYNC_H_
|
||||
#define _INTEL_QUICKASSIST_SYNC_H_
|
||||
|
||||
#ifdef HAVE_INTEL_QA_SYNC
|
||||
|
||||
WOLFSSL_API int wc_CryptoCb_InitIntelQa(void);
|
||||
WOLFSSL_API void wc_CryptoCb_CleanupIntelQa(int* id);
|
||||
|
||||
WOLFSSL_API void* wc_CryptoCb_IntelQaMalloc(size_t size,
|
||||
void* heap, int type
|
||||
#ifdef WOLFSSL_DEBUG_MEMORY
|
||||
, const char* func, unsigned int line
|
||||
#endif
|
||||
);
|
||||
|
||||
WOLFSSL_API void wc_CryptoCb_IntelQaFree(void *ptr,
|
||||
void* heap, int type
|
||||
#ifdef WOLFSSL_DEBUG_MEMORY
|
||||
, const char* func, unsigned int line
|
||||
#endif
|
||||
);
|
||||
|
||||
WOLFSSL_API void* wc_CryptoCb_IntelQaRealloc(void *ptr,
|
||||
size_t size, void* heap, int type
|
||||
#ifdef WOLFSSL_DEBUG_MEMORY
|
||||
, const char* func, unsigned int line
|
||||
#endif
|
||||
);
|
||||
|
||||
#endif /* HAVE_INTEL_QA_SYNC */
|
||||
|
||||
#endif /* _INTEL_QUICKASSIST_SYNC_H_ */
|
|
@ -1,44 +0,0 @@
|
|||
/* nrf51.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
|
||||
#ifndef WOLFSSL_NRF51_PORT_H
|
||||
#define WOLFSSL_NRF51_PORT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
/* Public Functions */
|
||||
int nrf51_random_generate(byte* output, word32 sz);
|
||||
|
||||
int nrf51_aes_set_key(const byte* key);
|
||||
int nrf51_aes_encrypt(const byte* in, const byte* key, word32 rounds, byte* out);
|
||||
|
||||
double current_time(int reset);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_NRF51_PORT_H */
|
|
@ -1,93 +0,0 @@
|
|||
/* ksdk_port.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef _KSDK_PORT_H_
|
||||
#define _KSDK_PORT_H_
|
||||
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
#ifdef USE_FAST_MATH
|
||||
#include <wolfssl/wolfcrypt/tfm.h>
|
||||
#elif defined WOLFSSL_SP_MATH
|
||||
#include <wolfssl/wolfcrypt/sp_int.h>
|
||||
#else
|
||||
#include <wolfssl/wolfcrypt/integer.h>
|
||||
#endif
|
||||
#include <wolfssl/wolfcrypt/ecc.h>
|
||||
#include <wolfssl/wolfcrypt/curve25519.h>
|
||||
#include <wolfssl/wolfcrypt/ed25519.h>
|
||||
|
||||
|
||||
/* API to init required hardware */
|
||||
int ksdk_port_init(void);
|
||||
|
||||
/* software algorithm, by wolfcrypt */
|
||||
#if defined(FREESCALE_LTC_TFM)
|
||||
int wolfcrypt_mp_mul(mp_int *A, mp_int *B, mp_int *C);
|
||||
int wolfcrypt_mp_mod(mp_int *a, mp_int *b, mp_int *c);
|
||||
int wolfcrypt_mp_mulmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d);
|
||||
int wolfcrypt_mp_mod(mp_int *a, mp_int *b, mp_int *c);
|
||||
int wolfcrypt_mp_invmod(mp_int *a, mp_int *b, mp_int *c);
|
||||
int wolfcrypt_mp_exptmod(mp_int *G, mp_int *X, mp_int *P, mp_int *Y);
|
||||
|
||||
/* Exported mp_mulmod function */
|
||||
int mp_mulmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d);
|
||||
|
||||
#endif /* FREESCALE_LTC_TFM */
|
||||
|
||||
#if defined(FREESCALE_LTC_ECC)
|
||||
#include "fsl_ltc.h"
|
||||
|
||||
typedef enum _fsl_ltc_ecc_coordinate_system
|
||||
{
|
||||
kLTC_Weierstrass = 0U, /*< Point coordinates on an elliptic curve in Weierstrass form */
|
||||
kLTC_Curve25519 = 1U, /*< Point coordinates on an Curve25519 elliptic curve in Montgomery form */
|
||||
kLTC_Ed25519 = 2U, /*< Point coordinates on an Ed25519 elliptic curve in twisted Edwards form */
|
||||
} fsl_ltc_ecc_coordinate_system_t;
|
||||
|
||||
int wc_ecc_point_add(ecc_point *mG, ecc_point *mQ, ecc_point *mR, mp_int *m);
|
||||
|
||||
#ifdef HAVE_CURVE25519
|
||||
int wc_curve25519(ECPoint *q, byte *n, const ECPoint *p, fsl_ltc_ecc_coordinate_system_t type);
|
||||
const ECPoint *wc_curve25519_GetBasePoint(void);
|
||||
status_t LTC_PKHA_Curve25519ToWeierstrass(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut);
|
||||
status_t LTC_PKHA_WeierstrassToCurve25519(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut);
|
||||
status_t LTC_PKHA_Curve25519ComputeY(ltc_pkha_ecc_point_t *ltcPoint);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ED25519
|
||||
status_t LTC_PKHA_Ed25519ToWeierstrass(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut);
|
||||
status_t LTC_PKHA_WeierstrassToEd25519(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut);
|
||||
status_t LTC_PKHA_Ed25519_PointMul(const ltc_pkha_ecc_point_t *ltcPointIn,
|
||||
const uint8_t *N,
|
||||
size_t sizeN,
|
||||
ltc_pkha_ecc_point_t *ltcPointOut,
|
||||
fsl_ltc_ecc_coordinate_system_t typeOut);
|
||||
const ltc_pkha_ecc_point_t *LTC_PKHA_Ed25519_BasePoint(void);
|
||||
status_t LTC_PKHA_Ed25519_PointDecompress(const uint8_t *pubkey, size_t pubKeySize, ltc_pkha_ecc_point_t *ltcPointOut);
|
||||
status_t LTC_PKHA_sc_reduce(uint8_t *a);
|
||||
status_t LTC_PKHA_sc_muladd(uint8_t *s, const uint8_t *a, const uint8_t *b, const uint8_t *c);
|
||||
status_t LTC_PKHA_SignatureForVerify(uint8_t *rcheck, const unsigned char *a, const unsigned char *b, ed25519_key *key);
|
||||
status_t LTC_PKHA_Ed25519_Compress(const ltc_pkha_ecc_point_t *ltcPointIn, uint8_t *p);
|
||||
#endif
|
||||
|
||||
#endif /* FREESCALE_LTC_ECC */
|
||||
|
||||
#endif /* _KSDK_PORT_H_ */
|
|
@ -1,142 +0,0 @@
|
|||
/* stm32.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef _WOLFPORT_STM32_H_
|
||||
#define _WOLFPORT_STM32_H_
|
||||
|
||||
/* Generic STM32 Hashing and Crypto Functions */
|
||||
/* Supports CubeMX HAL or Standard Peripheral Library */
|
||||
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#if defined(WOLFSSL_STM32_PKA) && defined(HAVE_ECC)
|
||||
#include <wolfssl/wolfcrypt/integer.h>
|
||||
#include <wolfssl/wolfcrypt/ecc.h>
|
||||
#endif
|
||||
|
||||
#ifdef STM32_HASH
|
||||
|
||||
#define WOLFSSL_NO_HASH_RAW
|
||||
|
||||
#ifdef HASH_DIGEST
|
||||
/* The HASH_DIGEST register indicates SHA224/SHA256 support */
|
||||
#define STM32_HASH_SHA2
|
||||
#define HASH_CR_SIZE 54
|
||||
#define HASH_MAX_DIGEST 32
|
||||
#else
|
||||
#define HASH_CR_SIZE 50
|
||||
#define HASH_MAX_DIGEST 20
|
||||
#endif
|
||||
|
||||
/* Handle hash differences between CubeMX and StdPeriLib */
|
||||
#if !defined(HASH_ALGOMODE_HASH) && defined(HASH_AlgoMode_HASH)
|
||||
#define HASH_ALGOMODE_HASH HASH_AlgoMode_HASH
|
||||
#endif
|
||||
#if !defined(HASH_DATATYPE_8B) && defined(HASH_DataType_8b)
|
||||
#define HASH_DATATYPE_8B HASH_DataType_8b
|
||||
#endif
|
||||
|
||||
#ifndef STM32_HASH_TIMEOUT
|
||||
#define STM32_HASH_TIMEOUT 0xFFFF
|
||||
#endif
|
||||
|
||||
|
||||
/* STM32 register size in bytes */
|
||||
#define STM32_HASH_REG_SIZE 4
|
||||
|
||||
/* STM32 Hash Context */
|
||||
typedef struct {
|
||||
/* Context switching registers */
|
||||
uint32_t HASH_IMR;
|
||||
uint32_t HASH_STR;
|
||||
uint32_t HASH_CR;
|
||||
uint32_t HASH_CSR[HASH_CR_SIZE];
|
||||
|
||||
/* Hash state / buffers */
|
||||
word32 buffer[STM32_HASH_REG_SIZE / sizeof(word32)]; /* partial word buffer */
|
||||
word32 buffLen; /* partial word remain */
|
||||
word32 loLen; /* total update bytes
|
||||
(only lsb 6-bits is used for nbr valid bytes in last word) */
|
||||
} STM32_HASH_Context;
|
||||
|
||||
|
||||
/* API's */
|
||||
void wc_Stm32_Hash_Init(STM32_HASH_Context* stmCtx);
|
||||
int wc_Stm32_Hash_Update(STM32_HASH_Context* stmCtx, word32 algo,
|
||||
const byte* data, int len);
|
||||
int wc_Stm32_Hash_Final(STM32_HASH_Context* stmCtx, word32 algo,
|
||||
byte* hash, int digestSize);
|
||||
|
||||
#endif /* STM32_HASH */
|
||||
|
||||
|
||||
#ifdef STM32_CRYPTO
|
||||
|
||||
#ifndef NO_AES
|
||||
#if !defined(STM32_CRYPTO_AES_GCM) && (defined(WOLFSSL_STM32F4) || \
|
||||
defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L4))
|
||||
/* Hardware supports AES GCM acceleration */
|
||||
#define STM32_CRYPTO_AES_GCM
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_STM32L4
|
||||
#define STM32_CRYPTO_AES_ONLY /* crypto engine only supports AES */
|
||||
#define CRYP AES
|
||||
#endif
|
||||
|
||||
/* Detect newer CubeMX crypto HAL (HAL_CRYP_Encrypt / HAL_CRYP_Decrypt) */
|
||||
#if !defined(STM32_HAL_V2) && \
|
||||
defined(WOLFSSL_STM32F7) && defined(CRYP_AES_GCM)
|
||||
#define STM32_HAL_V2
|
||||
#endif
|
||||
|
||||
/* The datatype for STM32 CubeMX HAL Crypt calls */
|
||||
#ifdef STM32_HAL_V2
|
||||
#define STM_CRYPT_TYPE uint32_t
|
||||
#else
|
||||
#define STM_CRYPT_TYPE uint8_t
|
||||
#endif
|
||||
|
||||
/* CRYPT_AES_GCM starts the IV with 2 */
|
||||
#define STM32_GCM_IV_START 2
|
||||
|
||||
struct Aes;
|
||||
#ifdef WOLFSSL_STM32_CUBEMX
|
||||
int wc_Stm32_Aes_Init(struct Aes* aes, CRYP_HandleTypeDef* hcryp);
|
||||
#else /* STD_PERI_LIB */
|
||||
int wc_Stm32_Aes_Init(struct Aes* aes, CRYP_InitTypeDef* cryptInit,
|
||||
CRYP_KeyInitTypeDef* keyInit);
|
||||
#endif /* WOLFSSL_STM32_CUBEMX */
|
||||
#endif /* !NO_AES */
|
||||
|
||||
#endif /* STM32_CRYPTO */
|
||||
|
||||
#if defined(WOLFSSL_STM32_PKA) && defined(HAVE_ECC)
|
||||
int stm32_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash,
|
||||
word32 hashlen, int* res, ecc_key* key);
|
||||
|
||||
int stm32_ecc_sign_hash_ex(const byte* hash, word32 hashlen, WC_RNG* rng,
|
||||
ecc_key* key, mp_int *r, mp_int *s);
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _WOLFPORT_STM32_H_ */
|
|
@ -1,99 +0,0 @@
|
|||
/* stsafe.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
#ifndef _WOLFPORT_STSAFE_H_
|
||||
#define _WOLFPORT_STSAFE_H_
|
||||
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
#include <wolfssl/wolfcrypt/ecc.h>
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#ifdef WOLF_CRYPTO_CB
|
||||
#include <wolfssl/wolfcrypt/cryptocb.h>
|
||||
#endif
|
||||
|
||||
#if !defined(WOLFCRYPT_ONLY) && defined(HAVE_PK_CALLBACKS)
|
||||
#include <wolfssl/ssl.h>
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_STSAFEA100
|
||||
|
||||
/* The wolf STSAFE interface layer */
|
||||
/* Please contact wolfSSL for the STSAFE port files */
|
||||
#include "stsafe_interface.h"
|
||||
|
||||
#ifndef STSAFE_MAX_KEY_LEN
|
||||
#define STSAFE_MAX_KEY_LEN ((uint32_t)48) /* for up to 384-bit keys */
|
||||
#endif
|
||||
#ifndef STSAFE_MAX_PUBKEY_RAW_LEN
|
||||
#define STSAFE_MAX_PUBKEY_RAW_LEN ((uint32_t)STSAFE_MAX_KEY_LEN * 2) /* x/y */
|
||||
#endif
|
||||
#ifndef STSAFE_MAX_SIG_LEN
|
||||
#define STSAFE_MAX_SIG_LEN ((uint32_t)STSAFE_MAX_KEY_LEN * 2) /* r/s */
|
||||
#endif
|
||||
|
||||
WOLFSSL_API int SSL_STSAFE_LoadDeviceCertificate(byte** pRawCertificate,
|
||||
word32* pRawCertificateLen);
|
||||
|
||||
#if !defined(WOLFCRYPT_ONLY) && defined(HAVE_PK_CALLBACKS)
|
||||
WOLFSSL_API int SSL_STSAFE_CreateKeyCb(WOLFSSL* ssl, ecc_key* key, word32 keySz,
|
||||
int ecc_curve, void* ctx);
|
||||
WOLFSSL_API int SSL_STSAFE_VerifyPeerCertCb(WOLFSSL* ssl,
|
||||
const unsigned char* sig, unsigned int sigSz,
|
||||
const unsigned char* hash, unsigned int hashSz,
|
||||
const unsigned char* keyDer, unsigned int keySz,
|
||||
int* result, void* ctx);
|
||||
WOLFSSL_API int SSL_STSAFE_SignCertificateCb(WOLFSSL* ssl,
|
||||
const byte* in, word32 inSz,
|
||||
byte* out, word32* outSz,
|
||||
const byte* key, word32 keySz, void* ctx);
|
||||
WOLFSSL_API int SSL_STSAFE_SharedSecretCb(WOLFSSL* ssl,
|
||||
ecc_key* otherKey,
|
||||
unsigned char* pubKeyDer, unsigned int* pubKeySz,
|
||||
unsigned char* out, unsigned int* outlen,
|
||||
int side, void* ctx);
|
||||
|
||||
/* Helper API's for setting up callbacks */
|
||||
WOLFSSL_API int SSL_STSAFE_SetupPkCallbacks(WOLFSSL_CTX* ctx);
|
||||
WOLFSSL_API int SSL_STSAFE_SetupPkCallbackCtx(WOLFSSL* ssl, void* user_ctx);
|
||||
#endif /* HAVE_PK_CALLBACKS */
|
||||
|
||||
|
||||
#ifdef WOLF_CRYPTO_CB
|
||||
|
||||
/* Device ID that's unique and valid (not INVALID_DEVID -2) */
|
||||
#define WOLF_STSAFE_DEVID 0x53545341; /* STSA */
|
||||
|
||||
typedef struct wolfSTSAFE_CryptoCb_Ctx {
|
||||
#ifdef HAVE_ECC
|
||||
ecc_key wolfEccKey;
|
||||
#endif
|
||||
int devId;
|
||||
} wolfSTSAFE_CryptoCb_Ctx;
|
||||
|
||||
WOLFSSL_API int wolfSSL_STSAFE_CryptoDevCb(int devId, wc_CryptoInfo* info,
|
||||
void* ctx);
|
||||
|
||||
#endif /* WOLF_CRYPTO_CB */
|
||||
|
||||
#endif /* WOLFSSL_STSAFEA100 */
|
||||
|
||||
#endif /* _WOLFPORT_STSAFE_H_ */
|
|
@ -1,45 +0,0 @@
|
|||
/* xil-sha3.h
|
||||
*
|
||||
* Copyright (C) 2006-2020 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
|
||||
#ifndef WOLF_XIL_CRYPT_SHA3_H
|
||||
#define WOLF_XIL_CRYPT_SHA3_H
|
||||
|
||||
#ifdef WOLFSSL_SHA3
|
||||
#include "xsecure_sha.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Sha3 digest */
|
||||
typedef struct Sha3 {
|
||||
XSecure_Sha3 hw;
|
||||
XCsuDma dma;
|
||||
} wc_Sha3;
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_SHA3 */
|
||||
#endif /* WOLF_XIL_CRYPT_SHA3_H */
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue