File sde.patch of Package pesign
diff --git a/src/signer_info.c b/src/signer_info.c
index afa00e2..44470aa 100644
--- a/src/signer_info.c
+++ b/src/signer_info.c
@@ -19,6 +19,7 @@
#include "pesign.h"
+#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <time.h>
@@ -74,6 +75,8 @@ int
generate_signed_attributes(cms_context *cms, SECItem *sattrs)
{
Attribute *attrs[5];
+ time_t sigt;
+ char *source_date_epoch;
memset(attrs, '\0', sizeof (attrs));
SECItem encoded;
@@ -124,7 +127,10 @@ generate_signed_attributes(cms_context *cms, SECItem *sattrs)
attrs[2]->attrType = oid->oid;
SECItem *signing_time[2] = { NULL, NULL };
- if (generate_time(cms, &encoded, time(NULL)) < 0)
+ if ((source_date_epoch = getenv("SOURCE_DATE_EPOCH")) == NULL ||
+ (sigt = (time_t)strtoll(source_date_epoch, NULL, 10)) <= 0)
+ time(&sigt);
+ if (generate_time(cms, &encoded, sigt) < 0)
goto err;
signing_time[0] = SECITEM_ArenaDupItem(cms->arena, &encoded);
if (!signing_time[0])