public static HandshakeMessage ReadMessage (TlsContext context, HandshakeType handshakeType, TlsBuffer incoming) { HandshakeMessage message; switch (handshakeType) { case HandshakeType.HelloRequest: message = new TlsHelloRequest (); break; case HandshakeType.ServerHello: return new TlsServerHello (context, incoming); case HandshakeType.Certificate: return new TlsCertificate (incoming); case HandshakeType.ServerHelloDone: message = new TlsServerHelloDone (); break; case HandshakeType.Finished: return new TlsFinished (incoming); case HandshakeType.ClientHello: return new TlsClientHello (context, incoming); case HandshakeType.ClientKeyExchange: return new TlsClientKeyExchange (context, incoming); case HandshakeType.CertificateRequest: return new TlsCertificateRequest (context.NegotiatedProtocol, incoming); case HandshakeType.CertificateVerify: return new TlsCertificateVerify (context.NegotiatedProtocol, incoming); case HandshakeType.ServerKeyExchange: return new TlsServerKeyExchange (context, incoming); default: throw new TlsException (AlertDescription.UnexpectedMessage, "Unknown server handshake message received: {0}", handshakeType); } message.Read (incoming); return message; }
public int EncryptMessage(ref MSI.IBufferOffsetSize incoming) { var buffer = new MSI.TlsBuffer(BOSWrapper.Wrap(incoming)); var retval = Context.EncryptMessage(ref buffer); incoming = BOSWrapper.Wrap(buffer.GetRemaining()); return((int)retval); }
public TlsBuffer ReadBuffer (int length) { if (Position + length > EndOffset) throw new TlsException (AlertDescription.DecodeError, "Buffer overflow"); var retval = new TlsBuffer (Buffer, Position, length); Position += length; return retval; }
public void Add (TlsBuffer buffer) { Add (buffer.Buffer, buffer.Offset, buffer.Size); }
public void Add(TlsBuffer buffer) { Add(buffer.Buffer, buffer.Offset, buffer.Size); }
public int DecryptMessage (ref MSI.IBufferOffsetSize incoming) { var buffer = new MSI.TlsBuffer (BOSWrapper.Wrap (incoming)); var retval = Context.DecryptMessage (ref buffer); incoming = buffer != null ? BOSWrapper.Wrap (buffer.GetRemaining ()) : null; return (int)retval; }