Set proper WOLFSSL_ASN1_TIME in thisupd and nextupd in wolfSSL_OCSP_resp_find_status

This commit is contained in:
Juliusz Sosinowicz
2019-10-24 14:20:09 +02:00
parent 31c0abd610
commit 9064de1e75
6 changed files with 32 additions and 15 deletions

View File

@@ -509,9 +509,9 @@ int wolfSSL_OCSP_resp_find_status(WOLFSSL_OCSP_BASICRESP *bs,
if (status != NULL)
*status = bs->status->status;
if (thisupd != NULL)
*thisupd = (WOLFSSL_ASN1_TIME*)bs->status->thisDateAsn;
*thisupd = &bs->status->thisDateParsed;
if (nextupd != NULL)
*nextupd = (WOLFSSL_ASN1_TIME*)bs->status->nextDateAsn;
*nextupd = &bs->status->nextDateParsed;
/* TODO: Not needed for Nginx. */
if (reason != NULL)

View File

@@ -26510,19 +26510,19 @@ int wolfSSL_ASN1_GENERALIZEDTIME_print(WOLFSSL_BIO* bio,
}
p = (const char *)(asnTime->data);
/* GetTimeString not always available. */
wolfSSL_BIO_write(bio, MonthStr(p + 2), 3);
wolfSSL_BIO_write(bio, MonthStr(p + 4), 3);
wolfSSL_BIO_write(bio, " ", 1);
/* Day */
wolfSSL_BIO_write(bio, p + 4, 2);
wolfSSL_BIO_write(bio, p + 6, 2);
wolfSSL_BIO_write(bio, " ", 1);
/* Hour */
wolfSSL_BIO_write(bio, p + 6, 2);
wolfSSL_BIO_write(bio, ":", 1);
/* Min */
wolfSSL_BIO_write(bio, p + 8, 2);
wolfSSL_BIO_write(bio, ":", 1);
/* Secs */
/* Min */
wolfSSL_BIO_write(bio, p + 10, 2);
wolfSSL_BIO_write(bio, ":", 1);
/* Secs */
wolfSSL_BIO_write(bio, p + 12, 2);
wolfSSL_BIO_write(bio, " ", 1);
wolfSSL_BIO_write(bio, p, 4);

View File

@@ -14878,6 +14878,14 @@ static int DecodeSingleResponse(byte* source,
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)
cs->thisDateAsn = source + idx;
localIdx = 0;
if (GetDateInfo(cs->thisDateAsn, &localIdx, NULL,
(byte*)&cs->thisDateParsed.type,
&cs->thisDateParsed.length, size) < 0)
return ASN_PARSE_E;
XMEMCPY(cs->thisDateParsed.data,
cs->thisDateAsn + localIdx - cs->thisDateParsed.length,
cs->thisDateParsed.length);
#endif
if (GetBasicDate(source, &idx, cs->thisDate,
&cs->thisDateFormat, size) < 0)
@@ -14903,6 +14911,14 @@ static int DecodeSingleResponse(byte* source,
return ASN_PARSE_E;
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)
cs->nextDateAsn = source + idx;
localIdx = 0;
if (GetDateInfo(cs->nextDateAsn, &localIdx, NULL,
(byte*)&cs->nextDateParsed.type,
&cs->nextDateParsed.length, size) < 0)
return ASN_PARSE_E;
XMEMCPY(cs->nextDateParsed.data,
cs->nextDateAsn + localIdx - cs->nextDateParsed.length,
cs->nextDateParsed.length);
#endif
if (GetBasicDate(source, &idx, cs->nextDate,
&cs->nextDateFormat, size) < 0)

View File

@@ -202,13 +202,6 @@ struct WOLFSSL_BASIC_CONSTRAINTS {
#define WOLFSSL_ASN1_UTCTIME WOLFSSL_ASN1_TIME
#define WOLFSSL_ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME
struct WOLFSSL_ASN1_TIME {
unsigned char data[CTC_DATE_SIZE]; /* date bytes */
int length;
int type;
};
struct WOLFSSL_ASN1_STRING {
char strData[CTC_NAME_SIZE];
int length;

View File

@@ -1226,6 +1226,8 @@ struct CertStatus {
byte thisDateFormat;
byte nextDateFormat;
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)
WOLFSSL_ASN1_TIME thisDateParsed;
WOLFSSL_ASN1_TIME nextDateParsed;
byte* thisDateAsn;
byte* nextDateAsn;
#endif

View File

@@ -166,6 +166,12 @@ typedef struct DerBuffer {
int dynType; /* DYNAMIC_TYPE_* */
} DerBuffer;
typedef struct WOLFSSL_ASN1_TIME {
unsigned char data[CTC_DATE_SIZE]; /* date bytes */
int length;
int type;
} WOLFSSL_ASN1_TIME;
enum {
IV_SZ = 32, /* max iv sz */
NAME_SZ = 80, /* max one line */