Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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
- Utilities.cs
- SystemIPv4InterfaceProperties.cs
- HashAlgorithm.cs
- DataComponentMethodGenerator.cs
- CopyCodeAction.cs
- ReaderWriterLock.cs
- ISCIIEncoding.cs
- CompilerParameters.cs
- TableRowCollection.cs
- CompiledQuery.cs
- PropertyChangedEventArgs.cs
- DataViewSettingCollection.cs
- LocalizationComments.cs
- WorkflowPrinting.cs
- CodeMethodReturnStatement.cs
- AbsoluteQuery.cs
- Viewport2DVisual3D.cs
- QueueProcessor.cs
- WindowsStatic.cs
- UnmanagedHandle.cs
- MailWriter.cs
- FileClassifier.cs
- ToggleButton.cs
- DataGridRowsPresenter.cs
- TraceContext.cs
- EncoderParameters.cs
- BezierSegment.cs
- ScrollableControl.cs
- assemblycache.cs
- HostedElements.cs
- ListItemCollection.cs
- DataGridViewCheckBoxCell.cs
- StoreAnnotationsMap.cs
- DesignerToolStripControlHost.cs
- MatrixConverter.cs
- ResourceExpressionBuilder.cs
- CategoryAttribute.cs
- SimpleHandlerBuildProvider.cs
- SequenceDesigner.cs
- SHA256Cng.cs
- GridViewUpdatedEventArgs.cs
- MachineKeySection.cs
- httpapplicationstate.cs
- Condition.cs
- GenericFlowSwitchHelper.cs
- EditorZone.cs
- XmlDeclaration.cs
- UncommonField.cs
- HierarchicalDataTemplate.cs
- PeerNameRegistration.cs
- PrePostDescendentsWalker.cs
- compensatingcollection.cs
- WriteFileContext.cs
- MouseDevice.cs
- HttpVersion.cs
- AffineTransform3D.cs
- UIElementParagraph.cs
- Point3DValueSerializer.cs
- AssertSection.cs
- ObjectDataSourceStatusEventArgs.cs
- RestClientProxyHandler.cs
- PagePropertiesChangingEventArgs.cs
- ServicePoint.cs
- TypeUtil.cs
- _ContextAwareResult.cs
- Error.cs
- UrlMappingsSection.cs
- StrongNameMembershipCondition.cs
- EntityDataSourceContextDisposingEventArgs.cs
- RectangleGeometry.cs
- TextAutomationPeer.cs
- PictureBox.cs
- RichTextBoxConstants.cs
- XamlReaderConstants.cs
- DocumentReference.cs
- _IPv6Address.cs
- SolidColorBrush.cs
- Matrix3DConverter.cs
- LabelLiteral.cs
- ImageMap.cs
- BindingSource.cs
- MetricEntry.cs
- ListBox.cs
- UnsafeCollabNativeMethods.cs
- BitmapCodecInfoInternal.cs
- SafeCancelMibChangeNotify.cs
- ZipIOLocalFileBlock.cs
- FileNotFoundException.cs
- QueryAccessibilityHelpEvent.cs
- CompilerTypeWithParams.cs
- PopupRoot.cs
- SettingsSection.cs
- EmptyCollection.cs
- XmlSecureResolver.cs
- Floater.cs
- RadialGradientBrush.cs
- PluggableProtocol.cs
- FixedSOMImage.cs
- PageCatalogPartDesigner.cs
- HttpSysSettings.cs