1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* PE Binary parser bits 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2014 Red Hat, Inc. All Rights Reserved. 5*4882a593Smuzhiyun * Written by David Howells (dhowells@redhat.com) 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <crypto/pkcs7.h> 9*4882a593Smuzhiyun #include <crypto/hash_info.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun struct pefile_context { 12*4882a593Smuzhiyun unsigned header_size; 13*4882a593Smuzhiyun unsigned image_checksum_offset; 14*4882a593Smuzhiyun unsigned cert_dirent_offset; 15*4882a593Smuzhiyun unsigned n_data_dirents; 16*4882a593Smuzhiyun unsigned n_sections; 17*4882a593Smuzhiyun unsigned certs_size; 18*4882a593Smuzhiyun unsigned sig_offset; 19*4882a593Smuzhiyun unsigned sig_len; 20*4882a593Smuzhiyun const struct section_header *secs; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* PKCS#7 MS Individual Code Signing content */ 23*4882a593Smuzhiyun const void *digest; /* Digest */ 24*4882a593Smuzhiyun unsigned digest_len; /* Digest length */ 25*4882a593Smuzhiyun const char *digest_algo; /* Digest algorithm */ 26*4882a593Smuzhiyun }; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define kenter(FMT, ...) \ 29*4882a593Smuzhiyun pr_devel("==> %s("FMT")\n", __func__, ##__VA_ARGS__) 30*4882a593Smuzhiyun #define kleave(FMT, ...) \ 31*4882a593Smuzhiyun pr_devel("<== %s()"FMT"\n", __func__, ##__VA_ARGS__) 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /* 34*4882a593Smuzhiyun * mscode_parser.c 35*4882a593Smuzhiyun */ 36*4882a593Smuzhiyun extern int mscode_parse(void *_ctx, const void *content_data, size_t data_len, 37*4882a593Smuzhiyun size_t asn1hdrlen); 38