INNER CODE UNIT · C++

nid

trailofbits/uthenticode · src/uthenticode.cpp:301

  auto nid = OBJ_obj2nid(indirect_data_->messageDigest->digestAlgorithm->algorithm);
  auto digest = tohex(indirect_data_->messageDigest->digest->data,
                      indirect_data_->messageDigest->digest->length);
  return std::make_tuple(nid_to_checksum_kind(nid), digest);
}

std::vector<Certificate> SignedData::get_signers() const {
  auto *signers_stack_ptr = PKCS7_get0_signers(p7_, nullptr, 0);
  if (signers_stack_ptr == nullptr) {
    return {};
  }
  auto signers_stack = impl::STACK_OF_X509_ptr(signers_stack_ptr, impl::SK_X509_free);

  std::vector<Certificate> signers;
  for (auto i = 0; i < sk_X509_num(signers_stack.get()); ++i) {
    /* Frustrating: ideally we'd use emplace_back here, but apparently
     * it gets exploded into some std::allocator scope that makes the private Certificate
     * constructor flip out (since it's only friends with SignedData).

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…