| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- //------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------
- namespace System.ServiceModel.Security
- {
- using System.Xml;
- using System.ServiceModel.Channels;
- using System.ServiceModel;
- sealed class DecryptedHeader : ReadableMessageHeader
- {
- XmlDictionaryReader cachedReader;
- readonly byte[] decryptedBuffer;
- readonly string id;
- readonly string name;
- readonly string namespaceUri;
- readonly string actor;
- readonly bool mustUnderstand;
- readonly bool relay;
- readonly bool isRefParam;
- readonly MessageVersion version;
- readonly XmlAttributeHolder[] envelopeAttributes;
- readonly XmlAttributeHolder[] headerAttributes;
- readonly XmlDictionaryReaderQuotas quotas;
- public DecryptedHeader(byte[] decryptedBuffer,
- XmlAttributeHolder[] envelopeAttributes, XmlAttributeHolder[] headerAttributes,
- MessageVersion version, SignatureTargetIdManager idManager, XmlDictionaryReaderQuotas quotas)
- {
- if (quotas == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("quotas");
- this.decryptedBuffer = decryptedBuffer;
- this.version = version;
- this.envelopeAttributes = envelopeAttributes;
- this.headerAttributes = headerAttributes;
- this.quotas = quotas;
- XmlDictionaryReader reader = CreateReader();
- reader.MoveToStartElement();
- this.name = reader.LocalName;
- this.namespaceUri = reader.NamespaceURI;
- MessageHeader.GetHeaderAttributes(reader, version, out this.actor, out this.mustUnderstand, out this.relay, out this.isRefParam);
- this.id = idManager.ExtractId(reader);
- this.cachedReader = reader;
- }
- public override string Actor
- {
- get
- {
- return this.actor;
- }
- }
- public string Id
- {
- get
- {
- return this.id;
- }
- }
- public override bool IsReferenceParameter
- {
- get
- {
- return this.isRefParam;
- }
- }
-
- public override bool MustUnderstand
- {
- get
- {
- return this.mustUnderstand;
- }
- }
- public override string Name
- {
- get
- {
- return this.name;
- }
- }
- public override string Namespace
- {
- get
- {
- return this.namespaceUri;
- }
- }
- public override bool Relay
- {
- get
- {
- return this.relay;
- }
- }
- XmlDictionaryReader CreateReader()
- {
- return ContextImportHelper.CreateSplicedReader(
- this.decryptedBuffer,
- this.envelopeAttributes,
- this.headerAttributes, null, this.quotas);
- }
- public override XmlDictionaryReader GetHeaderReader()
- {
- if (this.cachedReader != null)
- {
- XmlDictionaryReader cachedReader = this.cachedReader;
- this.cachedReader = null;
- return cachedReader;
- }
- XmlDictionaryReader reader = CreateReader();
- reader.MoveToContent();
- return reader;
- }
- public override bool IsMessageVersionSupported(MessageVersion messageVersion)
- {
- return this.version.Equals( messageVersion );
- }
- }
- }
|