Rice Pastry API

org.mpisws.p2p.transport.peerreview.authpush
Class AuthenticatorPushProtocolImpl<Handle extends RawSerializable,Identifier extends RawSerializable>

java.lang.Object
  extended by org.mpisws.p2p.transport.peerreview.authpush.AuthenticatorPushProtocolImpl<Handle,Identifier>
All Implemented Interfaces:
AuthenticatorPushProtocol<Handle,Identifier>, PeerReviewConstants, StatusConstants

public class AuthenticatorPushProtocolImpl<Handle extends RawSerializable,Identifier extends RawSerializable>
extends java.lang.Object
implements AuthenticatorPushProtocol<Handle,Identifier>

This protocol collects authenticators from incoming messages and, once in a while, batches them together and sends them to the witnesses.


Field Summary
 
Fields inherited from interface org.mpisws.p2p.transport.peerreview.PeerReviewConstants
AUTH_CACHE_INTERVAL, CERT_MISSING, CHAL_AUDIT, CHAL_SEND, DEFAULT_AUDIT_INTERVAL_MILLIS, DEFAULT_AUTH_PUSH_INTERVAL_MILLIS, DEFAULT_CHECKPOINT_INTERVAL_MILLIS, DEFAULT_LOG_DOWNLOAD_TIMEOUT, DEFAULT_TIME_TOLERANCE_MILLIS, EVT_ACK, EVT_CHECKPOINT, EVT_CHOOSE_Q, EVT_CHOOSE_RAND, EVT_INIT, EVT_MAX_RESERVED, EVT_MAX_SOCKET_EVT, EVT_MIN_SOCKET_EVT, EVT_RECV, EVT_SEND, EVT_SENDSIGN, EVT_SIGN, EVT_SOCKET_CAN_READ, EVT_SOCKET_CAN_RW, EVT_SOCKET_CAN_WRITE, EVT_SOCKET_CLOSE, EVT_SOCKET_CLOSED, EVT_SOCKET_EXCEPTION, EVT_SOCKET_OPEN_INCOMING, EVT_SOCKET_OPEN_OUTGOING, EVT_SOCKET_OPENED_OUTGOING, EVT_SOCKET_READ, EVT_SOCKET_SHUTDOWN_OUTPUT, EVT_SOCKET_WRITE, EVT_VRF, EX_TYPE_ClosedChannel, EX_TYPE_IO, EX_TYPE_Unknown, FLAG_FULL_MESSAGES_ALL, FLAG_FULL_MESSAGES_SENDER, FLAG_INCLUDE_CHECKPOINT, INVALID, INVESTIGATION_INTERVAL_MILLIS, MAINTENANCE_INTERVAL_MILLIS, MAX_ACTIVE_AUDITS, MAX_ACTIVE_INVESTIGATIONS, MAX_ENTRIES_BETWEEN_CHECKPOINTS, MAX_STATUS_INFO, MAX_WITNESSED_NODES, MSG_ACCUSATION, MSG_ACK, MSG_AUTHPUSH, MSG_AUTHREQ, MSG_AUTHRESP, MSG_CHALLENGE, MSG_RESPONSE, MSG_USERDATA, MSG_USERDGRAM, NO_CERTIFICATE, PROGRESS_INTERVAL_MILLIS, PROOF_INCONSISTENT, PROOF_NONCONFORMANT, RESP_AUDIT, RESP_SEND, SIGNATURE_BAD, SIGNATURE_OK, STATE_SEND_AUDIT, STATE_WAIT_FOR_LOG, TI_AUTH_PUSH, TI_CHECKPOINT, TI_MAINTENANCE, TI_MAKE_PROGRESS, TI_MAX_RESERVED, TI_START_AUDITS, TI_STATUS_INFO, VALID
 
Fields inherited from interface org.mpisws.p2p.transport.peerreview.StatusConstants
STATUS_EXPOSED, STATUS_SUSPECTED, STATUS_TRUSTED
 
