Index: sandbox/win/src/restricted_token.h |
diff --git a/sandbox/win/src/restricted_token.h b/sandbox/win/src/restricted_token.h |
deleted file mode 100644 |
index 584cd3ad6dbb65123a2985574cabba63cd7721eb..0000000000000000000000000000000000000000 |
--- a/sandbox/win/src/restricted_token.h |
+++ /dev/null |
@@ -1,196 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef SANDBOX_SRC_RESTRICTED_TOKEN_H_ |
-#define SANDBOX_SRC_RESTRICTED_TOKEN_H_ |
- |
-#include <windows.h> |
-#include <vector> |
- |
-#include "base/macros.h" |
-#include "base/strings/string16.h" |
-#include "base/win/scoped_handle.h" |
-#include "sandbox/win/src/restricted_token_utils.h" |
-#include "sandbox/win/src/security_level.h" |
-#include "sandbox/win/src/sid.h" |
- |
-// Flags present in the Group SID list. These 2 flags are new in Windows Vista |
-#ifndef SE_GROUP_INTEGRITY |
-#define SE_GROUP_INTEGRITY (0x00000020L) |
-#endif |
-#ifndef SE_GROUP_INTEGRITY_ENABLED |
-#define SE_GROUP_INTEGRITY_ENABLED (0x00000040L) |
-#endif |
- |
-namespace sandbox { |
- |
-// Handles the creation of a restricted token using the effective token or |
-// any token handle. |
-// Sample usage: |
-// RestrictedToken restricted_token; |
-// DWORD err_code = restricted_token.Init(NULL); // Use the current |
-// // effective token |
-// if (ERROR_SUCCESS != err_code) { |
-// // handle error. |
-// } |
-// |
-// restricted_token.AddRestrictingSid(ATL::Sids::Users().GetPSID()); |
-// base::win::ScopedHandle token_handle; |
-// err_code = restricted_token.GetRestrictedToken(&token_handle); |
-// if (ERROR_SUCCESS != err_code) { |
-// // handle error. |
-// } |
-// [...] |
-class RestrictedToken { |
- public: |
- // Init() has to be called before calling any other method in the class. |
- RestrictedToken(); |
- ~RestrictedToken(); |
- |
- // Initializes the RestrictedToken object with effective_token. |
- // If effective_token is NULL, it initializes the RestrictedToken object with |
- // the effective token of the current process. |
- DWORD Init(HANDLE effective_token); |
- |
- // Creates a restricted token. |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- DWORD GetRestrictedToken(base::win::ScopedHandle* token) const; |
- |
- // Creates a restricted token and uses this new token to create a new token |
- // for impersonation. Returns this impersonation token. |
- // |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- // |
- // The sample usage is the same as the GetRestrictedToken function. |
- DWORD GetRestrictedTokenForImpersonation( |
- base::win::ScopedHandle* token) const; |
- |
- // Lists all sids in the token and mark them as Deny Only except for those |
- // present in the exceptions parameter. If there is no exception needed, |
- // the caller can pass an empty list or NULL for the exceptions |
- // parameter. |
- // |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- // |
- // Sample usage: |
- // std::vector<Sid> sid_exceptions; |
- // sid_exceptions.push_back(ATL::Sids::Users().GetPSID()); |
- // sid_exceptions.push_back(ATL::Sids::World().GetPSID()); |
- // restricted_token.AddAllSidsForDenyOnly(&sid_exceptions); |
- // Note: A Sid marked for Deny Only in a token cannot be used to grant |
- // access to any resource. It can only be used to deny access. |
- DWORD AddAllSidsForDenyOnly(std::vector<Sid> *exceptions); |
- |
- // Adds a user or group SID for Deny Only in the restricted token. |
- // Parameter: sid is the SID to add in the Deny Only list. |
- // The return value is always ERROR_SUCCESS. |
- // |
- // Sample Usage: |
- // restricted_token.AddSidForDenyOnly(ATL::Sids::Admins().GetPSID()); |
- DWORD AddSidForDenyOnly(const Sid &sid); |
- |
- // Adds the user sid of the token for Deny Only in the restricted token. |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- DWORD AddUserSidForDenyOnly(); |
- |
- // Lists all privileges in the token and add them to the list of privileges |
- // to remove except for those present in the exceptions parameter. If |
- // there is no exception needed, the caller can pass an empty list or NULL |
- // for the exceptions parameter. |
- // |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- // |
- // Sample usage: |
- // std::vector<base::string16> privilege_exceptions; |
- // privilege_exceptions.push_back(SE_CHANGE_NOTIFY_NAME); |
- // restricted_token.DeleteAllPrivileges(&privilege_exceptions); |
- DWORD DeleteAllPrivileges(const std::vector<base::string16> *exceptions); |
- |
- // Adds a privilege to the list of privileges to remove in the restricted |
- // token. |
- // Parameter: privilege is the privilege name to remove. This is the string |
- // representing the privilege. (e.g. "SeChangeNotifyPrivilege"). |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- // |
- // Sample usage: |
- // restricted_token.DeletePrivilege(SE_LOAD_DRIVER_NAME); |
- DWORD DeletePrivilege(const wchar_t *privilege); |
- |
- // Adds a SID to the list of restricting sids in the restricted token. |
- // Parameter: sid is the sid to add to the list restricting sids. |
- // The return value is always ERROR_SUCCESS. |
- // |
- // Sample usage: |
- // restricted_token.AddRestrictingSid(ATL::Sids::Users().GetPSID()); |
- // Note: The list of restricting is used to force Windows to perform all |
- // access checks twice. The first time using your user SID and your groups, |
- // and the second time using your list of restricting sids. The access has |
- // to be granted in both places to get access to the resource requested. |
- DWORD AddRestrictingSid(const Sid &sid); |
- |
- // Adds the logon sid of the token in the list of restricting sids for the |
- // restricted token. |
- // |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- DWORD AddRestrictingSidLogonSession(); |
- |
- // Adds the owner sid of the token in the list of restricting sids for the |
- // restricted token. |
- // |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- DWORD AddRestrictingSidCurrentUser(); |
- |
- // Adds all group sids and the user sid to the restricting sids list. |
- // |
- // If the function succeeds, the return value is ERROR_SUCCESS. If the |
- // function fails, the return value is the win32 error code corresponding to |
- // the error. |
- DWORD AddRestrictingSidAllSids(); |
- |
- // Sets the token integrity level. This is only valid on Vista. The integrity |
- // level cannot be higher than your current integrity level. |
- DWORD SetIntegrityLevel(IntegrityLevel integrity_level); |
- |
- // Set a flag which indicates the created token should have a locked down |
- // default DACL when created. |
- void SetLockdownDefaultDacl(); |
- |
- private: |
- // The list of restricting sids in the restricted token. |
- std::vector<Sid> sids_to_restrict_; |
- // The list of privileges to remove in the restricted token. |
- std::vector<LUID> privileges_to_disable_; |
- // The list of sids to mark as Deny Only in the restricted token. |
- std::vector<Sid> sids_for_deny_only_; |
- // The token to restrict. Can only be set in a constructor. |
- base::win::ScopedHandle effective_token_; |
- // The token integrity level. Only valid on Vista. |
- IntegrityLevel integrity_level_; |
- // Tells if the object is initialized or not (if Init() has been called) |
- bool init_; |
- // Lockdown the default DACL when creating new tokens. |
- bool lockdown_default_dacl_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RestrictedToken); |
-}; |
- |
-} // namespace sandbox |
- |
-#endif // SANDBOX_SRC_RESTRICTED_TOKEN_H_ |