Secure Muxer Interface
@@ -24,3 +24,17 @@ type SecureTransport interface {
// SecureOutbound secures an outbound connection.
SecureOutbound(ctx context.Context, insecure net.Conn, p peer.ID) (SecureConn, error)
}
+
+// A SecureMuxer is a wrapper around SecureTransport which can select security protocols
+// and open outbound connections with simultaneous open.
+type SecureMuxer interface {
+ // SecureInbound secures an inbound connection.
+ // The returned boolean indicates whether the connection should be trated as a server
+ // connection; in the case of SecureInbound it should always be true.
+ SecureInbound(ctx context.Context, insecure net.Conn) (SecureConn, bool, error)
+
+ // SecureOutbound secures an outbound connection.
+ // The returned boolean indicates whether the connection should be treated as a server
+ // connection due to simultaneous open.
+ SecureOutbound(ctx context.Context, insecure net.Conn, p peer.ID) (SecureConn, bool, error)
+}
