Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / IO / Packaging / PartManifestEntry.cs / 1305600 / 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
- StorageSetMapping.cs
- SqlConnectionPoolProviderInfo.cs
- DbRetry.cs
- ToolStripSystemRenderer.cs
- XhtmlBasicSelectionListAdapter.cs
- UnsafeNetInfoNativeMethods.cs
- IndentedWriter.cs
- StringCollection.cs
- SqlInfoMessageEvent.cs
- COM2EnumConverter.cs
- PropertyGridCommands.cs
- EntityTypeEmitter.cs
- DictionaryEntry.cs
- StringOutput.cs
- HtmlLink.cs
- _OverlappedAsyncResult.cs
- ProfileSettings.cs
- SafeArrayTypeMismatchException.cs
- EventProviderWriter.cs
- XmlDocumentSchema.cs
- ActivityDesignerHighlighter.cs
- Region.cs
- HyperlinkAutomationPeer.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- MsmqOutputChannel.cs
- FileUtil.cs
- ProcessRequestArgs.cs
- WebServicesInteroperability.cs
- _DisconnectOverlappedAsyncResult.cs
- CompositeFontParser.cs
- TagMapInfo.cs
- AssemblyNameProxy.cs
- JsonDataContract.cs
- TraceUtility.cs
- WebPartEditorOkVerb.cs
- SizeIndependentAnimationStorage.cs
- XmlWriter.cs
- BufferedWebEventProvider.cs
- RightNameExpirationInfoPair.cs
- M3DUtil.cs
- X509Certificate.cs
- PassportIdentity.cs
- DragDrop.cs
- Matrix.cs
- ContractComponent.cs
- DependencyObjectType.cs
- ApplyHostConfigurationBehavior.cs
- SafeBitVector32.cs
- ControlDesigner.cs
- oledbmetadatacolumnnames.cs
- FontStyle.cs
- PartBasedPackageProperties.cs
- InputProcessorProfiles.cs
- Brush.cs
- WindowsAuthenticationEventArgs.cs
- TogglePattern.cs
- TrustManagerMoreInformation.cs
- ControlEvent.cs
- SafeNativeMethods.cs
- PresentationAppDomainManager.cs
- LayoutEngine.cs
- HostingEnvironmentSection.cs
- TdsParserHelperClasses.cs
- Border.cs
- DropShadowBitmapEffect.cs
- CodeDomLocalizationProvider.cs
- DrawingAttributes.cs
- XDRSchema.cs
- ReadOnlyCollectionBase.cs
- ValidatorCollection.cs
- AutoGeneratedField.cs
- TypeTypeConverter.cs
- CustomAttributeSerializer.cs
- TypeConverterAttribute.cs
- Help.cs
- EventProvider.cs
- ItemCheckedEvent.cs
- ProtocolViolationException.cs
- ExtensionDataReader.cs
- printdlgexmarshaler.cs
- TriState.cs
- NullableConverter.cs
- DataGridItem.cs
- IssuedTokenServiceCredential.cs
- ExcCanonicalXml.cs
- TextBoxLine.cs
- Compiler.cs
- FileCodeGroup.cs
- QueryContinueDragEvent.cs
- ConditionCollection.cs
- CanonicalXml.cs
- Condition.cs
- DateTimeFormatInfoScanner.cs
- HostDesigntimeLicenseContext.cs
- XsltException.cs
- DataPagerField.cs
- PriorityBindingExpression.cs
- CustomValidator.cs
- WindowsSolidBrush.cs
- Tablet.cs