Allow payload_metadata to take raw pointers with size

This way, callers of payload_metadata don't have to store their data in
std::vector. This makes parsing a `mmap()`ed payload file possible.
While we don't need the ability to parse an mmap()ed payload on device,
it is really handy for parsing payload from host-side tooling. In which
case the entire payload will be available on disk anyway, and a
streaming parse will complicate code a lot.

Test: treehugger
Change-Id: Icfbd8e849093c8f389ea802864680ab214bdd721
diff --git a/payload_consumer/payload_metadata.h b/payload_consumer/payload_metadata.h
index 8b36f53..f23b668 100644
--- a/payload_consumer/payload_metadata.h
+++ b/payload_consumer/payload_metadata.h
@@ -56,6 +56,9 @@
   // the payload.
   MetadataParseResult ParsePayloadHeader(const brillo::Blob& payload,
                                          ErrorCode* error);
+  MetadataParseResult ParsePayloadHeader(const unsigned char* payload,
+                                         size_t size,
+                                         ErrorCode* error);
   // Simpler version of the above, returns true on success.
   bool ParsePayloadHeader(const brillo::Blob& payload);
 
@@ -88,6 +91,10 @@
   bool GetManifest(const brillo::Blob& payload,
                    DeltaArchiveManifest* out_manifest) const;
 
+  bool GetManifest(const unsigned char* payload,
+                   size_t size,
+                   DeltaArchiveManifest* out_manifest) const;
+
   // Parses a payload file |payload_path| and prepares the metadata properties,
   // manifest and metadata signatures. Can be used as an easy to use utility to
   // get the payload information without manually the process.