+struct cs_hash;
+
+uint8_t cs_hash_type(struct cs_hash const *);
+
+struct cs_blob {
+ struct cs_blob *csb_next;
+ cpu_type_t csb_cpu_type;
+ unsigned int csb_flags;
+ off_t csb_base_offset; /* Offset of Mach-O binary in fat binary */
+ off_t csb_start_offset; /* Blob coverage area start, from csb_base_offset */
+ off_t csb_end_offset; /* Blob coverage area end, from csb_base_offset */
+ vm_size_t csb_mem_size;
+ vm_offset_t csb_mem_offset;
+ vm_address_t csb_mem_kaddr;
+ unsigned char csb_cdhash[CS_CDHASH_LEN];
+ const struct cs_hash *csb_hashtype;
+ vm_size_t csb_hash_pagesize; /* each hash entry represent this many bytes in the file */
+ vm_size_t csb_hash_pagemask;
+ vm_size_t csb_hash_pageshift;
+ vm_size_t csb_hash_firstlevel_pagesize; /* First hash this many bytes, then hash the hashes together */
+ const CS_CodeDirectory *csb_cd;
+ const char *csb_teamid;
+ const CS_GenericBlob *csb_entitlements_blob; /* raw blob, subrange of csb_mem_kaddr */
+ void * csb_entitlements; /* The entitlements as an OSDictionary */
+ unsigned int csb_signer_type;
+
+ unsigned int csb_reconstituted; /* signature has potentially been modified after validation */
+ /* The following two will be replaced by the csb_signer_type. */
+ unsigned int csb_platform_binary:1;
+ unsigned int csb_platform_path:1;
+
+};