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"
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
27 class SelectTLSClientAuthCertParent
: public PSelectTLSClientAuthCertParent
{
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
);
46 ~SelectTLSClientAuthCertParent() = default;
48 void ActorDestroy(mozilla::ipc::IProtocol::ActorDestroyReason aWhy
) override
;
52 } // namespace mozilla
54 #endif // SECURITY_MANAGER_SSL_SELECTTLSCLIENTAUTHCERTPARENT_H_