Documentation
¶
Index ¶
- Constants
- Variables
- func BuildNonce(secFlags uint8, messageCounter uint32, nodeId lib.NodeId) []byte
- func Decrypt(context *CryptoContext, nonce []byte, packetHeader *raw.PacketHeader, ...) (*raw.PayloadHeader, error)
- func Encrypt(context *CryptoContext, nonce []byte, payloadHeader *raw.PayloadHeader, ...) (err error)
- type CryptoContext
- func (c *CryptoContext) Decrypt(msg *system.PacketBufferHandle, nonce []byte, header *raw.PacketHeader, ...)
- func (c *CryptoContext) Encrypt(plainText []byte, nonce []byte, header *raw.PacketHeader) (cipherTag []byte, err error)
- func (c *CryptoContext) GetAdditionalAuthData(header *raw.PacketHeader) ([]byte, error)
- type CryptoKey
- type EncryptedPacketBufferHandle
- type GlobalUnencryptedMessageCounter
- func (g *GlobalUnencryptedMessageCounter) Init()
- func (g *GlobalUnencryptedMessageCounter) QueueReceivedMessageAndStartSync(header *raw.PacketHeader, handle *SessionHandle, state uint8, ...) error
- func (g *GlobalUnencryptedMessageCounter) StartSync(handle *SessionHandle, session *session.Secure) error
- type GroupFabric
- type GroupOutgoingCounters
- type GroupPeerTable
- func (g *GroupPeerTable) FabricRemoved(fabricIndex lib.FabricIndex) error
- func (g *GroupPeerTable) FindOrAddPeer(fabricIndex lib.FabricIndex, nodeId lib.NodeId, isControl bool) (*session.PeerMessageCounter, error)
- func (g *GroupPeerTable) RemovePeer(fabricIndex lib.FabricIndex, nodeId lib.NodeId, isControl bool) error
- type GroupSender
- type KeyUsage
- type LocalSessionMessageCounter
- type Manager
- func (t *Manager) Close()
- func (t *Manager) Disconnect(addr netip.Addr)
- func (t *Manager) GetImplAtIndex(index int) raw.TransportBase
- func (t *Manager) GetUpdImpl() raw.UDPTransportBase
- func (t *Manager) HandleMessageReceived(peerAddress netip.AddrPort, buf *system.PacketBufferHandle)
- func (t *Manager) MulticastGroupJoinLeave(addr netip.Addr, join bool) error
- func (t *Manager) SendMessage(port netip.AddrPort, msg []byte) error
- func (t *Manager) SetSessionManager(sessionManager MgrDelegate)
- type MessageCounter
- type MessageCounterManagerBase
- type MgrBase
- type MgrDelegate
- type NewSessionHandlingPolicy
- type SecureSessionTable
- func (t *SecureSessionTable) CreateSecureSession(sessionType session.SecureType, sessionId uint16) *session.Secure
- func (t *SecureSessionTable) FindSecureSessionByLocalKey(id uint16) *SessionHandle
- func (t *SecureSessionTable) Init()
- func (t *SecureSessionTable) ReleaseSession(session *session.Secure)
- type SessionDelegate
- type SessionHandle
- type SessionHolder
- func (s *SessionHolder) Contains(session *SessionHandle) bool
- func (s *SessionHolder) GrabPairingSession(ss *SessionHandle) bool
- func (s *SessionHolder) GrabUnchecked(session *SessionHandle)
- func (s *SessionHolder) Grad(session *SessionHandle) bool
- func (s *SessionHolder) Release()
- func (s *SessionHolder) SessionHandler() *SessionHandle
- func (s *SessionHolder) SessionReleased()
- func (s *SessionHolder) ShiftToSession(session *SessionHandle)
- type SessionHolderWithDelegate
- type SessionManager
- func (s *SessionManager) AllocateSession(sessionType session.SecureType, sessionEvictionHint lib.ScopedNodeId) *SessionHandle
- func (s *SessionManager) CreateUnauthenticatedSession(peerAddress netip.AddrPort, config *messageing.ReliableMessageProtocolConfig) *SessionHandle
- func (s *SessionManager) ExpireAllSessions(node *lib.ScopedNodeId)
- func (s *SessionManager) ExpireAllSessionsForFabric(fabricIndex lib.FabricIndex)
- func (s *SessionManager) ExpireAllSessionsOnLogicalFabric(node *lib.ScopedNodeId)
- func (s *SessionManager) FabricRemoved(fabricId lib.FabricIndex)
- func (s *SessionManager) FabricTable() *credentials.FabricTable
- func (s *SessionManager) FabricWillBeRemoved(table *credentials.FabricTable, index lib.FabricIndex)
- func (s *SessionManager) FindSecureSessionForNode(nodeId *lib.ScopedNodeId, sessionType session.SecureType) *SessionHandle
- func (s *SessionManager) Init(systemLay system.Layer, transportMgr MgrBase, ...) error
- func (s *SessionManager) OnFabricCommitted(table *credentials.FabricTable, index lib.FabricIndex)
- func (s *SessionManager) OnFabricRemoved(table *credentials.FabricTable, index lib.FabricIndex)
- func (s *SessionManager) OnFabricUpdated(table *credentials.FabricTable, index lib.FabricIndex)
- func (s *SessionManager) OnMessageReceived(srcAddr netip.AddrPort, msg *system.PacketBufferHandle)
- func (s *SessionManager) PrepareMessage(sessionHandle *SessionHandle, payloadHeader *raw.PayloadHeader, message []byte) (msg []byte, err error)
- func (s *SessionManager) SecureGroupMessageDispatch(packetHeader *raw.PacketHeader, peerAddress netip.AddrPort, ...)
- func (s *SessionManager) SecureUnicastMessageDispatch(packetHeader *raw.PacketHeader, peerAddress netip.AddrPort, ...)
- func (s *SessionManager) SendPreparedMessage(session *SessionHandle, preparedMessage *EncryptedPacketBufferHandle) error
- func (s *SessionManager) SetMessageDelegate(delegate SessionMessageDelegate)
- func (s *SessionManager) Shutdown()
- func (s *SessionManager) SystemLayer() system.Layer
- func (s *SessionManager) UnauthenticatedMessageDispatch(packetHeader *raw.PacketHeader, peerAddress netip.AddrPort, ...)
- type SessionManagerBase
- type SessionMessageDelegate
- type UnauthenticatedSessionTable
Constants ¶
View Source
const ( KSessionRoleInitiator = iota KSessionRoleResponder )
View Source
const ( MessageCounterTypeGlobalUnencrypted = iota MessageCounterTypeGlobalEncrypted MessageCounterTypeSession )
View Source
const ( PayloadIsEncrypted uint8 = iota PayloadIsUnencrypted )
Variables ¶
View Source
var ( ConfigSecureSessionRefCountLogging = true ConfigMaxFabrice int = 16 )
Functions ¶
func BuildNonce ¶
BuildNonce 使用SecFlags,messageCounter,nodeId三个字段生成Nonce(用于AES加解密的初始化向量),Len == 13
func Decrypt ¶
func Decrypt(context *CryptoContext, nonce []byte, packetHeader *raw.PacketHeader, msg *system.PacketBufferHandle) (*raw.PayloadHeader, error)
func Encrypt ¶
func Encrypt(context *CryptoContext, nonce []byte, payloadHeader *raw.PayloadHeader, header *raw.PacketHeader, buf *bytes.Buffer) (err error)
Types ¶
type CryptoContext ¶
type CryptoContext struct {
// contains filtered or unexported fields
}
func NewCryptoContext ¶
func NewCryptoContext(key crypto.SymmetricKeyContextBase) *CryptoContext
func (*CryptoContext) Decrypt ¶
func (c *CryptoContext) Decrypt(msg *system.PacketBufferHandle, nonce []byte, header *raw.PacketHeader, mac *raw.MessageAuthenticationCode)
func (*CryptoContext) Encrypt ¶
func (c *CryptoContext) Encrypt(plainText []byte, nonce []byte, header *raw.PacketHeader) (cipherTag []byte, err error)
func (*CryptoContext) GetAdditionalAuthData ¶
func (c *CryptoContext) GetAdditionalAuthData(header *raw.PacketHeader) ([]byte, error)
type CryptoKey ¶
type CryptoKey [crypto.AESCCM128KeyLength]byte
type EncryptedPacketBufferHandle ¶
type EncryptedPacketBufferHandle struct {
*system.PacketBufferHandle
}
func (*EncryptedPacketBufferHandle) MarkEncrypted ¶
func (e *EncryptedPacketBufferHandle) MarkEncrypted() *system.PacketBufferHandle
func (*EncryptedPacketBufferHandle) MessageCounter ¶
func (e *EncryptedPacketBufferHandle) MessageCounter() uint32
type GlobalUnencryptedMessageCounter ¶
type GlobalUnencryptedMessageCounter struct { }
func NewGlobalUnencryptedMessageCounterImpl ¶
func NewGlobalUnencryptedMessageCounterImpl() *GlobalUnencryptedMessageCounter
func (*GlobalUnencryptedMessageCounter) Init ¶
func (g *GlobalUnencryptedMessageCounter) Init()
func (*GlobalUnencryptedMessageCounter) QueueReceivedMessageAndStartSync ¶
func (g *GlobalUnencryptedMessageCounter) QueueReceivedMessageAndStartSync(header *raw.PacketHeader, handle *SessionHandle, state uint8, peerAdders netip.AddrPort, buf *system.PacketBufferHandle) error
func (*GlobalUnencryptedMessageCounter) StartSync ¶
func (g *GlobalUnencryptedMessageCounter) StartSync(handle *SessionHandle, session *session.Secure) error
type GroupFabric ¶
type GroupFabric struct { }
type GroupOutgoingCounters ¶
type GroupOutgoingCounters struct {
// contains filtered or unexported fields
}
func NewGroupOutgoingCounters ¶
func NewGroupOutgoingCounters() *GroupOutgoingCounters
func (*GroupOutgoingCounters) GetCounter ¶
func (g *GroupOutgoingCounters) GetCounter(isControl bool) uint32
func (*GroupOutgoingCounters) IncrementCounter ¶
func (g *GroupOutgoingCounters) IncrementCounter(isControl bool) error
func (*GroupOutgoingCounters) Init ¶
func (g *GroupOutgoingCounters) Init(storage store.PersistentStorageDelegate) error
type GroupPeerTable ¶
type GroupPeerTable struct {
// contains filtered or unexported fields
}
func NewGroupPeerTable ¶
func NewGroupPeerTable(size int) *GroupPeerTable
func (*GroupPeerTable) FabricRemoved ¶
func (g *GroupPeerTable) FabricRemoved(fabricIndex lib.FabricIndex) error
func (*GroupPeerTable) FindOrAddPeer ¶
func (g *GroupPeerTable) FindOrAddPeer(fabricIndex lib.FabricIndex, nodeId lib.NodeId, isControl bool) (*session.PeerMessageCounter, error)
func (*GroupPeerTable) RemovePeer ¶
func (g *GroupPeerTable) RemovePeer(fabricIndex lib.FabricIndex, nodeId lib.NodeId, isControl bool) error
type GroupSender ¶
type GroupSender struct { }
type LocalSessionMessageCounter ¶
type LocalSessionMessageCounter struct { }
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager impl ManagerBase
func NewManager ¶
func NewManager(transports ...raw.TransportBase) *Manager
func (*Manager) Disconnect ¶
func (*Manager) GetImplAtIndex ¶
func (t *Manager) GetImplAtIndex(index int) raw.TransportBase
func (*Manager) GetUpdImpl ¶
func (t *Manager) GetUpdImpl() raw.UDPTransportBase
func (*Manager) HandleMessageReceived ¶
func (t *Manager) HandleMessageReceived(peerAddress netip.AddrPort, buf *system.PacketBufferHandle)
func (*Manager) MulticastGroupJoinLeave ¶
func (*Manager) SetSessionManager ¶
func (t *Manager) SetSessionManager(sessionManager MgrDelegate)
type MessageCounter ¶
type MessageCounter interface { }
type MessageCounterManagerBase ¶
type MessageCounterManagerBase interface { StartSync(handle *SessionHandle, session *session.Secure) error QueueReceivedMessageAndStartSync( packetHeader *raw.PacketHeader, session *SessionHandle, state *session.Secure, peerAdders netip.AddrPort, buf *system.PacketBufferHandle, ) error }
type MgrBase ¶
type MgrBase interface { raw.Delegate SetSessionManager(sessionManager MgrDelegate) SendMessage(port netip.AddrPort, msg []byte) error Close() Disconnect(addr netip.Addr) MulticastGroupJoinLeave(addr netip.Addr, join bool) error }
MgrBase this is the delegate for TransportBase,
type MgrDelegate ¶
type MgrDelegate interface {
OnMessageReceived(peerAddress netip.AddrPort, buf *system.PacketBufferHandle)
}
MgrDelegate 这个实例为 SessionManagerBase
type NewSessionHandlingPolicy ¶
type NewSessionHandlingPolicy uint8
const ( ShiftToNewSession NewSessionHandlingPolicy = 0 StayAtOldSession NewSessionHandlingPolicy = 1 )
type SecureSessionTable ¶
type SecureSessionTable struct {
// contains filtered or unexported fields
}
func NewSecureSessionTable ¶
func NewSecureSessionTable() *SecureSessionTable
func (*SecureSessionTable) CreateSecureSession ¶
func (t *SecureSessionTable) CreateSecureSession(sessionType session.SecureType, sessionId uint16) *session.Secure
func (*SecureSessionTable) FindSecureSessionByLocalKey ¶
func (t *SecureSessionTable) FindSecureSessionByLocalKey(id uint16) *SessionHandle
FindSecureSessionByLocalKey 遍历所有的SecureSession,如果SessionId相同,则取出来
func (*SecureSessionTable) Init ¶
func (t *SecureSessionTable) Init()
func (*SecureSessionTable) ReleaseSession ¶
func (t *SecureSessionTable) ReleaseSession(session *session.Secure)
type SessionDelegate ¶
type SessionDelegate interface { OnSessionReleased() OnSessionHang() GetNewSessionHandlingPolicy() NewSessionHandlingPolicy }
type SessionHandle ¶
func NewSessionHandle ¶
func NewSessionHandle(session session.Session) *SessionHandle
type SessionHolder ¶
type SessionHolder struct { session.Session *lib.ReferenceCounted }
func NewSessionHolder ¶
func NewSessionHolder(session session.Session) *SessionHolder
func (*SessionHolder) Contains ¶
func (s *SessionHolder) Contains(session *SessionHandle) bool
func (*SessionHolder) GrabPairingSession ¶
func (s *SessionHolder) GrabPairingSession(ss *SessionHandle) bool
func (*SessionHolder) GrabUnchecked ¶
func (s *SessionHolder) GrabUnchecked(session *SessionHandle)
func (*SessionHolder) Grad ¶
func (s *SessionHolder) Grad(session *SessionHandle) bool
func (*SessionHolder) Release ¶
func (s *SessionHolder) Release()
func (*SessionHolder) SessionHandler ¶
func (s *SessionHolder) SessionHandler() *SessionHandle
func (*SessionHolder) SessionReleased ¶
func (s *SessionHolder) SessionReleased()
func (*SessionHolder) ShiftToSession ¶
func (s *SessionHolder) ShiftToSession(session *SessionHandle)
type SessionHolderWithDelegate ¶
type SessionHolderWithDelegate struct { *SessionHolder // contains filtered or unexported fields }
func NewSessionHolderWithDelegateImpl ¶
func NewSessionHolderWithDelegateImpl(delegate session.Delegate) *SessionHolderWithDelegate
func (*SessionHolderWithDelegate) DispatchSessionEvent ¶
func (s *SessionHolderWithDelegate) DispatchSessionEvent(event session.DelegateEvent)
func (*SessionHolderWithDelegate) Release ¶
func (s *SessionHolderWithDelegate) Release()
func (*SessionHolderWithDelegate) SessionReleased ¶
func (s *SessionHolderWithDelegate) SessionReleased()
func (*SessionHolderWithDelegate) ShiftToSession ¶
func (s *SessionHolderWithDelegate) ShiftToSession(session SessionHandle)
type SessionManager ¶
type SessionManager struct {
// contains filtered or unexported fields
}
func NewSessionManager ¶
func NewSessionManager() *SessionManager
func (*SessionManager) AllocateSession ¶
func (s *SessionManager) AllocateSession(sessionType session.SecureType, sessionEvictionHint lib.ScopedNodeId) *SessionHandle
func (*SessionManager) CreateUnauthenticatedSession ¶
func (s *SessionManager) CreateUnauthenticatedSession(peerAddress netip.AddrPort, config *messageing.ReliableMessageProtocolConfig) *SessionHandle
func (*SessionManager) ExpireAllSessions ¶
func (s *SessionManager) ExpireAllSessions(node *lib.ScopedNodeId)
func (*SessionManager) ExpireAllSessionsForFabric ¶
func (s *SessionManager) ExpireAllSessionsForFabric(fabricIndex lib.FabricIndex)
func (*SessionManager) ExpireAllSessionsOnLogicalFabric ¶
func (s *SessionManager) ExpireAllSessionsOnLogicalFabric(node *lib.ScopedNodeId)
func (*SessionManager) FabricRemoved ¶
func (s *SessionManager) FabricRemoved(fabricId lib.FabricIndex)
func (*SessionManager) FabricTable ¶
func (s *SessionManager) FabricTable() *credentials.FabricTable
func (*SessionManager) FabricWillBeRemoved ¶
func (s *SessionManager) FabricWillBeRemoved(table *credentials.FabricTable, index lib.FabricIndex)
func (*SessionManager) FindSecureSessionForNode ¶
func (s *SessionManager) FindSecureSessionForNode(nodeId *lib.ScopedNodeId, sessionType session.SecureType) *SessionHandle
func (*SessionManager) Init ¶
func (s *SessionManager) Init(systemLay system.Layer, transportMgr MgrBase, counter MessageCounterManagerBase, storage store.PersistentStorageDelegate, table *credentials.FabricTable) error
func (*SessionManager) OnFabricCommitted ¶
func (s *SessionManager) OnFabricCommitted(table *credentials.FabricTable, index lib.FabricIndex)
func (*SessionManager) OnFabricRemoved ¶
func (s *SessionManager) OnFabricRemoved(table *credentials.FabricTable, index lib.FabricIndex)
func (*SessionManager) OnFabricUpdated ¶
func (s *SessionManager) OnFabricUpdated(table *credentials.FabricTable, index lib.FabricIndex)
func (*SessionManager) OnMessageReceived ¶
func (s *SessionManager) OnMessageReceived(srcAddr netip.AddrPort, msg *system.PacketBufferHandle)
func (*SessionManager) PrepareMessage ¶
func (s *SessionManager) PrepareMessage(sessionHandle *SessionHandle, payloadHeader *raw.PayloadHeader, message []byte) (msg []byte, err error)
func (*SessionManager) SecureGroupMessageDispatch ¶
func (s *SessionManager) SecureGroupMessageDispatch(packetHeader *raw.PacketHeader, peerAddress netip.AddrPort, msg *system.PacketBufferHandle)
SecureGroupMessageDispatch 处理加密的组播消息
func (*SessionManager) SecureUnicastMessageDispatch ¶
func (s *SessionManager) SecureUnicastMessageDispatch(packetHeader *raw.PacketHeader, peerAddress netip.AddrPort, msg *system.PacketBufferHandle)
SecureUnicastMessageDispatch 处理分支,加密的单播消息
func (*SessionManager) SendPreparedMessage ¶
func (s *SessionManager) SendPreparedMessage(session *SessionHandle, preparedMessage *EncryptedPacketBufferHandle) error
func (*SessionManager) SetMessageDelegate ¶
func (s *SessionManager) SetMessageDelegate(delegate SessionMessageDelegate)
func (*SessionManager) Shutdown ¶
func (s *SessionManager) Shutdown()
func (*SessionManager) SystemLayer ¶
func (s *SessionManager) SystemLayer() system.Layer
func (*SessionManager) UnauthenticatedMessageDispatch ¶
func (s *SessionManager) UnauthenticatedMessageDispatch(packetHeader *raw.PacketHeader, peerAddress netip.AddrPort, msg *system.PacketBufferHandle)
UnauthenticatedMessageDispatch 处理没有加密码的消息
type SessionManagerBase ¶
type SessionManagerBase interface { credentials.FabricTableDelegate MgrDelegate // SecureGroupMessageDispatch handle the kSecure group messages SecureGroupMessageDispatch(header *raw.PacketHeader, addr netip.AddrPort, buf *system.PacketBufferHandle) // SecureUnicastMessageDispatch handle the unsecure messages SecureUnicastMessageDispatch(header *raw.PacketHeader, addr netip.AddrPort, buf *system.PacketBufferHandle) // UnauthenticatedMessageDispatch handle the unauthenticated(未经认证的) messages UnauthenticatedMessageDispatch(header *raw.PacketHeader, addr netip.AddrPort, buf *system.PacketBufferHandle) SendPreparedMessage(session *SessionHandle, preparedMessage *EncryptedPacketBufferHandle) error AllocateSession(sessionType session.SecureType, sessionEvictionHint lib.ScopedNodeId) *SessionHandle ExpireAllSessions(node *lib.ScopedNodeId) ExpireAllSessionsForFabric(fabricIndex lib.FabricIndex) ExpireAllSessionsOnLogicalFabric(node *lib.ScopedNodeId) FabricTable() *credentials.FabricTable CreateUnauthenticatedSession(peerAddress netip.AddrPort, config *messageing.ReliableMessageProtocolConfig) *SessionHandle FindSecureSessionForNode(nodeId *lib.ScopedNodeId, sessionType session.SecureType) *SessionHandle SetMessageDelegate(cb SessionMessageDelegate) SystemLayer() system.Layer }
SessionManagerBase The delegate for TransportManager and FabricTable TransportBaseDelegate is the indirect delegate for TransportManager
type SessionMessageDelegate ¶
type SessionMessageDelegate interface {
OnMessageReceived(packetHeader *raw.PacketHeader, payloadHeader *raw.PayloadHeader, session *SessionHandle, isDuplicate bool, buf *system.PacketBufferHandle)
}
SessionMessageDelegate 这里的delegate实例为ExchangeManager
type UnauthenticatedSessionTable ¶
type UnauthenticatedSessionTable struct {
// contains filtered or unexported fields
}
func NewUnauthenticatedSessionTable ¶
func NewUnauthenticatedSessionTable() *UnauthenticatedSessionTable
func (*UnauthenticatedSessionTable) FindInitiator ¶
func (t *UnauthenticatedSessionTable) FindInitiator(ephemeralInitiatorNodeID lib.NodeId) *SessionHandle
func (*UnauthenticatedSessionTable) FindOrAllocateResponder ¶
func (t *UnauthenticatedSessionTable) FindOrAllocateResponder(ephemeralInitiatorNodeId lib.NodeId, config *messageing.ReliableMessageProtocolConfig) (*SessionHandle, error)
Source Files
¶
Click to show internal directories.
Click to hide internal directories.