Compare commits

...

7 Commits

Author SHA1 Message Date
anonymix007 d7f371cd0b
Merge 80db39ea06 into c8d45ebfd6 2024-11-07 00:22:56 +03:00
anonymix007 80db39ea06 fundamental: Fix buffer size in get_chid
NUL byte should not be hashed
2024-11-07 00:22:24 +03:00
anonymix007 5725120e3a fundamental: Fix iteration count in chid_calculate 2024-11-07 00:22:24 +03:00
anonymix007 7cb7b6e10e fundamental: move string includes from chid-fundamental.c to header 2024-11-07 00:22:24 +03:00
anonymix007 a591ed2664 test: Add chid-fundamental test 2024-11-07 00:22:16 +03:00
Lennart Poettering c8d45ebfd6 update TODO 2024-11-06 22:19:01 +01:00
Lennart Poettering acc8bae0b3 NEWS: various cleanups 2024-11-06 22:18:55 +01:00
7 changed files with 207 additions and 88 deletions

172
NEWS
View File

@ -294,8 +294,8 @@ CHANGES WITH 257 in spe:
systemd-logind:
* New DesignatedMaintenanceTime= configuration option allows
shutdowns to be automatically scheduled at the specified time.
* New DesignatedMaintenanceTime= configuration option allows shutdowns
to be automatically scheduled at the specified time.
* logind now reacts to Ctrl-Alt-Shift-Esc being pressed. It will send
out a org.freedesktop.login1.SecureAttentionKey signal, indicating a
@ -309,8 +309,8 @@ CHANGES WITH 257 in spe:
session switches away.
* systemd-logind now exposes two D-Bus properties CanLock and CanIdle
for all sessions that indicate whether the session's class supports
screen locking and idle detection.
for all sessions. These properties indicate whether the session's
class supports screen locking and idleness detection.
* systemd-inhibit now allows interactive polkit authorization. It
gained a --no-ask-password option to suppress it.
@ -321,12 +321,13 @@ CHANGES WITH 257 in spe:
Machines started via the systemd-vmspawn@.service unit will now be
registered with systemd-machined.
* systemd-machined gained a pretty complete set of Varlink interfaces
to its functionality as alternative to the existing D-Bus interface.
* systemd-machined gained a pretty complete set of Varlink APIs
exposing its functionality. This is an alternative to the
pre-existing D-Bus interface.
systemd-resolved:
* resolvconf command now supports '-p' switch. If specified, the
* The resolvconf command now supports '-p' switch. If specified, the
interface will not be used as the default route for domain name
lookups.
@ -338,11 +339,11 @@ CHANGES WITH 257 in spe:
* IPv6 address labels can be configured in a new [IPv6AddressLabel]
section with Prefix= and Label= settings.
* 'networkctl edit' can now read the new contents from standard input
with the new --stdin option.
* 'networkctl edit' can now read the new file contents from standard
input with the new --stdin option.
* 'networkctl edit' and 'cat' now supports editing .netdev files by
link. 'networkctl cat' can also list all configuration files
* 'networkctl edit' and 'cat' now support editing/showing .netdev files
by link. 'networkctl cat' can also list all configuration files
associated with an interface at once with ':all'.
* networkctl gained a --no-ask-password option to suppress interactive
@ -351,7 +352,7 @@ CHANGES WITH 257 in spe:
* "mac" has been added to the default AlternativeNamesPolicy= setting
for network links (via 99-default.link). This means "enx*" interface
names will now be added to the list of alternative interface names by
default for all interfaces that have a MAC address assigned to them
default, for all interfaces that have a MAC address assigned
by hardware.
* networkd .netdev bridge devices gained a new setting FDBMaxLearned=
@ -366,18 +367,18 @@ CHANGES WITH 257 in spe:
thus highlighting conflict of ownership/management of these knobs.
* systemd-networkd will now make RFC9463 DNR fields available to
systemd-resolved, for automatic DoT configuration, and similar.
systemd-resolved, for automatic DNS DoT configuration, and similar.
systemd-boot, systemd-stub, and related tools:
* The EFI stub now supports loading of .ucode sections with microcode
from PE add-on files. It now also supports loading .initrd sections
from PE add-on files. It also now supports loading .initrd sections
from PE add-on files.
* A new .profile PE section type is now documented and supported in
systemd-measure, ukify, systemd-stub and systemd-boot. Those new
systemd-measure, ukify, systemd-stub and systemd-boot. These new
sections allow multiple "profiles" to be stored together in the UKI,
with .profile sections creating groupings of sections in the UKI,
where each .profile section creates groupings of sections in the UKI,
allowing some sections to be shared and other sections like .cmdline
or .initrd unique to the profile. This may be used to provide a
single UKI that synthesizes multiple menu items in the boot menu (for
@ -390,10 +391,10 @@ CHANGES WITH 257 in spe:
can contain multiple .dtbauto sections, and the 'compatible' string
therein will be compared with the equivalent field in the DTB
provided by the firmware, if present. If absent, SMBIOS will be used
to calculate hardware IDs and compare them with the content of
.hwids. This allows including multiple DTBs in a single UKI, with
the bootloader automatically selecting the correct one for the
current hardware.
to calculate hardware IDs (CHIDs) and look them up in the content of
.hwids, hopefully revealing an fallback 'compatible' string. This
allows including multiple DTBs in a single UKI, with systemd-stub
automatically loading the correct one for the current hardware.
* ukify gained an --extend switch to import an existing UKI to
be extended, and a --measure-base= switch to support measurement
@ -406,25 +407,26 @@ CHANGES WITH 257 in spe:
* systemd-stub will report the partition UUID and image identifier its
UKI executable is placed on separately from the data systemd-boot
provides about where to find its own executable. This is useful when
systemd-boot and UKIs are placed on distinct partitions (i.e. ESP and
XBOOTLDR).
provides about where to find its own executable, via EFI
variables. This is useful when systemd-boot and UKIs are placed on
distinct partitions (i.e. ESP and XBOOTLDR).
* bootctl --print-loader-path and --print-stub-path that output the
path to the boot loader or UKI used for the current boot.
* bootctl gained new switches --print-loader-path and --print-stub-path
that output the path to the boot loader or UKI used for the current
boot.
* bootctl kernel-identify now supports identifying EFI add-ons.
* bootctl kernel-identify now recognizes EFI add-ons.
* bootctl gained a --random-seed=yes|no option to control provisioning
of the random seed file in ESP. (This is useful when producing an
image that will be used multiple times.)
of the random seed file in the ESP. (This is useful when producing an
image that will be used in multiple instances.)
* bootctl now optionally supports installing UEFI Secure Boot databases
(ESLs) for systemd-boot to pick up and automatically enroll if the
system is booted in Setup Mode. This is controlled via bootctl's new
--secure-boot-auto-enroll=yes switch (and some auxiliary ones). A
certificate can be provided in DER format, and it is automatically
converted into an ESL, as needed.
(i.e. db/dbx/… databases in ESL format) for systemd-boot to pick up
and automatically enroll if the system is booted in Setup Mode. This
is controlled via bootctl's new --secure-boot-auto-enroll=yes switch
(and some auxiliary ones). A certificate can be provided in DER
format, and is automatically converted into an ESL, as needed.
* bootctl, systemd-measure, systemd-repart when referencing signing
keys on OpenSSL engines may now query for PINs and similar via
@ -432,9 +434,9 @@ CHANGES WITH 257 in spe:
caching and UI).
* A new systemd-sbsign tool has been added, that can be used to sign
EFI binaries (PE). This tool supports OpenSSL engines and providers,
with pin caching support for PKCS11. ukify supports it as an
alternative to sbsigntool and pesign.
EFI binaries (PE) for Secure Boot. This tool supports OpenSSL engines
and providers, with pin caching support for PKCS11. ukify supports it
as an alternative to sbsigntool and pesign.
The journal:
@ -469,11 +471,11 @@ CHANGES WITH 257 in spe:
and AppStream metadata.
* Transfer definitions for systemd-sysupdate are supposed to carry the
".transfer" suffix now, changing from ".conf". The latter is
supported for compatibility too, but it's recommended to rename all
files reflecting this suffix change.
".transfer" suffix now, changing from ".conf". The latter remains
supported for compatibility, but it's recommended to rename all files
reflecting this suffix change.
* systemd-sysupdate now supports a new ".feature" files that may be
* systemd-sysupdate now supports new ".feature" files that may be
used in conjunction with ".transfer" files to group them together, and
allow them to be turned off or on, individually per group.
@ -483,8 +485,8 @@ CHANGES WITH 257 in spe:
available has been moved from systemd-creds to systemd-analyze.
* systemd-tpm2-setup will gracefully handle TPMs that have a PIN set on
the TPM, and not automatically set up a Storage Root Key (SRK) in
that case.
the TPM, and not attempt to automatically set up a Storage Root Key
(SRK) in that case.
* New crypttab option password-cache=yes|no|read-only can be used to
customize password caching.
@ -526,7 +528,7 @@ CHANGES WITH 257 in spe:
start the specified executable on the remote side, and communicate
with the remote process using the Varlink protocol.
"ssh:" address specification has been renamed to "ssh-unix:"
The "ssh:" address specification has been renamed to "ssh-unix:"
(reflecting the fact it is used to connect to a remote AF_UNIX socket
via SSH). The old syntax is still supported for backwards
compatibility.
@ -547,7 +549,8 @@ CHANGES WITH 257 in spe:
to enable internal compression in filesystems created offline.
* systemd-repart understands a new MakeSymlinks= option to create one
or more symlinks (each specified as a symlink name and target).
or more symlinks (each specified as a symlink name and target) within
a newly formatted file system.
* systemd-repart gained a new SupplementFor= setting that allows
allocating a partition only if some other existing partition cannot
@ -560,15 +563,15 @@ CHANGES WITH 257 in spe:
systemd-ssh-proxy:
* systemd-ssh-proxy now also supports the "VSOCK MUX" protocol used by
CloudHypervisor/Firecracker to expose AF_VSOCK sockets of the VM on
the host. Or in other words: it's now possible to directly connect to
ssh via AF_VSOCK from hosts to VMs of these two hypervisors
(previously this was only supported for hypervisors which expose
AF_VSOCK on the host as AF_VSOCK, such as qemu).
* systemd-ssh-proxy now also supports the AF_UNIX-based "VSOCK MUX"
protocol used by CloudHypervisor/Firecracker to expose AF_VSOCK
sockets of the VM on the host. Or in other words: it's now possible
to directly connect to ssh via AF_VSOCK from hosts to VMs of these
two hypervisors (previously this was only supported for hypervisors
which expose AF_VSOCK on the host as AF_VSOCK, such as qemu).
* systemd-ssh-proxy can now reference local VMs by their name: connect
to any local VM "foobar" registered with machined via "ssh
to any local VM "foobar" registered with systemd-machined via "ssh
machine/foobar" using the AF_VSOCK protocol.
systemd-analyze:
@ -592,7 +595,6 @@ CHANGES WITH 257 in spe:
* 'busctl monitor' gained new options --limit-messages= and --timeout=
to set the number of matches or limit the runtime of the command.
This is intended to be used in scripts.
* busctl now supports doing method calls with embedded unix file
descriptors.
@ -610,9 +612,9 @@ CHANGES WITH 257 in spe:
systemd-importd:
* A new generator sytemd-import-generator has been added to
synthetisize image download jobs. This provides functionality similar
to importctl, but configured via the kernel command line and system
* A new generator sytemd-import-generator has been added to synthesize
image download jobs. This provides functionality similar to
importctl, but is configured via the kernel command line and system
credentials. It may be used to automatically download sysext,
confext, portable service, nspawn container or vmspawn VM images at
boot.
@ -646,14 +648,17 @@ CHANGES WITH 257 in spe:
* run0 gained a new pair of settings --pty and --pipe that control
whether to invoke the specified binary on a freshly allocated pseudo
TTY, or whether to pass the client's STDIN/STDOUT/STDERR through
directly. run0 also gained a new switch --shell-prompt-prefix= that
permits passing in a string to display on each shell prompt as
prefix. If not specified otherwise this will show a superman emoji
(🦸), in order to visually communicate the temporarily elevated
privileges a run0 session provides. This makes use of the
$SHELL_PROMPT_PREFIX environment variables mentioned above.
directly.
* systemd-run can output some data as JSON via the new --json= option.
* run0 gained a new switch --shell-prompt-prefix= that permits passing
in a string to display on each shell prompt as prefix. If not
specified otherwise this will show a superhero emoji (🦸), in order
to visually communicate the temporarily elevated privileges a run0
session provides. This makes use of the $SHELL_PROMPT_PREFIX
environment variables mentioned below.
* systemd-run can output some of its runtime data in JSON format via
the new --json= option.
systemd-tmpfiles:
@ -683,8 +688,8 @@ CHANGES WITH 257 in spe:
* The new Linux mseal(), listmount(), statmount() syscalls have been
added to relevant system call groups.
* The systemd-ask-password concept has been extended with a per-user
concept, i.e. user programs may now ask for passwords via the same
* The systemd-ask-password logic has been extended with a per-user
scope, i.e. user programs may now ask for passwords via the same
mechanism and the previously system-wide only mechanism.
* A new set of system/service credentials are added:
@ -697,7 +702,8 @@ CHANGES WITH 257 in spe:
useful to visually highlight the fact a specific shell prompt
originates from a specific system, execution context or tool. These
credentials and environment variables are supposed to be generically
useful within and outside of the immediate systemd context.
useful within and outside of the immediate systemd context. It is
also used by 'run0', see above.
* New RELEASE_TYPE=, EXPERIMENT=, EXPERIMENT_URL= fields have been
defined for the /etc/os-release file. For example,
@ -724,28 +730,28 @@ CHANGES WITH 257 in spe:
https://github.com/microsoft/terminal/pull/8055
https://conemu.github.io/en/AnsiEscapeCodes.html#ConEmu_specific_OSC
* systemd-sysusers is now able to create fully locked accounts. For
compatibility it so far created accounts with a locked (i.e. invalid)
password, but not marked locked as a whole. With the new "!" modifier
for "u" lines, it is now possible to create fully locked
accounts. The distinction between accounts with a locked password and
fully locked accounts is relevant when considering non-password forms
of authentication, i.e. SSH and such. It is strongly recommended to
make use of this new feature for almost all system accounts, since
they usually do not require (and should not permit) interactive
logins. All of systemd's own system users have been changed to be
marked as fully locked.
* systemd-sysusers is now able to create fully locked user
accounts. For compatibility it so far created accounts with a locked
(i.e. invalid) password, but not marked locked as a whole. With the
new "!" modifier for "u" lines, it is now possible to create fully
locked accounts. The distinction between accounts with a locked
password and fully locked accounts is relevant when considering
non-password forms of authentication, i.e. SSH and such. It is
strongly recommended to make use of this new feature for almost all
system accounts, since they usually do not require (and should not
permit) interactive logins. All of systemd's own system users have
been changed to be marked as fully locked.
* systemd-coredump now supports a new EnterNamespace= option, which
defaults to off. If enabled systemd-coredump will access the mount
namespace of any crashed process to acquire debug symbol information,
in order to be able to symbolized backtraces. This option is useful
to improve backtraces of processes of containerized
applications. (Note that the host systemd-coredump preferably
dispatches coredump processing to the container itself, if it
supports that. Only full-OS containers which run systemd inside will
support this however, in which case EnterNamespace= might be an
alternative approach to acquire symbolized backtraces.)
in order to be able to symbolize backtraces. This option is useful to
improve backtraces of processes of containerized applications. (Note
that the host systemd-coredump preferably dispatches coredump
processing to the container itself, if it supports that. Only full-OS
containers which run systemd inside will support this however, in
other cases EnterNamespace= might be an suitable approach to acquire
symbolized backtraces.)
Contributions from: A. Wilcox, Abderrahim Kitouni, Adrian Vovk,
Alain Greppin, Allison Karlitskaya, Alyssa Ross, Anders Jonsson,

