Blame SOURCES/0006-Display-not_before-in-getcert-output.patch

ac6aa4
From 84d575da7516cae1ee94099317cf0f8fae2c7ea1 Mon Sep 17 00:00:00 2001
ac6aa4
From: Rob Crittenden <rcritten@redhat.com>
ac6aa4
Date: Thu, 8 Apr 2021 14:07:22 -0400
ac6aa4
Subject: [PATCH] Display not_before in getcert output
ac6aa4
ac6aa4
Including not_before can help with troubleshooting
ac6aa4
renewal problems and if time needs to be reversed
ac6aa4
helping identify the maximum one can go back.
ac6aa4
ac6aa4
https://bugzilla.redhat.com/show_bug.cgi?id=1940261
ac6aa4
ac6aa4
Signed-off-by: Rob Crittenden <rcritten@redhat.com>
ac6aa4
---
ac6aa4
 src/getcert.c               |  21 ++++-
ac6aa4
 src/tdbush.c                |  10 ++-
ac6aa4
 src/tdbusm-check.c          |  32 ++++++++
ac6aa4
 src/tdbusm.c                | 150 ++++++++++++++++++++++++++++++++++++
ac6aa4
 src/tdbusm.h                |   9 +++
ac6aa4
 tests/028-dbus/expected.out |   4 +-
ac6aa4
 tests/028-dbus/run.sh       |   1 +
ac6aa4
 7 files changed, 220 insertions(+), 7 deletions(-)
ac6aa4
ac6aa4
diff --git a/src/getcert.c b/src/getcert.c
ac6aa4
index 078f5aa1..4afafcb1 100644
ac6aa4
--- a/src/getcert.c
ac6aa4
+++ b/src/getcert.c
ac6aa4
@@ -3389,7 +3389,7 @@ list(const char *argv0, int argc, const char **argv)
ac6aa4
 	const char *capath, *request;
ac6aa4
 	dbus_bool_t b;
ac6aa4
 	char *s1, *s2, *s3, *s4, *s5, *s6;
ac6aa4
-	long n1, n2;
ac6aa4
+	long n1, n2, n3;
ac6aa4
 	char **as, **as1, **as2, **as3, **as4, **as5, t[25];
ac6aa4
 	int requests_only = 0, tracking_only = 0, verbose = 0, c, i, j;
ac6aa4
 	unsigned int k;
ac6aa4
@@ -3754,10 +3754,10 @@ list(const char *argv0, int argc, const char **argv)
ac6aa4
 		/* Information from the certificate. */
ac6aa4
 		rep = query_rep(bus, requests[i], CM_DBUS_REQUEST_INTERFACE,
ac6aa4
 				"get_cert_info", verbose);
