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