• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2018 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import time
6
7def StartU2fd(client):
8    """Starts u2fd on the client.
9
10    @param client: client object to run commands on.
11    """
12    client.run('stop u2fd', ignore_status=True)
13    old_dev = client.run('ls /dev/hidraw*',
14                          ignore_status=True).stdout.strip().split('\n')
15    client.run_background('u2fd --force_g2f')
16
17    # TODO(louiscollard): Replace this with something less fragile.
18    cr50_dev = set()
19    timeout_count = 0
20    while (len(cr50_dev) == 0 and timeout_count < 5):
21      time.sleep(1)
22      timeout_count += 1
23      new_dev = client.run('ls /dev/hidraw*',
24                            ignore_status=True).stdout.strip().split('\n')
25      cr50_dev = set(new_dev) - set(old_dev)
26
27    return cr50_dev.pop()
28
29def G2fRegister(client, dev, challenge, application, p1=0):
30    """Returns a dictionary with TPM status.
31
32    @param client: client object to run commands on.
33    """
34    return client.run('g2ftool --reg --dev=' + dev +
35                      ' --challenge=' + challenge +
36                      ' --application=' + application +
37                      ' --p1=' + str(p1),
38                      ignore_status=True)
39
40def G2fAuth(client, dev, challenge, application, key_handle, p1=0):
41    """Returns a dictionary with TPM status.
42
43    @param client: client object to run commands on.
44    """
45    return client.run('g2ftool --auth --dev=' + dev +
46                      ' --challenge=' + challenge +
47                      ' --application=' + application +
48                      ' --key_handle=' + key_handle +
49                      ' --p1=' + str(p1),
50                      ignore_status=True)
51