aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/model/fs_key.py
diff options
context:
space:
mode:
authorJ08nY2017-07-31 22:40:01 +0200
committerJ08nY2017-07-31 22:40:01 +0200
commit39291794b39b52804b2b45d74d0d5aad0f0eefcf (patch)
tree2a606169dcd655f5dc5b69b1770fa1fd72a5298e /src/mailman_pgp/model/fs_key.py
parentb16fe8644ddc82584a8ff9a2f98e40c1571437f2 (diff)
downloadmailman-pgp-feature/key-store.tar.gz
mailman-pgp-feature/key-store.tar.zst
mailman-pgp-feature/key-store.zip
Diffstat (limited to 'src/mailman_pgp/model/fs_key.py')
-rw-r--r--src/mailman_pgp/model/fs_key.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/mailman_pgp/model/fs_key.py b/src/mailman_pgp/model/fs_key.py
index c4a2ac4..118f971 100644
--- a/src/mailman_pgp/model/fs_key.py
+++ b/src/mailman_pgp/model/fs_key.py
@@ -16,14 +16,15 @@
# this program. If not, see <http://www.gnu.org/licenses/>.
"""Filesystem stored PGP key."""
-from os import remove
-from os.path import getmtime, join
+from os import remove, urandom
+from os.path import getmtime, getsize, join
from public import public
from mailman_pgp.utils.file import locked_obj
from mailman_pgp.utils.pgp import key_from_file
+
@public
class FSKey:
"""Filesystem stored PGP key."""
@@ -94,4 +95,19 @@ class FSKey:
@locked_obj('lock_path')
def delete(self):
- remove(self.key_path)
+ try:
+ remove(self.key_path)
+ except FileNotFoundError:
+ pass
+
+ @locked_obj('lock_path')
+ def shred(self):
+ try:
+ size = getsize(self.key_path)
+ for _ in range(10):
+ with open(self.key_path, 'wb') as f:
+ data = urandom(size)
+ f.write(data)
+ remove(self.key_path)
+ except FileNotFoundError:
+ pass