summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libstb/container.c10
-rw-r--r--libstb/container.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/libstb/container.c b/libstb/container.c
index 19df5564..a720fbbf 100644
--- a/libstb/container.c
+++ b/libstb/container.c
@@ -38,6 +38,16 @@ uint32_t stb_payload_magic(const void *buf, size_t size)
return be32_to_cpu(*(uint32_t*)(p+SECURE_BOOT_HEADERS_SIZE));
}
+uint64_t stb_sw_payload_size(const void *buf, size_t size)
+{
+ struct parsed_stb_container c;
+ if (!stb_is_container(buf, size))
+ return 0;
+ if (parse_stb_container(buf, size, &c) != 0)
+ return 0;
+ return be64_to_cpu(c.sh->payload_size);
+}
+
int parse_stb_container(const void* data, size_t len, struct parsed_stb_container *c)
{
const size_t prefix_data_min_size = 3 * (EC_COORDBYTES * 2);
diff --git a/libstb/container.h b/libstb/container.h
index f65615a1..f8965d40 100644
--- a/libstb/container.h
+++ b/libstb/container.h
@@ -143,6 +143,7 @@ bool stb_is_container(const void* buf, size_t size);
/* Get the pointer for the sw-payload-hash field of the container header */
const uint8_t* stb_sw_payload_hash(const void* buf, size_t size);
+uint64_t stb_sw_payload_size(const void *buf, size_t size);
int parse_stb_container(const void* data, size_t len, struct parsed_stb_container *c);
OpenPOWER on IntegriCloud