diff options
Diffstat (limited to 'src/mailman_pgp/model')
| -rw-r--r-- | src/mailman_pgp/model/address.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/mailman_pgp/model/address.py b/src/mailman_pgp/model/address.py index 040e532..48bdb61 100644 --- a/src/mailman_pgp/model/address.py +++ b/src/mailman_pgp/model/address.py @@ -1,8 +1,13 @@ """""" +from os.path import join, exists, isfile + from mailman.database.types import SAUnicode +from pgpy import PGPKey from sqlalchemy import Column, Integer +from sqlalchemy.orm import reconstructor +from mailman_pgp.config import config from mailman_pgp.model.base import Base @@ -16,10 +21,20 @@ class EncryptedAddress(Base): def __init__(self, email): super().__init__() self.email = email - self._user_key = None + self._init() + + @reconstructor + def _init(self): + self._key = None + + @property + def key(self): + if self._key is None: + if exists(self.key_path) and isfile(self.key_path): + self._key, _ = PGPKey.from_file(self.key_path) + return self._key @property - def user_key(self): - if self._user_key is not None: - return self._user_key - pass + def key_path(self): + return join(config.pgp.keydir_config['user_keydir'], + self.key_fingerprint + '.asc') |
