Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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])
Ejemplo n.º 6
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')
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
 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())
Ejemplo n.º 10
0
 def test_contact_create(self):
     contact = crypto.generate()[0]
     contact = contactmanager.ContactManager(contact, saveUser=True)
     self.assertTrue(contact.publicKey in keydb.listkeys.list_peers())
Ejemplo n.º 11
0
 def test_contact_init_no_save(self):
     contact = crypto.generate()[0]
     contact = contactmanager.ContactManager(contact)
     self.assertFalse(contact.publicKey in keydb.listkeys.list_peers())
Ejemplo n.º 12
0
 def test_users(self):
     keypair = crypto.generate()
     onionrusers.OnionrUser(keypair[0])