1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# -*- Mode: Python -*-
# vim: filetype=python
#
##
# = UEFI Variable Store
#
# The qemu efi variable store implementation (hw/uefi/) uses this to
# store non-volatile variables in json format on disk.
#
# This is an existing format already supported by (at least) two other
# projects, specifically https://gitlab.com/kraxel/virt-firmware and
# https://github.com/awslabs/python-uefivars.
##
##
# @UefiVariable:
#
# UEFI Variable. Check the UEFI specifification for more detailed
# information on the fields.
#
# @guid: variable namespace GUID
#
# @name: variable name, in UTF-8 encoding.
#
# @attr: variable attributes.
#
# @data: variable value, encoded as hex string.
#
# @time: variable modification time. EFI_TIME struct, encoded as hex
# string. Used only for authenticated variables, where the
# EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute bit
# is set.
#
# @digest: variable certificate digest. Used to verify the signature
# of updates for authenticated variables. UEFI has two kinds of
# authenticated variables. The secure boot variables ('PK',
# 'KEK', 'db' and 'dbx') have hard coded signature checking rules.
# For other authenticated variables the firmware stores a digest
# of the signing certificate at variable creation time, and any
# updates must be signed with the same certificate.
#
# Since: 10.0
##
{ 'struct' : 'UefiVariable',
'data' : { 'guid' : 'str',
'name' : 'str',
'attr' : 'int',
'data' : 'str',
'*time' : 'str',
'*digest' : 'str'}}
##
# @UefiVarStore:
#
# @version: currently always 2
#
# @variables: list of UEFI variables
#
# Since: 10.0
##
{ 'struct' : 'UefiVarStore',
'data' : { 'version' : 'int',
'variables' : [ 'UefiVariable' ] }}
|