summaryrefslogtreecommitdiff
path: root/key_loader.py
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2024-10-02 01:52:23 -0400
committerCarson Fleming <cflems@cflems.net>2024-10-02 01:52:23 -0400
commit1422a25cd5390404221f12b6a08cca6b35e9b776 (patch)
treefc605fa20fb7b6a62e8214c13cca891146eb5a23 /key_loader.py
downloadpgp-milter-1422a25cd5390404221f12b6a08cca6b35e9b776.tar.gz
Initial version with debug prints
Diffstat (limited to 'key_loader.py')
-rw-r--r--key_loader.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/key_loader.py b/key_loader.py
new file mode 100644
index 0000000..4867d07
--- /dev/null
+++ b/key_loader.py
@@ -0,0 +1,38 @@
+import config
+import mysql.connector as mysql
+import pgpy
+
+def load_keys(addrs: list[str]) -> list[pgpy.PGPKey]:
+ if len(addrs) < 1:
+ return []
+
+ db = mysql.connect(**config.db_config)
+ try:
+ stmt = db.cursor()
+ except Exception as e:
+ db.close()
+ raise e
+
+ try:
+ stmt.execute(\
+ format_multiquery(config.key_loader_query, len(addrs)), \
+ tuple(addrs) \
+ )
+
+ keys = {}
+ for (keyfpr, keydata) in stmt:
+ if keyfpr in keys:
+ continue
+ key = pgpy.PGPKey()
+ try:
+ key.parse(keydata)
+ except:
+ continue
+
+ return list(keys.values())
+ finally:
+ stmt.close()
+ db.close()
+
+def format_multiquery(query: str, n_items: int) -> str:
+ return query % (', '.join(['%s'] * n_items),)