// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_CERT_SHA256_LEGACY_SUPPORT_WIN_H_ #define NET_CERT_SHA256_LEGACY_SUPPORT_WIN_H_ #include #include "base/strings/string_piece.h" #include "crypto/wincrypt_shim.h" #include "net/base/net_export.h" namespace net { namespace sha256_interception { typedef BOOL (WINAPI* CryptVerifyCertificateSignatureExFunc)( HCRYPTPROV_LEGACY provider, DWORD encoding_type, DWORD subject_type, void* subject_data, DWORD issuer_type, void* issuer_data, DWORD flags, void* extra); // Interception function meant to be called whenever // CryptVerifyCertificateSignatureEx is called. Note that the calling // conventions do not match, as the caller is expected to ensure that their // interposed function handles the calling conventions and provides a pointer // to the original CryptVerifyCertificateSignatureEx (e.g. to handle parameters // and keys that are not supported). NET_EXPORT BOOL CryptVerifyCertificateSignatureExHook( CryptVerifyCertificateSignatureExFunc original_func, HCRYPTPROV_LEGACY provider, DWORD encoding_type, DWORD subject_type, void* subject_data, DWORD issuer_type, void* issuer_data, DWORD flags, void* extra); // Returns true if |subject_type| a supported subject type for interception. bool IsSupportedSubjectType(DWORD subject_type); // Returns true if |issuer_type| is a supported issuer type for interception. bool IsSupportedIssuerType(DWORD issuer_type); // Returns the encoded form of |subject_data| or an empty StringPiece if not // supported. base::StringPiece GetSubjectSignature(DWORD subject_type, void* subject_data); // Returns the public key of |issuer_data| or NULL if not supported. PCERT_PUBLIC_KEY_INFO GetIssuerPublicKey(DWORD issuer_type, void* issuer_data); } // namespace sha256_interception } // namespace net #endif // NET_CERT_SHA256_LEGACY_SUPPORT_WIN_H_