summaryrefslogtreecommitdiff
path: root/src/mailman_pgp/model/fs_key.py
diff options
context:
space:
mode:
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