diff --git a/app/pgp/models.py b/app/pgp/models.py
index bc3c13b288817694d62a4b8347629aaf01bc042d..ae2baf0305a66d83b88fd34112d0be8d767ce194 100644
--- a/app/pgp/models.py
+++ b/app/pgp/models.py
@@ -1,10 +1,15 @@
 import re
+from string import ascii_uppercase, ascii_lowercase
 import hashlib
 from django.db import models
 import pgpy
 
 from . import zbase32
 
+lower_trans = str.maketrans(ascii_uppercase, ascii_lowercase)
+def lower(value):
+    return value.translate(lower_trans)
+
 class PublicKey(models.Model):
     email = models.CharField(max_length=128)
     armor = models.TextField()
@@ -26,9 +31,14 @@ class PublicKey(models.Model):
         return domain.lower()
 
     def set_wkdid(self):
-        local, domain = self.email.rsplit("@", 1)
-        digest = hashlib.sha1(local.lower().encode()).digest()
-        self.wkdid = zbase32.encode(digest).decode()
+        self.wkdid = self.encode_wkd_local(self.email)
+
+    @staticmethod
+    def encode_wkd_local(email):
+        local, domain = email.rsplit("@", 1)
+        local = lower(local)
+        digest = hashlib.sha1(local.encode()).digest()
+        return zbase32.encode(digest).decode()
 
     def save(self, *args, **kwds):
         if not self.keyid:
diff --git a/app/wkd/views.py b/app/wkd/views.py
index 678b9fc54cf97bac90bb7dd5ffab9f72097f94bc..40d624578fc1eb61b045da6904e0cdfc7d03aecb 100644
--- a/app/wkd/views.py
+++ b/app/wkd/views.py
@@ -21,7 +21,7 @@ def lookup(request, zbase, domain=None):
 
     publickey = get_object_or_404(models.PublicKey,
                                   wkdid=zbase,
-                                  email__endswith=f"@{domain}")
+                                  email__iendswith=f"@{domain}")
     if not request.user.has_perm("pgp.view_publickey", publickey):
         raise Http404()