forked from wolfSSL/wolfssl
Changes to support IAR with position independent code (ROPI). Updated example wolfSSL IAR project to use "ropi" (Position indipendance for code and read-only data).
This commit is contained in:
@ -343,7 +343,7 @@
|
|||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>CCPosIndRopi</name>
|
<name>CCPosIndRopi</name>
|
||||||
<state>0</state>
|
<state>1</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>CCPosIndRwpi</name>
|
<name>CCPosIndRwpi</name>
|
||||||
|
@ -3124,7 +3124,7 @@ int wolfSSL_want_write(WOLFSSL* ssl)
|
|||||||
|
|
||||||
char* wolfSSL_ERR_error_string(unsigned long errNumber, char* data)
|
char* wolfSSL_ERR_error_string(unsigned long errNumber, char* data)
|
||||||
{
|
{
|
||||||
static const char* const msg = "Please supply a buffer for error string";
|
static wcchar msg = "Please supply a buffer for error string";
|
||||||
|
|
||||||
WOLFSSL_ENTER("ERR_error_string");
|
WOLFSSL_ENTER("ERR_error_string");
|
||||||
if (data) {
|
if (data) {
|
||||||
|
@ -2309,8 +2309,6 @@ static void wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NEED_AES_TABLES
|
#ifdef NEED_AES_TABLES
|
||||||
(void)temp;
|
|
||||||
|
|
||||||
switch (keylen) {
|
switch (keylen) {
|
||||||
#if defined(AES_MAX_KEY_SIZE) && AES_MAX_KEY_SIZE >= 128 && \
|
#if defined(AES_MAX_KEY_SIZE) && AES_MAX_KEY_SIZE >= 128 && \
|
||||||
defined(WOLFSSL_AES_128)
|
defined(WOLFSSL_AES_128)
|
||||||
@ -2436,6 +2434,7 @@ static void wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
|||||||
#else
|
#else
|
||||||
(void)dir;
|
(void)dir;
|
||||||
#endif /* HAVE_AES_DECRYPT */
|
#endif /* HAVE_AES_DECRYPT */
|
||||||
|
(void)temp;
|
||||||
#endif /* NEED_AES_TABLES */
|
#endif /* NEED_AES_TABLES */
|
||||||
|
|
||||||
#if defined(WOLFSSL_SCE) && !defined(WOLFSSL_SCE_NO_AES)
|
#if defined(WOLFSSL_SCE) && !defined(WOLFSSL_SCE_NO_AES)
|
||||||
|
@ -9794,51 +9794,51 @@ void wc_FreeDer(DerBuffer** pDer)
|
|||||||
/* Max X509 header length indicates the max length + 2 ('\n', '\0') */
|
/* Max X509 header length indicates the max length + 2 ('\n', '\0') */
|
||||||
#define MAX_X509_HEADER_SZ (37 + 2)
|
#define MAX_X509_HEADER_SZ (37 + 2)
|
||||||
|
|
||||||
const char* const BEGIN_CERT = "-----BEGIN CERTIFICATE-----";
|
wcchar BEGIN_CERT = "-----BEGIN CERTIFICATE-----";
|
||||||
const char* const END_CERT = "-----END CERTIFICATE-----";
|
wcchar END_CERT = "-----END CERTIFICATE-----";
|
||||||
#ifdef WOLFSSL_CERT_REQ
|
#ifdef WOLFSSL_CERT_REQ
|
||||||
const char* const BEGIN_CERT_REQ = "-----BEGIN CERTIFICATE REQUEST-----";
|
wcchar BEGIN_CERT_REQ = "-----BEGIN CERTIFICATE REQUEST-----";
|
||||||
const char* const END_CERT_REQ = "-----END CERTIFICATE REQUEST-----";
|
wcchar END_CERT_REQ = "-----END CERTIFICATE REQUEST-----";
|
||||||
#endif
|
#endif
|
||||||
#ifndef NO_DH
|
#ifndef NO_DH
|
||||||
const char* const BEGIN_DH_PARAM = "-----BEGIN DH PARAMETERS-----";
|
wcchar BEGIN_DH_PARAM = "-----BEGIN DH PARAMETERS-----";
|
||||||
const char* const END_DH_PARAM = "-----END DH PARAMETERS-----";
|
wcchar END_DH_PARAM = "-----END DH PARAMETERS-----";
|
||||||
#endif
|
#endif
|
||||||
#ifndef NO_DSA
|
#ifndef NO_DSA
|
||||||
const char* const BEGIN_DSA_PARAM = "-----BEGIN DSA PARAMETERS-----";
|
wcchar BEGIN_DSA_PARAM = "-----BEGIN DSA PARAMETERS-----";
|
||||||
const char* const END_DSA_PARAM = "-----END DSA PARAMETERS-----";
|
wcchar END_DSA_PARAM = "-----END DSA PARAMETERS-----";
|
||||||
#endif
|
#endif
|
||||||
const char* const BEGIN_X509_CRL = "-----BEGIN X509 CRL-----";
|
wcchar BEGIN_X509_CRL = "-----BEGIN X509 CRL-----";
|
||||||
const char* const END_X509_CRL = "-----END X509 CRL-----";
|
wcchar END_X509_CRL = "-----END X509 CRL-----";
|
||||||
const char* const BEGIN_RSA_PRIV = "-----BEGIN RSA PRIVATE KEY-----";
|
wcchar BEGIN_RSA_PRIV = "-----BEGIN RSA PRIVATE KEY-----";
|
||||||
const char* const END_RSA_PRIV = "-----END RSA PRIVATE KEY-----";
|
wcchar END_RSA_PRIV = "-----END RSA PRIVATE KEY-----";
|
||||||
const char* const BEGIN_PRIV_KEY = "-----BEGIN PRIVATE KEY-----";
|
wcchar BEGIN_PRIV_KEY = "-----BEGIN PRIVATE KEY-----";
|
||||||
const char* const END_PRIV_KEY = "-----END PRIVATE KEY-----";
|
wcchar END_PRIV_KEY = "-----END PRIVATE KEY-----";
|
||||||
const char* const BEGIN_ENC_PRIV_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----";
|
wcchar BEGIN_ENC_PRIV_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----";
|
||||||
const char* const END_ENC_PRIV_KEY = "-----END ENCRYPTED PRIVATE KEY-----";
|
wcchar END_ENC_PRIV_KEY = "-----END ENCRYPTED PRIVATE KEY-----";
|
||||||
#ifdef HAVE_ECC
|
#ifdef HAVE_ECC
|
||||||
const char* const BEGIN_EC_PRIV = "-----BEGIN EC PRIVATE KEY-----";
|
wcchar BEGIN_EC_PRIV = "-----BEGIN EC PRIVATE KEY-----";
|
||||||
const char* const END_EC_PRIV = "-----END EC PRIVATE KEY-----";
|
wcchar END_EC_PRIV = "-----END EC PRIVATE KEY-----";
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) || \
|
#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) || \
|
||||||
!defined(NO_DSA)
|
!defined(NO_DSA)
|
||||||
const char* const BEGIN_DSA_PRIV = "-----BEGIN DSA PRIVATE KEY-----";
|
wcchar BEGIN_DSA_PRIV = "-----BEGIN DSA PRIVATE KEY-----";
|
||||||
const char* const END_DSA_PRIV = "-----END DSA PRIVATE KEY-----";
|
wcchar END_DSA_PRIV = "-----END DSA PRIVATE KEY-----";
|
||||||
#endif
|
#endif
|
||||||
#ifdef OPENSSL_EXTRA
|
#ifdef OPENSSL_EXTRA
|
||||||
const char BEGIN_PRIV_KEY_PREFIX[] = "-----BEGIN";
|
const char BEGIN_PRIV_KEY_PREFIX[] = "-----BEGIN";
|
||||||
const char PRIV_KEY_SUFFIX[] = "PRIVATE KEY-----";
|
const char PRIV_KEY_SUFFIX[] = "PRIVATE KEY-----";
|
||||||
const char END_PRIV_KEY_PREFIX[] = "-----END";
|
const char END_PRIV_KEY_PREFIX[] = "-----END";
|
||||||
#endif
|
#endif
|
||||||
const char* const BEGIN_PUB_KEY = "-----BEGIN PUBLIC KEY-----";
|
wcchar BEGIN_PUB_KEY = "-----BEGIN PUBLIC KEY-----";
|
||||||
const char* const END_PUB_KEY = "-----END PUBLIC KEY-----";
|
wcchar END_PUB_KEY = "-----END PUBLIC KEY-----";
|
||||||
#if defined(HAVE_ED25519) || defined(HAVE_ED448)
|
#if defined(HAVE_ED25519) || defined(HAVE_ED448)
|
||||||
const char* const BEGIN_EDDSA_PRIV = "-----BEGIN EDDSA PRIVATE KEY-----";
|
wcchar BEGIN_EDDSA_PRIV = "-----BEGIN EDDSA PRIVATE KEY-----";
|
||||||
const char* const END_EDDSA_PRIV = "-----END EDDSA PRIVATE KEY-----";
|
wcchar END_EDDSA_PRIV = "-----END EDDSA PRIVATE KEY-----";
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_CRL
|
#ifdef HAVE_CRL
|
||||||
const char *const BEGIN_CRL = "-----BEGIN X509 CRL-----";
|
const char *const BEGIN_CRL = "-----BEGIN X509 CRL-----";
|
||||||
const char* const END_CRL = "-----END X509 CRL-----";
|
wcchar END_CRL = "-----END X509 CRL-----";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -9953,22 +9953,22 @@ int wc_PemGetHeaderFooter(int type, const char** header, const char** footer)
|
|||||||
|
|
||||||
#ifdef WOLFSSL_ENCRYPTED_KEYS
|
#ifdef WOLFSSL_ENCRYPTED_KEYS
|
||||||
|
|
||||||
static const char* const kProcTypeHeader = "Proc-Type";
|
static wcchar kProcTypeHeader = "Proc-Type";
|
||||||
static const char* const kDecInfoHeader = "DEK-Info";
|
static wcchar kDecInfoHeader = "DEK-Info";
|
||||||
|
|
||||||
#ifdef WOLFSSL_PEM_TO_DER
|
#ifdef WOLFSSL_PEM_TO_DER
|
||||||
#ifndef NO_DES3
|
#ifndef NO_DES3
|
||||||
static const char* const kEncTypeDes = "DES-CBC";
|
static wcchar kEncTypeDes = "DES-CBC";
|
||||||
static const char* const kEncTypeDes3 = "DES-EDE3-CBC";
|
static wcchar kEncTypeDes3 = "DES-EDE3-CBC";
|
||||||
#endif
|
#endif
|
||||||
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_128)
|
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_128)
|
||||||
static const char* const kEncTypeAesCbc128 = "AES-128-CBC";
|
static wcchar kEncTypeAesCbc128 = "AES-128-CBC";
|
||||||
#endif
|
#endif
|
||||||
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_192)
|
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_192)
|
||||||
static const char* const kEncTypeAesCbc192 = "AES-192-CBC";
|
static wcchar kEncTypeAesCbc192 = "AES-192-CBC";
|
||||||
#endif
|
#endif
|
||||||
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_256)
|
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_256)
|
||||||
static const char* const kEncTypeAesCbc256 = "AES-256-CBC";
|
static wcchar kEncTypeAesCbc256 = "AES-256-CBC";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int wc_EncryptedInfoGet(EncryptedInfo* info, const char* cipherInfo)
|
int wc_EncryptedInfoGet(EncryptedInfo* info, const char* cipherInfo)
|
||||||
|
@ -529,9 +529,6 @@ int fp_mul_comba(fp_int *A, fp_int *B, fp_int *C)
|
|||||||
fp_int *tmp;
|
fp_int *tmp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Variables used but not seen by cppcheck. */
|
|
||||||
(void)c0; (void)c1; (void)c2;
|
|
||||||
|
|
||||||
IF_HAVE_INTEL_MULX(ret = fp_mul_comba_mulx(A, B, C), return ret) ;
|
IF_HAVE_INTEL_MULX(ret = fp_mul_comba_mulx(A, B, C), return ret) ;
|
||||||
|
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
@ -587,6 +584,9 @@ int fp_mul_comba(fp_int *A, fp_int *B, fp_int *C)
|
|||||||
dst->sign = A->sign ^ B->sign;
|
dst->sign = A->sign ^ B->sign;
|
||||||
fp_clamp(dst);
|
fp_clamp(dst);
|
||||||
fp_copy(dst, C);
|
fp_copy(dst, C);
|
||||||
|
|
||||||
|
/* Variables used but not seen by cppcheck. */
|
||||||
|
(void)c0; (void)c1; (void)c2;
|
||||||
|
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
XFREE(tmp, NULL, DYNAMIC_TYPE_BIGINT);
|
XFREE(tmp, NULL, DYNAMIC_TYPE_BIGINT);
|
||||||
@ -2624,12 +2624,6 @@ int fp_sqr_comba(fp_int *A, fp_int *B)
|
|||||||
fp_int *tmp;
|
fp_int *tmp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Variables used but not seen by cppcheck. */
|
|
||||||
(void)c0; (void)c1; (void)c2;
|
|
||||||
#ifdef TFM_ISO
|
|
||||||
(void)tt;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
tmp = (fp_int*)XMALLOC(sizeof(fp_int), NULL, DYNAMIC_TYPE_BIGINT);
|
tmp = (fp_int*)XMALLOC(sizeof(fp_int), NULL, DYNAMIC_TYPE_BIGINT);
|
||||||
if (tmp == NULL)
|
if (tmp == NULL)
|
||||||
@ -2705,6 +2699,12 @@ int fp_sqr_comba(fp_int *A, fp_int *B)
|
|||||||
fp_copy(dst, B);
|
fp_copy(dst, B);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Variables used but not seen by cppcheck. */
|
||||||
|
(void)c0; (void)c1; (void)c2;
|
||||||
|
#ifdef TFM_ISO
|
||||||
|
(void)tt;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
XFREE(tmp, NULL, DYNAMIC_TYPE_BIGINT);
|
XFREE(tmp, NULL, DYNAMIC_TYPE_BIGINT);
|
||||||
#endif
|
#endif
|
||||||
@ -4704,7 +4704,7 @@ int mp_add_d(fp_int *a, fp_digit b, fp_int *c)
|
|||||||
defined(DEBUG_WOLFSSL) || defined(OPENSSL_EXTRA) || defined(WC_MP_TO_RADIX)
|
defined(DEBUG_WOLFSSL) || defined(OPENSSL_EXTRA) || defined(WC_MP_TO_RADIX)
|
||||||
|
|
||||||
/* chars used in radix conversions */
|
/* chars used in radix conversions */
|
||||||
static const char* const fp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
static wcchar fp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
"abcdefghijklmnopqrstuvwxyz+/";
|
"abcdefghijklmnopqrstuvwxyz+/";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -4499,10 +4499,20 @@ WOLFSSL_LOCAL word32 LowResTimer(void);
|
|||||||
WOLFSSL_LOCAL int CopyDecodedToX509(WOLFSSL_X509*, DecodedCert*);
|
WOLFSSL_LOCAL int CopyDecodedToX509(WOLFSSL_X509*, DecodedCert*);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MAX_CIPHER_NAME
|
||||||
|
#define MAX_CIPHER_NAME 50
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_NAMES_STATIC
|
||||||
|
typedef char cipher_name[MAX_CIPHER_NAME];
|
||||||
|
#else
|
||||||
|
typedef const char* cipher_name;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct CipherSuiteInfo {
|
typedef struct CipherSuiteInfo {
|
||||||
const char* name;
|
cipher_name name;
|
||||||
#ifndef NO_ERROR_STRINGS
|
#ifndef NO_ERROR_STRINGS
|
||||||
const char* name_iana;
|
cipher_name name_iana;
|
||||||
#endif
|
#endif
|
||||||
byte cipherSuite0;
|
byte cipherSuite0;
|
||||||
byte cipherSuite;
|
byte cipherSuite;
|
||||||
|
@ -44,10 +44,16 @@
|
|||||||
|
|
||||||
#define CURVE25519_KEYSIZE 32
|
#define CURVE25519_KEYSIZE 32
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_NAMES_STATIC
|
||||||
|
typedef char curve25519_str[12];
|
||||||
|
#else
|
||||||
|
typedef const char* curve25519_str;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* curve25519 set type */
|
/* curve25519 set type */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int size; /* The size of the curve in octets */
|
int size; /* The size of the curve in octets */
|
||||||
const char* name; /* name of this curve */
|
curve25519_str name; /* name of this curve */
|
||||||
} curve25519_set_type;
|
} curve25519_set_type;
|
||||||
|
|
||||||
|
|
||||||
|
@ -2173,6 +2173,13 @@ extern void uITRON4_free(void *p) ;
|
|||||||
#define NO_SESSION_CACHE
|
#define NO_SESSION_CACHE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Use static ECC structs for Position Independant Code (PIC) */
|
||||||
|
#if defined(__IAR_SYSTEMS_ICC__) && defined(__ROPI__)
|
||||||
|
#define WOLFSSL_ECC_CURVE_STATIC
|
||||||
|
#define WOLFSSL_NAMES_STATIC
|
||||||
|
#define WOLFSSL_NO_CONSTCHARCONST
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
@ -71,6 +71,14 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* constant pointer to a constant char */
|
||||||
|
#ifdef WOLFSSL_NO_CONSTCHARCONST
|
||||||
|
typedef const char* wcchar;
|
||||||
|
#else
|
||||||
|
typedef const char* const wcchar;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* try to set SIZEOF_LONG or SIZEOF_LONG_LONG if user didn't */
|
/* try to set SIZEOF_LONG or SIZEOF_LONG_LONG if user didn't */
|
||||||
#if defined(_MSC_VER) || defined(HAVE_LIMITS_H)
|
#if defined(_MSC_VER) || defined(HAVE_LIMITS_H)
|
||||||
#if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG)
|
#if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG)
|
||||||
|
Reference in New Issue
Block a user