Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / MS / Internal / IO / Packaging / PartManifestEntry.cs / 1 / PartManifestEntry.cs
//------------------------------------------------------------------------------ // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // Simple struct for maintaining information of a Part found in an Xml signature manifest // // History: // 02/07/2005: BruceMac: Initial Implementation // 11/30/2005: BruceMac: Security Mitigations // //----------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Collections.Generic; using System.Security.Cryptography; using System.Security.Cryptography.Xml; using System.Xml; using System.Windows; using System.IO.Packaging; using MS.Internal; namespace MS.Internal.IO.Packaging { ////// Represents parsed value for a single Part/Relationship entry in the Manifest /// internal struct PartManifestEntry { //----------------------------------------------------- // // Internal Properties // //----------------------------------------------------- // is this a relationship entry? internal bool IsRelationshipEntry { get { return _relationshipSelectors != null; } } internal Uri Uri { get { return _uri; } } internal ContentType ContentType { get { return _contentType; } } internal String HashAlgorithm { get { return _hashAlgorithm; } } internal String HashValue { get { return _hashValue; } } internal ListTransforms { get { return _transforms; } } internal List RelationshipSelectors { get { return _relationshipSelectors; } } // null if Part entry internal Uri OwningPartUri // only valid if IsRelationshipEntry { get { Debug.Assert(_owningPartUri != null, "Logic error: OwningPart is null on a non-Relationship entry"); return _owningPartUri; } } //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- /// /// Constructor /// /// part uri of part in question /// type of part /// digest method /// value of the hash calculation extracted from the signature Xml /// ordered transform list - may be null /// may be null but can never be empty internal PartManifestEntry(Uri uri, ContentType contentType, String hashAlgorithm, String hashValue, Listtransforms, List relationshipSelectors) { Invariant.Assert(uri != null); Invariant.Assert(contentType != null); Invariant.Assert(hashAlgorithm != null); _uri = uri; _contentType = contentType; _hashAlgorithm = hashAlgorithm; _hashValue = hashValue; _transforms = transforms; _relationshipSelectors = relationshipSelectors; _owningPartUri = null; if (_relationshipSelectors != null) { Invariant.Assert(relationshipSelectors.Count > 0); #if DEBUG Invariant.Assert(DoAllSelectorsHaveSameOwningPart(relationshipSelectors), "All relationship selectors should have same owningPart for a given part manifest"); #endif //Get owning Part uri from one of the relationship selectors _owningPartUri = relationshipSelectors[0].SourceUri; } } #if DEBUG private bool DoAllSelectorsHaveSameOwningPart(IEnumerable relationshipSelectors) { Uri owningPartUri = null; foreach (PackageRelationshipSelector selector in relationshipSelectors) { if (owningPartUri == null) { owningPartUri = selector.SourceUri; } else if (Uri.Compare(owningPartUri, selector.SourceUri, UriComponents.SerializationInfoString, UriFormat.UriEscaped, StringComparison.Ordinal) != 0 ) return false; } return true; } #endif //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ private Uri _owningPartUri; // owing part if this is a Relationship Uri private Uri _uri; private ContentType _contentType; private String _hashAlgorithm; private String _hashValue; private List _transforms; private List _relationshipSelectors; // null if this is a Part } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // // // Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // Simple struct for maintaining information of a Part found in an Xml signature manifest // // History: // 02/07/2005: BruceMac: Initial Implementation // 11/30/2005: BruceMac: Security Mitigations // //----------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Collections.Generic; using System.Security.Cryptography; using System.Security.Cryptography.Xml; using System.Xml; using System.Windows; using System.IO.Packaging; using MS.Internal; namespace MS.Internal.IO.Packaging { ////// Represents parsed value for a single Part/Relationship entry in the Manifest /// internal struct PartManifestEntry { //----------------------------------------------------- // // Internal Properties // //----------------------------------------------------- // is this a relationship entry? internal bool IsRelationshipEntry { get { return _relationshipSelectors != null; } } internal Uri Uri { get { return _uri; } } internal ContentType ContentType { get { return _contentType; } } internal String HashAlgorithm { get { return _hashAlgorithm; } } internal String HashValue { get { return _hashValue; } } internal ListTransforms { get { return _transforms; } } internal List RelationshipSelectors { get { return _relationshipSelectors; } } // null if Part entry internal Uri OwningPartUri // only valid if IsRelationshipEntry { get { Debug.Assert(_owningPartUri != null, "Logic error: OwningPart is null on a non-Relationship entry"); return _owningPartUri; } } //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- /// /// Constructor /// /// part uri of part in question /// type of part /// digest method /// value of the hash calculation extracted from the signature Xml /// ordered transform list - may be null /// may be null but can never be empty internal PartManifestEntry(Uri uri, ContentType contentType, String hashAlgorithm, String hashValue, Listtransforms, List relationshipSelectors) { Invariant.Assert(uri != null); Invariant.Assert(contentType != null); Invariant.Assert(hashAlgorithm != null); _uri = uri; _contentType = contentType; _hashAlgorithm = hashAlgorithm; _hashValue = hashValue; _transforms = transforms; _relationshipSelectors = relationshipSelectors; _owningPartUri = null; if (_relationshipSelectors != null) { Invariant.Assert(relationshipSelectors.Count > 0); #if DEBUG Invariant.Assert(DoAllSelectorsHaveSameOwningPart(relationshipSelectors), "All relationship selectors should have same owningPart for a given part manifest"); #endif //Get owning Part uri from one of the relationship selectors _owningPartUri = relationshipSelectors[0].SourceUri; } } #if DEBUG private bool DoAllSelectorsHaveSameOwningPart(IEnumerable relationshipSelectors) { Uri owningPartUri = null; foreach (PackageRelationshipSelector selector in relationshipSelectors) { if (owningPartUri == null) { owningPartUri = selector.SourceUri; } else if (Uri.Compare(owningPartUri, selector.SourceUri, UriComponents.SerializationInfoString, UriFormat.UriEscaped, StringComparison.Ordinal) != 0 ) return false; } return true; } #endif //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ private Uri _owningPartUri; // owing part if this is a Relationship Uri private Uri _uri; private ContentType _contentType; private String _hashAlgorithm; private String _hashValue; private List _transforms; private List _relationshipSelectors; // null if this is a Part } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewGroupItemCollection.cs
- BuildDependencySet.cs
- FamilyCollection.cs
- xdrvalidator.cs
- GradientStop.cs
- ApplicationManager.cs
- TextServicesDisplayAttributePropertyRanges.cs
- BindToObject.cs
- SqlReferenceCollection.cs
- NullEntityWrapper.cs
- TickBar.cs
- UInt64.cs
- SynchronizedInputProviderWrapper.cs
- ScrollEventArgs.cs
- ImportCatalogPart.cs
- FontWeights.cs
- localization.cs
- ArglessEventHandlerProxy.cs
- ThreadInterruptedException.cs
- CfgParser.cs
- GridView.cs
- X509Certificate2Collection.cs
- XPathBinder.cs
- DataTableMapping.cs
- RevocationPoint.cs
- QuaternionIndependentAnimationStorage.cs
- PersistenceException.cs
- SmtpTransport.cs
- ObjectComplexPropertyMapping.cs
- InternalPolicyElement.cs
- DetailsView.cs
- WbmpConverter.cs
- GridViewDeletedEventArgs.cs
- UntypedNullExpression.cs
- HTMLTextWriter.cs
- RewritingValidator.cs
- LoginUtil.cs
- RelatedView.cs
- NamespaceExpr.cs
- _ListenerResponseStream.cs
- JournalEntryListConverter.cs
- TextEffectCollection.cs
- TraceFilter.cs
- BrowserCapabilitiesCodeGenerator.cs
- TreeNode.cs
- ReadOnlyDataSource.cs
- GcHandle.cs
- InvalidCastException.cs
- SqlNodeAnnotations.cs
- ObjectDesignerDataSourceView.cs
- DocumentPageHost.cs
- DataChangedEventManager.cs
- SHA256Cng.cs
- MarshalByRefObject.cs
- EdmSchemaAttribute.cs
- SmiMetaDataProperty.cs
- EpmHelper.cs
- OrCondition.cs
- LiteralSubsegment.cs
- SendKeys.cs
- BuilderElements.cs
- WrapperEqualityComparer.cs
- ProxyElement.cs
- DateTimeStorage.cs
- SqlCommandBuilder.cs
- RequiredAttributeAttribute.cs
- QuaternionValueSerializer.cs
- WeakEventTable.cs
- Repeater.cs
- documentsequencetextview.cs
- CredentialCache.cs
- XmlFormatReaderGenerator.cs
- DataGridViewLinkCell.cs
- SynchronizedInputHelper.cs
- TemplateBindingExtension.cs
- BufferManager.cs
- XmlSchemaAppInfo.cs
- DeviceContexts.cs
- TrueReadOnlyCollection.cs
- TableLayoutSettings.cs
- TdsRecordBufferSetter.cs
- TextLine.cs
- UIAgentCrashedException.cs
- ModelFactory.cs
- FunctionOverloadResolver.cs
- DataControlReferenceCollection.cs
- peersecuritysettings.cs
- ToolStripPanelRow.cs
- VarInfo.cs
- UIServiceHelper.cs
- DynamicDocumentPaginator.cs
- CodeTypeMemberCollection.cs
- ResourceSet.cs
- XmlSerializer.cs
- EntityContainerRelationshipSetEnd.cs
- Point3DAnimation.cs
- RectangleConverter.cs
- AuthenticatingEventArgs.cs
- RuleSettingsCollection.cs
- StringAttributeCollection.cs