diff --git a/db/create_system_db.sql b/db/create_system_db.sql new file mode 100644 index 00000000..ac1eb89d --- /dev/null +++ b/db/create_system_db.sql @@ -0,0 +1,8 @@ +CREATE TABLE wordlist ( + lang text, + id integer, + word text, + entropy integer +); + +CREATE UNIQUE INDEX wordlist_pk on wordlist (lang, id); diff --git a/db/dic2csv.py b/db/dic2csv.py new file mode 100644 index 00000000..fe19bbf8 --- /dev/null +++ b/db/dic2csv.py @@ -0,0 +1,54 @@ +#! /usr/bin/env python3 + +from argparse import ArgumentParser +from fileinput import FileInput, hook_encoded +import re, itertools, sys + +try: + from math import log2 +except: + from math import log + def log2(x): return log(x) / log(2) + +word = re.compile(r"(\S*?)(/|\s.*|$)") +unwanted = re.compile(r"(^\d|[^']*')") +space = re.compile(r'^\s') + +p = ArgumentParser(description="create dictionary csv out of hunspell data") +p.add_argument('--hunspell', '-H', type=str, default="/usr/share/hunspell", + help='directory where hunspell dictionary files reside (default: /usr/share/hunspell)') +p.add_argument('--lang', '-l', type=str, default="en_US", + help='use dictionary for language LANG (default: en_US)') +p.add_argument('--encoding', '-e', type=str, default="utf-8", + help='file encoding (default: utf-8)') + +args = p.parse_args() + +_all = ( + word.match(line).group(1).upper() + for line in FileInput( + args.hunspell + "/" + args.lang + ".dic", + openhook=hook_encoded(args.encoding) + ) + if not space.match(line) +) +_words = [w for w in _all if len(w) > 2 and not unwanted.match(w)] +_words.sort() +_words = [w for w, g in itertools.groupby(_words)] + +if len(_words) > 65536: + _words = _words[:65536] +elif len(_words) < 65536: + sys.stderr.write( + "warning for {}: only {:.2f} bit in wordlist, that makes {:.2f} bit for 5 words\n".format( + args.lang, + log2(len(_words)), + log2(len(_words))*5 + ) + ) + _words.extend(_words[:65536-len(_words)]) + +assert len(_words) == 65536, "lenght is {}".format(len(_words)) + +for i, w in enumerate(_words): + print("{l},{i},{w}".format(l=args.lang[:2], i=i, w=w)) diff --git a/db/safewords.py b/db/safewords.py new file mode 100644 index 00000000..204d3614 --- /dev/null +++ b/db/safewords.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +from sqlite3 import connect +from os import environ +from argparse import ArgumentParser +from re import sub + +try: + environ["ALLUSERSPROFILE"] +except KeyError: + db_file = "/usr/local/share/pEp/system.db" +else: + db_file = environ["ALLUSERSPROFILE"] + r"\pEp\system.db" + +p = ArgumentParser(description="show safewords instead of hex fingerprint") +p.add_argument('--db-path', '-d', type=str, default=db_file, + help='path to pEp system db (default: ' + db_file + ')') +p.add_argument('--lang', '-l', type=str, default="en", + help='use dictionary for language LANG (default: en)') +p.add_argument('--short', '-s', action='store_true', + help='display the first 5 of the safewords') +p.add_argument('hex', metavar="hex", type=str, nargs='+', + help='hex values of fingerprint') + +args = p.parse_args() + +c = connect(args.db_path).cursor() +hex_string = sub(r"\W", "", "".join(args.hex)) + +def hex_word(s): + n = min(20, len(s)) if args.short else len(s) + for i in range(0, n, 4): + yield s[i:i+4] + +r = [] + +for arg in hex_word(hex_string): + c.execute("select word from wordlist where id = {} and lang = lower('{}')".format( + str(int(arg, 16)), args.lang)) + r.append(c.fetchall()[0][0]) + +print(" ".join(r)) diff --git a/test/DF9B1541-sec.key b/test/DF9B1541-sec.key new file mode 100644 index 00000000..a3be3049 --- /dev/null +++ b/test/DF9B1541-sec.key @@ -0,0 +1,106 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v2.0.22 (MingW32) + +lQcYBFLefd0BEADB97Pmcz0yfkOWD2978HRUCUa7H4JpuDHZs+hurMlkuE7mLGh5 +PAQ61/nL5gppl0cHFNlO7doG2gcRixWZfeQZywkJia5xNzcdjyAiC5jZ6IQpXk2T +wwzBIDYrU+9DhppY5hnE90yDv0MBS2SVjDergZTPDBbIYPTtPf5h51pVULCAtiyN +2Htv3M3tDwJJ9IrLFpJL+ClocgrmeDANKbico63qlBl9NjiUqdnt5INoE6/SnKSu +zaBE37C+/10bswFpjjVffyhu+hplxp6MlalZZYJEip6rmDe0P+nMbEmNvNuUmZwc +sPwvr1vRwhGGpZao2j4/SnDsKNNmsLrwyVEQboHYcKIgLEuHY4WtHDUt6umu7zdt +I6VDUoiSuNkVB+TM51HeQOoLZJ4Evcrdh6zKB2wWMW1RJQIknlMDwnRhHj+WJD06 +texTzvAfDdsHV6NNs2WeUKesyivCyaKMPU7o95D+ZMi22CQ2qUCSLegivpnk/gKS +pM+JqwyAPnzJBW43qr13zA0tWMO2nzSzcYnRhTNTGeqkxn7t2Uc0ItMk360Xy7n6 +yI2AL79daP0NGM9P0F4wD44FCnrvcDO0gbk3zJJnynnfFSF6Dk4/2sRUPsp2gm9B +hiHFt4w13mySETjd0sbcQYbpHZbJEPm2YY/q7rTCCCA106vg1S2IduY2GwARAQAB +AA//QydAc/UKx2v6dz4B0W2GwL9zav52NqbML3x/aK3Ojd3Xhw3x36M9Lagvdf2/ +Nh5nO1bnA1IKrVuXneXCxSDWM23dQ52UtOKyZLv0GoVcVnkPJIlfH1ykkkpWJrsI +955m2odTfaNGrMgvaQfSm4nvjiOvQt2DF72lnmtbokaoOihU60Lm+vbriWdvLfcH +ylXtJXG7laylnWD6UB9lN3Ft1mE+qZu7lWOLxEBn0FpQelxyf163D0PmjGHLfdzI +PfpD72kKJnVOKNnTANB6fN6lwmsH5jX9yBfLlU6ZYapN7tHnTbO+3hoSPWofRmhD +jBPRLMVeTqg1nzVlN0TRe+Ke+xAMkrlAcC2xJyU4vi9VgGJNeXZk0m0aDpxGaHwS +p1lskMQoKO9cswCeBGUbWmuhC6MXPwUpN3s1r7GSwQGB8O1xQbSghTqozgIwlu/H +JRfC8yvQJpxK9UtFJ1t41vq/urxxlL2BC67ms9u1W+/yY/bgrKPAlP7QcYJqXFQa +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 +=NZw5 +-----END PGP PRIVATE KEY BLOCK----- diff --git a/test/DF9B1541.key b/test/DF9B1541.key new file mode 100644 index 00000000..044f7bc2 --- /dev/null +++ b/test/DF9B1541.key @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v2.0.22 (MingW32) + +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 +=c+rW +-----END PGP PUBLIC KEY BLOCK----- diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 00000000..b123396b --- /dev/null +++ b/test/Makefile @@ -0,0 +1,51 @@ +include ../Makefile.conf + +ifeq ($(BUILD_FOR),Windoze) +CXX=i686-w64-mingw32-g++ +LD=i686-w64-mingw32-c++ +LDFLAGS=-lstdc++ +else ifeq ($(BUILD_FOR),MINGW32_NT-6.1) +CXX=g++ -std=gnu++11 -DWIN32 +LD=g++ +LDFLAGS=-pthread -L../src -lpEpEngine -lstdc++ +else +CXX=g++ -std=gnu++11 +LD=g++ +LDFLAGS=-L~/lib -pthread -L../src -lpEpEngine -lstdc++ +endif +CXXFLAGS=-g -O0 +# CXXFLAGS=-O3 -DNDEBUG + +TARGET=pEpEngineTest + +ifeq ($(BUILD_FOR),Windoze) +all: $(TARGET).exe + +$(TARGET).exe: $(TARGET).o ../src/libpEpEngine.a + $(CXX) $(LDFLAGS) -o $(TARGET).exe $(TARGET).o ../src/libpEpEngine.a +else ifeq ($(BUILD_FOR),MINGW32_NT-6.1) +all: $(TARGET).exe pEpEngine.dll + +$(TARGET).exe: $(TARGET).o ../src/libpEpEngine.a + $(CXX) $(LDFLAGS) -o $(TARGET).exe $(TARGET).o ../src/libpEpEngine.a +else +all: $(TARGET) + +$(TARGET): $(TARGET).o + $(CXX) $(LDFLAGS) -o $(TARGET) $(TARGET).o +endif + +%.o: %.cc ../pEpEngine.h + $(CXX) $(CXXFLAGS) -c -o $@ $< + +pEpEngine.dll: ../src/pEpEngine.dll + cp $< $@ + +.PHONY: clean + +clean: + rm -f *.o $(TARGET) *.exe *.a *~ pEpEngine.dll + +test: all + LD_LIBRARY_PATH=~/lib:../src ./pEpEngineTest + diff --git a/test/msg.asc b/test/msg.asc new file mode 100644 index 00000000..c9155c2c --- /dev/null +++ b/test/msg.asc @@ -0,0 +1,37 @@ +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1 +Comment: GPGTools - http://gpgtools.org + +hQIMA0v8ThRgMMUcAQ//f+r+No4dufsFipIKAH0aIQ7/t970jM9h+iRVbI6hapvi ++w9alPbjraH24lDme7MGMOSnxMBXmZG/U/LUTaqUkIG+vUEeO7CHUQ24Y2hOW0H7 +6WCsFLBPRhLuT8sZzFTMRZgwwBxtfzeDhMZtmQlXYMxbPS5tHuOG6eEqZzY2WtZc +tpasfiUmfDAOPVuGC+D5S/oA5Idb7dyuqTYhlIq35sKV3zmx4dz7M8sV+G34l8+1 +83X2kT6GUqoN/Fbq4Jo7LGB59uPcjc9+P0QNo45pkN/BAIa83dHxkSH6ktMKEDaW +DX3+gVgz+ErAeXvlkKoxWUHdSyzVOXQh0oIaMN/7Fy8472vHl6QLJ8mHwaeCP6ZP +MXY7/Me3dgCBokd4ov5us8pSoNehQIMT4iyYyS0LMxGIC8YSoLYrBYRqVWxlukty +GYegJQ2RMKw9dRnG16NZVHlmWaFELhMt8zZYV8g+3qePnUNPGTpqnz8DUrlvATEN +s1zFhduI+a6appcxy1f8vWvV4nwpZGOM73yRywpJxfLSn86eU2Fs4pMIHX/79nQ0 +0LZeebhrZrD/PoAmMdiiiY7ypViOpO7TdahmETK65q7KDreg4ba8PwE8dEZZabww +osMGFkNuMwNgDeRl9idLvC5sw6BfxlEQz9JdOI5AMUjQUUp8cF/EK5HYFqqhob6F +Ag4DeHVCKO8HDkcQB/42VLRXAOBeZi2Q2KlK5k0gdC09Dn7plP3VxAZYilvcWOfv +XnwvYp3uxspgrcbGl+LcdYKX9k1QBzW2J+jJEc8E22yoqeGO1wAG6w5nMvD0ZP2C +pbHSegHAsaa8QktR79T7+/qaLxsk5BPMyvTUslHIB/YgWE9yz/I1LItbyfE7VnjW +EBTGchV/so9kQdS2as4LyjubzwmQ8A+ri8au7E33LuORKfr2vPYVKa25yq8/oA18 +oGQPn+/4fYJthnxGUPxz7VmRbs3g1vbta8rk7CDafak9tArXPipaSP85y5EfrbAh +cbZBYwrb6n8wyl+scaaFeOFwvGoAlJ55ll2RqgE1B/4or/DLhAczyGiQ485ZYuMi +xLFx+e5RuOn5s0wVUIq+2VarayvfEbY+5NNz3j+1Q1As/+S0L7bY+8TKTQovvc4Q +FCQrsSViu6J1wRIfNLLFSW6xHW0pcnIUHKJuOopqlYFzBruUQnbObB0HO5Wznwjb +rQ9olCYJyKIrlDdzYO5FDiOTXNlY45WNUmUTpmuNZKUZ2+3TCyPRbm7zRsbFWUmP +ZuBerHzbko6uNqKuQNf6D0aqb8SnhCdhFcxfKq2LeAWymPuXabWC3b6k3N4TBct9 +VnJ1iJ6Fig4KA9MdBqiIX7gRhK5q6wuxyu0su7zzgnC9wveMR5/EQajNjAGnGUe5 +0sDCAeeKIgN0L2zeoffRoID7FNajQs7rHxGrVccY+NslOIulgMEBHKYSCMwp7FbF +MpSWyhpv43hhBKoGkUK6nKb7BbCSV89DyXPmAqnhl/Hb4YjQoVhNgprwL7JDThIT +8FWrpQdTFqttU1rhIt1T1htmjdoFTZ1n4CtBAmlvwE+fFXeq0r9Oi8UBynVM2sLW +kPAEScxSEdykxKuR5jj2uZWviOf2RZKQ61OutyMuWjqgH07pZBxM2NGMtQIufL9J +a2uO1291DZTlUnJQ0p5JkF4l2zmKxynsgi5YJM5j1L63j9LaDgWKJZPVI6T5zClG +GQGYIFB5+6mHCQLG1bY7+fKK+qrZUv1BGx+CoYl1pyf7nxIAhEPArSFXrEFVHgHB +sCT2cBlyuquSnUQs0z0sPlLmHlZ98VonFwf2f3nVuCq+0WHRnQ9Xe//c4UBbMoWA +a9zqyamBQ+vvwzFSVkg6//R6Grsa9jHcwBogxCHg2C9tOm+dgANVzvtKha8GCNem +9TFmu2s= +=CwSp +-----END PGP MESSAGE----- diff --git a/test/signature.asc b/test/signature.asc new file mode 100644 index 00000000..722caba1 --- /dev/null +++ b/test/signature.asc @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.10 (GNU/Linux) + +iEYEARECAAYFAlNs9EQACgkQb7KfG+Kr+JAXrwCdEkuVvInUBktNmYBdPm8iJlUD +cA8An0N+j49d4GSUYLyf6CfA8FItdCPl +=A3cw +-----END PGP SIGNATURE----- diff --git a/test/t1.txt b/test/t1.txt new file mode 100644 index 00000000..108b71bb --- /dev/null +++ b/test/t1.txt @@ -0,0 +1,10 @@ +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +Content-Transfer-Encoding: quoted-printable + +Ohne Anhang. +--=20 +Volker Birk, Oberer Graben 4, CH-8400 Winterthur, Schweiz, +Erde, Solar-System, Orion Arm, Milchstrasse, Lokale Gruppe, +Virgo-Superhaufen, Coma-Virgo-Filament. mailto:dingens@bumens.org +http://fdik.org D-IRCNet fdik!vb@dragon.pibit.ch diff --git a/test/t2.txt b/test/t2.txt new file mode 100644 index 00000000..299d09ff --- /dev/null +++ b/test/t2.txt @@ -0,0 +1 @@ +Something else