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