|
@@ -29,3 +29,23 @@ int optee_verify_image(struct optee_header *hdr, unsigned long tzdram_start,
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+int optee_verify_bootm_image(unsigned long image_addr,
|
|
|
+ unsigned long image_load_addr,
|
|
|
+ unsigned long image_len)
|
|
|
+{
|
|
|
+ struct optee_header *hdr = (struct optee_header *)image_addr;
|
|
|
+ unsigned long tzdram_start = CONFIG_OPTEE_TZDRAM_BASE;
|
|
|
+ unsigned long tzdram_len = CONFIG_OPTEE_TZDRAM_SIZE;
|
|
|
+
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = optee_verify_image(hdr, tzdram_start, tzdram_len, image_len);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ if (image_load_addr + sizeof(*hdr) != hdr->init_load_addr_lo)
|
|
|
+ ret = -EINVAL;
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|