Home | History | Annotate | Download | only in cert
      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_