diff options
-rw-r--r-- | src/lib/libcrypto/asn1/a_time_posix.c | 18 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn1.h | 7 | ||||
-rw-r--r-- | src/lib/libcrypto/hidden/openssl/asn1.h | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/man/ASN1_TIME_set.3 | 44 |
4 files changed, 68 insertions, 5 deletions
diff --git a/src/lib/libcrypto/asn1/a_time_posix.c b/src/lib/libcrypto/asn1/a_time_posix.c index 9327aa8bf0..5d10d21d3c 100644 --- a/src/lib/libcrypto/asn1/a_time_posix.c +++ b/src/lib/libcrypto/asn1/a_time_posix.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: a_time_posix.c,v 1.3 2023/01/01 16:58:23 miod Exp $ */ | 1 | /* $OpenBSD: a_time_posix.c,v 1.4 2023/11/13 12:46:07 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2022, Google Inc. | 3 | * Copyright (c) 2022, Google Inc. |
4 | * Copyright (c) 2022, Bob Beck <beck@obtuse.com> | 4 | * Copyright (c) 2022, Bob Beck <beck@obtuse.com> |
@@ -26,6 +26,8 @@ | |||
26 | #include <string.h> | 26 | #include <string.h> |
27 | #include <time.h> | 27 | #include <time.h> |
28 | 28 | ||
29 | #include <openssl/asn1.h> | ||
30 | |||
29 | #define SECS_PER_HOUR (int64_t)(60 * 60) | 31 | #define SECS_PER_HOUR (int64_t)(60 * 60) |
30 | #define SECS_PER_DAY (int64_t)(24 * SECS_PER_HOUR) | 32 | #define SECS_PER_DAY (int64_t)(24 * SECS_PER_HOUR) |
31 | 33 | ||
@@ -221,6 +223,20 @@ asn1_time_time_t_to_tm(const time_t *time, struct tm *out_tm) | |||
221 | } | 223 | } |
222 | 224 | ||
223 | int | 225 | int |
226 | OPENSSL_timegm(const struct tm *tm, time_t *out) { | ||
227 | return asn1_time_tm_to_time_t(tm, out); | ||
228 | } | ||
229 | LCRYPTO_ALIAS(OPENSSL_timegm); | ||
230 | |||
231 | struct tm * | ||
232 | OPENSSL_gmtime(const time_t *time, struct tm *out_tm) { | ||
233 | if (!asn1_time_time_t_to_tm(time, out_tm)) | ||
234 | return NULL; | ||
235 | return out_tm; | ||
236 | } | ||
237 | LCRYPTO_ALIAS(OPENSSL_gmtime); | ||
238 | |||
239 | int | ||
224 | OPENSSL_gmtime_adj(struct tm *tm, int off_day, long offset_sec) | 240 | OPENSSL_gmtime_adj(struct tm *tm, int off_day, long offset_sec) |
225 | { | 241 | { |
226 | int64_t posix_time; | 242 | int64_t posix_time; |
diff --git a/src/lib/libcrypto/asn1/asn1.h b/src/lib/libcrypto/asn1/asn1.h index 5eeee3317b..0816f2ac9a 100644 --- a/src/lib/libcrypto/asn1/asn1.h +++ b/src/lib/libcrypto/asn1/asn1.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn1.h,v 1.80 2023/07/28 10:33:13 tb Exp $ */ | 1 | /* $OpenBSD: asn1.h,v 1.81 2023/11/13 12:46:07 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -914,6 +914,11 @@ int SMIME_text(BIO *in, BIO *out); | |||
914 | 914 | ||
915 | void ERR_load_ASN1_strings(void); | 915 | void ERR_load_ASN1_strings(void); |
916 | 916 | ||
917 | #if defined(LIBRESSL_INTERNAL) || defined(LIBRESSL_NEXT_API) | ||
918 | int OPENSSL_timegm(const struct tm *tm, time_t *out); | ||
919 | struct tm *OPENSSL_gmtime(const time_t *time, struct tm *out_tm); | ||
920 | #endif | ||
921 | |||
917 | /* Error codes for the ASN1 functions. */ | 922 | /* Error codes for the ASN1 functions. */ |
918 | 923 | ||
919 | /* Function codes. */ | 924 | /* Function codes. */ |
diff --git a/src/lib/libcrypto/hidden/openssl/asn1.h b/src/lib/libcrypto/hidden/openssl/asn1.h index fb1393f2a4..11db7b9902 100644 --- a/src/lib/libcrypto/hidden/openssl/asn1.h +++ b/src/lib/libcrypto/hidden/openssl/asn1.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn1.h,v 1.6 2023/07/28 10:33:13 tb Exp $ */ | 1 | /* $OpenBSD: asn1.h,v 1.7 2023/11/13 12:46:07 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2023 Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2023 Bob Beck <beck@openbsd.org> |
4 | * | 4 | * |
@@ -249,5 +249,7 @@ LCRYPTO_USED(SMIME_text); | |||
249 | LCRYPTO_USED(ERR_load_ASN1_strings); | 249 | LCRYPTO_USED(ERR_load_ASN1_strings); |
250 | LCRYPTO_USED(ASN1_time_parse); | 250 | LCRYPTO_USED(ASN1_time_parse); |
251 | LCRYPTO_USED(ASN1_time_tm_cmp); | 251 | LCRYPTO_USED(ASN1_time_tm_cmp); |
252 | LCRYPTO_USED(OPENSSL_gmtime); | ||
253 | LCRYPTO_USED(OPENSSL_timegm); | ||
252 | 254 | ||
253 | #endif /* _LIBCRYPTO_ASN1_H */ | 255 | #endif /* _LIBCRYPTO_ASN1_H */ |
diff --git a/src/lib/libcrypto/man/ASN1_TIME_set.3 b/src/lib/libcrypto/man/ASN1_TIME_set.3 index 4f6a99673a..3b649e05be 100644 --- a/src/lib/libcrypto/man/ASN1_TIME_set.3 +++ b/src/lib/libcrypto/man/ASN1_TIME_set.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: ASN1_TIME_set.3,v 1.19 2022/11/13 22:11:44 schwarze Exp $ | 1 | .\" $OpenBSD: ASN1_TIME_set.3,v 1.20 2023/11/13 12:46:07 beck Exp $ |
2 | .\" full merge up to: OpenSSL 3d0f1cb9 Jul 11 03:01:24 2017 +0800 | 2 | .\" full merge up to: OpenSSL 3d0f1cb9 Jul 11 03:01:24 2017 +0800 |
3 | .\" selective merge up to: OpenSSL 24a535ea Sep 22 13:14:20 2020 +0100 | 3 | .\" selective merge up to: OpenSSL 24a535ea Sep 22 13:14:20 2020 +0100 |
4 | .\" | 4 | .\" |
@@ -68,7 +68,7 @@ | |||
68 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | 68 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
69 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. | 69 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. |
70 | .\" | 70 | .\" |
71 | .Dd $Mdocdate: November 13 2022 $ | 71 | .Dd $Mdocdate: November 13 2023 $ |
72 | .Dt ASN1_TIME_SET 3 | 72 | .Dt ASN1_TIME_SET 3 |
73 | .Os | 73 | .Os |
74 | .Sh NAME | 74 | .Sh NAME |
@@ -95,6 +95,8 @@ | |||
95 | .Nm ASN1_UTCTIME_cmp_time_t , | 95 | .Nm ASN1_UTCTIME_cmp_time_t , |
96 | .Nm ASN1_TIME_compare , | 96 | .Nm ASN1_TIME_compare , |
97 | .Nm ASN1_TIME_to_generalizedtime | 97 | .Nm ASN1_TIME_to_generalizedtime |
98 | .Nm OPENSSL_gmtime, | ||
99 | .Nm OPENSSL_timegm, | ||
98 | .Nd ASN.1 Time functions | 100 | .Nd ASN.1 Time functions |
99 | .Sh SYNOPSIS | 101 | .Sh SYNOPSIS |
100 | .In openssl/asn1.h | 102 | .In openssl/asn1.h |
@@ -217,6 +219,16 @@ | |||
217 | .Fa "const ASN1_TIME *t" | 219 | .Fa "const ASN1_TIME *t" |
218 | .Fa "ASN1_GENERALIZEDTIME **out" | 220 | .Fa "ASN1_GENERALIZEDTIME **out" |
219 | .Fc | 221 | .Fc |
222 | .Ft struct tm * | ||
223 | .Fo OPENSSL_gmtime | ||
224 | .Fa "const time_t *time" | ||
225 | .Fa "struct tm *out_tm" | ||
226 | .Fc | ||
227 | .Ft int | ||
228 | .Fo OPENSSL_timegm | ||
229 | .Fa "const struct tm *tm" | ||
230 | .Fa "time_t *out_time" | ||
231 | .Fc | ||
220 | .Sh DESCRIPTION | 232 | .Sh DESCRIPTION |
221 | An | 233 | An |
222 | .Vt ASN1_TIME | 234 | .Vt ASN1_TIME |
@@ -562,6 +574,28 @@ is earlier than | |||
562 | is later than | 574 | is later than |
563 | .Fa t , | 575 | .Fa t , |
564 | or \-2 on error. | 576 | or \-2 on error. |
577 | .Pp | ||
578 | .Fn OPENSSL_timegm | ||
579 | converts a time structure in UTC time in | ||
580 | .Fa tm | ||
581 | to a time_t value in | ||
582 | .Fa out_time | ||
583 | .Fn OPENSSL_timegm | ||
584 | returns 1 for success or 0 for failure. | ||
585 | It can fail if the time is not representable in a time_t, | ||
586 | or falls outside the range allowed in RFC 5280 times. | ||
587 | .Pp | ||
588 | .Fn OPENSSL_gmtime | ||
589 | converts a time_t value in | ||
590 | .Fa time | ||
591 | to a struct tm in | ||
592 | .Fa out_tm | ||
593 | .Fn OPENSSL_gmtime | ||
594 | returns | ||
595 | .Fa out_tm | ||
596 | on success or NULL for failure. | ||
597 | It can fail if the time is not representable in a struct tm, | ||
598 | or falls outside the range allowed in RFC 5280 times. | ||
565 | .Sh EXAMPLES | 599 | .Sh EXAMPLES |
566 | Set a time object to one hour after the current time and print it | 600 | Set a time object to one hour after the current time and print it |
567 | out: | 601 | out: |
@@ -651,6 +685,12 @@ and | |||
651 | .Fn ASN1_TIME_compare | 685 | .Fn ASN1_TIME_compare |
652 | first appeared in OpenSSL 1.1.1 and have been available since | 686 | first appeared in OpenSSL 1.1.1 and have been available since |
653 | .Ox 7.2 . | 687 | .Ox 7.2 . |
688 | .Pp | ||
689 | .Fn OPENSSL_gmtime | ||
690 | and | ||
691 | .Fn OPENSSL_timegm | ||
692 | first appeared in BoringSSL and have been available since | ||
693 | .Ox 7.5 . | ||
654 | .Sh CAVEATS | 694 | .Sh CAVEATS |
655 | Some applications add offset times directly to a | 695 | Some applications add offset times directly to a |
656 | .Vt time_t | 696 | .Vt time_t |