diff --git a/diceware/wordlist.py b/diceware/wordlist.py
index e2308bb250a30abc6b2bd060deb3b9125da09f95..0b241153141146c5dbd0401ee5e93cf6335e0708 100644
--- a/diceware/wordlist.py
+++ b/diceware/wordlist.py
@@ -157,5 +157,14 @@ class WordList(object):
 
     def __iter__(self):
         self.fd.seek(0)
+        if self.signed:
+            while self.fd.readline().strip():
+                # wait for first empty line
+                pass
         for line in self.fd:
-            yield refine_wordlist_entry(line, signed=self.signed)
+            line = refine_wordlist_entry(line, signed=self.signed)
+            if not line:
+                continue
+            elif self.signed and line == '-----BEGIN PGP SIGNATURE-----':
+                break
+            yield line
diff --git a/tests/test_wordlist.py b/tests/test_wordlist.py
index 29ccb3a742bb61025a82cad1dce1e99694cf1488..4ed641f9d51774b6228f3136c601558faf4442f6 100644
--- a/tests/test_wordlist.py
+++ b/tests/test_wordlist.py
@@ -239,3 +239,10 @@ class TestWordList(object):
         in_file.write("foo\nbar\n")
         w_list = WordList(str(in_file))
         assert list(w_list) == ["foo", "bar"]
+
+    def test_wordlist_from_signed_file(self):
+        # we can get an iterator from signed wordlist.
+        in_path = os.path.join(
+            os.path.dirname(__file__), "sample_signed_wordlist.asc")
+        w_list = WordList(in_path)
+        assert list(w_list) == ["foo", "bar", "-dash-at-start", "baz"]