diff options
-rw-r--r-- | libstb/container.c | 10 | ||||
-rw-r--r-- | libstb/container.h | 1 |
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); |