示例#1
0
  def testMsg(self):
    fake_hid_dev = util.FakeHidDevice(
        bytearray([0x00, 0x00, 0x00, 0x01]), bytearray([0x01, 0x90, 0x00]))
    t = hidtransport.UsbHidTransport(fake_hid_dev)

    reply = t.SendMsgBytes([0x00, 0x01, 0x00, 0x00])
    self.assertEquals(reply, bytearray([0x01, 0x90, 0x00]))
示例#2
0
  def testFragmentedResponseMsg(self):
    body = bytearray([x % 256 for x in range(0, 1000)])
    fake_hid_dev = util.FakeHidDevice(bytearray([0x00, 0x00, 0x00, 0x01]), body)
    t = hidtransport.UsbHidTransport(fake_hid_dev)

    reply = t.SendMsgBytes([0x00, 0x01, 0x00, 0x00])
    # Confirm we properly reassemble the message
    self.assertEquals(reply, bytearray(x % 256 for x in range(0, 1000)))
示例#3
0
 def testFragmentedApdu(self):
     dev = util.FakeHidDevice(cid_to_allocate=None,
                              msg_reply=range(85, 0, -1))
     dev.Write([0, 0, 0, 1, 0x83, 0, 100] + [x for x in range(57)])
     dev.Write([0, 0, 0, 1, 0] + [x for x in range(57, 100)])
     self.assertEquals(dev.Read(), [0, 0, 0, 1, 0x83, 0, 85] +
                       [x for x in range(85, 28, -1)])
     self.assertEquals(dev.Read(),
                       [0, 0, 0, 1, 0] + [x for x in range(28, 0, -1)] +
                       [0 for _ in range(31)])
示例#4
0
  def testFragmentedSendApdu(self):
    body = bytearray(x % 256 for x in range(0, 1000))
    fake_hid_dev = util.FakeHidDevice(
        bytearray([0x00, 0x00, 0x00, 0x01]), [0x90, 0x00])
    t = hidtransport.UsbHidTransport(fake_hid_dev)

    reply = t.SendMsgBytes(body)
    self.assertEquals(reply, bytearray([0x90, 0x00]))
    # 1 init packet from creating transport, 18 packets to send
    # the fragmented message
    self.assertEquals(len(fake_hid_dev.received_packets), 18)
示例#5
0
 def testErrorBusy(self):
     dev = util.FakeHidDevice(cid_to_allocate=None)
     dev.SetChannelBusyCount(2)
     dev.Write([0, 0, 0, 1, 0x81, 0, 3, 1, 2, 3])
     self.assertEquals(dev.Read(),
                       [0, 0, 0, 1, 0xbf, 0, 1, 6] + [0 for _ in range(56)])
     dev.Write([0, 0, 0, 1, 0x81, 0, 3, 1, 2, 3])
     self.assertEquals(dev.Read(),
                       [0, 0, 0, 1, 0xbf, 0, 1, 6] + [0 for _ in range(56)])
     dev.Write([0, 0, 0, 1, 0x81, 0, 3, 1, 2, 3])
     self.assertEquals(dev.Read(), [0, 0, 0, 1, 0x81, 0, 3, 1, 2, 3] +
                       [0 for _ in range(54)])
示例#6
0
  def testMsgBusy(self):
    fake_hid_dev = util.FakeHidDevice(
        bytearray([0x00, 0x00, 0x00, 0x01]), bytearray([0x01, 0x90, 0x00]))
    t = hidtransport.UsbHidTransport(fake_hid_dev)

    # Each call will retry twice: the first attempt will fail after 2 retreis,
    # the second will succeed on the second retry.
    fake_hid_dev.SetChannelBusyCount(3)
    with mock.patch.object(hidtransport, 'time') as _:
      self.assertRaisesRegexp(errors.HidError, '^Device Busy', t.SendMsgBytes,
                              [0x00, 0x01, 0x00, 0x00])

      reply = t.SendMsgBytes([0x00, 0x01, 0x00, 0x00])
      self.assertEquals(reply, bytearray([0x01, 0x90, 0x00]))
示例#7
0
  def testPing(self):
    fake_hid_dev = util.FakeHidDevice(bytearray([0x00, 0x00, 0x00, 0x01]))
    t = hidtransport.UsbHidTransport(fake_hid_dev)

    reply = t.SendPing('1234')
    self.assertEquals(reply, '1234')
示例#8
0
 def testInit(self):
   fake_hid_dev = util.FakeHidDevice(bytearray([0x00, 0x00, 0x00, 0x01]))
   t = hidtransport.UsbHidTransport(fake_hid_dev)
   self.assertEquals(t.cid, bytearray([0x00, 0x00, 0x00, 0x01]))
   self.assertEquals(t.u2fhid_version, 0x01)
示例#9
0
 def testSimplePing(self):
     dev = util.FakeHidDevice(cid_to_allocate=None)
     dev.Write([0, 0, 0, 1, 0x81, 0, 3, 1, 2, 3])
     self.assertEquals(dev.Read(), [0, 0, 0, 1, 0x81, 0, 3, 1, 2, 3] +
                       [0 for _ in range(54)])