1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef SECURITY_MANAGER_SSL_SELECTTLSCLIENTAUTHCERTPARENT_H_
#define SECURITY_MANAGER_SSL_SELECTTLSCLIENTAUTHCERTPARENT_H_
#include "mozilla/OriginAttributes.h"
#include "mozilla/psm/PSelectTLSClientAuthCertParent.h"
namespace mozilla {
namespace psm {
// Parent process component of the SelectTLSClientAuthCert IPC protocol. When
// the socket process encounters a TLS server that requests a client
// authentication certificate, Dispatch will be called via IPC with the
// information associated with that connection. That function dispatches an
// event to the main thread that determines what certificate to select, if any
// (usually by opening a dialog for the user to interact with). When a
// certificate (or no certificate) has been selected, TLSClientAuthCertSelected
// will be called on the IPC thread, which will cause
// SelectTLSClientAuthCertChild::RecvTLSClientAuthCertSelected to be called via
// IPC, which will get the appropriate information to NSS to continue the
// connection.
class SelectTLSClientAuthCertParent : public PSelectTLSClientAuthCertParent {
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(SelectTLSClientAuthCertParent, override)
SelectTLSClientAuthCertParent() = default;
bool Dispatch(const nsACString& aHostName,
const OriginAttributes& aOriginAttributes, const int32_t& aPort,
const uint32_t& aProviderFlags,
const uint32_t& aProviderTlsFlags,
const ByteArray& aServerCertBytes,
nsTArray<ByteArray>&& aCANames,
const uint64_t& aBrowsingContextID);
void TLSClientAuthCertSelected(
const nsTArray<uint8_t>& aSelectedCertBytes,
nsTArray<nsTArray<uint8_t>>&& aSelectedCertChainBytes);
private:
~SelectTLSClientAuthCertParent() = default;
void ActorDestroy(mozilla::ipc::IProtocol::ActorDestroyReason aWhy) override;
};
} // namespace psm
} // namespace mozilla
#endif // SECURITY_MANAGER_SSL_SELECTTLSCLIENTAUTHCERTPARENT_H_
|