ac6aa4
-		if (cm_tdbusm_get_sssnasasasnas(rep, globals.tctx,
ac6aa4
+		if (cm_tdbusm_get_sssnasasasnasn(rep, globals.tctx,
ac6aa4
 						&s1, &s2, &s3, &n1,
ac6aa4
 						&as1, &as2, &as3,
ac6aa4
-						&n2, &as4) != 0) {
ac6aa4
+						&n2, &as4, &n3) != 0) {
ac6aa4
 			printf(_("Error parsing server response.\n"));
ac6aa4
 			exit(1);
ac6aa4
 		}
ac6aa4
@@ -3768,6 +3768,21 @@ list(const char *argv0, int argc, const char **argv)
ac6aa4
 		printf(_("\tissuer: %s\n"), s1);
ac6aa4
 		printf(_("\tsubject: %s\n"), s3);
ac6aa4
 		when = _("unknown");
ac6aa4
+		if (n3 != 0) {
ac6aa4
+			if (force_utc) {
ac6aa4
+				when = cm_store_timestamp_from_time_for_display(n3, t);
ac6aa4
+				printf(_("\tissued: %s\n"), when);
ac6aa4
+			} else {
ac6aa4
+				when = cm_store_local_timestamp_from_time_for_display(n3);
ac6aa4
+				if (when != NULL) {
ac6aa4
+					printf(_("\tissued: %s\n"), when);
ac6aa4
+					free(when);
ac6aa4
+				}
ac6aa4
+			}
ac6aa4
+		} else {
ac6aa4
+			printf(_("\tissued: %s\n"), when);
ac6aa4
+		}
ac6aa4
+		when = _("unknown");
ac6aa4
 		if (n1 != 0) {
ac6aa4
 			if (force_utc) {
ac6aa4
 				when = cm_store_timestamp_from_time_for_display(n1, t);
ac6aa4
diff --git a/src/tdbush.c b/src/tdbush.c
ac6aa4
index 3587f84f..6fc1b4be 100644
ac6aa4
--- a/src/tdbush.c
ac6aa4
+++ b/src/tdbush.c
ac6aa4
@@ -2701,7 +2701,7 @@ request_get_cert_info(DBusConnection *conn, DBusMessage *msg,
ac6aa4
 	rep = dbus_message_new_method_return(msg);
ac6aa4
 	if (rep != NULL) {
ac6aa4
 		eku = eku_splitv(entry, entry->cm_cert_eku);
ac6aa4
-		cm_tdbusm_set_sssnasasasnas(rep,
ac6aa4
+		cm_tdbusm_set_sssnasasasnasn(rep,
ac6aa4
 					    entry->cm_cert_issuer,
ac6aa4
 					    entry->cm_cert_serial,
ac6aa4
 					    entry->cm_cert_subject,
ac6aa4
@@ -2710,7 +2710,8 @@ request_get_cert_info(DBusConnection *conn, DBusMessage *msg,
ac6aa4
 					    (const char **) entry->cm_cert_hostname,
ac6aa4
 					    (const char **) entry->cm_cert_principal,
ac6aa4
 					    ku_from_string(entry->cm_cert_ku),
ac6aa4
-					    (const char **) eku);
ac6aa4
+					    (const char **) eku,
ac6aa4
+					    entry->cm_cert_not_before);
ac6aa4
 		dbus_connection_send(conn, rep, NULL);
ac6aa4
 		dbus_message_unref(rep);
ac6aa4
 		talloc_free(eku);
ac6aa4
@@ -6563,7 +6564,10 @@ cm_tdbush_iface_request(void)
ac6aa4
 										     DBUS_TYPE_ARRAY_AS_STRING
ac6aa4
 										     DBUS_TYPE_STRING_AS_STRING,
ac6aa4
 										     cm_tdbush_method_arg_out,
ac6aa4
-										     NULL))))))))),
ac6aa4
+								     make_method_arg("not_before",
ac6aa4
+										     DBUS_TYPE_INT64_AS_STRING,
ac6aa4
+										     cm_tdbush_method_arg_out,
ac6aa4
+										     NULL)))))))))),
ac6aa4
 								     NULL),
