From 4afff79d2fe17ce48072e03f32fe792a1741947d Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Thu, 14 Feb 2019 21:28:41 -0600 Subject: [PATCH] more work on tests --- README.md | 1 + onionr/cryptotests.py | 35 -------------------------- onionr/onionrcrypto.py | 17 +++++++------ onionr/tests/test_stringvalidations.py | 11 +++----- 4 files changed, 15 insertions(+), 49 deletions(-) delete mode 100755 onionr/cryptotests.py diff --git a/README.md b/README.md index 6be34104..7cc1a597 100755 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ (***pre-alpha & experimental, not well tested or easy to use yet***) [![Open Source Love](https://badges.frapsoft.com/os/v3/open-source.png?v=103)](https://github.com/ellerbrock/open-source-badges/) +
diff --git a/onionr/cryptotests.py b/onionr/cryptotests.py deleted file mode 100755 index f7927fb8..00000000 --- a/onionr/cryptotests.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python3 -''' - Onionr - P2P Microblogging Platform & Social network - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -''' -import unittest, sys, os, core, onionrcrypto, logger - -class OnionrCryptoTests(unittest.TestCase): - def testSymmetric(self): - dataString = "this is a secret message" - dataBytes = dataString.encode() - myCore = core.Core() - crypto = onionrcrypto.OnionrCrypto(myCore) - key = key = b"tttttttttttttttttttttttttttttttt" - - logger.info("Encrypting: " + dataString, timestamp=True) - encrypted = crypto.symmetricEncrypt(dataString, key, returnEncoded=True) - logger.info(encrypted, timestamp=True) - logger.info('Decrypting encrypted string:', timestamp=True) - decrypted = crypto.symmetricDecrypt(encrypted, key, encodedMessage=True) - logger.info(decrypted, timestamp=True) - self.assertTrue(True) -if __name__ == "__main__": - unittest.main() diff --git a/onionr/onionrcrypto.py b/onionr/onionrcrypto.py index 074c8aa1..883098a3 100755 --- a/onionr/onionrcrypto.py +++ b/onionr/onionrcrypto.py @@ -18,7 +18,7 @@ along with this program. If not, see . ''' import nacl.signing, nacl.encoding, nacl.public, nacl.hash, nacl.pwhash, nacl.utils, nacl.secret, os, binascii, base64, hashlib, logger, onionrproofs, time, math, sys, hmac -import onionrexceptions, keymanager +import onionrexceptions, keymanager, core # secrets module was added into standard lib in 3.6+ if sys.version_info[0] == 3 and sys.version_info[1] < 6: from dependencies import secrets @@ -180,12 +180,6 @@ class OnionrCrypto: decrypted = base64.b64encode(decrypted) return decrypted - def generateSymmetricPeer(self, peer): - '''Generate symmetric key for a peer and save it to the peer database''' - key = self.generateSymmetric() - self._core.setPeerInfo(peer, 'forwardKey', key) - return - def generateSymmetric(self): '''Generate a symmetric key (bytes) and return it''' return binascii.hexlify(nacl.utils.random(nacl.secret.SecretBox.KEY_SIZE)) @@ -283,6 +277,15 @@ class OnionrCrypto: @staticmethod def safeCompare(one, two): + # Do encode here to avoid spawning core + try: + one = one.encode() + except AttributeError: + pass + try: + two = two.encode() + except AttributeError: + pass return hmac.compare_digest(one, two) @staticmethod diff --git a/onionr/tests/test_stringvalidations.py b/onionr/tests/test_stringvalidations.py index 9616c412..0cc45eae 100644 --- a/onionr/tests/test_stringvalidations.py +++ b/onionr/tests/test_stringvalidations.py @@ -1,11 +1,10 @@ #!/usr/bin/env python3 import sys, os sys.path.append(".") -import unittest, uuid, sqlite3 +import unittest, uuid TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/' print("Test directory:", TEST_DIR) os.environ["ONIONR_HOME"] = TEST_DIR -from urllib.request import pathname2url import core, onionr core.Core() @@ -37,7 +36,7 @@ class OnionrValidations(unittest.TestCase): self.assertTrue(c._utils.validatePubKey(valid)) for x in invalid: - print('testing', x) + #print('testing', x) self.assertFalse(c._utils.validatePubKey(x)) def test_integer_string(self): @@ -46,13 +45,11 @@ class OnionrValidations(unittest.TestCase): c = core.Core() for x in valid: - print('testing', x) + #print('testing', x) self.assertTrue(c._utils.isIntegerString(x)) for x in invalid: - print('testing', x) + #print('testing', x) self.assertFalse(c._utils.isIntegerString(x)) - - unittest.main() \ No newline at end of file