You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.1 KiB
66 lines
2.1 KiB
# 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)
|