Constructor Summary
AuthenticatorPushProtocolImpl(PeerReview<Handle,Identifier> peerreview, AuthenticatorStore<Identifier> inStore, AuthenticatorStore<Identifier> outStore, AuthenticatorStore<Identifier> pendingStore, IdentityTransport<Handle,Identifier> transport, PeerInfoStore<Handle,Identifier> infoStore, EvidenceTransferProtocol<Handle,Identifier> evidenceTransferProtocol, Environment env)
           
 
Method Summary
 void addAuthenticatorsIfValid(java.util.List<Authenticator> authenticators, Identifier id)
          Called when some other node sends us an AUTHPUSH message.
 void continuePush(java.util.Map<Identifier,java.util.Collection<Handle>> subjectsToWitnesses)
           
 void enableProbabilisticChecking(double pXmit)
           
 void handleIncomingAuthenticators(Handle source, AuthPushMessage<Identifier> msg)
          Called when some other node sends us an AUTHPUSH message.
 void notifyCertificateAvailable(Identifier id)
          When we receive a new certificate, we may be able to check some more signatures on auths in the authPendingStore
 void push()
           
protected  void sendAuthenticators(Handle h, java.util.Map<Identifier,java.util.List<Authenticator>> authenticators)
          TODO: make this use udp, or smaller AuthPushMessages
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AuthenticatorPushProtocolImpl

public AuthenticatorPushProtocolImpl(PeerReview<Handle,Identifier> peerreview,
                                     AuthenticatorStore<Identifier> inStore,
                                     AuthenticatorStore<Identifier> outStore,
                                     AuthenticatorStore<Identifier> pendingStore,
                                     IdentityTransport<Handle,Identifier> transport,
                                     PeerInfoStore<Handle,Identifier> infoStore,
                                     EvidenceTransferProtocol<Handle,Identifier> evidenceTransferProtocol,
                                     Environment env)
Method Detail

enableProbabilisticChecking

public void enableProbabilisticChecking(double pXmit)

push

public void push()
Specified by:
push in interface AuthenticatorPushProtocol<Handle extends RawSerializable,Identifier extends RawSerializable>

continuePush

public void continuePush(java.util.Map<Identifier,java.util.Collection<Handle>> subjectsToWitnesses)
Specified by:
continuePush in interface AuthenticatorPushProtocol<Handle extends RawSerializable,Identifier extends RawSerializable>

sendAuthenticators

protected void sendAuthenticators(Handle h,
                                  java.util.Map<Identifier,java.util.List<Authenticator>> authenticators)
                           throws java.io.IOException
TODO: make this use udp, or smaller AuthPushMessages

Parameters:
h -
authenticators -
Throws:
java.io.IOException

addAuthenticatorsIfValid

public void addAuthenticatorsIfValid(java.util.List<Authenticator> authenticators,
                                     Identifier id)
Called when some other node sends us an AUTHPUSH message. The message may contain authenticators from multiple nodes. If, for some node, we don't have a certificate, we store its auths in the authPendingStore and request the certificate from the sender, otherwise we check the auths' signatures and put them into the authInStore.


handleIncomingAuthenticators

public void handleIncomingAuthenticators(Handle source,
                                         AuthPushMessage<Identifier> msg)
Called when some other node sends us an AUTHPUSH message. The message may contain authenticators from multiple nodes. If, for some node, we don't have a certificate, we store its auths in the authPendingStore and request the certificate from the sender, otherwise we check the auths' signatures and put them into the authInStore.

Specified by:
handleIncomingAuthenticators in interface AuthenticatorPushProtocol<Handle extends RawSerializable,Identifier extends RawSerializable>

notifyCertificateAvailable

public void notifyCertificateAvailable(Identifier id)
When we receive a new certificate, we may be able to check some more signatures on auths in the authPendingStore

Specified by:
notifyCertificateAvailable in interface AuthenticatorPushProtocol<Handle extends RawSerializable,Identifier extends RawSerializable>

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection