1*42e22086SApple OSS Distributions #ifndef libTrustCache_RawTypes_h 2*42e22086SApple OSS Distributions #define libTrustCache_RawTypes_h 3*42e22086SApple OSS Distributions 4*42e22086SApple OSS Distributions #include <sys/cdefs.h> 5*42e22086SApple OSS Distributions __BEGIN_DECLS 6*42e22086SApple OSS Distributions 7*42e22086SApple OSS Distributions #include <stdint.h> 8*42e22086SApple OSS Distributions #include <corecrypto/ccsha1.h> 9*42e22086SApple OSS Distributions 10*42e22086SApple OSS Distributions /* 11*42e22086SApple OSS Distributions * CDHashes in the trust cache are always truncated to the length of a SHA1 hash. 12*42e22086SApple OSS Distributions */ 13*42e22086SApple OSS Distributions #define kTCEntryHashSize CCSHA1_OUTPUT_SIZE 14*42e22086SApple OSS Distributions 15*42e22086SApple OSS Distributions /* UUIDs are always 16 bytes */ 16*42e22086SApple OSS Distributions #define kUUIDSize 16 17*42e22086SApple OSS Distributions 18*42e22086SApple OSS Distributions /* Versions supported by the library */ 19*42e22086SApple OSS Distributions enum { 20*42e22086SApple OSS Distributions kTCVersion0 = 0x0, 21*42e22086SApple OSS Distributions kTCVersion1 = 0x1, 22*42e22086SApple OSS Distributions kTCVersion2 = 0x2, 23*42e22086SApple OSS Distributions 24*42e22086SApple OSS Distributions kTCVersionTotal, 25*42e22086SApple OSS Distributions }; 26*42e22086SApple OSS Distributions 27*42e22086SApple OSS Distributions /* Flags for the trust cache look ups */ 28*42e22086SApple OSS Distributions enum { 29*42e22086SApple OSS Distributions kTCFlagAMFID = 0x01, 30*42e22086SApple OSS Distributions kTCFlagANEModel = 0x02, 31*42e22086SApple OSS Distributions }; 32*42e22086SApple OSS Distributions 33*42e22086SApple OSS Distributions typedef struct _TrustCacheModuleBase { 34*42e22086SApple OSS Distributions /* The version for this trust cache module */ 35*42e22086SApple OSS Distributions uint32_t version; 36*42e22086SApple OSS Distributions } __attribute__((packed)) TrustCacheModuleBase_t; 37*42e22086SApple OSS Distributions 38*42e22086SApple OSS Distributions #pragma mark Trust Cache Version 0 39*42e22086SApple OSS Distributions 40*42e22086SApple OSS Distributions typedef uint8_t TrustCacheEntry0_t[kTCEntryHashSize]; 41*42e22086SApple OSS Distributions 42*42e22086SApple OSS Distributions typedef struct _TrustCacheModule0 { 43*42e22086SApple OSS Distributions /* Must be 0 */ 44*42e22086SApple OSS Distributions uint32_t version; 45*42e22086SApple OSS Distributions 46*42e22086SApple OSS Distributions /* ID which uniquely identifies the trust cache */ 47*42e22086SApple OSS Distributions uint8_t uuid[kUUIDSize]; 48*42e22086SApple OSS Distributions 49*42e22086SApple OSS Distributions /* The number of entries present in the trust cache */ 50*42e22086SApple OSS Distributions uint32_t numEntries; 51*42e22086SApple OSS Distributions 52*42e22086SApple OSS Distributions /* Dynamic data containing all the entries */ 53*42e22086SApple OSS Distributions TrustCacheEntry0_t entries[0]; 54*42e22086SApple OSS Distributions } __attribute__((packed)) TrustCacheModule0_t; 55*42e22086SApple OSS Distributions 56*42e22086SApple OSS Distributions #pragma mark Trust Cache Version 1 57*42e22086SApple OSS Distributions 58*42e22086SApple OSS Distributions typedef struct _TrustCacheEntry1 { 59*42e22086SApple OSS Distributions uint8_t CDHash[kTCEntryHashSize]; 60*42e22086SApple OSS Distributions uint8_t hashType; 61*42e22086SApple OSS Distributions uint8_t flags; 62*42e22086SApple OSS Distributions } __attribute__((packed)) TrustCacheEntry1_t; 63*42e22086SApple OSS Distributions 64*42e22086SApple OSS Distributions typedef struct _TrustCacheModule1 { 65*42e22086SApple OSS Distributions /* Must be 1 */ 66*42e22086SApple OSS Distributions uint32_t version; 67*42e22086SApple OSS Distributions 68*42e22086SApple OSS Distributions /* ID which uniquely identifies the trust cache */ 69*42e22086SApple OSS Distributions uint8_t uuid[kUUIDSize]; 70*42e22086SApple OSS Distributions 71*42e22086SApple OSS Distributions /* The number of entries present in the trust cache */ 72*42e22086SApple OSS Distributions uint32_t numEntries; 73*42e22086SApple OSS Distributions 74*42e22086SApple OSS Distributions /* Dynamic data containing all the entries */ 75*42e22086SApple OSS Distributions TrustCacheEntry1_t entries[0]; 76*42e22086SApple OSS Distributions } __attribute__((packed)) TrustCacheModule1_t; 77*42e22086SApple OSS Distributions 78*42e22086SApple OSS Distributions #pragma mark Trust Cache Version 2 79*42e22086SApple OSS Distributions 80*42e22086SApple OSS Distributions typedef struct _TrustCacheEntry2 { 81*42e22086SApple OSS Distributions uint8_t CDHash[kTCEntryHashSize]; 82*42e22086SApple OSS Distributions uint8_t hashType; 83*42e22086SApple OSS Distributions uint8_t flags; 84*42e22086SApple OSS Distributions uint8_t constraintCategory; 85*42e22086SApple OSS Distributions uint8_t reserved0; 86*42e22086SApple OSS Distributions } __attribute__((packed)) TrustCacheEntry2_t; 87*42e22086SApple OSS Distributions 88*42e22086SApple OSS Distributions typedef struct _TrustCacheModule2 { 89*42e22086SApple OSS Distributions /* Must be 2 */ 90*42e22086SApple OSS Distributions uint32_t version; 91*42e22086SApple OSS Distributions 92*42e22086SApple OSS Distributions /* ID which uniquely identifies the trust cache */ 93*42e22086SApple OSS Distributions uint8_t uuid[kUUIDSize]; 94*42e22086SApple OSS Distributions 95*42e22086SApple OSS Distributions /* The number of entries present in the trust cache */ 96*42e22086SApple OSS Distributions uint32_t numEntries; 97*42e22086SApple OSS Distributions 98*42e22086SApple OSS Distributions /* Dynamic data containing all the entries */ 99*42e22086SApple OSS Distributions TrustCacheEntry2_t entries[0]; 100*42e22086SApple OSS Distributions } __attribute__((packed)) TrustCacheModule2_t; 101*42e22086SApple OSS Distributions 102*42e22086SApple OSS Distributions __END_DECLS 103*42e22086SApple OSS Distributions #endif /* libTrustCache_RawTypes_h */ 104