// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef REMOTING_HOST_WIN_COM_SECURITY_H_
#define REMOTING_HOST_WIN_COM_SECURITY_H_
#include <string>
// Concatenates ACE type, permissions and sid given as SDDL strings into an ACE
// definition in SDDL form.
#define SDDL_ACE(type, permissions, sid) \
L"(" type L";;" permissions L";;;" sid L")"
// Text representation of COM_RIGHTS_EXECUTE and COM_RIGHTS_EXECUTE_LOCAL
// permission bits that is used in the SDDL definition below.
#define SDDL_COM_EXECUTE_LOCAL L"0x3"
namespace remoting {
// Initializes COM security of the process applying the passed security
// descriptor. The function configures the following settings:
// - Server authenticates that all data received is from the expected client.
// - Server can impersonate clients to check their identity but cannot act on
// their behalf.
// - Caller's identity is verified on every call (Dynamic cloaking).
// - Unless |activate_as_activator| is true, activations where the server would
// run under this process's identity are prohibited.
bool InitializeComSecurity(const std::string& security_descriptor,
const std::string& mandatory_label,
bool activate_as_activator);
} // namespace remoting
#endif // REMOTING_HOST_WIN_COM_SECURITY_H_