public SecurityVerifiedMessage(Message messageToProcess, ReceiveSecurityHeader securityHeader)
     : base(messageToProcess)
 {
     ReceivedSecurityHeader = securityHeader;
     if (securityHeader.RequireMessageProtection)
     {
         XmlDictionaryReader messageReader;
         BufferedMessage     bufferedMessage = InnerMessage as BufferedMessage;
         if (bufferedMessage != null && Headers.ContainsOnlyBufferedMessageHeaders)
         {
             messageReader = bufferedMessage.GetMessageReader();
         }
         else
         {
             _messageBuffer = new XmlBuffer(int.MaxValue);
             XmlDictionaryWriter writer = _messageBuffer.OpenSection(ReceivedSecurityHeader.ReaderQuotas);
             InnerMessage.WriteMessage(writer);
             _messageBuffer.CloseSection();
             _messageBuffer.Close();
             messageReader = _messageBuffer.GetReader(0);
         }
         MoveToSecurityHeader(messageReader, securityHeader.HeaderIndex, true);
         _cachedReaderAtSecurityHeader = messageReader;
         _state = BodyState.Buffered;
     }
     else
     {
         _envelopeAttributes = XmlAttributeHolder.emptyArray;
         _headerAttributes   = XmlAttributeHolder.emptyArray;
         _bodyAttributes     = XmlAttributeHolder.emptyArray;
         _canDelegateCreateBufferedCopyToInnerMessage = true;
     }
 }
 public SecurityVerifiedMessage(Message messageToProcess, ReceiveSecurityHeader securityHeader)
     : base(messageToProcess)
 {
     ReceivedSecurityHeader = securityHeader;
     if (securityHeader.RequireMessageProtection)
     {
         XmlDictionaryReader messageReader;
         if (InnerMessage is BufferedMessage bufferedMessage && Headers.ContainsOnlyBufferedMessageHeaders)
         {
             messageReader = bufferedMessage.GetMessageReader();
         }
         else
         {
             _messageBuffer = new XmlBuffer(int.MaxValue);
             XmlDictionaryWriter writer = _messageBuffer.OpenSection(ReceivedSecurityHeader.ReaderQuotas);
             InnerMessage.WriteMessage(writer);
             _messageBuffer.CloseSection();
             _messageBuffer.Close();
             messageReader = _messageBuffer.GetReader(0);
         }
         MoveToSecurityHeader(messageReader, securityHeader.HeaderIndex, true);
         _cachedReaderAtSecurityHeader = messageReader;
         _state = BodyState.Buffered;
     }