ac6aa4
 				     make_interface_item(cm_tdbush_interface_property,
ac6aa4
 							 make_property(CM_DBUS_PROP_CERT_ISSUER,
ac6aa4
diff --git a/src/tdbusm-check.c b/src/tdbusm-check.c
ac6aa4
index 385b1849..31880732 100644
ac6aa4
--- a/src/tdbusm-check.c
ac6aa4
+++ b/src/tdbusm-check.c
ac6aa4
@@ -539,6 +539,38 @@ get_sssnasasasnas(DBusMessage *rep, int msgid)
ac6aa4
 	return ret;
ac6aa4
 }
ac6aa4
 static int
ac6aa4
+get_sssnasasasnasn(DBusMessage *rep, int msgid)
ac6aa4
+{
ac6aa4
+	int ret, i;
ac6aa4
+	long n1, n2, n3;
ac6aa4
+	char *s1, *s2, *s3, **as1, **as2, **as3, **as4;
ac6aa4
+
ac6aa4
+	ret = cm_tdbusm_get_sssnasasasnasn(rep, NULL,
ac6aa4
+					  &s1, &s2, &s3, &n1,
ac6aa4
+					  &as1, &as2, &as3, &n2, &as4, &n3;;
ac6aa4
+	if (ret == 0) {
ac6aa4
+		printf("Message %d - s:%s,s:%s,s:%s," "n:%ld,[",
ac6aa4
+		       msgid, s1, s2, s3, n1);
ac6aa4
+		for (i = 0; (as1 != NULL) && (as1[i] != NULL); i++) {
ac6aa4
+			printf("%ss:%s", i > 0 ? "," : "", as1[i]);
ac6aa4
+		}
ac6aa4
+		printf("],[");
ac6aa4
+		for (i = 0; (as2 != NULL) && (as2[i] != NULL); i++) {
ac6aa4
+			printf("%ss:%s", i > 0 ? "," : "", as2[i]);
ac6aa4
+		}
ac6aa4
+		printf("],[");
ac6aa4
+		for (i = 0; (as3 != NULL) && (as3[i] != NULL); i++) {
ac6aa4
+			printf("%ss:%s", i > 0 ? "," : "", as3[i]);
ac6aa4
+		}
ac6aa4
+		printf("],n:%ld,n:%ld,[", n2, n3);
ac6aa4
+		for (i = 0; (as4 != NULL) && (as4[i] != NULL); i++) {
ac6aa4
+			printf("%ss:%s", i > 0 ? "," : "", as4[i]);
ac6aa4
+		}
ac6aa4
+		printf("]\n");
ac6aa4
+	}
ac6aa4
+	return ret;
ac6aa4
+}
ac6aa4
+static int
ac6aa4
 get_sasasasnas(DBusMessage *rep, int msgid)
ac6aa4
 {
ac6aa4
 	int ret, i;
ac6aa4
diff --git a/src/tdbusm.c b/src/tdbusm.c
ac6aa4
index bc39e1d4..24e03e4c 100644
ac6aa4
--- a/src/tdbusm.c
ac6aa4
+++ b/src/tdbusm.c
ac6aa4
@@ -935,6 +935,105 @@ cm_tdbusm_get_sssnasasasnas(DBusMessage *msg, void *parent,
ac6aa4
 	return 0;
ac6aa4
 }
ac6aa4
 
ac6aa4
+int
ac6aa4
+cm_tdbusm_get_sssnasasasnasn(DBusMessage *msg, void *parent,
ac6aa4
+			    char **s1, char **s2, char **s3, long *n1,
ac6aa4
+			    char ***as1, char ***as2, char ***as3,
ac6aa4
+			    long *n2, char ***as4, long *n3)
ac6aa4
+{
ac6aa4
+	DBusError err;
ac6aa4
+	char **tmp1, **tmp2, **tmp3, **tmp4;
ac6aa4
+	int64_t i641, i642, i643;
ac6aa4
+	int32_t i321, i322, i323;
ac6aa4
+	int16_t i161, i162, i163;
ac6aa4
+	int i, j, k, l;
ac6aa4
+	*s1 = NULL;
ac6aa4
+	*s2 = NULL;
ac6aa4
+	*s3 = NULL;
ac6aa4
+	*as1 = NULL;
ac6aa4
+	*as2 = NULL;
ac6aa4
+	*as3 = NULL;
ac6aa4
+	*as4 = NULL;
ac6aa4
+	dbus_error_init(&err;;
ac6aa4
+	if (!dbus_message_get_args(msg, &err,
ac6aa4
+				   DBUS_TYPE_STRING, s1,
ac6aa4
+				   DBUS_TYPE_STRING, s2,
ac6aa4
+				   DBUS_TYPE_STRING, s3,
ac6aa4
+				   DBUS_TYPE_INT64, &i641,
ac6aa4
+				   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &tmp1, &i,
ac6aa4
+				   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &tmp2, &j,
ac6aa4
+				   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &tmp3, &k,
ac6aa4
+				   DBUS_TYPE_INT64, &i642,
ac6aa4
+				   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &tmp4, &l,
ac6aa4
+				   DBUS_TYPE_INT64, &i643,
ac6aa4
+				   DBUS_TYPE_INVALID)) {
ac6aa4
+		if (dbus_error_is_set(&err)) {
ac6aa4
+			dbus_error_free(&err;;
ac6aa4
+			dbus_error_init(&err;;
ac6aa4
+		}
ac6aa4
+		if (!dbus_message_get_args(msg, &err,
ac6aa4
+					   DBUS_TYPE_STRING, s1,
ac6aa4
+					   DBUS_TYPE_STRING, s2,
ac6aa4
+					   DBUS_TYPE_STRING, s3,
ac6aa4
+					   DBUS_TYPE_INT32, &i321,
ac6aa4
+					   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+					   &tmp1, &i,
ac6aa4
+					   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+					   &tmp2, &j,
ac6aa4
+					   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+					   &tmp3, &k,
ac6aa4
+					   DBUS_TYPE_INT32, &i322,
ac6aa4
+					   DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+					   &tmp4, &l,
ac6aa4
+					   DBUS_TYPE_INT32, &i323,
ac6aa4
+					   DBUS_TYPE_INVALID)) {
ac6aa4
+			if (dbus_error_is_set(&err)) {
ac6aa4
+				dbus_error_free(&err;;
ac6aa4
+				dbus_error_init(&err;;
ac6aa4
+			}
ac6aa4
+			if (!dbus_message_get_args(msg, &err,
ac6aa4
+						   DBUS_TYPE_STRING, s1,
ac6aa4
+						   DBUS_TYPE_STRING, s2,
ac6aa4
+						   DBUS_TYPE_STRING, s3,
ac6aa4
+						   DBUS_TYPE_INT16, &i161,
ac6aa4
+						   DBUS_TYPE_ARRAY,
ac6aa4
+						   DBUS_TYPE_STRING, &tmp1, &i,
ac6aa4
+						   DBUS_TYPE_ARRAY,
ac6aa4
+						   DBUS_TYPE_STRING, &tmp2, &j,
ac6aa4
+						   DBUS_TYPE_ARRAY,
ac6aa4
+						   DBUS_TYPE_STRING, &tmp3, &k,
ac6aa4
+						   DBUS_TYPE_INT16, &i162,
ac6aa4
+						   DBUS_TYPE_ARRAY,
ac6aa4
+						   DBUS_TYPE_STRING, &tmp4, &l,
ac6aa4
+						   DBUS_TYPE_INT16, &i163,
ac6aa4
+						   DBUS_TYPE_INVALID)) {
ac6aa4
+				if (dbus_error_is_set(&err)) {
ac6aa4
+					dbus_error_free(&err;;
ac6aa4
+					dbus_error_init(&err;;
ac6aa4
+				}
ac6aa4
+				return -1;
ac6aa4
+			}
ac6aa4
+			i321 = i161;
ac6aa4
+			i322 = i162;
ac6aa4
+			i323 = i163;
ac6aa4
+		}
ac6aa4
+		i641 = i321;
ac6aa4
+		i642 = i322;
ac6aa4
+		i643 = i323;
ac6aa4
+	}
ac6aa4
+	*s1 = *s1 ? talloc_strdup(parent, *s1) : NULL;
ac6aa4
+	*s2 = *s2 ? talloc_strdup(parent, *s2) : NULL;
ac6aa4
+	*s3 = *s3 ? talloc_strdup(parent, *s3) : NULL;
ac6aa4
+	*n1 = i641;
ac6aa4
+	*n2 = i642;
ac6aa4
+	*n3 = i643;
ac6aa4
+	*as1 = cm_tdbusm_take_dbus_string_array(parent, tmp1, i);
ac6aa4
+	*as2 = cm_tdbusm_take_dbus_string_array(parent, tmp2, j);
ac6aa4
+	*as3 = cm_tdbusm_take_dbus_string_array(parent, tmp3, k);
ac6aa4
+	*as4 = cm_tdbusm_take_dbus_string_array(parent, tmp4, l);
ac6aa4
+	return 0;
ac6aa4
+}
ac6aa4
+
ac6aa4
 int
ac6aa4
 cm_tdbusm_get_sasasasnas(DBusMessage *msg, void *parent, char **s,
ac6aa4
 			 char ***as1, char ***as2, char ***as3,
ac6aa4
@@ -1856,6 +1955,57 @@ cm_tdbusm_set_sssnasasasnas(DBusMessage *msg,
ac6aa4
 	}
ac6aa4
 }
ac6aa4
 
ac6aa4
+int
ac6aa4
+cm_tdbusm_set_sssnasasasnasn(DBusMessage *msg,
ac6aa4
+			    const char *s1, const char *s2, const char *s3,
ac6aa4
+			    long n1, const char **as1, const char **as2,
ac6aa4
+			    const char **as3, long n2, const char **as4,
ac6aa4
+			    long n3)
ac6aa4
+{
ac6aa4
+	int64_t i1 = n1, i2 = n2, i3 = n3;
ac6aa4
+	if (s1 == NULL) {
ac6aa4
+		s1 = empty_string;
ac6aa4
+	}
ac6aa4
+	if (s2 == NULL) {
ac6aa4
+		s2 = empty_string;
ac6aa4
+	}
ac6aa4
+	if (s3 == NULL) {
ac6aa4
+		s3 = empty_string;
ac6aa4
+	}
ac6aa4
+	if (as1 == NULL) {
ac6aa4
+		as1 = empty_string_array;
ac6aa4
+	}
ac6aa4
+	if (as2 == NULL) {
ac6aa4
+		as2 = empty_string_array;
ac6aa4
+	}
ac6aa4
+	if (as3 == NULL) {
ac6aa4
+		as3 = empty_string_array;
ac6aa4
+	}
ac6aa4
+	if (as4 == NULL) {
ac6aa4
+		as4 = empty_string_array;
ac6aa4
+	}
ac6aa4
+	if (dbus_message_append_args(msg,
ac6aa4
+				     DBUS_TYPE_STRING, &s1,
ac6aa4
+				     DBUS_TYPE_STRING, &s2,
ac6aa4
+				     DBUS_TYPE_STRING, &s3,
ac6aa4
+				     DBUS_TYPE_INT64, &i1,
ac6aa4
+				     DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+				     &as1, cm_tdbusm_array_length(as1),
ac6aa4
+				     DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+				     &as2, cm_tdbusm_array_length(as2),
ac6aa4
+				     DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+				     &as3, cm_tdbusm_array_length(as3),
ac6aa4
+				     DBUS_TYPE_INT64, &i2,
ac6aa4
+				     DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
ac6aa4
+				     &as4, cm_tdbusm_array_length(as4),
ac6aa4
+				     DBUS_TYPE_INT64, &i3,
ac6aa4
+				     DBUS_TYPE_INVALID)) {
ac6aa4
+		return 0;
ac6aa4
+	} else {
ac6aa4
+		return -1;
ac6aa4
+	}
ac6aa4
+}
ac6aa4
+
ac6aa4
 int
ac6aa4
 cm_tdbusm_set_sasasasnas(DBusMessage *msg, const char *s,
ac6aa4
 			 const char **as1, const char **as2,
ac6aa4
diff --git a/src/tdbusm.h b/src/tdbusm.h
ac6aa4
index fe021eff..250a9b0a 100644
ac6aa4
--- a/src/tdbusm.h
ac6aa4
+++ b/src/tdbusm.h
ac6aa4
@@ -55,6 +55,10 @@ int cm_tdbusm_get_sssnasasasnas(DBusMessage *msg, void *parent,
ac6aa4
 			        char **s1, char **s2, char **s3, long *n1,
ac6aa4
 			        char ***as1, char ***as2,
ac6aa4
 			        char ***as3, long *n2, char ***as4);
ac6aa4
+int cm_tdbusm_get_sssnasasasnasn(DBusMessage *msg, void *parent,
ac6aa4
+			        char **s1, char **s2, char **s3, long *n1,
ac6aa4
+			        char ***as1, char ***as2,
ac6aa4
+			        char ***as3, long *n2, char ***as4, long *n3);
ac6aa4
 int cm_tdbusm_get_sasasasnas(DBusMessage *msg, void *parent,
ac6aa4
 			     char **s,
ac6aa4
 			     char ***as1, char ***as2,
ac6aa4
@@ -124,6 +128,11 @@ int cm_tdbusm_set_sssnasasasnas(DBusMessage *msg,
ac6aa4
 			        const char *s3, long n1,
ac6aa4
 			        const char **as1, const char **as2,
ac6aa4
 			        const char **as3, long n2, const char **as4);
ac6aa4
+int cm_tdbusm_set_sssnasasasnasn(DBusMessage *msg,
ac6aa4
+			        const char *s1, const char *s2,
ac6aa4
+			        const char *s3, long n1,
ac6aa4
+			        const char **as1, const char **as2,
ac6aa4
+			        const char **as3, long n2, const char **as4, long n3);
ac6aa4
 int cm_tdbusm_set_sasasasnas(DBusMessage *msg,
ac6aa4
 			     const char *s,
ac6aa4
 			     const char **as1, const char **as2,
ac6aa4
diff --git a/tests/028-dbus/expected.out b/tests/028-dbus/expected.out
ac6aa4
index ca7de34f..4cecbe15 100644
ac6aa4
--- a/tests/028-dbus/expected.out
ac6aa4
+++ b/tests/028-dbus/expected.out
ac6aa4
@@ -11,6 +11,7 @@ Request ID 'Buddy':
ac6aa4
 	CA: local
ac6aa4
 	issuer: CN=$UUID,CN=Local Signing Authority
ac6aa4
 	subject: CN=localhost
ac6aa4
+	issued: sometime
ac6aa4
 	expires: sometime
ac6aa4
 	dns: localhost
ac6aa4
 	principal name: host/localhost@LOCALHOST
ac6aa4
@@ -269,6 +270,7 @@ OK
ac6aa4
    <arg name="principal_names" type="as" direction="out"/>
ac6aa4
    <arg name="key_usage" type="x" direction="out"/>
ac6aa4
    <arg name="extended_key_usage" type="as" direction="out"/>
ac6aa4
+   <arg name="not_before" type="x" direction="out"/>
ac6aa4
   </method>
ac6aa4
   <property name="issuer" type="s" access="read"/>
ac6aa4
   <property name="serial" type="s" access="read"/>
ac6aa4
@@ -430,7 +432,7 @@ Buddy
ac6aa4
 
ac6aa4
 
ac6aa4
 [ /org/fedorahosted/certmonger/requests/Request2: org.fedorahosted.certmonger.request.get_cert_info ]
ac6aa4
-(dbus.String('CN=$UUID,CN=Local Signing Authority'), dbus.String('$UUID'), dbus.String('CN=localhost'), dbus.Int64(tomorrow), dbus.Array([], signature=dbus.Signature('s')), dbus.Array([dbus.String('localhost')], signature=dbus.Signature('s')), dbus.Array([dbus.String('host/localhost@LOCALHOST')], signature=dbus.Signature('s')), dbus.Int64(9), dbus.Array([dbus.String('1.3.6.1.5.5.7.3.1')], signature=dbus.Signature('s')))
ac6aa4
+(dbus.String('CN=$UUID,CN=Local Signing Authority'), dbus.String('$UUID'), dbus.String('CN=localhost'), dbus.Int64(tomorrow), dbus.Array([], signature=dbus.Signature('s')), dbus.Array([dbus.String('localhost')], signature=dbus.Signature('s')), dbus.Array([dbus.String('host/localhost@LOCALHOST')], signature=dbus.Signature('s')), dbus.Int64(9), dbus.Array([dbus.String('1.3.6.1.5.5.7.3.1')], signature=dbus.Signature('s')), dbus.Int64(recently))
ac6aa4
 
ac6aa4
 [ /org/fedorahosted/certmonger/requests/Request2: org.fedorahosted.certmonger.request.get_cert_last_checked ]
ac6aa4
 recently
ac6aa4
diff --git a/tests/028-dbus/run.sh b/tests/028-dbus/run.sh
ac6aa4
index d0be6ad8..a457834f 100755
ac6aa4
--- a/tests/028-dbus/run.sh
ac6aa4
+++ b/tests/028-dbus/run.sh
ac6aa4
@@ -42,5 +42,6 @@ sed -r -e 's,CN=........-........-........-........,CN=$UUID,g' \
ac6aa4
        -e '/^-----BEGIN/,/^-----END/d' \
ac6aa4
        -e "s|$libexecdir|\$libexecdir|g" \
ac6aa4
        -e "s|$tmpdir|\$tmpdir|g" \
ac6aa4
+       -e "s|issued:.*|issued: sometime|g" \
ac6aa4
        -e "s|expires:.*|expires: sometime|g" \
ac6aa4
        -e "s|'(00)?[0-9a-fA-F]{32}|'"'$UUID|g' \
ac6aa4
-- 
ac6aa4
2.31.1
ac6aa4