xi-keyring

simple and extensible alternative for gnome-keyring
git clone https://git.ce9e.org/xi-keyring.git

commit
b8204a6d85e93d71fa3806bdd3e6fe7f58b720f5
parent
4ee1b8ee1f1c99f200ddee59cd34ffd80fd49dea
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2026-03-05 19:27
add --dump and --restore options to simplify migrations

Diffstat

M xikeyring/__main__.py 26 ++++++++++++++++++++++++--

1 files changed, 24 insertions, 2 deletions


diff --git a/xikeyring/__main__.py b/xikeyring/__main__.py

@@ -1,10 +1,12 @@
    1     1 import argparse
    2     2 import os
   -1     3 import sys
    3     4 from pathlib import Path
    4     5 
    5     6 from .dbus import DBusService
    6     7 from .dumpable import pr_set
    7     8 from .keyring import KeyringProxy
   -1     9 from .keyring import write_bytes
    8    10 
    9    11 
   10    12 def get_data_home():
@@ -18,6 +20,16 @@ def get_data_home():
   18    20 def parse_args():
   19    21     parser = argparse.ArgumentParser('xikeyring')
   20    22     parser.add_argument(
   -1    23         '--dump',
   -1    24         help='print the decryted file and exit',
   -1    25         action='store_true',
   -1    26     )
   -1    27     parser.add_argument(
   -1    28         '--restore',
   -1    29         help='inverse of --dump',
   -1    30         action='store_true',
   -1    31     )
   -1    32     parser.add_argument(
   21    33         '--store',
   22    34         '-s',
   23    35         help='path to the store file',
@@ -33,5 +45,15 @@ pr_set(dumpable=False)
   33    45 
   34    46 args = parse_args()
   35    47 keyring = KeyringProxy(args.store)
   36    -1 service = DBusService(keyring)
   37    -1 service.run(args.bus)
   -1    48 if args.dump:
   -1    49     with open(keyring.path, 'rb') as fh:
   -1    50         encrypted = fh.read()
   -1    51     decrypted = keyring.crypt.decrypt(encrypted)
   -1    52     print(decrypted.decode('utf-8'))
   -1    53 elif args.restore:
   -1    54     decrypted = sys.stdin.read().encode('utf-8')
   -1    55     encrypted = keyring.crypt.encrypt(decrypted)
   -1    56     write_bytes(keyring.path, encrypted)
   -1    57 else:
   -1    58     service = DBusService(keyring)
   -1    59     service.run(args.bus)