├── .github └── FUNDING.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── axolotl ├── __init__.py ├── axolotladdress.py ├── duplicatemessagexception.py ├── ecc │ ├── __init__.py │ ├── curve.py │ ├── djbec.py │ ├── ec.py │ └── eckeypair.py ├── groups │ ├── __init__.py │ ├── groupcipher.py │ ├── groupsessionbuilder.py │ ├── ratchet │ │ ├── __init__.py │ │ ├── senderchainkey.py │ │ └── sendermessagekey.py │ ├── senderkeyname.py │ └── state │ │ ├── __init__.py │ │ ├── senderkeyrecord.py │ │ ├── senderkeystate.py │ │ └── senderkeystore.py ├── identitykey.py ├── identitykeypair.py ├── invalidkeyexception.py ├── invalidkeyidexception.py ├── invalidmessageexception.py ├── invalidversionexception.py ├── kdf │ ├── __init__.py │ ├── derivedmessagesecrets.py │ ├── derivedrootsecrets.py │ ├── hkdf.py │ ├── hkdfv2.py │ ├── hkdfv3.py │ └── messagekeys.py ├── legacymessageexception.py ├── nosessionexception.py ├── protobuf │ ├── LocalStorageProtocol.proto │ └── WhisperTextProtocol.proto ├── protocol │ ├── __init__.py │ ├── ciphertextmessage.py │ ├── keyexchangemessage.py │ ├── prekeywhispermessage.py │ ├── senderkeydistributionmessage.py │ ├── senderkeymessage.py │ ├── whispermessage.py │ └── whisperprotos_pb2.py ├── ratchet │ ├── __init__.py │ ├── aliceaxolotlparameters.py │ ├── bobaxolotlparamaters.py │ ├── chainkey.py │ ├── ratchetingsession.py │ ├── rootkey.py │ └── symmetricaxolotlparameters.py ├── sessionbuilder.py ├── sessioncipher.py ├── state │ ├── __init__.py │ ├── axolotlstore.py │ ├── identitykeystore.py │ ├── prekeybundle.py │ ├── prekeyrecord.py │ ├── prekeystore.py │ ├── sessionrecord.py │ ├── sessionstate.py │ ├── sessionstore.py │ ├── signedprekeyrecord.py │ ├── signedprekeystore.py │ └── storageprotos_pb2.py ├── statekeyexchangeexception.py ├── tests │ ├── __init__.py │ ├── groups │ │ ├── __init__.py │ │ ├── inmemorysenderkeystore.py │ │ └── test_groupcipher.py │ ├── inmemoryaxolotlstore.py │ ├── inmemoryidentitykeystore.py │ ├── inmemoryprekeystore.py │ ├── inmemorysessionstore.py │ ├── inmemorysignedprekeystore.py │ ├── kdf │ │ ├── __init__.py │ │ └── test_hkdf.py │ ├── ratchet │ │ ├── __init__.py │ │ ├── test_chainkey.py │ │ ├── test_ratchetingsession.py │ │ └── test_rootkey.py │ ├── test_sessionbuilder.py │ ├── test_sessioncipher.py │ ├── test_sigs.py │ └── util │ │ ├── __init__.py │ │ └── test_byteutil.py ├── untrustedidentityexception.py └── util │ ├── __init__.py │ ├── byteutil.py │ ├── hexutil.py │ ├── keyhelper.py │ └── medium.py ├── setup.py └── tox.ini /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [tgalal] 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/.gitignore -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/.travis.yml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/README.md -------------------------------------------------------------------------------- /axolotl/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/__init__.py -------------------------------------------------------------------------------- /axolotl/axolotladdress.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/axolotladdress.py -------------------------------------------------------------------------------- /axolotl/duplicatemessagexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/duplicatemessagexception.py -------------------------------------------------------------------------------- /axolotl/ecc/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /axolotl/ecc/curve.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ecc/curve.py -------------------------------------------------------------------------------- /axolotl/ecc/djbec.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ecc/djbec.py -------------------------------------------------------------------------------- /axolotl/ecc/ec.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ecc/ec.py -------------------------------------------------------------------------------- /axolotl/ecc/eckeypair.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ecc/eckeypair.py -------------------------------------------------------------------------------- /axolotl/groups/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/groups/groupcipher.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/groupcipher.py -------------------------------------------------------------------------------- /axolotl/groups/groupsessionbuilder.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/groupsessionbuilder.py -------------------------------------------------------------------------------- /axolotl/groups/ratchet/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/groups/ratchet/senderchainkey.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/ratchet/senderchainkey.py -------------------------------------------------------------------------------- /axolotl/groups/ratchet/sendermessagekey.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/ratchet/sendermessagekey.py -------------------------------------------------------------------------------- /axolotl/groups/senderkeyname.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/senderkeyname.py -------------------------------------------------------------------------------- /axolotl/groups/state/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/groups/state/senderkeyrecord.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/state/senderkeyrecord.py -------------------------------------------------------------------------------- /axolotl/groups/state/senderkeystate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/state/senderkeystate.py -------------------------------------------------------------------------------- /axolotl/groups/state/senderkeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/groups/state/senderkeystore.py -------------------------------------------------------------------------------- /axolotl/identitykey.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/identitykey.py -------------------------------------------------------------------------------- /axolotl/identitykeypair.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/identitykeypair.py -------------------------------------------------------------------------------- /axolotl/invalidkeyexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/invalidkeyexception.py -------------------------------------------------------------------------------- /axolotl/invalidkeyidexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/invalidkeyidexception.py -------------------------------------------------------------------------------- /axolotl/invalidmessageexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/invalidmessageexception.py -------------------------------------------------------------------------------- /axolotl/invalidversionexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/invalidversionexception.py -------------------------------------------------------------------------------- /axolotl/kdf/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | __author__ = 'tarek' 4 | -------------------------------------------------------------------------------- /axolotl/kdf/derivedmessagesecrets.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/kdf/derivedmessagesecrets.py -------------------------------------------------------------------------------- /axolotl/kdf/derivedrootsecrets.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/kdf/derivedrootsecrets.py -------------------------------------------------------------------------------- /axolotl/kdf/hkdf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/kdf/hkdf.py -------------------------------------------------------------------------------- /axolotl/kdf/hkdfv2.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/kdf/hkdfv2.py -------------------------------------------------------------------------------- /axolotl/kdf/hkdfv3.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/kdf/hkdfv3.py -------------------------------------------------------------------------------- /axolotl/kdf/messagekeys.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/kdf/messagekeys.py -------------------------------------------------------------------------------- /axolotl/legacymessageexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/legacymessageexception.py -------------------------------------------------------------------------------- /axolotl/nosessionexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/nosessionexception.py -------------------------------------------------------------------------------- /axolotl/protobuf/LocalStorageProtocol.proto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protobuf/LocalStorageProtocol.proto -------------------------------------------------------------------------------- /axolotl/protobuf/WhisperTextProtocol.proto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protobuf/WhisperTextProtocol.proto -------------------------------------------------------------------------------- /axolotl/protocol/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | __author__ = 'tarek' 4 | -------------------------------------------------------------------------------- /axolotl/protocol/ciphertextmessage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protocol/ciphertextmessage.py -------------------------------------------------------------------------------- /axolotl/protocol/keyexchangemessage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protocol/keyexchangemessage.py -------------------------------------------------------------------------------- /axolotl/protocol/prekeywhispermessage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protocol/prekeywhispermessage.py -------------------------------------------------------------------------------- /axolotl/protocol/senderkeydistributionmessage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protocol/senderkeydistributionmessage.py -------------------------------------------------------------------------------- /axolotl/protocol/senderkeymessage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protocol/senderkeymessage.py -------------------------------------------------------------------------------- /axolotl/protocol/whispermessage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protocol/whispermessage.py -------------------------------------------------------------------------------- /axolotl/protocol/whisperprotos_pb2.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/protocol/whisperprotos_pb2.py -------------------------------------------------------------------------------- /axolotl/ratchet/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/ratchet/aliceaxolotlparameters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ratchet/aliceaxolotlparameters.py -------------------------------------------------------------------------------- /axolotl/ratchet/bobaxolotlparamaters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ratchet/bobaxolotlparamaters.py -------------------------------------------------------------------------------- /axolotl/ratchet/chainkey.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ratchet/chainkey.py -------------------------------------------------------------------------------- /axolotl/ratchet/ratchetingsession.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ratchet/ratchetingsession.py -------------------------------------------------------------------------------- /axolotl/ratchet/rootkey.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ratchet/rootkey.py -------------------------------------------------------------------------------- /axolotl/ratchet/symmetricaxolotlparameters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/ratchet/symmetricaxolotlparameters.py -------------------------------------------------------------------------------- /axolotl/sessionbuilder.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/sessionbuilder.py -------------------------------------------------------------------------------- /axolotl/sessioncipher.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/sessioncipher.py -------------------------------------------------------------------------------- /axolotl/state/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/state/axolotlstore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/axolotlstore.py -------------------------------------------------------------------------------- /axolotl/state/identitykeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/identitykeystore.py -------------------------------------------------------------------------------- /axolotl/state/prekeybundle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/prekeybundle.py -------------------------------------------------------------------------------- /axolotl/state/prekeyrecord.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/prekeyrecord.py -------------------------------------------------------------------------------- /axolotl/state/prekeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/prekeystore.py -------------------------------------------------------------------------------- /axolotl/state/sessionrecord.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/sessionrecord.py -------------------------------------------------------------------------------- /axolotl/state/sessionstate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/sessionstate.py -------------------------------------------------------------------------------- /axolotl/state/sessionstore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/sessionstore.py -------------------------------------------------------------------------------- /axolotl/state/signedprekeyrecord.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/signedprekeyrecord.py -------------------------------------------------------------------------------- /axolotl/state/signedprekeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/signedprekeystore.py -------------------------------------------------------------------------------- /axolotl/state/storageprotos_pb2.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/state/storageprotos_pb2.py -------------------------------------------------------------------------------- /axolotl/statekeyexchangeexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/statekeyexchangeexception.py -------------------------------------------------------------------------------- /axolotl/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/tests/groups/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/tests/groups/inmemorysenderkeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/groups/inmemorysenderkeystore.py -------------------------------------------------------------------------------- /axolotl/tests/groups/test_groupcipher.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/groups/test_groupcipher.py -------------------------------------------------------------------------------- /axolotl/tests/inmemoryaxolotlstore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/inmemoryaxolotlstore.py -------------------------------------------------------------------------------- /axolotl/tests/inmemoryidentitykeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/inmemoryidentitykeystore.py -------------------------------------------------------------------------------- /axolotl/tests/inmemoryprekeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/inmemoryprekeystore.py -------------------------------------------------------------------------------- /axolotl/tests/inmemorysessionstore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/inmemorysessionstore.py -------------------------------------------------------------------------------- /axolotl/tests/inmemorysignedprekeystore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/inmemorysignedprekeystore.py -------------------------------------------------------------------------------- /axolotl/tests/kdf/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- cosing: utf-8 -*- 2 | 3 | __author__ = 'tarek' 4 | -------------------------------------------------------------------------------- /axolotl/tests/kdf/test_hkdf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/kdf/test_hkdf.py -------------------------------------------------------------------------------- /axolotl/tests/ratchet/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | __author__ = 'tarek' 4 | -------------------------------------------------------------------------------- /axolotl/tests/ratchet/test_chainkey.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/ratchet/test_chainkey.py -------------------------------------------------------------------------------- /axolotl/tests/ratchet/test_ratchetingsession.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/ratchet/test_ratchetingsession.py -------------------------------------------------------------------------------- /axolotl/tests/ratchet/test_rootkey.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/ratchet/test_rootkey.py -------------------------------------------------------------------------------- /axolotl/tests/test_sessionbuilder.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/test_sessionbuilder.py -------------------------------------------------------------------------------- /axolotl/tests/test_sessioncipher.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/test_sessioncipher.py -------------------------------------------------------------------------------- /axolotl/tests/test_sigs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/test_sigs.py -------------------------------------------------------------------------------- /axolotl/tests/util/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | __author__ = 'tarek' 4 | -------------------------------------------------------------------------------- /axolotl/tests/util/test_byteutil.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/tests/util/test_byteutil.py -------------------------------------------------------------------------------- /axolotl/untrustedidentityexception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/untrustedidentityexception.py -------------------------------------------------------------------------------- /axolotl/util/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /axolotl/util/byteutil.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/util/byteutil.py -------------------------------------------------------------------------------- /axolotl/util/hexutil.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/util/hexutil.py -------------------------------------------------------------------------------- /axolotl/util/keyhelper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/util/keyhelper.py -------------------------------------------------------------------------------- /axolotl/util/medium.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/axolotl/util/medium.py -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/setup.py -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgalal/python-axolotl/HEAD/tox.ini --------------------------------------------------------------------------------