def __init__(self, major_version): self._header = FakeHeader(major_version, 222, 0) self.header = None self._manifest = FakeManifest(major_version) self.manifest = None self._blobs = {} self._payload_signatures = update_metadata_pb2.Signatures() self._metadata_signatures = update_metadata_pb2.Signatures()
def Init(self): """Initializes the payload object. This is a prerequisite for any other public API call. Raises: PayloadError if object already initialized or fails to initialize correctly. """ if self.is_init: raise PayloadError('payload object already initialized') self.manifest_hasher = hashlib.sha256() # Read the file header. self.payload_file.seek(self.payload_file_offset) self.header = self._ReadHeader() # Read the manifest. manifest_raw = self._ReadManifest() self.manifest = update_metadata_pb2.DeltaArchiveManifest() self.manifest.ParseFromString(manifest_raw) # Read the metadata signature (if any). metadata_signature_raw = self._ReadMetadataSignature() if metadata_signature_raw: self.metadata_signature = update_metadata_pb2.Signatures() self.metadata_signature.ParseFromString(metadata_signature_raw) self.metadata_size = self.header.size + self.header.manifest_len self.data_offset = self.metadata_size + self.header.metadata_signature_len self.is_init = True
def _DisplaySignaturesBlob(signature_name, signatures_blob): from update_payload import update_metadata_pb2 signatures = update_metadata_pb2.Signatures() signatures.ParseFromString(signatures_blob) print('%s signatures: (%d entries)' % (signature_name, len(signatures.signatures))) for signature in signatures.signatures: print( ' version=%s, hex_data: (%d bytes)' % (signature.version if signature.HasField('version') else None, len(signature.data))) DisplayHexData(signature.data, indent=4)
def __init__(self): self.sigs = update_metadata_pb2.Signatures()