summaryrefslogtreecommitdiffstats
path: root/net/cert/sha256_legacy_support_win.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/cert/sha256_legacy_support_win.h')
-rw-r--r--net/cert/sha256_legacy_support_win.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/net/cert/sha256_legacy_support_win.h b/net/cert/sha256_legacy_support_win.h
new file mode 100644
index 0000000..c98414c
--- /dev/null
+++ b/net/cert/sha256_legacy_support_win.h
@@ -0,0 +1,48 @@
+// 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 <windows.h>
+#include <wincrypt.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);
+
+} // namespace sha256_interception
+
+} // namespace net
+
+#endif // NET_CERT_SHA256_LEGACY_SUPPORT_WIN_H_ \ No newline at end of file