diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2001-02-03 19:20:45 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2001-02-03 19:20:45 +0000 |
commit | 02e4fbed3d256f4f1fffff84f307a336b50fae1f (patch) | |
tree | 9bc65efbadd271dc81ed2b2992d1b741b3219cd4 /crypto/asn1 | |
parent | 7403c34b0b511e0dd0e31eeb7008abc566dd6b82 (diff) |
Various OCSP responder utility functions.
Delete obsolete OCSP functions.
Largely untested at present...
Diffstat (limited to 'crypto/asn1')
-rw-r--r-- | crypto/asn1/a_time.c | 46 | ||||
-rw-r--r-- | crypto/asn1/asn1.h | 2 |
2 files changed, 48 insertions, 0 deletions
diff --git a/crypto/asn1/a_time.c b/crypto/asn1/a_time.c index edc4929c36..03788a7d62 100644 --- a/crypto/asn1/a_time.c +++ b/crypto/asn1/a_time.c @@ -112,3 +112,49 @@ ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t) return ASN1_UTCTIME_set(s, t); return ASN1_GENERALIZEDTIME_set(s,t); } + +int ASN1_TIME_check(ASN1_TIME *t) + { + if (t->type == V_ASN1_GENERALIZEDTIME) + return ASN1_GENERALIZEDTIME_check(t); + else if (t->type == V_ASN1_UTCTIME) + return ASN1_UTCTIME_check(t); + return 0; + } + +/* Convert an ASN1_TIME structure to GeneralizedTime */ +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out) + { + ASN1_GENERALIZEDTIME *ret; + char *str; + + if (!ASN1_TIME_check(t)) return NULL; + + if (!out || !*out) + { + if (!(ret = ASN1_GENERALIZEDTIME_new ())) + return NULL; + if (out) *out = ret; + } + else ret = *out; + + /* If already GeneralizedTime just copy across */ + if (t->type == V_ASN1_GENERALIZEDTIME) + { + if(!ASN1_STRING_set(ret, t->data, t->length)) + return NULL; + return ret; + } + + /* grow the string */ + if (!ASN1_STRING_set(ret, NULL, t->length + 2)) + return NULL; + /* Work out the century and prepend */ + str = (char *)t->data; + if (*str >= '5') strcpy(str, "19"); + else strcpy(str, "20"); + + strcat(str, (char *)t->data); + + return ret; + } diff --git a/crypto/asn1/asn1.h b/crypto/asn1/asn1.h index 2d0539b612..6ee0871394 100644 --- a/crypto/asn1/asn1.h +++ b/crypto/asn1/asn1.h @@ -756,6 +756,8 @@ DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) DECLARE_ASN1_FUNCTIONS(ASN1_TIME) ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s,time_t t); +int ASN1_TIME_check(ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out); int i2d_ASN1_SET(STACK *a, unsigned char **pp, int (*func)(), int ex_tag, int ex_class, int is_set); |