Package net.i2p.router.message
Class GarlicMessageBuilder
java.lang.Object
net.i2p.router.message.GarlicMessageBuilder
public class GarlicMessageBuilder extends Object
Build garlic messages based on a GarlicConfig
-
Constructor Summary
Constructors Constructor Description GarlicMessageBuilder()
-
Method Summary
Modifier and Type Method Description static GarlicMessage
buildECIESMessage(RouterContext ctx, GarlicConfig config)
Encrypt from an anonymous source.(package private) static GarlicMessage
buildECIESMessage(RouterContext ctx, GarlicConfig config, Hash from, Destination to, SessionKeyManager skm, ReplyCallback callback)
ECIES_X25519 only.static GarlicMessage
buildMessage(RouterContext ctx, GarlicConfig config, Set<SessionTag> wrappedTags, PublicKey target, SessionKey encryptKey, SessionTag encryptTag)
ELGAMAL_2048 only.static GarlicMessage
buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, int numTagsToDeliver, int lowTagsThreshold, SessionKeyManager skm)
ELGAMAL_2048 only.static GarlicMessage
buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, int numTagsToDeliver, SessionKeyManager skm)
ELGAMAL_2048 only Called by OCMJHstatic 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.static GarlicMessage
buildMessage(RouterContext ctx, GarlicConfig config, SessionKey encryptKey, RatchetSessionTag encryptTag)
Ratchet only.(package private) static boolean
needsTags(RouterContext ctx, PublicKey key, Hash local, int minTagOverride)
ELGAMAL_2048 only.
-
Constructor Details
-
GarlicMessageBuilder
public GarlicMessageBuilder()
-
-
Method Details
-
needsTags
ELGAMAL_2048 only.- Parameters:
local
- non-null; do not use this method for the router's SessionKeyManagerminTagOverride
- 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. ELGAMAL_2048 only.- Parameters:
ctx
- scopeconfig
- how/what to wrapwrappedKey
- non-null with null data, output parameter that will be filled with the SessionKey usedwrappedTags
- 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- Returns:
- null if expired
- Throws:
IllegalArgumentException
- on error
-
buildMessage
public static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, int numTagsToDeliver, SessionKeyManager skm)ELGAMAL_2048 only Called by OCMJH- Parameters:
ctx
- scopeconfig
- how/what to wrapwrappedKey
- non-null with null data, output parameter that will be filled with the SessionKey usedwrappedTags
- 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- Returns:
- null if expired
- Throws:
IllegalArgumentException
- on error
-
buildMessage
public static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, SessionKey wrappedKey, Set<SessionTag> wrappedTags, int numTagsToDeliver, int lowTagsThreshold, SessionKeyManager skm)ELGAMAL_2048 only. Called by netdb and above.- Parameters:
ctx
- scopeconfig
- how/what to wrapwrappedKey
- non-null with null data, output parameter that will be filled with the SessionKey usedwrappedTags
- 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 thresholdskm
- non-null- Returns:
- null if expired
- Throws:
IllegalArgumentException
- on error
-
buildMessage
public static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, Set<SessionTag> wrappedTags, PublicKey target, SessionKey encryptKey, SessionTag encryptTag)ELGAMAL_2048 only. Used by TestJob, and directly above, and by MessageWrapper for encrypting DatabaseLookupMessages and DSM/DSRM replies.- Parameters:
ctx
- scopeconfig
- how/what to wrapwrappedTags
- New tags to be sent along with the message. 200 max enforced at receiver; null OKtarget
- 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-nullencryptTag
- sessionTag used to encrypt the current message, null to force ElG- Returns:
- null if expired
- Throws:
IllegalArgumentException
- on error
-
buildMessage
public static GarlicMessage buildMessage(RouterContext ctx, GarlicConfig config, SessionKey encryptKey, RatchetSessionTag encryptTag)Ratchet only. Used by TestJob, and by MessageWrapper for encrypting DatabaseLookupMessages and DSM/DSRM replies.- Parameters:
ctx
- scopeconfig
- how/what to wrapencryptKey
- sessionKey used to encrypt the current message, non-nullencryptTag
- sessionTag used to encrypt the current message, non-null- Since:
- 0.9.46
-
buildECIESMessage
static GarlicMessage buildECIESMessage(RouterContext ctx, GarlicConfig config, Hash from, Destination to, SessionKeyManager skm, ReplyCallback callback)ECIES_X25519 only. Called by OCMJH only.- Parameters:
ctx
- scopeconfig
- how/what to wrap, must have key set with setRecipientPublicKey()callback
- may be null- Returns:
- null if expired or on other errors
- Throws:
IllegalArgumentException
- on error- Since:
- 0.9.44
-
buildECIESMessage
Encrypt from an anonymous source. ECIES_X25519 only. Called by MessageWrapper only.- Parameters:
ctx
- scopeconfig
- how/what to wrap, must have key set with setRecipientPublicKey()- Throws:
IllegalArgumentException
- on error- Since:
- 0.9.48
-