48 lines
1.5 KiB
C++
48 lines
1.5 KiB
C++
/* 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/. */
|
|
|
|
#if !defined(NIGHTLY_BUILD) || defined(MOZ_NO_SMART_CARDS)
|
|
# error This file should only be used under NIGHTLY_BUILD and when MOZ_NO_SMART_CARDS is not defined.
|
|
#endif // !NIGHTLY_BUILD || MOZ_NO_SMART_CARDS
|
|
|
|
#include "mozilla/psm/PKCS11ModuleParent.h"
|
|
#include "nsNSSComponent.h"
|
|
|
|
namespace mozilla::psm {
|
|
|
|
nsresult PKCS11ModuleParent::BindToUtilityProcess(
|
|
const RefPtr<ipc::UtilityProcessParent>& aUtilityParent) {
|
|
Endpoint<PPKCS11ModuleParent> parentEnd;
|
|
Endpoint<PPKCS11ModuleChild> childEnd;
|
|
nsresult rv = PPKCS11Module::CreateEndpoints(
|
|
ipc::EndpointProcInfo::Current(), aUtilityParent->OtherEndpointProcInfo(),
|
|
&parentEnd, &childEnd);
|
|
|
|
if (NS_FAILED(rv)) {
|
|
MOZ_ASSERT_UNREACHABLE("Protocol endpoints failure");
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
nsAutoCString profilePath;
|
|
rv = GetNSSProfilePath(profilePath);
|
|
if (NS_FAILED(rv)) {
|
|
profilePath.Truncate();
|
|
}
|
|
|
|
if (!aUtilityParent->SendStartPKCS11ModuleService(std::move(childEnd),
|
|
profilePath)) {
|
|
MOZ_ASSERT_UNREACHABLE("StartPKCS11Module service failure");
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
if (!parentEnd.Bind(this)) {
|
|
MOZ_ASSERT_UNREACHABLE("StartPKCS11Module service failure");
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
} // namespace mozilla::psm
|