Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / System.Runtime.DurableInstancing / System / Runtime / PartialTrustHelpers.cs / 1305376 / PartialTrustHelpers.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Runtime
{
using System.Security;
using System.Security.Permissions;
using System.Runtime.CompilerServices;
using System.Reflection;
static class PartialTrustHelpers
{
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
static Type aptca;
internal static bool ShouldFlowSecurityContext
{
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
get
{
if (AppDomain.CurrentDomain.IsHomogenous)
{
return false;
}
return SecurityManager.CurrentThreadRequiresSecurityContextCapture();
}
}
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
internal static bool IsInFullTrust()
{
if (AppDomain.CurrentDomain.IsHomogenous)
{
return AppDomain.CurrentDomain.IsFullyTrusted;
}
else
{
if (!SecurityManager.CurrentThreadRequiresSecurityContextCapture())
{
return true;
}
try
{
DemandForFullTrust();
return true;
}
catch (SecurityException)
{
return false;
}
}
}
[Fx.Tag.SecurityNote(Critical = "Captures security context with identity flow suppressed, " +
"this requires satisfying a LinkDemand for infrastructure.")]
[SecurityCritical]
internal static SecurityContext CaptureSecurityContextNoIdentityFlow()
{
// capture the security context but never flow windows identity
if (SecurityContext.IsWindowsIdentityFlowSuppressed())
{
return SecurityContext.Capture();
}
else
{
using (SecurityContext.SuppressFlowWindowsIdentity())
{
return SecurityContext.Capture();
}
}
}
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
internal static bool IsTypeAptca(Type type)
{
Assembly assembly = type.Assembly;
return IsAssemblyAptca(assembly) || !IsAssemblySigned(assembly);
}
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[MethodImpl(MethodImplOptions.NoInlining)]
static void DemandForFullTrust()
{
}
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
static bool IsAssemblyAptca(Assembly assembly)
{
if (aptca == null)
{
aptca = typeof(AllowPartiallyTrustedCallersAttribute);
}
return assembly.GetCustomAttributes(aptca, false).Length > 0;
}
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
[FileIOPermission(SecurityAction.Assert, Unrestricted = true)]
static bool IsAssemblySigned(Assembly assembly)
{
byte[] publicKeyToken = assembly.GetName().GetPublicKeyToken();
return publicKeyToken != null & publicKeyToken.Length > 0;
}
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
internal static bool CheckAppDomainPermissions(PermissionSet permissions)
{
return AppDomain.CurrentDomain.IsHomogenous &&
permissions.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet);
}
[Fx.Tag.SecurityNote(Critical = "used in a security-sensitive decision")]
[SecurityCritical]
internal static bool HasEtwPermissions()
{
//Currently unrestricted permissions are required to create Etw provider.
PermissionSet permissions = new PermissionSet(PermissionState.Unrestricted);
return CheckAppDomainPermissions(permissions);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SingleBodyParameterMessageFormatter.cs
- StorageEntityTypeMapping.cs
- QilPatternVisitor.cs
- JavascriptCallbackMessageInspector.cs
- TextBoxAutomationPeer.cs
- HtmlInputButton.cs
- XmlSchemaRedefine.cs
- DateTimeValueSerializerContext.cs
- Grid.cs
- _AutoWebProxyScriptHelper.cs
- IndexOutOfRangeException.cs
- XmlNodeComparer.cs
- smtppermission.cs
- DataGridViewRowCancelEventArgs.cs
- BindingOperations.cs
- ErrorFormatterPage.cs
- NegotiateStream.cs
- ConnectionConsumerAttribute.cs
- BitmapEffectDrawing.cs
- ArrayWithOffset.cs
- XmlUtil.cs
- ReadWriteObjectLock.cs
- XmlStreamStore.cs
- NameHandler.cs
- MediaElement.cs
- SerializationFieldInfo.cs
- KoreanLunisolarCalendar.cs
- NativeMethods.cs
- ResizeGrip.cs
- CharacterShapingProperties.cs
- RangeBase.cs
- MenuItemStyleCollection.cs
- URLMembershipCondition.cs
- HtmlInputSubmit.cs
- HelpEvent.cs
- Hashtable.cs
- Point3D.cs
- LinkConverter.cs
- WizardPanel.cs
- WinCategoryAttribute.cs
- IUnknownConstantAttribute.cs
- ComponentCodeDomSerializer.cs
- AstTree.cs
- WebPartZoneAutoFormat.cs
- AbsoluteQuery.cs
- TypeBuilderInstantiation.cs
- FormViewInsertEventArgs.cs
- RtType.cs
- GeneralTransform3DTo2DTo3D.cs
- ScaleTransform3D.cs
- SqlFunctions.cs
- HtmlFormWrapper.cs
- ConfigurationException.cs
- TextServicesManager.cs
- PtsPage.cs
- TemplateKeyConverter.cs
- BmpBitmapDecoder.cs
- AuthenticatingEventArgs.cs
- BooleanAnimationBase.cs
- ClientBuildManager.cs
- DbXmlEnabledProviderManifest.cs
- PhysicalAddress.cs
- CqlIdentifiers.cs
- DependencyPropertyChangedEventArgs.cs
- BinHexEncoding.cs
- SelectorItemAutomationPeer.cs
- StringSorter.cs
- QuadraticBezierSegment.cs
- WebPartVerb.cs
- SupportsEventValidationAttribute.cs
- ChannelTokenTypeConverter.cs
- Double.cs
- XPathPatternBuilder.cs
- OdbcConnectionPoolProviderInfo.cs
- ListViewHitTestInfo.cs
- InputMethodStateTypeInfo.cs
- ServerIdentity.cs
- CharStorage.cs
- validationstate.cs
- DesignerActionUI.cs
- LinkUtilities.cs
- PolyLineSegment.cs
- ListViewCancelEventArgs.cs
- EventMappingSettings.cs
- DataControlFieldCollection.cs
- DesignerRegion.cs
- CqlLexer.cs
- SettingsPropertyNotFoundException.cs
- ValueUtilsSmi.cs
- SynchronizedPool.cs
- FormsAuthenticationCredentials.cs
- ImportDesigner.xaml.cs
- ImageAttributes.cs
- localization.cs
- AudioStateChangedEventArgs.cs
- ToolStripItemClickedEventArgs.cs
- QilStrConcatenator.cs
- TransferRequestHandler.cs
- GenericAuthenticationEventArgs.cs
- SiteMapDataSource.cs