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 13 namespace net { 14 15 namespace sha256_interception { 16 17 typedef 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). 33 NET_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_