| 106 | const superBlobSize = 3 * 4 |
| 107 | |
| 108 | type CodeDirectory struct { |
| 109 | magic uint32 // magic number (CSMAGIC_CODEDIRECTORY) |
| 110 | length uint32 // total length of CodeDirectory blob |
| 111 | version uint32 // compatibility version |
| 112 | flags uint32 // setup and mode flags |
| 113 | hashOffset uint32 // offset of hash slot element at index zero |
| 114 | identOffset uint32 // offset of identifier string |
| 115 | nSpecialSlots uint32 // number of special hash slots |
| 116 | nCodeSlots uint32 // number of ordinary (code) hash slots |
| 117 | codeLimit uint32 // limit to main image signature range |
| 118 | hashSize uint8 // size of each hash in bytes |
| 119 | hashType uint8 // type of hash (cdHashType* constants) |
| 120 | _pad1 uint8 // unused (must be zero) |
| 121 | pageSize uint8 // log2(page size in bytes); 0 => infinite |
| 122 | _pad2 uint32 // unused (must be zero) |
| 123 | scatterOffset uint32 |
| 124 | teamOffset uint32 |
| 125 | _pad3 uint32 |
| 126 | codeLimit64 uint64 |
| 127 | execSegBase uint64 |
| 128 | execSegLimit uint64 |
| 129 | execSegFlags uint64 |
| 130 | // data follows |
| 131 | } |
| 132 | |
| 133 | func (c *CodeDirectory) put(out []byte) []byte { |
| 134 | out = put32be(out, c.magic) |
nothing calls this directly
no outgoing calls
no test coverage detected