internal TcpSignedStream(TcpStream tcpStream, SecurityContext securityContext) : base(tcpStream, securityContext) { }
internal TcpSecureStream(TcpStream tcpStream, SecurityContext securityContext) : base(tcpStream) { if (securityContext == null) { throw new ArgumentNullException("securityContext"); } this.securityContext = securityContext; try { switch (this.securityContext.SecurityContextMode) { case SecurityContextMode.block: { Sizes sizes = (Sizes)SSPIWrapper.QueryContextAttributes(securityContext, ContextAttribute.Sizes); this.maxTokenSize = Math.Max(sizes.cbSecurityTrailer, sizes.cbMaxSignature); this.maxEncryptionBufferSize = Math.Min(sizes.cbMaxToken, 65535); if (this.maxTokenSize > 65535) { throw new XmlaStreamException(XmlaSR.TcpStream_MaxSignatureExceedsProtocolLimit); } this.tokenBufferForWrite = new byte[this.maxTokenSize]; this.tokenBufferForRead = new byte[this.maxTokenSize]; this.securityBuffers = new SecurityBufferClass[] { new SecurityBufferClass(null, BufferType.Data), new SecurityBufferClass(this.tokenBufferForWrite, BufferType.Token) }; break; } case SecurityContextMode.stream: { this.streamSizes = (StreamSizes)SSPIWrapper.QueryContextAttributes(securityContext, ContextAttribute.StreamSizes); if (this.streamSizes.cbMaxMessage > 65535) { throw new XmlaStreamException(XmlaSR.TcpStream_MaxSignatureExceedsProtocolLimit); } this.streamHeaderForWrite = new ArraySegment <byte>(new byte[this.streamSizes.cbHeader]); this.streamTrailerForWrite = new ArraySegment <byte>(new byte[this.streamSizes.cbTrailer]); this.streamEncryptedDataAccumulatorForRead = new List <ArraySegment <byte> >(); this.streamEncryptedDataAccumulatorForReadFreeBuffers = new List <ArraySegment <byte> >(); this.streamDecryptedDataForRead = new List <ArraySegment <byte> >(); SecurityBufferClass securityBufferClass = new SecurityBufferClass(this.streamHeaderForWrite.Array, BufferType.Header); SecurityBufferClass securityBufferClass2 = new SecurityBufferClass(null, BufferType.Data); SecurityBufferClass securityBufferClass3 = new SecurityBufferClass(this.streamTrailerForWrite.Array, BufferType.Trailer); SecurityBufferClass securityBufferClass4 = new SecurityBufferClass(null, BufferType.Empty); this.securityBuffers = new SecurityBufferClass[] { securityBufferClass, securityBufferClass2, securityBufferClass3, securityBufferClass4 }; break; } default: throw new XmlaStreamException("SecurityContextMode " + this.securityContext.SecurityContextMode + " not configured!"); } } catch (XmlaStreamException) { throw; } catch (IOException innerException) { throw new XmlaStreamException(innerException); } catch (SocketException innerException2) { throw new XmlaStreamException(innerException2); } catch (Win32Exception innerException3) { throw new XmlaStreamException(innerException3); } }
protected TcpStream(TcpStream originalTcpStream) : base(originalTcpStream) { this.bufferedStream = originalTcpStream.bufferedStream; this.dimeChunkSize = originalTcpStream.dimeChunkSize; }
internal TcpEncryptedStream(TcpStream tcpStream, SecurityContext securityContext) : base(tcpStream, securityContext) { }