INNER CODE UNIT · C++
length
trailofbits/uthenticode · src/uthenticode.cpp:455
std::uint32_t length = *reinterpret_cast<std::uint32_t *>(current_wincert + offset);
offset += sizeof(length);
std::uint16_t revision = *reinterpret_cast<std::uint16_t *>(current_wincert + offset);
offset += sizeof(revision);
std::uint16_t type = *reinterpret_cast<std::uint16_t *>(current_wincert + offset);
offset += sizeof(type);
// Continue only we can satisfy the length
if (current_wincert + length <= past_secdir && length > offset) {
std::vector<std::uint8_t> cert_data(current_wincert + offset, current_wincert + length);
certs.emplace_back(static_cast<certificate_revision>(revision),
static_cast<certificate_type>(type),
cert_data);
}