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
- brushes.cs
- HttpResponse.cs
- BitmapEffectInput.cs
- DependencyObjectProvider.cs
- AuthenticationManager.cs
- SecurityCriticalDataForSet.cs
- XmlSerializationGeneratedCode.cs
- DllNotFoundException.cs
- SemaphoreFullException.cs
- TraceRecords.cs
- HttpCacheParams.cs
- WindowHelperService.cs
- HtmlHistory.cs
- ApplicationBuildProvider.cs
- MethodBuilderInstantiation.cs
- RequestSecurityToken.cs
- FixUp.cs
- ConsoleCancelEventArgs.cs
- AddInToken.cs
- StyleSheetDesigner.cs
- TrustManagerMoreInformation.cs
- BufferModeSettings.cs
- ControlPaint.cs
- TypeDependencyAttribute.cs
- MenuItemStyle.cs
- EventMappingSettings.cs
- CustomPopupPlacement.cs
- AutomationEventArgs.cs
- IdnElement.cs
- NTAccount.cs
- SQlBooleanStorage.cs
- PartialList.cs
- VectorAnimationUsingKeyFrames.cs
- ParsedAttributeCollection.cs
- InputLanguageManager.cs
- OleDbCommand.cs
- AuthorizationRuleCollection.cs
- RelationshipEnd.cs
- EncodingDataItem.cs
- AppearanceEditorPart.cs
- UrlAuthFailedErrorFormatter.cs
- DesignTableCollection.cs
- StrokeCollectionConverter.cs
- BaseValidatorDesigner.cs
- InvalidPipelineStoreException.cs
- CreateUserWizardStep.cs
- HelpProvider.cs
- XmlSchemaIdentityConstraint.cs
- PersonalizationState.cs
- PathGradientBrush.cs
- Roles.cs
- ActivationServices.cs
- SchemaElementLookUpTable.cs
- Soap.cs
- LineVisual.cs
- httpapplicationstate.cs
- TextCharacters.cs
- ItemCollection.cs
- SerialErrors.cs
- Base64Decoder.cs
- CFStream.cs
- StreamReader.cs
- DependentList.cs
- ServiceDesigner.cs
- Classification.cs
- WorkflowTraceTransfer.cs
- MemberAccessException.cs
- XmlSchemaSimpleTypeList.cs
- MimeMapping.cs
- BitmapEffectInputData.cs
- Baml2006SchemaContext.cs
- ComplexObject.cs
- PrimitiveSchema.cs
- _KerberosClient.cs
- ScaleTransform.cs
- SessionEndingEventArgs.cs
- TextBounds.cs
- XmlAttributeProperties.cs
- CodeDomSerializer.cs
- ReadOnlyPropertyMetadata.cs
- NullableBoolConverter.cs
- InsufficientMemoryException.cs
- KeyInstance.cs
- RepeatButton.cs
- Int64.cs
- ShaderEffect.cs
- ValidationSummary.cs
- SizeAnimationClockResource.cs
- CssStyleCollection.cs
- TreeView.cs
- MobileRedirect.cs
- COM2ColorConverter.cs
- EpmSourceTree.cs
- HttpStreamXmlDictionaryWriter.cs
- TablePatternIdentifiers.cs
- TextInfo.cs
- XmlSchemaSimpleTypeRestriction.cs
- RadioButtonFlatAdapter.cs
- SystemColorTracker.cs
- HtmlAnchor.cs