6
TODO
View File

@ -129,6 +129,12 @@ Deprecations and removals:
Features:
* machined: when registering a machine, also take a relative cgroup path,
relative to the machine's unit. This is useful when registering unpriv
machines, as they might sit down the cgroup tree, below a cgroup delegation
boundary. Then, install an inotify watch on that cgroup to track when the
machine's local cgroup goes down.
* resolved: report ttl in resolution replies if we know it. This data is useful
for tools such as wireguard which want to periodically re-resolve DNS names,
and might want to use the TTL has hint for that.

View File

@ -15,14 +15,12 @@
*/
#if SD_BOOT
# include "efi-string.h"
# include "util.h"
#else
# include <byteswap.h>
# include <string.h>
# include <uchar.h>
# include <utf8.h>
#define strsize16(str) ((char16_strlen(str) + 1) * sizeof(char16_t))
#define strlen16 char16_strlen
#endif
#include "chid-fundamental.h"
@ -44,7 +42,7 @@ static void get_chid(const char16_t *const smbios_fields[static _CHID_SMBIOS_FIE
if ((mask >> i) & 1) {
if (i > 0)
sha1_process_bytes(L"&", 2, &ctx);
sha1_process_bytes(smbios_fields[i], strsize16(smbios_fields[i]), &ctx);
sha1_process_bytes(smbios_fields[i], strlen16(smbios_fields[i]) * sizeof(char16_t), &ctx);
}
uint8_t hash[SHA1_DIGEST_SIZE];
@ -112,7 +110,8 @@ static const uint32_t chid_smbios_table[CHID_TYPES_MAX] = {
void chid_calculate(const char16_t *const smbios_fields[static _CHID_SMBIOS_FIELDS_MAX], EFI_GUID ret_chids[static CHID_TYPES_MAX]) {
assert(smbios_fields);
assert(ret_chids);
for (size_t i = 0; i < _CHID_SMBIOS_FIELDS_MAX; i++)
for (size_t i = 0; i < CHID_TYPES_MAX; i++)
if (chid_smbios_table[i] != 0)
get_chid(smbios_fields, chid_smbios_table[i], &ret_chids[i]);
else

View File

@ -2,6 +2,12 @@
#pragma once
#if SD_BOOT
# include "efi-string.h"
#else
# include <uchar.h>
#endif
#include "efi-fundamental.h"
#include "string-util-fundamental.h"

View File

@ -559,3 +559,22 @@ static inline int run_test_table(void) {
abort(); \
} \
})
#define EFI_GUID_Fmt "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x"
#define EFI_GUID_Arg(guid) (guid).Data1, (guid).Data2, (guid).Data3, \
(guid).Data4[0], (guid).Data4[1], (guid).Data4[2], (guid).Data4[3], \
(guid).Data4[4], (guid).Data4[5], (guid).Data4[6], (guid).Data4[7] \
#define ASSERT_EQ_EFI_GUID(expr1, expr2) \
({ \
typeof(expr1) _expr1 = (expr1); \
typeof(expr2) _expr2 = (expr2); \
if (!efi_guid_equal(_expr1, _expr2)) { \
log_error("%s:%i: Assertion failed: expected \"%s == %s\", but " EFI_GUID_Fmt \
" != " EFI_GUID_Fmt, \
PROJECT_FILE, __LINE__, \
#expr1, #expr2, \
EFI_GUID_Arg(*_expr1), EFI_GUID_Arg(*_expr2)); \
abort(); \
} \
})

View File

@ -58,6 +58,7 @@ simple_tests += files(
'test-cgroup-util.c',
'test-cgroup.c',
'test-chase.c',
'test-chid.c',
'test-clock.c',
'test-color-util.c',
'test-compare-operator.c',

82
src/test/test-chid.c Normal file
View File

@ -0,0 +1,82 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "chid-fundamental.h"
#include "string-util.h"
#include "tests.h"
const char16_t *const test_fields[_CHID_SMBIOS_FIELDS_MAX] = {
[CHID_SMBIOS_MANUFACTURER] = u"Micro-Star International Co., Ltd.",
[CHID_SMBIOS_PRODUCT_NAME] = u"MS-7D70",
[CHID_SMBIOS_PRODUCT_SKU] = u"To be filled by O.E.M.",
[CHID_SMBIOS_FAMILY] = u"To be filled by O.E.M.",
[CHID_SMBIOS_BASEBOARD_PRODUCT] = u"MPG X670E CARBON WIFI (MS-7D70)",
[CHID_SMBIOS_BASEBOARD_MANUFACTURER] = u"Micro-Star International Co., Ltd.",
};
/* Actual output of `fwupdtool hwids`:
BiosVendor: American Megatrends International, LLC.
BiosVersion: 1.E5
BiosMajorRelease: 5
BiosMinorRelease: 32
FirmwareMajorRelease: ff
FirmwareMinorRelease: ff
Manufacturer: Micro-Star International Co., Ltd.
Family: To be filled by O.E.M.
ProductName: MS-7D70
ProductSku: To be filled by O.E.M.
EnclosureKind: 3
BaseboardManufacturer: Micro-Star International Co., Ltd.
BaseboardProduct: MPG X670E CARBON WIFI (MS-7D70)
Hardware IDs
------------
{f59668ca-22bc-52a0-b6b5-1f6ce81b08e0} <- Manufacturer + Family + ProductName + ProductSku + BiosVendor + BiosVersion + BiosMajorRelease + BiosMinorRelease
{f735f7a0-40da-5bfe-8ac2-0090532ee6d0} <- Manufacturer + Family + ProductName + BiosVendor + BiosVersion + BiosMajorRelease + BiosMinorRelease
{25880e68-e005-5ca7-88b6-650de596604f} <- Manufacturer + ProductName + BiosVendor + BiosVersion + BiosMajorRelease + BiosMinorRelease
{01e09b32-de05-56ca-b9d1-9486ad5f381d} <- Manufacturer + Family + ProductName + ProductSku + BaseboardManufacturer + BaseboardProduct
{cad87a11-1813-507b-9aab-9a5f457b649c} <- Manufacturer + Family + ProductName + ProductSku
{377c823d-60d1-55b0-9678-76cd2af9d086} <- Manufacturer + Family + ProductName
{28ac9cf2-5bde-59f7-aebe-4b3d008090fe} <- Manufacturer + ProductSku + BaseboardManufacturer + BaseboardProduct
{e821e0e2-e11a-5e94-bf5d-ffe53c5e5048} <- Manufacturer + ProductSku
{1c092f1d-dc7b-564f-8a3d-128d7292fab8} <- Manufacturer + ProductName + BaseboardManufacturer + BaseboardProduct
{c12c1f4a-332d-5d72-aa36-7a3d413b479a} <- Manufacturer + ProductName
{28ac9cf2-5bde-59f7-aebe-4b3d008090fe} <- Manufacturer + Family + BaseboardManufacturer + BaseboardProduct
{e821e0e2-e11a-5e94-bf5d-ffe53c5e5048} <- Manufacturer + Family
{bdd76d3e-147f-58a9-a0b2-42136454ed07} <- Manufacturer + EnclosureKind
{b2e58e8b-fb10-5cd0-8fb0-5bd931f1871a} <- Manufacturer + BaseboardManufacturer + BaseboardProduct
{50af5797-a2f2-58b1-9a1a-453bcbb2e025} <- Manufacturer
Extra Hardware IDs
------------------
{e6ff1b45-1955-5701-89ab-04fe2280cb4a} <- Manufacturer + Family + ProductName + ProductSku + BiosVendor
{8c4a76b9-e29e-5a3c-9072-9664898ecae6} <- Manufacturer + Family + ProductName + BiosVendor
{7b3d90ce-ed79-5951-a48a-764ea9f11146} <- Manufacturer + BiosVendor
*/
static const EFI_GUID actual_chids[] = {
{0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
{0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
{0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
{0x01e09b32, 0xde05, 0x56ca, {0xb9, 0xd1, 0x94, 0x86, 0xad, 0x5f, 0x38, 0x1d}},
{0xcad87a11, 0x1813, 0x507b, {0x9a, 0xab, 0x9a, 0x5f, 0x45, 0x7b, 0x64, 0x9c}},
{0x377c823d, 0x60d1, 0x55b0, {0x96, 0x78, 0x76, 0xcd, 0x2a, 0xf9, 0xd0, 0x86}},
{0x28ac9cf2, 0x5bde, 0x59f7, {0xae, 0xbe, 0x4b, 0x3d, 0x00, 0x80, 0x90, 0xfe}},
{0xe821e0e2, 0xe11a, 0x5e94, {0xbf, 0x5d, 0xff, 0xe5, 0x3c, 0x5e, 0x50, 0x48}},
{0x1c092f1d, 0xdc7b, 0x564f, {0x8a, 0x3d, 0x12, 0x8d, 0x72, 0x92, 0xfa, 0xb8}},
{0xc12c1f4a, 0x332d, 0x5d72, {0xaa, 0x36, 0x7a, 0x3d, 0x41, 0x3b, 0x47, 0x9a}},
{0x28ac9cf2, 0x5bde, 0x59f7, {0xae, 0xbe, 0x4b, 0x3d, 0x00, 0x80, 0x90, 0xfe}},
{0xe821e0e2, 0xe11a, 0x5e94, {0xbf, 0x5d, 0xff, 0xe5, 0x3c, 0x5e, 0x50, 0x48}},
{0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
{0xb2e58e8b, 0xfb10, 0x5cd0, {0x8f, 0xb0, 0x5b, 0xd9, 0x31, 0xf1, 0x87, 0x1a}},
{0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
};
TEST(chid) {
/* Results compared with output of 'fwupdtool hwids' */
EFI_GUID chids[CHID_TYPES_MAX];
chid_calculate(test_fields, chids);
for (size_t i = 0; i < ELEMENTSOF(chids); i++) {
ASSERT_EQ_EFI_GUID(&chids[i], &actual_chids[i]);
}
}
DEFINE_TEST_MAIN(LOG_INFO);