xi-keyring

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

commit
493a6a2ff328a8689eebc95cf13c8b72f3f6a6e3
parent
07ef4b1db7f2d4b5c8204babbf8e59d27ac3642f
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2024-05-15 21:08
kernel_keyring: delete password from kernel keyring when no longer used

Diffstat

M xikeyring/kernel_keyring.py 9 +++++++++

1 files changed, 9 insertions, 0 deletions


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

@@ -1,5 +1,6 @@
    1     1 import ctypes
    2     2 import os
   -1     3 from weakref import finalize
    3     4 
    4     5 keyutils = ctypes.CDLL('libkeyutils.so.1')
    5     6 
@@ -29,10 +30,18 @@ def get_key(id: int, size: int) -> bytes:
   29    30     return buf.value
   30    31 
   31    32 
   -1    33 def unlink_key(id: int, keyring: int):
   -1    34     result = keyutils.keyctl_unlink(id, keyring)
   -1    35     if result == -1:
   -1    36         errno = ctypes.get_errno()
   -1    37         raise OSError(errno, os.strerror(errno))
   -1    38 
   -1    39 
   32    40 class KernelKey:
   33    41     def __init__(self, value: bytes, keyring: int = PROCESS_KEYRING):
   34    42         name = f'kernel-key-{id(self)}'.encode()
   35    43         self.id, self.size = add_key(name, value, keyring)
   -1    44         finalize(self, unlink_key, self.id, keyring)
   36    45 
   37    46     @property
   38    47     def value(self):