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
- XmlnsDictionary.cs
- SoapIgnoreAttribute.cs
- GeometryConverter.cs
- SizeF.cs
- SystemIPv6InterfaceProperties.cs
- ApplicationActivator.cs
- ToolStripPanelCell.cs
- Sql8ExpressionRewriter.cs
- CurrencyWrapper.cs
- RightsManagementEncryptedStream.cs
- sqlstateclientmanager.cs
- StrokeFIndices.cs
- SystemException.cs
- CompilationRelaxations.cs
- XamlBrushSerializer.cs
- RuntimeHandles.cs
- GifBitmapDecoder.cs
- SequentialWorkflowHeaderFooter.cs
- XmlRootAttribute.cs
- WebPartCancelEventArgs.cs
- ConfigXmlText.cs
- XmlAnyAttributeAttribute.cs
- RC2CryptoServiceProvider.cs
- SymbolDocumentGenerator.cs
- ISAPIRuntime.cs
- autovalidator.cs
- DetailsViewUpdatedEventArgs.cs
- InstancePersistenceEvent.cs
- NTAccount.cs
- SystemUnicastIPAddressInformation.cs
- WebPermission.cs
- SQLConvert.cs
- XmlSchemaGroupRef.cs
- FormViewRow.cs
- NumericUpDownAcceleration.cs
- RegistryDataKey.cs
- CroppedBitmap.cs
- PipelineComponent.cs
- CurrentTimeZone.cs
- UiaCoreTypesApi.cs
- SystemWebCachingSectionGroup.cs
- ServiceNotStartedException.cs
- UTF7Encoding.cs
- IntMinMaxAggregationOperator.cs
- ColumnHeaderConverter.cs
- PropertyMapper.cs
- PictureBox.cs
- codemethodreferenceexpression.cs
- Expression.cs
- SystemIcmpV6Statistics.cs
- EdmComplexTypeAttribute.cs
- PrintDialog.cs
- NativeMethodsCLR.cs
- XPathMultyIterator.cs
- VisualStyleElement.cs
- SystemUnicastIPAddressInformation.cs
- RemoteHelper.cs
- BamlResourceContent.cs
- PageStatePersister.cs
- complextypematerializer.cs
- ServiceDescription.cs
- CompiledQueryCacheKey.cs
- TypeForwardedToAttribute.cs
- ToolStripContentPanel.cs
- LayoutUtils.cs
- FreezableDefaultValueFactory.cs
- ControlBuilder.cs
- AuthorizationRuleCollection.cs
- BuildProvider.cs
- WeakRefEnumerator.cs
- SmiRequestExecutor.cs
- GeneralTransformGroup.cs
- DateTimeFormat.cs
- Effect.cs
- InvalidFilterCriteriaException.cs
- XmlName.cs
- XmlLoader.cs
- SchemaEntity.cs
- OleDbConnectionInternal.cs
- EntityTypeEmitter.cs
- Classification.cs
- PeerCollaborationPermission.cs
- FileSystemInfo.cs
- FontUnit.cs
- CngKeyCreationParameters.cs
- XmlDocumentFragment.cs
- PartialTrustHelpers.cs
- PropertyGridEditorPart.cs
- SizeValueSerializer.cs
- SkinBuilder.cs
- CharStorage.cs
- DetailsView.cs
- TypeSystem.cs
- EventSinkHelperWriter.cs
- WmpBitmapEncoder.cs
- FileDialog_Vista.cs
- IisTraceWebEventProvider.cs
- OleStrCAMarshaler.cs
- Matrix3D.cs
- ExpressionHelper.cs