- 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):