Documentation ¶
Index ¶
- Constants
- Variables
- func CheckShortIDCollision(keeper network.NodeKeeper, id core.ShortNodeID) bool
- func FindDiscovery(cert core.Certificate, ref core.RecordRef) core.DiscoveryNode
- func GenerateShortID(keeper network.NodeKeeper, nodeID core.RecordRef) core.ShortNodeID
- func RemoveOrigin(discoveryNodes []core.DiscoveryNode, origin core.RecordRef) []core.DiscoveryNode
- func Xor(first, second []byte) []byte
- type AuthorizationController
- type AuthorizationRequest
- type AuthorizationResponse
- type Bootstrapper
- type ChallengePayload
- type ChallengeRequest
- type ChallengeResponse
- type ChallengeResponseController
- type ChallengeResponseHeader
- type Code
- type DiscoveryNode
- type GenesisRequest
- type GenesisResponse
- type NetworkBootstrapper
- type NodeBootstrapRequest
- type NodeBootstrapResponse
- type NodeStruct
- type Nonce
- type OperationCode
- type RegistrationRequest
- type RegistrationResponse
- type Session
- type SessionID
- type SessionManager
- type SessionState
- type SignedChallengePayload
- type SignedChallengeRequest
- type SignedChallengeResponse
- type SignedNonce
- type StartSessionRequest
- type StartSessionResponse
Constants ¶
View Source
const ( Accepted = Code(iota + 1) Rejected Redirected ReconnectRequired )
Variables ¶
View Source
var (
ErrReconnectRequired = errors.New("Node should connect via consensus bootstrap")
)
Functions ¶
func CheckShortIDCollision ¶ added in v0.8.3
func CheckShortIDCollision(keeper network.NodeKeeper, id core.ShortNodeID) bool
CheckShortIDCollision returns true if NodeKeeper already contains node with such ShortID
func FindDiscovery ¶
func FindDiscovery(cert core.Certificate, ref core.RecordRef) core.DiscoveryNode
func GenerateShortID ¶
func GenerateShortID(keeper network.NodeKeeper, nodeID core.RecordRef) core.ShortNodeID
GenerateShortID correct ShortID of the node so it does not conflict with existing active node list
func RemoveOrigin ¶
func RemoveOrigin(discoveryNodes []core.DiscoveryNode, origin core.RecordRef) []core.DiscoveryNode
Types ¶
type AuthorizationController ¶
type AuthorizationController interface { component.Initer Authorize(ctx context.Context, discoveryNode *DiscoveryNode, cert core.AuthorizationCertificate) (SessionID, error) Register(ctx context.Context, discoveryNode *DiscoveryNode, sessionID SessionID) error }
func NewAuthorizationController ¶
func NewAuthorizationController(options *common.Options, transport network.InternalTransport) AuthorizationController
type AuthorizationRequest ¶
type AuthorizationRequest struct {
Certificate []byte
}
AuthorizationRequest
type AuthorizationResponse ¶
type AuthorizationResponse struct { Code OperationCode Error string SessionID SessionID }
AuthorizationResponse
type Bootstrapper ¶
type Bootstrapper interface { component.Initer Bootstrap(ctx context.Context) (*network.BootstrapResult, *DiscoveryNode, error) BootstrapDiscovery(ctx context.Context) (*network.BootstrapResult, error) SetLastPulse(number core.PulseNumber) GetLastPulse() core.PulseNumber }
func NewBootstrapper ¶
func NewBootstrapper( options *common.Options, transport network.InternalTransport) Bootstrapper
type ChallengePayload ¶
type ChallengePayload struct { // CurrentPulse core.Pulse // State core.NetworkState AssignShortID core.ShortNodeID }
type ChallengeRequest ¶
type ChallengeResponse ¶
type ChallengeResponse struct { Header ChallengeResponseHeader Payload *ChallengePayload }
type ChallengeResponseController ¶
type ChallengeResponseController interface { component.Initer Execute(ctx context.Context, discoveryNode *DiscoveryNode, sessionID SessionID) (*ChallengePayload, error) }
func NewChallengeResponseController ¶
func NewChallengeResponseController(options *common.Options, transport network.InternalTransport) ChallengeResponseController
type ChallengeResponseHeader ¶
type DiscoveryNode ¶
type DiscoveryNode struct { Host *host.Host Node core.DiscoveryNode }
type GenesisRequest ¶
type GenesisRequest struct { LastPulse core.PulseNumber Discovery *NodeStruct }
type GenesisResponse ¶
type GenesisResponse struct { Response GenesisRequest Error string }
type NetworkBootstrapper ¶
type NetworkBootstrapper interface { Bootstrap(ctx context.Context) (*network.BootstrapResult, error) SetLastPulse(number core.PulseNumber) GetLastPulse() core.PulseNumber }
func NewNetworkBootstrapper ¶
func NewNetworkBootstrapper() NetworkBootstrapper
type NodeBootstrapRequest ¶
type NodeBootstrapRequest struct{}
type NodeBootstrapResponse ¶
type NodeStruct ¶ added in v0.7.5
type NodeStruct struct { ID core.RecordRef SID core.ShortNodeID Role core.StaticRole PK []byte Address string Version string }
type OperationCode ¶
type OperationCode uint8
const ( OpConfirmed OperationCode = iota + 1 OpRejected OpRetry )
type RegistrationRequest ¶
type RegistrationRequest struct { SessionID SessionID Version string JoinClaim *packets.NodeJoinClaim }
RegistrationRequest
type RegistrationResponse ¶
type RegistrationResponse struct { Code OperationCode RetryIn time.Duration Error string }
RegistrationResponse
type Session ¶
type Session struct { NodeID core.RecordRef Cert core.AuthorizationCertificate State SessionState DiscoveryNonce Nonce Time time.Time TTL time.Duration }
type SessionManager ¶
type SessionManager interface { component.Starter component.Stopper NewSession(ref core.RecordRef, cert core.AuthorizationCertificate, ttl time.Duration) SessionID CheckSession(id SessionID, expected SessionState) error SetDiscoveryNonce(id SessionID, discoveryNonce Nonce) error GetChallengeData(id SessionID) (core.AuthorizationCertificate, Nonce, error) ChallengePassed(id SessionID) error ReleaseSession(id SessionID) (*Session, error) ProlongateSession(id SessionID, session *Session) }
func NewSessionManager ¶
func NewSessionManager() SessionManager
type SessionState ¶
type SessionState uint8
const ( Authorized SessionState = iota + 1 Challenge1 Challenge2 )
func (SessionState) String ¶
func (i SessionState) String() string
type SignedChallengePayload ¶
type SignedChallengePayload struct { SignedNonce SignedNonce XorDiscoveryNonce Nonce DiscoveryNonce Nonce }
type SignedChallengeRequest ¶
type SignedChallengeRequest struct { SessionID SessionID SignedDiscoveryNonce SignedNonce XorNonce Nonce }
type SignedChallengeResponse ¶
type SignedChallengeResponse struct { Header ChallengeResponseHeader Payload *SignedChallengePayload }
type SignedNonce ¶
type SignedNonce []byte
type StartSessionRequest ¶
type StartSessionRequest struct{}
type StartSessionResponse ¶
type StartSessionResponse struct {
SessionID SessionID
}
Click to show internal directories.
Click to hide internal directories.