Prepare to resurrect TS_RESP_CTX_set_time_cb()
authortb <tb@openbsd.org>
Sun, 24 Jul 2022 20:02:04 +0000 (20:02 +0000)
committertb <tb@openbsd.org>
Sun, 24 Jul 2022 20:02:04 +0000 (20:02 +0000)
This was removed shortly after the fork since TS is not 2038-ready
and since there were no consumers of this API. Now there are consumers
and they add it themselves if it's missing from libcrypto. This will no
longer be possible with opaque TS structs, so begrudgingly add it back.

ok jsing kn

lib/libcrypto/ts/ts.h
lib/libcrypto/ts/ts_rsp_sign.c

index 83bd682..0397fb8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ts.h,v 1.17 2022/07/24 19:54:46 tb Exp $ */
+/* $OpenBSD: ts.h,v 1.18 2022/07/24 20:02:04 tb Exp $ */
 /* Written by Zoltan Glozik (zglozik@opentsa.org) for the OpenSSL
  * project 2002, 2003, 2004.
  */
@@ -567,6 +567,11 @@ void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags);
 /* Default callback always returns a constant. */
 void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data);
 
+#if defined(LIBRESSL_INTERNAL)
+/* Default callback uses gettimeofday() and gmtime(). */
+void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data);
+#endif
+
 /* Default callback rejects all extensions. The extension callback is called
  * when the TS_TST_INFO object is already set up and not signed yet. */
 /* FIXME: extension handling is not tested yet. */
index 665dc1c..5e15295 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ts_rsp_sign.c,v 1.28 2022/07/24 08:16:47 tb Exp $ */
+/* $OpenBSD: ts_rsp_sign.c,v 1.29 2022/07/24 20:02:04 tb Exp $ */
 /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL
  * project 2002.
  */
@@ -143,6 +143,13 @@ def_extension_cb(struct TS_resp_ctx *ctx, X509_EXTENSION *ext, void *data)
        return 0;
 }
 
+void
+TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data)
+{
+       ctx->time_cb = cb;
+       ctx->time_cb_data = data;
+}
+
 /* TS_RESP_CTX management functions. */
 
 TS_RESP_CTX *