PAKFIRE_KEY_EXPORT_MODE_PRIVATE,
} pakfire_key_export_mode_t;
+typedef uint64_t pakfire_key_id;
+
struct pakfire_key* pakfire_key_ref(struct pakfire_key* key);
void pakfire_key_unref(struct pakfire_key* key);
// Access key properties
-const char* 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,
// Size of the buffer to allocate for error messages
#define ERROR_MAX 1024
-typedef unsigned char pakfire_key_id[8];
-
struct pakfire_key {
struct pakfire* pakfire;
int nrefs;
};
static int pakfire_key_id_equals(const pakfire_key_id* id1, const pakfire_key_id* id2) {
- return !memcmp(*id1, *id2, sizeof(*id1));
+ return *id1 == *id2;
}
static int pakfire_key_create(struct pakfire_key** key, struct pakfire* pakfire,
}
// Store the key ID
- memcpy(k->id, id, sizeof(k->id));
+ k->id = id;
// Keep a reference to this key
EVP_PKEY_up_ref(pkey);
pakfire_key_free(key);
}
+PAKFIRE_EXPORT pakfire_key_id pakfire_key_get_id(struct pakfire_key* key) {
+ return key->id;
+}
+
PAKFIRE_EXPORT const char* pakfire_key_get_algo(struct pakfire_key* key) {
switch (key->algo) {
case PAKFIRE_KEY_ALGO_ED25519:
}
// Generate a random key ID
- r = RAND_bytes(key_id, sizeof(key_id));
+ r = RAND_bytes((unsigned char*)&key_id, sizeof(key_id));
if (r < 0) {
ERROR(pakfire, "Could not generate the key ID\n");
r = 1;
}
// Copy the key ID
- memcpy(buffer->id, key->id, sizeof(buffer->id));
+ buffer->id = key->id;
// Write the public key
r = pakfire_key_get_public_key(key, buffer->keys.public, sizeof(buffer->keys.public));
}
// Copy the key ID
- memcpy(buffer->id, key->id, sizeof(buffer->id));
+ buffer->id = key->id;
// Write the public key
r = pakfire_key_get_public_key(key, buffer->pubkey, sizeof(buffer->pubkey));
signature->sig_algo[1] = 'd';
// Set the key ID
- memcpy(signature->key_id, key->id, sizeof(signature->key_id));
+ signature->key_id = key->id;
// Create a message digest context
mdctx = EVP_MD_CTX_new();