]> git.ipfire.org Git - pakfire.git/commitdiff
pakfire: Implement exporting keys
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 7 Jul 2021 20:36:17 +0000 (20:36 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 7 Jul 2021 20:36:17 +0000 (20:36 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/scripts/pakfire.in

index 2b88ce78a96c875525ff8b9b8ac65efc3c4d966d..d6aa8ac8c7186821781f5e4ae82bd9407d0c5bb6 100644 (file)
@@ -77,6 +77,17 @@ class Cli(object):
                execute.add_argument("command", nargs=argparse.REMAINDER)
                execute.set_defaults(func=self._execute)
 
+               # export-key
+               export_key = subparsers.add_parser("export-key",
+                       help=_("Export a key to a file"))
+               export_key.add_argument("fingerprint",
+                       help=_("The fingerprint of the key to export"))
+               export_key.add_argument("--filename", nargs="?",
+                       help=_("Write the key to this file"))
+               export_key.add_argument("--secret", action="store_true",
+                       help=_("Include the secret key"))
+               export_key.set_defaults(func=self._export_key)
+
                # generate-key
                generate_key = subparsers.add_parser("generate-key",
                        help=_("Generate a new key"))
@@ -234,6 +245,22 @@ class Cli(object):
 
                return p.execute(args.command, logging_callback=logging_callback)
 
+       def _export_key(self, p, args):
+               key = p.get_key(args.fingerprint)
+               if not key:
+                       print(_("Could not find key with fingerprint %s") % fingerprint)
+                       return
+
+               # Convert key to text
+               data = key.export(args.secret)
+
+               # Write out the key
+               if args.filename:
+                       with open(args.filename, "w") as f:
+                               f.write(data)
+               else:
+                       print(data)
+
        def _generate_key(self, p, args):
                # Generate a new key
                key = p.generate_key(