TianoCore EDK2 master
Loading...
Searching...
No Matches
CryptAuthenticode.c File Reference
#include "InternalCryptLib.h"
#include <openssl/objects.h>
#include <openssl/x509.h>
#include <openssl/pkcs7.h>

Go to the source code of this file.

Functions

BOOLEAN EFIAPI AuthenticodeVerify (IN CONST UINT8 *AuthData, IN UINTN DataSize, IN CONST UINT8 *TrustedCert, IN UINTN CertSize, IN CONST UINT8 *ImageHash, IN UINTN HashSize)
 

Variables

GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 mSpcIndirectOidValue []
 

Detailed Description

Authenticode Portable Executable Signature Verification over OpenSSL.

Caution: This module requires additional review when modified. This library will have external input - signature (e.g. PE/COFF Authenticode). This external input must be validated carefully to avoid security issue like buffer overflow, integer overflow.

AuthenticodeVerify() will get PE/COFF Authenticode and will do basic check for data structure.

Copyright (c) 2011 - 2020, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file CryptAuthenticode.c.

Function Documentation

◆ AuthenticodeVerify()

BOOLEAN EFIAPI AuthenticodeVerify ( IN CONST UINT8 *  AuthData,
IN UINTN  DataSize,
IN CONST UINT8 *  TrustedCert,
IN UINTN  CertSize,
IN CONST UINT8 *  ImageHash,
IN UINTN  HashSize 
)

Verifies the validity of a PE/COFF Authenticode Signature as described in "Windows Authenticode Portable Executable Signature Format".

If AuthData is NULL, then return FALSE. If ImageHash is NULL, then return FALSE.

Caution: This function may receive untrusted input. PE/COFF Authenticode is external input, so this function will do basic check for Authenticode data structure.

Parameters
[in]AuthDataPointer to the Authenticode Signature retrieved from signed PE/COFF image to be verified.
[in]DataSizeSize of the Authenticode Signature in bytes.
[in]TrustedCertPointer to a trusted/root certificate encoded in DER, which is used for certificate chain verification.
[in]CertSizeSize of the trusted certificate in bytes.
[in]ImageHashPointer to the original image file hash value. The procedure for calculating the image hash value is described in Authenticode specification.
[in]HashSizeSize of Image hash value in bytes.
Return values
TRUEThe specified Authenticode Signature is valid.
FALSEInvalid Authenticode Signature.

Definition at line 58 of file CryptAuthenticode.c.

Variable Documentation

◆ mSpcIndirectOidValue

GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 mSpcIndirectOidValue[]
Initial value:
= {
0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04
}

Definition at line 26 of file CryptAuthenticode.c.