Commit b8e35bd6 authored by Richard Levitte's avatar Richard Levitte
Browse files

New internal function OPENSSL_gmtime, which is intended to do the same

as gmtime_r() on the systems where that is defined.
parent e8734731
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -35,13 +35,13 @@ SDIRS= md2 md5 sha mdc2 hmac ripemd \
GENERAL=Makefile README crypto-lib.com install.com

LIB= $(TOP)/libcrypto.a
LIBSRC=	cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c
LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o
LIBSRC=	cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c
LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o

SRC= $(LIBSRC)

EXHEADER= crypto.h tmdiff.h opensslv.h opensslconf.h ebcdic.h symhacks.h
HEADER=	cryptlib.h buildinf.h md32_common.h $(EXHEADER)
HEADER=	cryptlib.h buildinf.h md32_common.h o_time.h $(EXHEADER)

ALL=    $(GENERAL) $(SRC) $(HEADER)

+5 −8
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@
#include <stdio.h>
#include <time.h>
#include "cryptlib.h"
#include "o_time.h"
#include <openssl/asn1.h>

#if 0
@@ -193,21 +194,17 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
	{
	char *p;
	struct tm *ts;
#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32)
	struct tm data;
#endif

	if (s == NULL)
		s=M_ASN1_GENERALIZEDTIME_new();
	if (s == NULL)
		return(NULL);

#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32)
	gmtime_r(&t,&data); /* should return &data, but doesn't on some systems, so we don't even look at the return value */
	ts=&data;
#else
	ts=gmtime(&t);
#endif
	ts=OPENSSL_gmtime(&t, &data);
	if (ts == NULL)
		return(NULL);

	p=(char *)s->data;
	if ((p == NULL) || (s->length < 16))
		{
+4 −6
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@
#include <stdio.h>
#include <time.h>
#include "cryptlib.h"
#include "o_time.h"
#include <openssl/asn1t.h>

IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME)
@@ -100,14 +101,11 @@ int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **pp)
ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
	{
	struct tm *ts;
#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__)
	struct tm data;

	gmtime_r(&t,&data);
	ts=&data; /* should return &data, but doesn't on some systems, so we don't even look at the return value */
#else
	ts=gmtime(&t);
#endif
	ts=OPENSSL_gmtime(&t,&data);
	if (ts == NULL)
		return NULL;
	if((ts->tm_year >= 50) && (ts->tm_year < 150))
					return ASN1_UTCTIME_set(s, t);
	return ASN1_GENERALIZEDTIME_set(s,t);
+5 −55
Original line number Diff line number Diff line
@@ -59,12 +59,8 @@
#include <stdio.h>
#include <time.h>
#include "cryptlib.h"
#include "o_time.h"
#include <openssl/asn1.h>
#ifdef OPENSSL_SYS_VMS
#include <descrip.h>
#include <lnmdef.h>
#include <starlet.h>
#endif

#if 0
int i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **pp)
@@ -191,59 +187,17 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
	{
	char *p;
	struct tm *ts;
#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__)

	struct tm data;
#endif

	if (s == NULL)
		s=M_ASN1_UTCTIME_new();
	if (s == NULL)
		return(NULL);

#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__)
	gmtime_r(&t,&data); /* should return &data, but doesn't on some systems, so we don't even look at the return value */
	ts=&data;
#else
	ts=gmtime(&t);
#endif
#ifdef OPENSSL_SYS_VMS
	ts=OPENSSL_gmtime(&t, &data);
	if (ts == NULL)
		{
		static $DESCRIPTOR(tabnam,"LNM$DCL_LOGICAL");
		static $DESCRIPTOR(lognam,"SYS$TIMEZONE_DIFFERENTIAL");
		char result[256];
		unsigned int reslen = 0;
		struct {
			short buflen;
			short code;
			void *bufaddr;
			unsigned int *reslen;
		} itemlist[] = {
			{ 0, LNM$_STRING, 0, 0 },
			{ 0, 0, 0, 0 },
		};
		int status;

		/* Get the value for SYS$TIMEZONE_DIFFERENTIAL */
		itemlist[0].buflen = sizeof(result);
		itemlist[0].bufaddr = result;
		itemlist[0].reslen = &reslen;
		status = sys$trnlnm(0, &tabnam, &lognam, 0, itemlist);
		if (!(status & 1))
			return NULL;
		result[reslen] = '\0';

		/* Get the numerical value of the equivalence string */
		status = atoi(result);

		/* and use it to move time to GMT */
		t -= status;

		/* then convert the result to the time structure */
		ts=(struct tm *)localtime(&t);
		}
#endif
		return(NULL);

	p=(char *)s->data;
	if ((p == NULL) || (s->length < 14))
		{
@@ -284,11 +238,7 @@ int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t)

	t -= offset*60; /* FIXME: may overflow in extreme cases */

#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__)
	{ struct tm data; gmtime_r(&t, &data); tm = &data; }
#else
	tm = gmtime(&t);
#endif
	{ struct tm data; tm = OPENSSL_gmtime(&t, &data); }
	
#define return_cmp(a,b) if ((a)<(b)) return -1; else if ((a)>(b)) return 1
	year = g2(s->data);
+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ $!
$ APPS_DES = "DES/DES,CBC3_ENC"
$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE"
$
$ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid"
$ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid,o_time"
$ LIB_MD2 = "md2_dgst,md2_one"
$ LIB_MD4 = "md4_dgst,md4_one"
$ LIB_MD5 = "md5_dgst,md5_one"
Loading