|
@@ -9,12 +9,13 @@
|
|
|
from collections import OrderedDict
|
|
|
import os
|
|
|
|
|
|
-from binman.entry import Entry, EntryArg
|
|
|
+from binman.entry import EntryArg
|
|
|
+from binman.etype.collection import Entry_collection
|
|
|
|
|
|
from dtoc import fdt_util
|
|
|
from patman import tools
|
|
|
|
|
|
-class Entry_vblock(Entry):
|
|
|
+class Entry_vblock(Entry_collection):
|
|
|
"""An entry which contains a Chromium OS verified boot block
|
|
|
|
|
|
Properties / Entry arguments:
|
|
@@ -37,9 +38,6 @@ class Entry_vblock(Entry):
|
|
|
"""
|
|
|
def __init__(self, section, etype, node):
|
|
|
super().__init__(section, etype, node)
|
|
|
- self.content = fdt_util.GetPhandleList(self._node, 'content')
|
|
|
- if not self.content:
|
|
|
- self.Raise("Vblock must have a 'content' property")
|
|
|
(self.keydir, self.keyblock, self.signprivate, self.version,
|
|
|
self.kernelkey, self.preamble_flags) = self.GetEntryArgsOrProps([
|
|
|
EntryArg('keydir', str),
|
|
@@ -50,14 +48,16 @@ class Entry_vblock(Entry):
|
|
|
EntryArg('preamble-flags', int)])
|
|
|
|
|
|
def GetVblock(self):
|
|
|
+ """Get the contents of this entry
|
|
|
+
|
|
|
+ Returns:
|
|
|
+ bytes content of the entry, which is the signed vblock for the
|
|
|
+ provided data
|
|
|
+ """
|
|
|
# Join up the data files to be signed
|
|
|
- input_data = b''
|
|
|
- for entry_phandle in self.content:
|
|
|
- data = self.section.GetContentsByPhandle(entry_phandle, self)
|
|
|
- if data is None:
|
|
|
- # Data not available yet
|
|
|
- return False
|
|
|
- input_data += data
|
|
|
+ input_data = self.GetContents()
|
|
|
+ if input_data is None:
|
|
|
+ return None
|
|
|
|
|
|
uniq = self.GetUniqueName()
|
|
|
output_fname = tools.GetOutputFilename('vblock.%s' % uniq)
|
|
@@ -80,7 +80,7 @@ class Entry_vblock(Entry):
|
|
|
|
|
|
def ObtainContents(self):
|
|
|
data = self.GetVblock()
|
|
|
- if data is False:
|
|
|
+ if data is None:
|
|
|
return False
|
|
|
self.SetContents(data)
|
|
|
return True
|