def test_encrypt(self): contactPair = crypto.generate() contact = contactmanager.ContactManager(contactPair[0], saveUser=True) encrypted = contact.encrypt('test') decrypted = crypto.encryption.pub_key_decrypt( encrypted, privkey=contactPair[1], encodedData=True).decode() self.assertEqual('test', decrypted)
def test_forward_encrypt_bin(self): friend = crypto.generate() friendUser = onionrusers.OnionrUser(friend[0], saveUser=True) for x in range(5): message = os.urandom(32) forwardKey = friendUser.generateForwardKey() fakeForwardPair = crypto.generate() self.assertTrue(friendUser.addForwardKey(fakeForwardPair[0])) encrypted = friendUser.forwardEncrypt(message) decrypted = crypto.encryption.pub_key_decrypt(encrypted[0], privkey=fakeForwardPair[1], encodedData=True) self.assertEqual(decrypted, message)
def test_forward_encrypt(self): friend = crypto.generate() friendUser = onionrusers.OnionrUser(friend[0], saveUser=True) for x in range(5): message = 'hello world %s' % (random.randint(1, 1000)) forwardKey = friendUser.generateForwardKey() fakeForwardPair = crypto.generate() self.assertTrue(friendUser.addForwardKey(fakeForwardPair[0])) encrypted = friendUser.forwardEncrypt(message) decrypted = crypto.encryption.pub_key_decrypt(encrypted[0], privkey=fakeForwardPair[1], encodedData=True) self.assertEqual(decrypted, message.encode()) return
def test_contact_get_info(self): contact = crypto.generate()[0] contact = contactmanager.ContactManager(contact, saveUser=True) fileLocation = '%s/contacts/%s.json' % (identifyhome.identify_home(), contact.publicKey) with open(fileLocation, 'w') as contactFile: contactFile.write('{"alias": "bob"}') self.assertEqual(contact.get_info('alias', forceReload=True), 'bob') self.assertEqual(contact.get_info('fail', forceReload=True), None) self.assertEqual(contact.get_info('fail'), None)
def test_asymmetric(self): keyPair = crypto.generate() keyPair2 = crypto.generate() message = "hello world" self.assertTrue(len(crypto.encryption.pub_key_encrypt(message, keyPair2[0], encodedData=True)) > 0) encrypted = crypto.encryption.pub_key_encrypt(message, keyPair2[0], encodedData=False) decrypted = crypto.encryption.pub_key_decrypt(encrypted, privkey=keyPair2[1], encodedData=False) self.assertTrue(decrypted.decode() == message) try: crypto.encryption.pub_key_encrypt(None, keyPair2[0]) except TypeError: pass else: self.assertTrue(False) blankMessage = crypto.encryption.pub_key_encrypt('', keyPair2[0]) self.assertTrue('' == crypto.encryption.pub_key_decrypt(blankMessage, privkey=keyPair2[1], encodedData=False).decode()) # Try to encrypt arbitrary bytes crypto.encryption.pub_key_encrypt(os.urandom(32), keyPair2[0])
def test_contact_set_info(self): contact = crypto.generate()[0] contact = contactmanager.ContactManager(contact, saveUser=True) fileLocation = '%s/contacts/%s.json' % (identifyhome.identify_home(), contact.publicKey) contact.set_info('alias', 'bob') self.assertTrue(os.path.exists(fileLocation)) with open(fileLocation, 'r') as data: data = data.read() data = json.loads(data) self.assertEqual(data['alias'], 'bob')
def generateForwardKey(self, expire=DEFAULT_KEY_EXPIRE): # Generate a forward secrecy key for the peer conn = sqlite3.connect(dbfiles.forward_keys_db, timeout=10) c = conn.cursor() # Prepare the insert time = epoch.get_epoch() newKeys = onionrcrypto.generate() newPub = bytesconverter.bytes_to_str(newKeys[0]) newPriv = bytesconverter.bytes_to_str(newKeys[1]) command = (self.publicKey, newPub, newPriv, time, expire + time) c.execute("INSERT INTO myForwardKeys VALUES(?, ?, ?, ?, ?);", command) conn.commit() conn.close() return newPub
def test_delete_contact(self): contact = crypto.generate()[0] contact = contactmanager.ContactManager(contact, saveUser=True) fileLocation = '%s/contacts/%s.json' % (identifyhome.identify_home(), contact.publicKey) self.assertFalse(os.path.exists(fileLocation)) with open(fileLocation, 'w') as contactFile: contactFile.write('{"alias": "test"}') self.assertTrue(os.path.exists(fileLocation)) contact.delete_contact() self.assertFalse(os.path.exists(fileLocation)) try: contact.get_info('alias') except onionrexceptions.ContactDeleted: pass else: self.assertTrue(False) try: contact.set_info('alias', 'test2') except onionrexceptions.ContactDeleted: pass else: self.assertTrue(False)
def test_is_friend(self): contact = crypto.generate()[0] contact = onionrusers.OnionrUser(contact, saveUser=True) self.assertFalse(contact.isFriend()) contact.setTrust(1) self.assertTrue(contact.isFriend())
def test_contact_create(self): contact = crypto.generate()[0] contact = contactmanager.ContactManager(contact, saveUser=True) self.assertTrue(contact.publicKey in keydb.listkeys.list_peers())
def test_contact_init_no_save(self): contact = crypto.generate()[0] contact = contactmanager.ContactManager(contact) self.assertFalse(contact.publicKey in keydb.listkeys.list_peers())
def test_users(self): keypair = crypto.generate() onionrusers.OnionrUser(keypair[0])