| Index: net/cert/sha256_legacy_support_nss_win.cc
|
| diff --git a/net/cert/sha256_legacy_support_win.cc b/net/cert/sha256_legacy_support_nss_win.cc
|
| similarity index 63%
|
| copy from net/cert/sha256_legacy_support_win.cc
|
| copy to net/cert/sha256_legacy_support_nss_win.cc
|
| index 656edd73ad419214a34881acb10d4020c93c07bb..5f44b05dd2a02031b845489877fae869ea25662c 100644
|
| --- a/net/cert/sha256_legacy_support_win.cc
|
| +++ b/net/cert/sha256_legacy_support_nss_win.cc
|
| @@ -2,95 +2,18 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "net/cert/sha256_legacy_support_win.h"
|
| -
|
| -#include <windows.h>
|
| -#include <wincrypt.h>
|
| -
|
| #include <cert.h>
|
| #include <keyhi.h>
|
| #include <secoid.h>
|
|
|
| -#include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| -#include "base/strings/string_piece.h"
|
| -#include "base/win/windows_version.h"
|
| #include "crypto/scoped_nss_types.h"
|
| +#include "net/cert/sha256_legacy_support_win.h"
|
|
|
| namespace net {
|
|
|
| namespace sha256_interception {
|
|
|
| -namespace {
|
| -
|
| -bool IsSupportedSubjectType(DWORD subject_type) {
|
| - switch (subject_type) {
|
| - case CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB:
|
| - case CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT:
|
| - case CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL:
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -bool IsSupportedIssuerType(DWORD issuer_type) {
|
| - switch (issuer_type) {
|
| - case CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY:
|
| - case CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT:
|
| - case CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN:
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -base::StringPiece GetSubjectSignature(DWORD subject_type,
|
| - void* subject_data) {
|
| - switch (subject_type) {
|
| - case CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB: {
|
| - CRYPT_DATA_BLOB* data_blob =
|
| - reinterpret_cast<CRYPT_DATA_BLOB*>(subject_data);
|
| - return base::StringPiece(reinterpret_cast<char*>(data_blob->pbData),
|
| - data_blob->cbData);
|
| - }
|
| - case CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT: {
|
| - PCCERT_CONTEXT subject_cert =
|
| - reinterpret_cast<PCCERT_CONTEXT>(subject_data);
|
| - return base::StringPiece(
|
| - reinterpret_cast<char*>(subject_cert->pbCertEncoded),
|
| - subject_cert->cbCertEncoded);
|
| - }
|
| - case CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL: {
|
| - PCCRL_CONTEXT subject_crl =
|
| - reinterpret_cast<PCCRL_CONTEXT>(subject_data);
|
| - return base::StringPiece(
|
| - reinterpret_cast<char*>(subject_crl->pbCrlEncoded),
|
| - subject_crl->cbCrlEncoded);
|
| - }
|
| - }
|
| - return base::StringPiece();
|
| -}
|
| -
|
| -PCERT_PUBLIC_KEY_INFO GetIssuerPublicKey(DWORD issuer_type,
|
| - void* issuer_data) {
|
| - switch (issuer_type) {
|
| - case CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY:
|
| - return reinterpret_cast<PCERT_PUBLIC_KEY_INFO>(issuer_data);
|
| - case CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT: {
|
| - PCCERT_CONTEXT cert = reinterpret_cast<PCCERT_CONTEXT>(issuer_data);
|
| - return &cert->pCertInfo->SubjectPublicKeyInfo;
|
| - }
|
| - case CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN: {
|
| - PCCERT_CHAIN_CONTEXT chain =
|
| - reinterpret_cast<PCCERT_CHAIN_CONTEXT>(issuer_data);
|
| - PCCERT_CONTEXT cert = chain->rgpChain[0]->rgpElement[0]->pCertContext;
|
| - return &cert->pCertInfo->SubjectPublicKeyInfo;
|
| - }
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| BOOL CryptVerifyCertificateSignatureExHook(
|
| CryptVerifyCertificateSignatureExFunc original_func,
|
| HCRYPTPROV_LEGACY provider,
|
|
|