| # -*- 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 specification 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' ] }} |