- Lots of minimal changes to better support WINCE as a build target
diff --git a/library/x509parse.c b/library/x509parse.c
index ceb3db2..631fe55 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -52,7 +52,11 @@
#include <string.h>
#include <stdlib.h>
+#if defined(_WIN32_WCE)
+#include <windows.h>
+#else
#include <time.h>
+#endif
#if defined(POLARSSL_FS_IO)
#include <stdio.h>
@@ -2609,43 +2613,66 @@
*/
int x509parse_time_expired( const x509_time *to )
{
+ int year, mon, day;
+ int hour, min, sec;
+
+#if defined(_WIN32)
+ SYSTEMTIME st;
+
+ GetLocalTime(&st);
+
+ year = st.wYear;
+ mon = st.wMonth;
+ day = st.wDay;
+ hour = st.wHour;
+ min = st.wMinute;
+ sec = st.wSecond;
+#else
struct tm *lt;
time_t tt;
tt = time( NULL );
lt = localtime( &tt );
- if( lt->tm_year > to->year - 1900 )
+ year = lt->tm_year + 1900;
+ mon = lt->tm_mon + 1;
+ day = lt->tm_mday;
+ hour = lt->tm_hour;
+ min = lt->tm_min;
+ sec = lt->tm_sec;
+#endif
+
+ if( year > to->year )
return( 1 );
- if( lt->tm_year == to->year - 1900 &&
- lt->tm_mon > to->mon - 1 )
+ if( year == to->year &&
+ mon > to->mon )
return( 1 );
- if( lt->tm_year == to->year - 1900 &&
- lt->tm_mon == to->mon - 1 &&
- lt->tm_mday > to->day )
+ if( year == to->year &&
+ mon == to->mon &&
+ day > to->day )
return( 1 );
- if( lt->tm_year == to->year - 1900 &&
- lt->tm_mon == to->mon - 1 &&
- lt->tm_mday == to->day &&
- lt->tm_hour > to->hour - 1)
+ if( year == to->year &&
+ mon == to->mon &&
+ day == to->day &&
+ hour > to->hour )
return( 1 );
- if( lt->tm_year == to->year - 1900 &&
- lt->tm_mon == to->mon - 1 &&
- lt->tm_mday == to->day &&
- lt->tm_hour == to->hour - 1 &&
- lt->tm_min > to->min - 1 )
+ if( year == to->year &&
+ mon == to->mon &&
+ day == to->day &&
+ hour == to->hour &&
+ min > to->min )
return( 1 );
- if( lt->tm_year == to->year - 1900 &&
- lt->tm_mon == to->mon - 1 &&
- lt->tm_mday == to->day &&
- lt->tm_hour == to->hour - 1 &&
- lt->tm_min == to->min - 1 &&
- lt->tm_sec > to->sec - 1 )
+ if( year == to->year &&
+ mon == to->mon &&
+ day == to->day &&
+ hour == to->hour &&
+ min == to->min &&
+ sec > to->sec )
return( 1 );
return( 0 );