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
- URL.cs
- ZoneIdentityPermission.cs
- FormsAuthenticationTicket.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- DetailsViewInsertEventArgs.cs
- DoubleAnimationBase.cs
- TextRangeEditTables.cs
- EdmItemCollection.OcAssemblyCache.cs
- ListBoxItemAutomationPeer.cs
- OfTypeExpression.cs
- VideoDrawing.cs
- SerializerWriterEventHandlers.cs
- GeneralTransform.cs
- DrawingVisual.cs
- NativeMethods.cs
- XmlSignificantWhitespace.cs
- TransactionFlowBindingElement.cs
- RelatedImageListAttribute.cs
- MapPathBasedVirtualPathProvider.cs
- RunClient.cs
- BmpBitmapEncoder.cs
- RegexGroupCollection.cs
- GeometryHitTestParameters.cs
- FormatConvertedBitmap.cs
- PartialList.cs
- WorkflowRuntimeServiceElementCollection.cs
- ErrorRuntimeConfig.cs
- objectresult_tresulttype.cs
- RuleSet.cs
- StylusButton.cs
- LongPath.cs
- PathParser.cs
- FSWPathEditor.cs
- TextFormatterHost.cs
- HtmlInputText.cs
- XPathNodeList.cs
- AlphabeticalEnumConverter.cs
- SingleAnimation.cs
- CellLabel.cs
- ParseNumbers.cs
- InfoCardArgumentException.cs
- DataGridParentRows.cs
- CompositeCollection.cs
- BitmapPalettes.cs
- MaskedTextBox.cs
- DataPagerField.cs
- DesignerVerbCollection.cs
- ParserStreamGeometryContext.cs
- VectorAnimationBase.cs
- SqlClientFactory.cs
- RightsManagementPermission.cs
- TextEditorThreadLocalStore.cs
- PriorityQueue.cs
- PathData.cs
- nulltextcontainer.cs
- Component.cs
- SQLInt16Storage.cs
- InternalConfigHost.cs
- IBuiltInEvidence.cs
- WindowsPrincipal.cs
- DbParameterCollectionHelper.cs
- CssClassPropertyAttribute.cs
- DeclarativeExpressionConditionDeclaration.cs
- TracingConnectionListener.cs
- OledbConnectionStringbuilder.cs
- ReadOnlyHierarchicalDataSource.cs
- DataSourceNameHandler.cs
- EasingFunctionBase.cs
- DataSvcMapFileSerializer.cs
- UrlParameterWriter.cs
- Random.cs
- MediaPlayerState.cs
- SystemFonts.cs
- IntPtr.cs
- ExpressionDumper.cs
- AppDomainUnloadedException.cs
- TableRow.cs
- Rule.cs
- StoragePropertyMapping.cs
- FormatVersion.cs
- ALinqExpressionVisitor.cs
- ChameleonKey.cs
- XmlSchemaCompilationSettings.cs
- ScriptControlDescriptor.cs
- relpropertyhelper.cs
- InternalPermissions.cs
- DetailsViewRowCollection.cs
- IriParsingElement.cs
- EdmScalarPropertyAttribute.cs
- UriTemplateClientFormatter.cs
- PrintDialog.cs
- BulletedList.cs
- ParallelEnumerableWrapper.cs
- ExceptionUtil.cs
- DataGridViewTextBoxEditingControl.cs
- SkewTransform.cs
- WebPartDescriptionCollection.cs
- LinearGradientBrush.cs
- QueryStringParameter.cs
- XmlEncodedRawTextWriter.cs