blob: 193be4d2649607255606af147c6f7fdf9c490c46 [file] [log] [blame]
# 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 logging
import time
from autotest_lib.client.common_lib import error
# USB ID for the virtual U2F HID Device.
U2F_VID = '18D1'
U2F_PID = '502C'
QUERY_U2F_DEVICE_ATTEMPTS=5
QUERY_U2F_RETRY_DELAY_SEC=1
def ChromeOSLogin(client):
"""Logs in to ChromeOS, so that u2fd can start up."""
client.run('/usr/local/autotest/bin/autologin.py')
def ChromeOSLogout(client):
"""Logs out of ChromeOS, to return the device to a known state."""
client.run('restart ui')
def StartU2fd(client):
"""Starts u2fd on the client.
@param client: client object to run commands on.
"""
client.run('touch /var/lib/u2f/force/u2f.force')
client.run('restart u2fd')
path = '/sys/bus/hid/devices/*:%s:%s.*/hidraw' % (U2F_VID, U2F_PID)
attempts = 0
while attempts < QUERY_U2F_DEVICE_ATTEMPTS:
attempts += 1
try:
return '/dev/' + client.run('ls ' + path).stdout.strip()
except error.AutoservRunError, e:
logging.info('Could not find U2F device on attempt ' +
str(attempts))
time.sleep(QUERY_U2F_RETRY_DELAY_SEC)
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)