Ejemplo n.º 1
0
def test_unpack_valid_header(test_case):
    header = uh.FirmwareUpdateHeader()
    header.unpack(test_case["data"])

    assert header.firmware_version == test_case["firmware_version"]
    assert header.firmware_size == test_case["firmware_size"]
    assert header.firmware_hash == test_case["firmware_hash"]
    assert header.campaign_id == test_case["campaign_id"]
    assert header.firmware_signature == test_case["firmware_signature"]
Ejemplo n.º 2
0
def test_pack_header(test_case):
    header = uh.FirmwareUpdateHeader()
    header.firmware_version = test_case["firmware_version"]
    header.firmware_size = test_case["firmware_size"]
    header.firmware_hash = test_case["firmware_hash"]
    header.campaign_id = test_case["campaign_id"]
    header.firmware_signature = test_case["firmware_signature"]

    data = header.pack()
    assert data == test_case["data"]
Ejemplo n.º 3
0
def test_pack_invalid_campaign_id():
    header = uh.FirmwareUpdateHeader()
    header.campaign_id = b"\x00\x00\x00\x00"
    with pytest.raises(uh.FormatError, match=r"size"):
        data = header.pack()
Ejemplo n.º 4
0
def test_pack_invalid_firmware_hash():
    header = uh.FirmwareUpdateHeader()
    header.firmware_hash = b"\x00\x00\x00\x00"
    with pytest.raises(uh.FormatError, match=r"size"):
        data = header.pack()
Ejemplo n.º 5
0
def test_unpack_invalid_header(test_case):
    header = uh.FirmwareUpdateHeader()
    with pytest.raises(
        uh.FormatError, match=test_case["error_message_pattern"]
    ):
        header.unpack(test_case["data"])
#!/usr/bin/env python3
# Copyright (c) 2019 Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
"""
Write dummy firmware update HEADER data to stdout.

The "version" field will be set to the current UNIX timestamp.
The "campaign_id" field will be set to zeroes.
The "firmware_hash" field will be set to zeroes.
The "magic" and "checksum" fields will be valid"

The existence of this script is just a hack - we need to run some Python code
when an MBL image is being created to add a firmware update HEADER file, but we
can't just add that Python code straight into a function called by BitBake
because BitBake calls functions using the host's Python installation, and we
need to use a library that the host installation probably doesn't have.

To get around that, put the code into this script, which can be run from a
BitBake function using a version of Python that has access to the required
library.
"""
import sys
import time
import mbl.firmware_update_header_util as hu

header = hu.FirmwareUpdateHeader()
header.firmware_version = int(time.time())
header_data = header.pack()
sys.stdout.buffer.write(header_data)