const char* fingerprint = pakfire_key_get_fingerprint(key);
+ DEBUG(key->pakfire, "Exporting key %s\n", fingerprint);
+
gpgme_data_t data = NULL;
char* buffer = NULL;
int r = 1;
return r;
}
+static int pakfire_key_write_to_keystore(struct pakfire_key* key) {
+ // Fetch keystore path
+ const char* keystore_path = pakfire_get_keystore_path(key->pakfire);
+ if (!keystore_path)
+ return 1;
+
+ // Fetch fingerprint
+ const char* fpr = pakfire_key_get_fingerprint(key);
+ if (!fpr)
+ return 1;
+
+ char path[PATH_MAX];
+
+ // Make path
+ int r = pakfire_string_format(path, "%s/%s.key", keystore_path, fpr);
+ if (r < 0)
+ return r;
+
+ // Create parent directory
+ r = pakfire_mkparentdir(path, 0);
+ if (r)
+ return r;
+
+ // Create file
+ FILE* f = fopen(path, "w");
+ if (!f) {
+ ERROR(key->pakfire, "Could not open %s for writing: %m\n", path);
+ return 1;
+ }
+
+ // Write key to file
+ r = pakfire_key_export(key, f, 0);
+ if (r) {
+ ERROR(key->pakfire, "Could not export key %s: %m\n", fpr);
+ unlink(path);
+ }
+
+ // Close file
+ fclose(f);
+
+ return r;
+}
+
PAKFIRE_EXPORT int pakfire_key_import(struct pakfire* pakfire, FILE* f,
struct pakfire_key*** keys) {
gpgme_data_t data;
// Append to array
(*keys)[i] = key;
+
+ // Write key to keystore
+ r = pakfire_key_write_to_keystore(key);
+ if (r)
+ goto ERROR;
}
}
break;