summaryrefslogtreecommitdiff
path: root/pgpwordlist
diff options
context:
space:
mode:
Diffstat (limited to 'pgpwordlist')
-rw-r--r--pgpwordlist/__init__.py3
-rw-r--r--pgpwordlist/funcs.py14
-rw-r--r--pgpwordlist/funcs_tests.py8
3 files changed, 24 insertions, 1 deletions
diff --git a/pgpwordlist/__init__.py b/pgpwordlist/__init__.py
index 495cd51..ceb321c 100644
--- a/pgpwordlist/__init__.py
+++ b/pgpwordlist/__init__.py
@@ -17,4 +17,5 @@
from .wordlist import pgp_word_list
-from .funcs import get_word, get_hex
+from .funcs import get_word, get_hex, hex_to_words, words_to_hex
+
diff --git a/pgpwordlist/funcs.py b/pgpwordlist/funcs.py
index 2801839..84d3d0d 100644
--- a/pgpwordlist/funcs.py
+++ b/pgpwordlist/funcs.py
@@ -33,3 +33,17 @@ def get_hex(word):
for hex, t in _words.items():
if word.lower() in t:
return hex.lower()
+
+
+def hex_to_words(hexstr):
+ words = [get_word(hex, i) for i, hex in enumerate(_hex_bytes(hexstr))]
+ return ' '.join(words)
+
+
+def _hex_bytes(hexstr):
+ for i in range(0, len(hexstr), 2):
+ yield hexstr[i:i+2]
+
+
+def words_to_hex(wordstr):
+ return ''.join(get_hex(w) for w in wordstr.split())
diff --git a/pgpwordlist/funcs_tests.py b/pgpwordlist/funcs_tests.py
index a7d1bfb..5473ac8 100644
--- a/pgpwordlist/funcs_tests.py
+++ b/pgpwordlist/funcs_tests.py
@@ -46,3 +46,11 @@ class WordListQueriesTests(unittest.TestCase):
odd_word = pgpwordlist.get_word(hex, 1)
self.assertEqual(pgpwordlist.get_hex(even_word), hex)
self.assertEqual(pgpwordlist.get_hex(odd_word), hex)
+
+
+class WordStringTests(unittest.TestCase):
+
+ def test_roundtrip_works(self):
+ hex = 'cafef00d'
+ words = pgpwordlist.hex_to_words(hex)
+ self.assertEqual(pgpwordlist.words_to_hex(words), hex)