FreeRTOS-Plus/ThirdParty/WolfSSL-FIPS-Ready/wolfcrypt/src/asn.c
/* like atoi but only use first byte */
/* Make sure before and after dates are valid */
like atoi but only use first byte
Make sure before and after dates are valid
like atoi but only use first byte Make sure before and after dates are valid
int wc_ValidateDate(const byte* date, byte format, int dateType)
{
    time_t ltime;
    struct tm  certTime;
    struct tm* localTime;
    struct tm* tmpTime;
    int    i = 0;
    int    timeDiff = 0 ;
    int    diffHH = 0 ; int diffMM = 0 ;
    int    diffSign = 0 ;
#if defined(NEED_TMP_TIME)
    struct tm tmpTimeStorage;
    tmpTime = &tmpTimeStorage;
#else
    tmpTime = NULL;
#endif
    (void)tmpTime;
    ltime = XTIME(0);
#ifdef WOLFSSL_BEFORE_DATE_CLOCK_SKEW
    if (dateType == BEFORE) {
        WOLFSSL_MSG("Skewing local time for before date check");
        ltime += WOLFSSL_BEFORE_DATE_CLOCK_SKEW;
    }
#endif
#ifdef WOLFSSL_AFTER_DATE_CLOCK_SKEW
    if (dateType == AFTER) {
        WOLFSSL_MSG("Skewing local time for after date check");
        ltime -= WOLFSSL_AFTER_DATE_CLOCK_SKEW;
    }
#endif
    if (!ExtractDate(date, format, &certTime, &i)) {
        WOLFSSL_MSG("Error extracting the date");
        return 0;
    }
    if ((date[i] == '+') || (date[i] == '-')) {
        WOLFSSL_MSG("Using time differential, not Zulu") ;
        diffSign = date[i++] == '+' ? 1 : -1 ;
        if (GetTime(&diffHH, date, &i) != 0)
            return 0;
        if (GetTime(&diffMM, date, &i) != 0)
            return 0;
        timeDiff = diffSign * (diffHH*60 + diffMM) * 60 ;
    } else if (date[i] != 'Z') {
        WOLFSSL_MSG("UTCtime, neither Zulu or time differential") ;
        return 0;
    }
    ltime -= (time_t)timeDiff ;
    localTime = XGMTIME(&ltime, tmpTime);
    if (localTime == NULL) {
        WOLFSSL_MSG("XGMTIME failed");
        return 0;
    }
    if (dateType == BEFORE) {
        if (DateLessThan(localTime, &certTime)) {
            WOLFSSL_MSG("Date BEFORE check failed");
            return 0;
        }
    }
    else {  
        if (DateGreaterThan(localTime, &certTime)) {
            WOLFSSL_MSG("Date AFTER check failed");
            return 0;
        }
    }
    return 1;
}
int wc_ValidateDate ( const byte * date , byte format , int dateType ) { time_t ltime ; struct tm certTime ; struct tm * localTime ; struct tm * tmpTime ; int i = 0 ; int timeDiff = 0 ; int diffHH = 0 ; int diffMM = 0 ; int diffSign = 0 ; #if defined ( NEED_TMP_TIME ) struct tm tmpTimeStorage ; tmpTime = & tmpTimeStorage ; #else tmpTime = NULL ; #endif ( void ) tmpTime ; ltime = XTIME ( 0 ) ; #ifdef WOLFSSL_BEFORE_DATE_CLOCK_SKEW if ( dateType == BEFORE ) { WOLFSSL_MSG ( " " ) ; ltime += WOLFSSL_BEFORE_DATE_CLOCK_SKEW ; } #endif #ifdef WOLFSSL_AFTER_DATE_CLOCK_SKEW if ( dateType == AFTER ) { WOLFSSL_MSG ( " " ) ; ltime -= WOLFSSL_AFTER_DATE_CLOCK_SKEW ; } #endif if ( ! ExtractDate ( date , format , & certTime , & i ) ) { WOLFSSL_MSG ( " " ) ; return 0 ; } if ( ( date [ i ] == ' ' ) || ( date [ i ] == ' ' ) ) { WOLFSSL_MSG ( " " ) ; diffSign = date [ i ++ ] == ' ' ? 1 : -1 ; if ( GetTime ( & diffHH , date , & i ) != 0 ) return 0 ; if ( GetTime ( & diffMM , date , & i ) != 0 ) return 0 ; timeDiff = diffSign * ( diffHH * 60 + diffMM ) * 60 ; } else if ( date [ i ] != ' ' ) { WOLFSSL_MSG ( " " ) ; return 0 ; } ltime -= ( time_t ) timeDiff ; localTime = XGMTIME ( & ltime , tmpTime ) ; if ( localTime == NULL ) { WOLFSSL_MSG ( " " ) ; return 0 ; } if ( dateType == BEFORE ) { if ( DateLessThan ( localTime , & certTime ) ) { WOLFSSL_MSG ( " " ) ; return 0 ; } } else { if ( DateGreaterThan ( localTime , & certTime ) ) { WOLFSSL_MSG ( " " ) ; return 0 ; } } return 1 ; }
like atoi but only use first byte
Make sure before and after dates are valid
like atoi but only use first byte Make sure before and after dates are valid
/* dateType == AFTER */