test: Rename sha to sha_algo and pass it around

Rename this argument and pass it to each function that needs it, instead of
making it global.

Suggested-by: Stephen Warren <swarren@nvidia.com>
Suggested-by: Teddy Reed <teddy.reed@gmail.com>

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2016-07-31 17:35:06 -06:00 committed by Tom Rini
parent ec70f8a911
commit ac9a23cffc
1 changed files with 28 additions and 25 deletions

View File

@ -53,19 +53,21 @@ def test_vboot(u_boot_console):
util.run_and_log(cons, 'dtc %s %s%s -O dtb ' util.run_and_log(cons, 'dtc %s %s%s -O dtb '
'-o %s%s' % (dtc_args, datadir, dts, tmpdir, dtb)) '-o %s%s' % (dtc_args, datadir, dts, tmpdir, dtb))
def run_bootm(test_type, expect_string): def run_bootm(sha_algo, test_type, expect_string):
"""Run a 'bootm' command U-Boot. """Run a 'bootm' command U-Boot.
This always starts a fresh U-Boot instance since the device tree may This always starts a fresh U-Boot instance since the device tree may
contain a new public key. contain a new public key.
Args: Args:
test_type: A string identifying the test type test_type: A string identifying the test type.
expect_string: A string which is expected in the output expect_string: A string which is expected in the output.
sha_algo: Either 'sha1' or 'sha256', to select the algorithm to
use.
""" """
cons.cleanup_spawn() cons.cleanup_spawn()
cons.ensure_spawned() cons.ensure_spawned()
cons.log.action('%s: Test Verified Boot Run: %s' % (algo, test_type)) cons.log.action('%s: Test Verified Boot Run: %s' % (sha_algo, test_type))
output = cons.run_command_list( output = cons.run_command_list(
['sb load hostfs - 100 %stest.fit' % tmpdir, ['sb load hostfs - 100 %stest.fit' % tmpdir,
'fdt addr 100', 'fdt addr 100',
@ -83,29 +85,30 @@ def test_vboot(u_boot_console):
util.run_and_log(cons, [mkimage, '-D', dtc_args, '-f', util.run_and_log(cons, [mkimage, '-D', dtc_args, '-f',
'%s%s' % (datadir, its), fit]) '%s%s' % (datadir, its), fit])
def sign_fit(): def sign_fit(sha_algo):
"""Sign the FIT """Sign the FIT
Signs the FIT and writes the signature into it. It also writes the Signs the FIT and writes the signature into it. It also writes the
public key into the dtb. public key into the dtb.
Args:
sha_algo: Either 'sha1' or 'sha256', to select the algorithm to
use.
""" """
cons.log.action('%s: Sign images' % algo) cons.log.action('%s: Sign images' % sha_algo)
util.run_and_log(cons, [mkimage, '-F', '-k', tmpdir, '-K', dtb, util.run_and_log(cons, [mkimage, '-F', '-k', tmpdir, '-K', dtb,
'-r', fit]) '-r', fit])
def test_with_algo(sha): def test_with_algo(sha_algo):
"""Test verified boot with the given hash algorithm. """Test verified boot with the given hash algorithm.
This is the main part of the test code. The same procedure is followed This is the main part of the test code. The same procedure is followed
for both hashing algorithms. for both hashing algorithms.
Args: Args:
sha: Either 'sha1' or 'sha256', to select the algorithm to use sha_algo: Either 'sha1' or 'sha256', to select the algorithm to
use.
""" """
global algo
algo = sha
# Compile our device tree files for kernel and U-Boot. These are # Compile our device tree files for kernel and U-Boot. These are
# regenerated here since mkimage will modify them (by adding a # regenerated here since mkimage will modify them (by adding a
# public key) below. # public key) below.
@ -113,26 +116,26 @@ def test_vboot(u_boot_console):
dtc('sandbox-u-boot.dts') dtc('sandbox-u-boot.dts')
# Build the FIT, but don't sign anything yet # Build the FIT, but don't sign anything yet
cons.log.action('%s: Test FIT with signed images' % algo) cons.log.action('%s: Test FIT with signed images' % sha_algo)
make_fit('sign-images-%s.its' % algo) make_fit('sign-images-%s.its' % sha_algo)
run_bootm('unsigned images', 'dev-') run_bootm(sha_algo, 'unsigned images', 'dev-')
# Sign images with our dev keys # Sign images with our dev keys
sign_fit() sign_fit(sha_algo)
run_bootm('signed images', 'dev+') run_bootm(sha_algo, 'signed images', 'dev+')
# Create a fresh .dtb without the public keys # Create a fresh .dtb without the public keys
dtc('sandbox-u-boot.dts') dtc('sandbox-u-boot.dts')
cons.log.action('%s: Test FIT with signed configuration' % algo) cons.log.action('%s: Test FIT with signed configuration' % sha_algo)
make_fit('sign-configs-%s.its' % algo) make_fit('sign-configs-%s.its' % sha_algo)
run_bootm('unsigned config', '%s+ OK' % algo) run_bootm(sha_algo, 'unsigned config', '%s+ OK' % sha_algo)
# Sign images with our dev keys # Sign images with our dev keys
sign_fit() sign_fit(sha_algo)
run_bootm('signed config', 'dev+') run_bootm(sha_algo, 'signed config', 'dev+')
cons.log.action('%s: Check signed config on the host' % algo) cons.log.action('%s: Check signed config on the host' % sha_algo)
util.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', tmpdir, util.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', tmpdir,
'-k', dtb]) '-k', dtb])
@ -147,9 +150,9 @@ def test_vboot(u_boot_console):
util.run_and_log(cons, 'fdtput -t bx %s %s value %s' % util.run_and_log(cons, 'fdtput -t bx %s %s value %s' %
(fit, sig_node, sig)) (fit, sig_node, sig))
run_bootm('Signed config with bad hash', 'Bad Data Hash') run_bootm(sha_algo, 'Signed config with bad hash', 'Bad Data Hash')
cons.log.action('%s: Check bad config on the host' % algo) cons.log.action('%s: Check bad config on the host' % sha_algo)
util.run_and_log_expect_exception(cons, [fit_check_sign, '-f', fit, util.run_and_log_expect_exception(cons, [fit_check_sign, '-f', fit,
'-k', dtb], 1, 'Failed to verify required signature') '-k', dtb], 1, 'Failed to verify required signature')