net.i2p.router.message
Class GarlicMessageBuilder

java.lang.Object
  extended by net.i2p.router.message.GarlicMessageBuilder

public class GarlicMessageBuilder
extends Object

Build garlic messages based on a GarlicConfig


Constructor Summary
GarlicMessageBuilder()
           
 
Method Summary
static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, int numTagsToDeliver, int lowTagsThreshold, SessionKeyManager skm)
          called by netdb and above
static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, int numTagsToDeliver, SessionKeyManager skm)
          called by OCMJH
static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, PublicKey target, SessionKey encryptKey, SessionTag encryptTag)
          used by TestJob and directly above and for encrypting DatabaseLookupMessages
static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, SessionKeyManager skm)
          Now unused, since we have to generate a reply token first in OCMOSJ but we don't know if tags are required yet.
(package private) static boolean needsTags(RouterContext ctx, PublicKey key, Hash local, int minTagOverride)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GarlicMessageBuilder

public GarlicMessageBuilder()
Method Detail

needsTags

static boolean needsTags(RouterContext ctx,
                         PublicKey key,
                         Hash local,
                         int minTagOverride)
Parameters:
local - non-null; do not use this method for the router's SessionKeyManager
minTagOverride - 0 for no override, > 0 to override SKM's settings

buildMessage

public static GarlicMessage buildMessage(RouterContext ctx,
                                         GarlicConfig config,
                                         SessionKey wrappedKey,
                                         Set<SessionTag> wrappedTags,
                                         SessionKeyManager skm)
Now unused, since we have to generate a reply token first in OCMOSJ but we don't know if tags are required yet.

Parameters:
ctx - scope
config - how/what to wrap
wrappedKey - output parameter that will be filled with the sessionKey used
wrappedTags - Output parameter that will be filled with the sessionTags used. If non-empty on return you must call skm.tagsDelivered() when sent and then call skm.tagsAcked() or skm.failTags() later.
skm - non-null
Throws:
IllegalArgumentException - on error

buildMessage

public static GarlicMessage buildMessage(RouterContext ctx,
                                         GarlicConfig config,
                                         SessionKey wrappedKey,
                                         Set<SessionTag> wrappedTags,
                                         int numTagsToDeliver,
                                         SessionKeyManager skm)
called by OCMJH

Parameters:
ctx - scope
config - how/what to wrap
wrappedKey - output parameter that will be filled with the sessionKey used
wrappedTags - Output parameter that will be filled with the sessionTags used. If non-empty on return you must call skm.tagsDelivered() when sent and then call skm.tagsAcked() or skm.failTags() later.
numTagsToDeliver - Only if the estimated available tags are below the threshold. Set to zero to disable tag delivery. You must set to zero if you are not equipped to confirm delivery and call skm.tagsAcked() or skm.failTags() later.
skm - non-null
Throws:
IllegalArgumentException - on error

buildMessage

public static GarlicMessage buildMessage(RouterContext ctx,
                                         GarlicConfig config,
                                         SessionKey wrappedKey,
                                         Set<SessionTag> wrappedTags,
                                         int numTagsToDeliver,
                                         int lowTagsThreshold,
                                         SessionKeyManager skm)
called by netdb and above

Parameters:
ctx - scope
config - how/what to wrap
wrappedKey - output parameter that will be filled with the sessionKey used
wrappedTags - Output parameter that will be filled with the sessionTags used. If non-empty on return you must call skm.tagsDelivered() when sent and then call skm.tagsAcked() or skm.failTags() later.
numTagsToDeliver - only if the estimated available tags are below the threshold. Set to zero to disable tag delivery. You must set to zero if you are not equipped to confirm delivery and call skm.tagsAcked() or failTags() later. If this is always 0, it forces ElGamal every time.
lowTagsThreshold - the threshold
skm - non-null
Throws:
IllegalArgumentException - on error

buildMessage

public static GarlicMessage buildMessage(RouterContext ctx,
                                         GarlicConfig config,
                                         SessionKey wrappedKey,
                                         Set<SessionTag> wrappedTags,
                                         PublicKey target,
                                         SessionKey encryptKey,
                                         SessionTag encryptTag)
used by TestJob and directly above and for encrypting DatabaseLookupMessages

Parameters:
ctx - scope
config - how/what to wrap
wrappedKey - unused - why??
wrappedTags - New tags to be sent along with the message. 200 max enforced at receiver; null OK
target - public key of the location being garlic routed to (may be null if we know the encryptKey and encryptTag)
encryptKey - sessionKey used to encrypt the current message, non-null
encryptTag - sessionTag used to encrypt the current message, null to force ElG
Throws:
IllegalArgumentException - on error