Constructors
InitialState :: ServiceProtocol m kDefault state after connecting, but before the protocol version has been negotiated.
IdleState :: ServiceProtocol m kSystem is idling, waiting for the server to push the next key.
WaitForConfirmationState :: ServiceProtocol m kA new key has been pushed, client must now confirm that the key has been received.
EndState :: ServiceProtocol m kThe server has closed the connection, thus signalling the end of the session.
Instances16HasInfo, Protocol, VersionedProtocol, StateTokenI, Message, StateAgency, …
NamedCrypto c => HasInfo (DirectCodec m) (Message (ServiceProtocol m c) 'InitialState 'IdleState)Defined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Driver · orphanNamedCrypto c => HasInfo (DirectCodec m) (Message (ServiceProtocol m c) 'WaitForConfirmationState 'IdleState)Defined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Driver · orphanNamedCrypto c => HasInfo (DirectCodec m) (Message (ServiceProtocol m c) _st 'EndState)Defined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Driver · orphan(NamedCrypto c, Crypto c, Typeable c, HasInfo (DirectCodec m) (SignKeyKES (KES c)), HasInfo (DirectCodec m) (VerKeyKES (KES c))) => HasInfo (DirectCodec m) (Message (ServiceProtocol m c) 'IdleState 'WaitForConfirmationState)Defined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Driver · orphanProtocol (ServiceProtocol m c)Defined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.ProtocolThe protocol for pushing KES keys.
Intended use:
The Node acts as the Client, the Agent acts as a Server
When a Node connects, the Agent will push the current key
When the Agent generates a new key, it will push the new key
*OR:**
The Agent acts as the Client, and the Control Server as a Server
When the Control Server connects, it pushes a key to the Agent
The Agent stores the key locally in memory and pushes it to any connected Nodes.
All pushes are confirmed from the receiving end, to make sure they have gone through. This allows the control client to report success to the user, but it also helps make things more predictable in testing, because it means that sending keys is now synchronous.
NamedCrypto c => VersionedProtocol (ServiceProtocol m c)Defined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.ProtocolStateTokenI 'EndStateDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.ProtocolStateTokenI 'IdleStateDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.ProtocolStateTokenI 'InitialStateDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.ProtocolStateTokenI 'WaitForConfirmationStateDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Protocoldata Message (ServiceProtocol m c)VersionMessage :: R:MessageServiceProtocolstst' m c 'InitialState 'IdleStateKeyMessage :: Bundle m c -> R:MessageServiceProtocolstst' m c 'IdleState 'WaitForConfirmationStateRecvResultMessage :: RecvResult -> R:MessageServiceProtocolstst' m c 'WaitForConfirmationState 'IdleStateAbortMessage :: R:MessageServiceProtocolstst' m c 'InitialState 'EndStateServerDisconnectMessage :: R:MessageServiceProtocolstst' m c 'IdleState 'EndStateClientDisconnectMessage :: R:MessageServiceProtocolstst' m c 'WaitForConfirmationState 'EndStateProtocolErrorMessage :: R:MessageServiceProtocolstst' m c st 'EndState
type StateAgency 'EndState = 'NobodyAgencyDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Protocoltype StateAgency 'IdleState = 'ServerAgencyDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Protocoltype StateAgency 'InitialState = 'ServerAgencyDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Protocoltype StateAgency 'WaitForConfirmationState = 'ClientAgencyDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Protocoltype StateToken = SServiceProtocolDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Protocols.Service.V0.Protocol