mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 00:06:09 +03:00
58 lines
1.9 KiB
C++
58 lines
1.9 KiB
C++
// Copyright 2017 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_SSL_CLIENT_CERT_IDENTITY_TEST_UTIL_H_
|
|
#define NET_SSL_CLIENT_CERT_IDENTITY_TEST_UTIL_H_
|
|
|
|
#include "net/ssl/client_cert_identity.h"
|
|
|
|
namespace base {
|
|
class FilePath;
|
|
}
|
|
|
|
namespace net {
|
|
|
|
// Simple ClientCertIdentity implementation for testing.
|
|
// Note: this implementation of AcquirePrivateKey will always call the callback
|
|
// synchronously.
|
|
class FakeClientCertIdentity : public ClientCertIdentity {
|
|
public:
|
|
FakeClientCertIdentity(scoped_refptr<X509Certificate> cert,
|
|
scoped_refptr<SSLPrivateKey> key);
|
|
~FakeClientCertIdentity() override;
|
|
|
|
// Creates a FakeClientCertIdentity from a certificate file (DER or PEM) and
|
|
// private key file (unencrypted pkcs8). Returns nullptr on error.
|
|
static std::unique_ptr<FakeClientCertIdentity> CreateFromCertAndKeyFiles(
|
|
const base::FilePath& dir,
|
|
const std::string& cert_filename,
|
|
const std::string& key_filename);
|
|
|
|
// Duplicates the FakeClientCertIdentity.
|
|
std::unique_ptr<FakeClientCertIdentity> Copy();
|
|
|
|
// Returns the SSLPrivateKey in a more convenient way, for tests.
|
|
SSLPrivateKey* ssl_private_key() const { return key_.get(); }
|
|
|
|
// ClientCertIdentity implementation:
|
|
void AcquirePrivateKey(
|
|
const base::Callback<void(scoped_refptr<SSLPrivateKey>)>&
|
|
private_key_callback) override;
|
|
#if defined(OS_MACOSX)
|
|
SecIdentityRef sec_identity_ref() const override;
|
|
#endif
|
|
|
|
private:
|
|
scoped_refptr<SSLPrivateKey> key_;
|
|
};
|
|
|
|
// Converts a CertificateList to a ClientCertIdentityList of
|
|
// FakeClientCertIdentity, with null private keys.
|
|
ClientCertIdentityList FakeClientCertIdentityListFromCertificateList(
|
|
const CertificateList& certs);
|
|
|
|
} // namespace net
|
|
|
|
#endif // NET_SSL_CLIENT_CERT_IDENTITY_TEST_UTIL_H_
|