Class GarlicMessageBuilder


  • public class GarlicMessageBuilder
    extends Object
    Build garlic messages based on a GarlicConfig
    • 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