1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef NET_CERT_SHA256_LEGACY_SUPPORT_WIN_H_ 6#define NET_CERT_SHA256_LEGACY_SUPPORT_WIN_H_ 7 8#include <windows.h> 9#include <wincrypt.h> 10 11#include "net/base/net_export.h" 12 13namespace net { 14 15namespace sha256_interception { 16 17typedef BOOL (WINAPI* CryptVerifyCertificateSignatureExFunc)( 18 HCRYPTPROV_LEGACY provider, 19 DWORD encoding_type, 20 DWORD subject_type, 21 void* subject_data, 22 DWORD issuer_type, 23 void* issuer_data, 24 DWORD flags, 25 void* extra); 26 27// Interception function meant to be called whenever 28// CryptVerifyCertificateSignatureEx is called. Note that the calling 29// conventions do not match, as the caller is expected to ensure that their 30// interposed function handles the calling conventions and provides a pointer 31// to the original CryptVerifyCertificateSignatureEx (e.g. to handle parameters 32// and keys that are not supported). 33NET_EXPORT BOOL CryptVerifyCertificateSignatureExHook( 34 CryptVerifyCertificateSignatureExFunc original_func, 35 HCRYPTPROV_LEGACY provider, 36 DWORD encoding_type, 37 DWORD subject_type, 38 void* subject_data, 39 DWORD issuer_type, 40 void* issuer_data, 41 DWORD flags, 42 void* extra); 43 44} // namespace sha256_interception 45 46} // namespace net 47 48#endif // NET_CERT_SHA256_LEGACY_SUPPORT_WIN_H_