update mysql patch
This commit is contained in:
parent
19da114c0c
commit
f18ff8bfa4
@ -1955,6 +1955,16 @@ void InitSuites(Suites* suites, ProtocolVersion pv, word16 haveRSA,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Place as higher priority for MYSQL */
|
||||||
|
#if defined(WOLFSSL_MYSQL_COMPATIBLE)
|
||||||
|
#ifdef BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
|
||||||
|
if (tls && haveDH && haveRSA) {
|
||||||
|
suites->suites[idx++] = 0;
|
||||||
|
suites->suites[idx++] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
|
#ifdef BUILD_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
|
||||||
if (tls1_2 && haveRSAsig) {
|
if (tls1_2 && haveRSAsig) {
|
||||||
suites->suites[idx++] = ECC_BYTE;
|
suites->suites[idx++] = ECC_BYTE;
|
||||||
@ -2179,12 +2189,15 @@ void InitSuites(Suites* suites, ProtocolVersion pv, word16 haveRSA,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Place as higher priority for MYSQL testing */
|
||||||
|
#if !defined(WOLFSSL_MYSQL_COMPATIBLE)
|
||||||
#ifdef BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
|
#ifdef BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
|
||||||
if (tls && haveDH && haveRSA) {
|
if (tls && haveDH && haveRSA) {
|
||||||
suites->suites[idx++] = 0;
|
suites->suites[idx++] = 0;
|
||||||
suites->suites[idx++] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
|
suites->suites[idx++] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
|
#ifdef BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
|
||||||
if (tls && haveDH && haveRSA) {
|
if (tls && haveDH && haveRSA) {
|
||||||
|
39
src/ssl.c
39
src/ssl.c
@ -12507,8 +12507,6 @@ int wolfSSL_ASN1_TIME_print(WOLFSSL_BIO* bio, const WOLFSSL_ASN1_TIME* asnTime)
|
|||||||
#if defined(WOLFSSL_MYSQL_COMPATIBLE)
|
#if defined(WOLFSSL_MYSQL_COMPATIBLE)
|
||||||
char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* time, char* buf, int len)
|
char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* time, char* buf, int len)
|
||||||
{
|
{
|
||||||
struct tm t;
|
|
||||||
int idx = 0;
|
|
||||||
int format;
|
int format;
|
||||||
int dateLen;
|
int dateLen;
|
||||||
byte* date = (byte*)time;
|
byte* date = (byte*)time;
|
||||||
@ -12523,43 +12521,14 @@ char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* time, char* buf, int len)
|
|||||||
format = *date; date++;
|
format = *date; date++;
|
||||||
dateLen = *date; date++;
|
dateLen = *date; date++;
|
||||||
if (dateLen > len) {
|
if (dateLen > len) {
|
||||||
return "error";
|
WOLFSSL_MSG("Length of date is longer then buffer");
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ExtractDate(date, format, &t, &idx)) {
|
if (!GetTimeString(date, format, buf, len)) {
|
||||||
return "error";
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (date[idx] != 'Z') {
|
|
||||||
WOLFSSL_MSG("UTCtime, not Zulu") ;
|
|
||||||
return "Not Zulu";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* place month in buffer */
|
|
||||||
buf[0] = '\0';
|
|
||||||
switch(t.tm_mon) {
|
|
||||||
case 0: XSTRNCAT(buf, "Jan ", 4); break;
|
|
||||||
case 1: XSTRNCAT(buf, "Feb ", 4); break;
|
|
||||||
case 2: XSTRNCAT(buf, "Mar ", 4); break;
|
|
||||||
case 3: XSTRNCAT(buf, "Apr ", 4); break;
|
|
||||||
case 4: XSTRNCAT(buf, "May ", 4); break;
|
|
||||||
case 5: XSTRNCAT(buf, "Jun ", 4); break;
|
|
||||||
case 6: XSTRNCAT(buf, "Jul ", 4); break;
|
|
||||||
case 7: XSTRNCAT(buf, "Aug ", 4); break;
|
|
||||||
case 8: XSTRNCAT(buf, "Sep ", 4); break;
|
|
||||||
case 9: XSTRNCAT(buf, "Oct ", 4); break;
|
|
||||||
case 10: XSTRNCAT(buf, "Nov ", 4); break;
|
|
||||||
case 11: XSTRNCAT(buf, "Dec ", 4); break;
|
|
||||||
default:
|
|
||||||
return "error";
|
|
||||||
|
|
||||||
}
|
|
||||||
idx = 4; /* use idx now for char buffer */
|
|
||||||
buf[idx] = ' ';
|
|
||||||
|
|
||||||
XSNPRINTF(buf + idx, len - idx, "%2d %02d:%02d:%02d %d GMT",
|
|
||||||
t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, t.tm_year + 1900);
|
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
#endif /* WOLFSSL_MYSQL_COMPATIBLE */
|
#endif /* WOLFSSL_MYSQL_COMPATIBLE */
|
||||||
|
@ -3005,6 +3005,50 @@ static INLINE int DateLessThan(const struct tm* a, const struct tm* b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_MYSQL_COMPATIBLE)
|
||||||
|
int GetTimeString(byte* date, int format, char* buf, int len)
|
||||||
|
{
|
||||||
|
struct tm t;
|
||||||
|
int idx = 0;
|
||||||
|
|
||||||
|
if (!ExtractDate(date, format, &t, &idx)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (date[idx] != 'Z') {
|
||||||
|
WOLFSSL_MSG("UTCtime, not Zulu") ;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* place month in buffer */
|
||||||
|
buf[0] = '\0';
|
||||||
|
switch(t.tm_mon) {
|
||||||
|
case 0: XSTRNCAT(buf, "Jan ", 4); break;
|
||||||
|
case 1: XSTRNCAT(buf, "Feb ", 4); break;
|
||||||
|
case 2: XSTRNCAT(buf, "Mar ", 4); break;
|
||||||
|
case 3: XSTRNCAT(buf, "Apr ", 4); break;
|
||||||
|
case 4: XSTRNCAT(buf, "May ", 4); break;
|
||||||
|
case 5: XSTRNCAT(buf, "Jun ", 4); break;
|
||||||
|
case 6: XSTRNCAT(buf, "Jul ", 4); break;
|
||||||
|
case 7: XSTRNCAT(buf, "Aug ", 4); break;
|
||||||
|
case 8: XSTRNCAT(buf, "Sep ", 4); break;
|
||||||
|
case 9: XSTRNCAT(buf, "Oct ", 4); break;
|
||||||
|
case 10: XSTRNCAT(buf, "Nov ", 4); break;
|
||||||
|
case 11: XSTRNCAT(buf, "Dec ", 4); break;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
idx = 4; /* use idx now for char buffer */
|
||||||
|
buf[idx] = ' ';
|
||||||
|
|
||||||
|
XSNPRINTF(buf + idx, len - idx, "%2d %02d:%02d:%02d %d GMT",
|
||||||
|
t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, t.tm_year + 1900);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#endif /* MYSQL compatibility */
|
||||||
|
|
||||||
int ExtractDate(const unsigned char* date, unsigned char format,
|
int ExtractDate(const unsigned char* date, unsigned char format,
|
||||||
struct tm* certTime, int* idx)
|
struct tm* certTime, int* idx)
|
||||||
{
|
{
|
||||||
|
@ -610,7 +610,9 @@ WOLFSSL_LOCAL int ToTraditional(byte* buffer, word32 length);
|
|||||||
WOLFSSL_LOCAL int ToTraditionalEnc(byte* buffer, word32 length,const char*,int);
|
WOLFSSL_LOCAL int ToTraditionalEnc(byte* buffer, word32 length,const char*,int);
|
||||||
|
|
||||||
typedef struct tm wolfssl_tm;
|
typedef struct tm wolfssl_tm;
|
||||||
|
#if defined(WOLFSSL_MYSQL_COMPATIBLE)
|
||||||
|
WOLFSSL_LOCAL int GetTimeString(byte* date, int format, char* buf, int len);
|
||||||
|
#endif
|
||||||
WOLFSSL_LOCAL int ExtractDate(const unsigned char* date, unsigned char format,
|
WOLFSSL_LOCAL int ExtractDate(const unsigned char* date, unsigned char format,
|
||||||
wolfssl_tm* certTime, int* idx);
|
wolfssl_tm* certTime, int* idx);
|
||||||
WOLFSSL_LOCAL int ValidateDate(const byte* date, byte format, int dateType);
|
WOLFSSL_LOCAL int ValidateDate(const byte* date, byte format, int dateType);
|
||||||
|
@ -1257,6 +1257,11 @@ static char *fgets(char *buff, int sz, FILE *fp)
|
|||||||
#endif /* WOLFSSL_STATIC_MEMORY */
|
#endif /* WOLFSSL_STATIC_MEMORY */
|
||||||
/* Place any other flags or defines here */
|
/* Place any other flags or defines here */
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_MYSQL_COMPATIBLE) && defined(_WIN32) \
|
||||||
|
&& defined(HAVE_GMTIME_R)
|
||||||
|
#undef HAVE_GMTIME_R /* don't trust macro with windows */
|
||||||
|
#endif /* WOLFSSL_MYSQL_COMPATIBLE */
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
@ -247,10 +247,10 @@ WOLFSSL_API int wolfCrypt_Init(void);
|
|||||||
|
|
||||||
/* Windows API defines its own min() macro. */
|
/* Windows API defines its own min() macro. */
|
||||||
#if defined(USE_WINDOWS_API)
|
#if defined(USE_WINDOWS_API)
|
||||||
#ifdef min
|
#if defined(min) || defined(WOLFSSL_MYSQL_COMPATIBLE)
|
||||||
#define WOLFSSL_HAVE_MIN
|
#define WOLFSSL_HAVE_MIN
|
||||||
#endif /* min */
|
#endif /* min */
|
||||||
#ifdef max
|
#if defined(max) || defined(WOLFSSL_MYSQL_COMPATIBLE)
|
||||||
#define WOLFSSL_HAVE_MAX
|
#define WOLFSSL_HAVE_MAX
|
||||||
#endif /* max */
|
#endif /* max */
|
||||||
#endif /* USE_WINDOWS_API */
|
#endif /* USE_WINDOWS_API */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user