/// <summary>Send a SASL negotiation message and negotiation cipher options to server. /// </summary> /// <param name="out">stream to receive message</param> /// <param name="payload">to send</param> /// <param name="options">cipher options to negotiate</param> /// <exception cref="System.IO.IOException">for any error</exception> public static void SendSaslMessageAndNegotiationCipherOptions(OutputStream @out, byte[] payload, IList <CipherOption> options) { DataTransferProtos.DataTransferEncryptorMessageProto.Builder builder = DataTransferProtos.DataTransferEncryptorMessageProto .NewBuilder(); builder.SetStatus(DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus .Success); if (payload != null) { builder.SetPayload(ByteString.CopyFrom(payload)); } if (options != null) { builder.AddAllCipherOption(PBHelper.ConvertCipherOptions(options)); } DataTransferProtos.DataTransferEncryptorMessageProto proto = ((DataTransferProtos.DataTransferEncryptorMessageProto )builder.Build()); proto.WriteDelimitedTo(@out); @out.Flush(); }