Class SignedMessage

java.lang.Object
org.drasyl.peer.connection.message.SignedMessage
All Implemented Interfaces:
Signable, Message

public class SignedMessage extends Object implements Signable
Represents a container with a signature for the payload. The signature must be valid under the supplied public key.
The signature does not give any guarantees about the logical integrity of the payload, but only guarantees that the payload was sent by the identity with the public key (as the last node in a relay chain).
  • Field Details

    • defaultUserAgentGenerator

      public static final Supplier<String> defaultUserAgentGenerator
    • userAgentGenerator

      public static Supplier<String> userAgentGenerator
    • id

      protected final MessageId id
    • userAgent

      protected final String userAgent
    • networkId

      protected final int networkId
    • sender

      protected final CompressedPublicKey sender
    • proofOfWork

      protected final ProofOfWork proofOfWork
    • recipient

      protected final CompressedPublicKey recipient
    • hopCount

      protected short hopCount
  • Constructor Details

  • Method Details

    • getPayload

      public Message getPayload()
    • writeFieldsTo

      public void writeFieldsTo(OutputStream outstream) throws IOException
      Description copied from interface: Signable

      Write any content into the passed output-stream to have them included in the signing process.

      Only use this with the default-implementation of Signable.getSignableBytes()

      Specified by:
      writeFieldsTo in interface Signable
      Parameters:
      outstream - an outputstream to write to
      Throws:
      IOException
    • getSignature

      public Signature getSignature()
      Description copied from interface: Signable
      Returns the signature this signable object was signed with.
      Specified by:
      getSignature in interface Signable
    • setSignature

      public void setSignature(Signature signature)
      Description copied from interface: Signable
      Signs the object with the specified signature. After this method was invoked subsequent calls to Signable.getSignature() should return a Signature object that is equal to the specified signature.
      Specified by:
      setSignature in interface Signable
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
    • hashCode

      public int hashCode()
    • getId

      public MessageId getId()
      Description copied from interface: Message
      Returns the unique id of this message. Each message generates a random id when it is created.
      Specified by:
      getId in interface Message
      Returns:
      the unique id of this message. Each message generates a random id when it is created.
    • getUserAgent

      public String getUserAgent()
      Description copied from interface: Message
      Returns the user agent of the sender's node.
      Specified by:
      getUserAgent in interface Message
      Returns:
      the user agent of the sender's node.
    • getNetworkId

      public int getNetworkId()
      Description copied from interface: Message
      Returns the network the sender belongs to.
      Specified by:
      getNetworkId in interface Message
      Returns:
      the network the sender belongs to
    • getSender

      public CompressedPublicKey getSender()
      Description copied from interface: Message
      Returns this message's sender.
      Specified by:
      getSender in interface Message
      Returns:
      this message's sender.
    • getProofOfWork

      public ProofOfWork getProofOfWork()
      Description copied from interface: Message
      Returns this message sender's proof of work.
      Specified by:
      getProofOfWork in interface Message
      Returns:
      this message sender's proof of work.
    • getRecipient

      public CompressedPublicKey getRecipient()
      Description copied from interface: Message
      Returns this message's recipient.
      Specified by:
      getRecipient in interface Message
      Returns:
      this message's recipient.
    • getHopCount

      public short getHopCount()
      Description copied from interface: Message
      Returns this message's hop count. Starts at 0 and is incremented every time it is sent. Once the message reaches the limit defined in config drasyl.message.hop-limit it will be dropped.
      Specified by:
      getHopCount in interface Message
      Returns:
      this message's hop count.
    • incrementHopCount

      public void incrementHopCount()
      Description copied from interface: Message
      Increases the message's hop count.
      Specified by:
      incrementHopCount in interface Message