Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(680)

Side by Side Diff: autotest/client/hardware_TPMCheck/hardware_TPMCheck.py

Issue 4974004: Move hardware_TPMCheck into third_party/autotest repo. (Closed) Base URL: http://git.chromium.org/git/vboot_reference.git@master
Patch Set: Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « autotest/client/hardware_TPMCheck/control ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (c) 2010 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
5 import logging, os, re
6 from autotest_lib.client.bin import test, utils
7 from autotest_lib.client.common_lib import error
8
9 def old_or_missing_firmware_version():
10 f = open("/sys/devices/platform/chromeos_acpi/FWID")
11 if not f:
12 return True
13 version = f.readline().strip()
14 logging.info("firmware version: %s", version)
15 # Expect a dot-separated list of 6 elements. Discard 1st element.
16 v = re.split("\.", version)[1:]
17 w = re.split("\.", "any-nickname.03.60.1118.0036.")[1:]
18 if len(v) != len(w):
19 raise error.TestError("malformed firmware version %s" % version)
20 return v < w
21
22 def dict_from_command(command):
23 dict = {}
24 out = os.popen(command)
25 for linecr in out.readlines():
26 line = linecr.strip()
27 match = re.match("([^ ]+) (.*)", line)
28 k = match.group(1)
29 v = match.group(2)
30 dict[k] = v
31 return dict
32
33 def expect(d, key, value):
34 if (d[key] != value):
35 raise error.TestError("expecting %s = %s, observing %s = %s" %
36 (key, value, key, d[key]))
37
38 def checkp(space, permission):
39 c = "tpmc getp %s" % space
40 l = os.popen(c).readline()
41 if (not re.match(".*%s" % permission, l)):
42 raise error.TestError("invalid response to %s: %s" % (c, l))
43
44 class hardware_TPMCheck(test.test):
45 version = 1
46
47 def run_once(self):
48
49 if old_or_missing_firmware_version():
50 logging.warning("skipping test because firmware " +
51 "version missing or deemed too old")
52 return
53
54 try:
55 utils.system("stop tcsd", ignore_status=True)
56
57 # Check volatile (ST_CLEAR) flags
58 d = dict_from_command("tpmc getvf");
59 expect(d, "deactivated", "0")
60 expect(d, "physicalPresence", "0")
61 expect(d, "physicalPresenceLock", "1")
62 expect(d, "bGlobalLock", "1")
63
64 # Check permanent flags
65 d = dict_from_command("tpmc getpf");
66 expect(d, "disable", "0")
67 expect(d, "ownership", "1")
68 expect(d, "deactivated", "0")
69 expect(d, "physicalPresenceHWEnable", "0")
70 expect(d, "physicalPresenceCMDEnable", "1")
71 expect(d, "physicalPresenceLifetimeLock", "1")
72 expect(d, "nvLocked", "1")
73
74 # Check space permissions
75 checkp("0x1007", "0x8001")
76 checkp("0x1008", "0x1")
77
78 # Check kernel space UID
79 l = os.popen("tpmc read 0x1008 0x5").readline()
80 if (not re.match(".* 4c 57 52 47$", l)):
81 raise error.TestError("invalid kernel space UID: %s" % l)
82
83 finally:
84 utils.system("start tcsd", ignore_status=True)
OLDNEW
« no previous file with comments | « autotest/client/hardware_TPMCheck/control ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698