aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman_pgp/model')
-rw-r--r--src/mailman_pgp/model/address.py25
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')