mirror of
https://github.com/libp2p/go-libp2p-core.git
synced 2024-12-28 23:50:07 +08:00
41 lines
1.5 KiB
Go
41 lines
1.5 KiB
Go
// Package sec provides secure connection and transport interfaces for libp2p.
|
|
package sec
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
|
|
"github.com/libp2p/go-libp2p-core/network"
|
|
"github.com/libp2p/go-libp2p-core/peer"
|
|
)
|
|
|
|
// SecureConn is an authenticated, encrypted connection.
|
|
type SecureConn interface {
|
|
net.Conn
|
|
network.ConnSecurity
|
|
}
|
|
|
|
// A SecureTransport turns inbound and outbound unauthenticated,
|
|
// plain-text, native connections into authenticated, encrypted connections.
|
|
type SecureTransport interface {
|
|
// SecureInbound secures an inbound connection.
|
|
SecureInbound(ctx context.Context, insecure net.Conn) (SecureConn, error)
|
|
|
|
// 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)
|
|
}
|