From: Michael Tremer Date: Thu, 1 Jun 2023 17:59:45 +0000 (+0000) Subject: keys: Make the ID an array of bytes again X-Git-Tag: 0.9.29~131 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab84c12674ba39a00d3db8f02a5eb64ac415735c;p=pakfire.git keys: Make the ID an array of bytes again Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/key.c b/src/_pakfire/key.c index cd0681305..499cff29f 100644 --- a/src/_pakfire/key.c +++ b/src/_pakfire/key.c @@ -53,9 +53,9 @@ static void Key_dealloc(KeyObject* self) { } static PyObject* Key_repr(KeyObject* self) { - const pakfire_key_id id = pakfire_key_get_id(self->key); + const pakfire_key_id* id = pakfire_key_get_id(self->key); - return PyUnicode_FromFormat("<_pakfire.Key (%lu)>", id); + return PyUnicode_FromFormat("<_pakfire.Key (%lu)>", *id); } static PyObject* Key_str(KeyObject* self) { @@ -68,9 +68,9 @@ static PyObject* Key_str(KeyObject* self) { } static PyObject* Key_get_id(KeyObject* self) { - const pakfire_key_id id = pakfire_key_get_id(self->key); + const pakfire_key_id* id = pakfire_key_get_id(self->key); - return PyLong_FromUnsignedLong(id); + return PyLong_FromUnsignedLong(*id); } static PyObject* Key_get_algorithm(KeyObject* self) { diff --git a/src/libpakfire/include/pakfire/key.h b/src/libpakfire/include/pakfire/key.h index 96a5352e3..87b9ad17d 100644 --- a/src/libpakfire/include/pakfire/key.h +++ b/src/libpakfire/include/pakfire/key.h @@ -37,13 +37,13 @@ typedef enum pakfire_key_export_mode { PAKFIRE_KEY_EXPORT_MODE_PRIVATE, } pakfire_key_export_mode_t; -typedef uint64_t pakfire_key_id; +typedef unsigned char pakfire_key_id[8]; struct pakfire_key* pakfire_key_ref(struct pakfire_key* key); void pakfire_key_unref(struct pakfire_key* key); // Access key properties -pakfire_key_id pakfire_key_get_id(struct pakfire_key* key); +pakfire_key_id* pakfire_key_get_id(struct pakfire_key* key); const char* pakfire_key_get_algo(struct pakfire_key* key); int pakfire_key_generate(struct pakfire_key** key, struct pakfire* pakfire, diff --git a/src/libpakfire/key.c b/src/libpakfire/key.c index 9d2ec1e05..e3d31271c 100644 --- a/src/libpakfire/key.c +++ b/src/libpakfire/key.c @@ -116,7 +116,7 @@ static int pakfire_key_create(struct pakfire_key** key, struct pakfire* pakfire, } // Store the key ID - k->id = id; + memcpy(k->id, id, sizeof(k->id)); // Keep a reference to this key EVP_PKEY_up_ref(pkey); @@ -153,7 +153,7 @@ PAKFIRE_EXPORT void pakfire_key_unref(struct pakfire_key* key) { pakfire_key_free(key); } -PAKFIRE_EXPORT pakfire_key_id pakfire_key_get_id(struct pakfire_key* key) { +PAKFIRE_EXPORT pakfire_key_id* pakfire_key_get_id(struct pakfire_key* key) { return key->id; } @@ -557,7 +557,7 @@ static int pakfire_key_export_private_key(struct pakfire_key* key, } // Copy the key ID - buffer->id = key->id; + memcpy(buffer->id, key->id, sizeof(buffer->id)); // Write the public key r = pakfire_key_get_public_key(key, buffer->keys.public, sizeof(buffer->keys.public)); @@ -604,7 +604,7 @@ static int pakfire_key_export_public_key(struct pakfire_key* key, } // Copy the key ID - buffer->id = key->id; + memcpy(buffer->id, key->id, sizeof(buffer->id)); // Write the public key r = pakfire_key_get_public_key(key, buffer->pubkey, sizeof(buffer->pubkey)); @@ -789,7 +789,7 @@ static int __pakfire_key_sign(struct pakfire_key* key, signature->sig_algo[1] = 'd'; // Set the key ID - signature->key_id = key->id; + memcpy(signature->key_id, key->id, sizeof(signature->key_id)); // Create a message digest context mdctx = EVP_MD_CTX_new();