162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* PE Binary parser bits 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2014 Red Hat, Inc. All Rights Reserved. 562306a36Sopenharmony_ci * Written by David Howells (dhowells@redhat.com) 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <crypto/pkcs7.h> 962306a36Sopenharmony_ci#include <crypto/hash_info.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cistruct pefile_context { 1262306a36Sopenharmony_ci unsigned header_size; 1362306a36Sopenharmony_ci unsigned image_checksum_offset; 1462306a36Sopenharmony_ci unsigned cert_dirent_offset; 1562306a36Sopenharmony_ci unsigned n_data_dirents; 1662306a36Sopenharmony_ci unsigned n_sections; 1762306a36Sopenharmony_ci unsigned certs_size; 1862306a36Sopenharmony_ci unsigned sig_offset; 1962306a36Sopenharmony_ci unsigned sig_len; 2062306a36Sopenharmony_ci const struct section_header *secs; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci /* PKCS#7 MS Individual Code Signing content */ 2362306a36Sopenharmony_ci const void *digest; /* Digest */ 2462306a36Sopenharmony_ci unsigned digest_len; /* Digest length */ 2562306a36Sopenharmony_ci const char *digest_algo; /* Digest algorithm */ 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#define kenter(FMT, ...) \ 2962306a36Sopenharmony_ci pr_devel("==> %s("FMT")\n", __func__, ##__VA_ARGS__) 3062306a36Sopenharmony_ci#define kleave(FMT, ...) \ 3162306a36Sopenharmony_ci pr_devel("<== %s()"FMT"\n", __func__, ##__VA_ARGS__) 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci/* 3462306a36Sopenharmony_ci * mscode_parser.c 3562306a36Sopenharmony_ci */ 3662306a36Sopenharmony_ciextern int mscode_parse(void *_ctx, const void *content_data, size_t data_len, 3762306a36Sopenharmony_ci size_t asn1hdrlen); 38