# Copyright 2018 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import time def StartU2fd(client): """Starts u2fd on the client. @param client: client object to run commands on. """ client.run('stop u2fd', ignore_status=True) old_dev = client.run('ls /dev/hidraw*', ignore_status=True).stdout.strip().split('\n') client.run_background('u2fd --force_g2f') # TODO(louiscollard): Replace this with something less fragile. cr50_dev = set() timeout_count = 0 while (len(cr50_dev) == 0 and timeout_count < 5): time.sleep(1) timeout_count += 1 new_dev = client.run('ls /dev/hidraw*', ignore_status=True).stdout.strip().split('\n') cr50_dev = set(new_dev) - set(old_dev) return cr50_dev.pop() def G2fRegister(client, dev, challenge, application, p1=0): """Returns a dictionary with TPM status. @param client: client object to run commands on. """ return client.run('g2ftool --reg --dev=' + dev + ' --challenge=' + challenge + ' --application=' + application + ' --p1=' + str(p1), ignore_status=True) def G2fAuth(client, dev, challenge, application, key_handle, p1=0): """Returns a dictionary with TPM status. @param client: client object to run commands on. """ return client.run('g2ftool --auth --dev=' + dev + ' --challenge=' + challenge + ' --application=' + application + ' --key_handle=' + key_handle + ' --p1=' + str(p1), ignore_status=True)