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
- XmlPropertyBag.cs
- Atom10FormatterFactory.cs
- TextTreeTextBlock.cs
- CapabilitiesState.cs
- CodeMemberEvent.cs
- ScriptReferenceEventArgs.cs
- EntityDataSource.cs
- TextAdaptor.cs
- IPGlobalProperties.cs
- SoapSchemaImporter.cs
- RegexWorker.cs
- HttpListenerPrefixCollection.cs
- RoleManagerModule.cs
- UnknownBitmapDecoder.cs
- SessionStateContainer.cs
- ConfigurationValues.cs
- XmlPreloadedResolver.cs
- TimelineGroup.cs
- GradientStop.cs
- XmlSchemaObjectTable.cs
- LinkedList.cs
- GetReadStreamResult.cs
- XdrBuilder.cs
- RawStylusInputReport.cs
- OrderablePartitioner.cs
- Source.cs
- SerializableAttribute.cs
- ProcessModelSection.cs
- LogExtentCollection.cs
- BitmapEffectInput.cs
- TextChange.cs
- ContextDataSourceView.cs
- SafePEFileHandle.cs
- InkCanvasSelectionAdorner.cs
- CharacterMetrics.cs
- ConditionalAttribute.cs
- WebBrowserProgressChangedEventHandler.cs
- GraphicsContext.cs
- ColorMap.cs
- CriticalHandle.cs
- TransformerInfo.cs
- PropertyEntry.cs
- MasterPageBuildProvider.cs
- DBCommandBuilder.cs
- DesignerGeometryHelper.cs
- KeySplineConverter.cs
- SafeReversePInvokeHandle.cs
- MailSettingsSection.cs
- PageClientProxyGenerator.cs
- ConsumerConnectionPoint.cs
- PeerNameRecordCollection.cs
- DetailsViewInsertEventArgs.cs
- ByteFacetDescriptionElement.cs
- DataGridViewCellCancelEventArgs.cs
- contentDescriptor.cs
- WeakReferenceList.cs
- BitmapFrameEncode.cs
- ModelUIElement3D.cs
- Typeface.cs
- RuleSettings.cs
- BlobPersonalizationState.cs
- EditorZoneBase.cs
- ScalarConstant.cs
- TextChange.cs
- TextSpan.cs
- XmlLanguage.cs
- X509CertificateRecipientClientCredential.cs
- NotificationContext.cs
- DeferredSelectedIndexReference.cs
- TiffBitmapEncoder.cs
- TimeoutTimer.cs
- HttpDebugHandler.cs
- Oci.cs
- serverconfig.cs
- SQLDateTime.cs
- AddInAdapter.cs
- MessageEnumerator.cs
- BufferedGraphics.cs
- XmlSchemaSimpleContentExtension.cs
- SymmetricAlgorithm.cs
- EditorZone.cs
- Calendar.cs
- Attributes.cs
- ExpandableObjectConverter.cs
- SqlDependencyListener.cs
- DateTimeUtil.cs
- ListItemCollection.cs
- SystemIPInterfaceStatistics.cs
- ControlPropertyNameConverter.cs
- MonitorWrapper.cs
- MatrixTransform3D.cs
- VersionedStream.cs
- LinkAreaEditor.cs
- OleDbTransaction.cs
- QuerySelectOp.cs
- SQLRoleProvider.cs
- CatalogPartChrome.cs
- ImageProxy.cs
- Utilities.cs
- ImageClickEventArgs.cs