From: Michael Tremer Date: Sun, 11 Jul 2021 17:05:32 +0000 (+0000) Subject: key: Store the timestamp of the signature if wanted X-Git-Tag: 0.9.28~1050 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=307188abb095e2318098294d47b418edda94c4f7;p=pakfire.git key: Store the timestamp of the signature if wanted Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index 9ab071567..0cfb49dda 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -1427,7 +1427,7 @@ PAKFIRE_EXPORT const char* pakfire_archive_verify_strerror(pakfire_archive_verif } static int pakfire_archive_create_signature(struct pakfire_archive* archive, - struct pakfire_key* key, char** signature, size_t signature_length) { + struct pakfire_key* key, char** signature, size_t* signature_length, time_t* timestamp) { char* buffer = NULL; size_t length = 0; @@ -1437,7 +1437,7 @@ static int pakfire_archive_create_signature(struct pakfire_archive* archive, goto ERROR; // Use the key to sign the buffer - r = pakfire_key_sign(key, buffer, length, signature, signature_length); + r = pakfire_key_sign(key, buffer, length, signature, signature_length, timestamp); if (r) goto ERROR; @@ -1455,9 +1455,11 @@ PAKFIRE_EXPORT int pakfire_archive_sign(struct pakfire_archive* archive, struct char* signature = NULL; size_t signature_length = 0; + time_t timestamp = 0; // Create the signature - r = pakfire_archive_create_signature(archive, key, &signature, &signature_length); + r = pakfire_archive_create_signature(archive, key, + &signature, &signature_length, ×tamp); if (r) return r; diff --git a/src/libpakfire/include/pakfire/key.h b/src/libpakfire/include/pakfire/key.h index 57f4a198c..32e9befbc 100644 --- a/src/libpakfire/include/pakfire/key.h +++ b/src/libpakfire/include/pakfire/key.h @@ -66,7 +66,7 @@ char* pakfire_key_dump(struct pakfire_key* key); int pakfire_key_create(struct pakfire_key** key, struct pakfire* pakfire, gpgme_key_t gpgkey); int pakfire_key_sign(struct pakfire_key* key, const char* buffer, const size_t buffer_length, - char** signature, size_t* signature_length); + char** signature, size_t* signature_length, time_t* timestamp); #endif diff --git a/src/libpakfire/key.c b/src/libpakfire/key.c index 5d6b205c4..6aeea64a9 100644 --- a/src/libpakfire/key.c +++ b/src/libpakfire/key.c @@ -577,7 +577,7 @@ PAKFIRE_EXPORT char* pakfire_key_dump(struct pakfire_key* key) { } int pakfire_key_sign(struct pakfire_key* key, const char* buffer, const size_t buffer_length, - char** signature, size_t* signature_length) { + char** signature, size_t* signature_length, time_t* timestamp) { // Fetch GPGME context gpgme_ctx_t gpgctx = pakfire_get_gpgctx(key->pakfire); if (!gpgctx) @@ -631,7 +631,6 @@ int pakfire_key_sign(struct pakfire_key* key, const char* buffer, const size_t b goto ERROR; } -#ifdef ENABLE_DEBUG // Print some status details gpgme_sign_result_t result = gpgme_op_sign_result(gpgctx); if (result) { @@ -641,11 +640,14 @@ int pakfire_key_sign(struct pakfire_key* key, const char* buffer, const size_t b DEBUG(key->pakfire, " Algorithm : %s\n", gpgme_pubkey_algo_name(s->pubkey_algo)); DEBUG(key->pakfire, " Hash : %s\n", gpgme_hash_algo_name(s->hash_algo)); DEBUG(key->pakfire, " Timestamp : %ld\n", s->timestamp); + + // Store timestamp + if (timestamp) + *timestamp = s->timestamp; } gpgme_result_unref(result); } -#endif // Extract the signature __signature = gpgme_data_release_and_get_mem(sign, signature_length);