No estoy seguro si a alguien le importa ya que esto es muy viejo, pero tenía que hacer precisamente eso esta semana y no pude encontrar nada en Internet que satisficiera mis necesidades. Tal vez hay algo nuevo en el marco que hace esto que no pude encontrar ... En cualquier caso, publicaría el código fuente, pero como lo escribí para mi empresa y tienden a fruncir el ceño, voy a describir el enfoque que tomó:
Dado que SslStream toma una secuencia en el constructor, implementé mi propio subtipo Stream con un MemoryStream subyacente para lecturas y otro para escrituras. También paso el TcpClient a este objeto también.
Utilicé el TcpClient para realizar el intercambio de información para configurar la conexión SSL. Después de autenticar el servidor o cliente dependiendo de cómo lo estoy usando, entonces uso mis dos MemoryStreams para las lecturas/escrituras de SslStream.
Así que para las escrituras Async, primero escribo mi carga útil en el SslStream que rellena mi MemoryStream para escribir con datos encriptados. Con los datos cifrados de MemoryStream, llenó el búfer SocketAsyncEventArgs y llamó al método TcpClient SendAsync. Para las lecturas, es más o menos lo contrario.
No puedo decir que en particular me emocione mover los datos de esa manera, pero siempre y cuando no permita que los objetos MemoryBuffer sean reasignados constantemente, no es un problema de rendimiento. Al menos de esta manera, puedo usar solo el marco y mi propio código sin depender de software de terceros.
John ¿obtuviste más información sobre esto? – Dreaddan