Пример #1
0
    def test_passphrase(self):
        # Enable passphrase
        self.do_command(self.dev_args + ['togglepassphrase'])

        # A passphrase will need to be sent
        result = self.do_command(self.dev_args + ['enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertTrue(dev['needs_passphrase_sent'])
        result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                fpr = dev['fingerprint']

        if self.emulator.model == 't':
            # Trezor T: A different passphrase would not change the fingerprint
            result = self.do_command(self.dev_args +
                                     ['-p', 'pass2', 'enumerate'])
            for dev in result:
                if dev['type'] == 'trezor' and dev[
                        'path'] == 'udp:127.0.0.1:21324':
                    self.assertFalse(dev['needs_passphrase_sent'])
                    self.assertEqual(dev['fingerprint'], fpr)
        else:
            # Trezor 1: A different passphrase will change the fingerprint
            result = self.do_command(self.dev_args +
                                     ['-p', 'pass2', 'enumerate'])
            for dev in result:
                if dev['type'] == 'trezor' and dev[
                        'path'] == 'udp:127.0.0.1:21324':
                    self.assertFalse(dev['needs_passphrase_sent'])
                    self.assertNotEqual(dev['fingerprint'], fpr)

        # Clearing the session and starting a new one with a new passphrase should change the passphrase
        self.client.call(messages.Initialize())
        result = self.do_command(self.dev_args + ['-p', 'pass3', 'enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                self.assertNotEqual(dev['fingerprint'], fpr)

        # Disable passphrase
        self.do_command(self.dev_args + ['togglepassphrase'])

        # There's no passphrase
        result = self.do_command(self.dev_args + ['enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                self.assertEquals(dev['fingerprint'], '95d8f670')
        # Setting a passphrase won't change the fingerprint
        result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                self.assertEquals(dev['fingerprint'], '95d8f670')
Пример #2
0
    def test_passphrase(self):
        # There's no passphrase
        result = self.do_command(self.dev_args + ['enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                self.assertEquals(dev['fingerprint'], '95d8f670')
        # Setting a passphrase won't change the fingerprint
        result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                self.assertEquals(dev['fingerprint'], '95d8f670')

        # Set a passphrase
        device.wipe(self.client)
        load_device_by_mnemonic(client=self.client, mnemonic='alcohol woman abuse must during monitor noble actual mixed trade anger aisle', pin='', passphrase_protection=True, label='test')
        self.client.call(messages.ClearSession())

        # A passphrase will need to be sent
        result = self.do_command(self.dev_args + ['enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertTrue(dev['needs_passphrase_sent'])
        result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                fpr = dev['fingerprint']

        if self.emulator.model_t:
            # Trezor T: A different passphrase would not change the fingerprint
            result = self.do_command(self.dev_args + ['-p', 'pass2', 'enumerate'])
            for dev in result:
                if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                    self.assertFalse(dev['needs_passphrase_sent'])
                    self.assertEqual(dev['fingerprint'], fpr)
        else:
            # Trezor 1: A different passphrase will change the fingerprint
            result = self.do_command(self.dev_args + ['-p', 'pass2', 'enumerate'])
            for dev in result:
                if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                    self.assertFalse(dev['needs_passphrase_sent'])
                    self.assertNotEqual(dev['fingerprint'], fpr)

        # Clearing the session and starting a new one with a new passphrase should change the passphrase
        self.client.call(messages.Initialize())
        result = self.do_command(self.dev_args + ['-p', 'pass3', 'enumerate'])
        for dev in result:
            if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
                self.assertFalse(dev['needs_passphrase_sent'])
                self.assertNotEqual(dev['fingerprint'], fpr)