Class SignedMessage
- java.lang.Object
-
- org.drasyl.peer.connection.message.SignedMessage
-
public class SignedMessage extends Object implements Signable
Represents a container with a signature for thepayload
. Thesignature
must be valid under the suppliedpublic key
.
Thesignature
does not give any guarantees about the logical integrity of thepayload
, but only guarantees that thepayload
was sent by the identity with thepublic key
(as the last node in a relay chain).
-
-
Field Summary
Fields Modifier and Type Field Description static Supplier<String>
defaultUserAgentGenerator
protected short
hopCount
protected MessageId
id
protected int
networkId
protected ProofOfWork
proofOfWork
protected CompressedPublicKey
recipient
protected CompressedPublicKey
sender
protected String
userAgent
static Supplier<String>
userAgentGenerator
-
Constructor Summary
Constructors Constructor Description SignedMessage(int networkId, CompressedPublicKey sender, ProofOfWork proofOfWork, CompressedPublicKey recipient, Message payload)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
short
getHopCount()
Returns this message's hop count.MessageId
getId()
Returns the unique id of this message.int
getNetworkId()
Returns the network the sender belongs to.Message
getPayload()
ProofOfWork
getProofOfWork()
Returns this message sender's proof of work.CompressedPublicKey
getRecipient()
Returns this message's recipient.CompressedPublicKey
getSender()
Returns this message's sender.Signature
getSignature()
Returns the signature this signable object was signed with.String
getUserAgent()
Returns the user agent of the sender's node.int
hashCode()
void
incrementHopCount()
Increases the message's hop count.void
setSignature(Signature signature)
Signs the object with the specified signature.String
toString()
void
writeFieldsTo(OutputStream outstream)
Write any content into the passed output-stream to have them included in the signing process.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.drasyl.crypto.Signable
getSignableBytes
-
-
-
-
Field Detail
-
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 Detail
-
SignedMessage
public SignedMessage(int networkId, CompressedPublicKey sender, ProofOfWork proofOfWork, CompressedPublicKey recipient, Message payload)
-
-
Method Detail
-
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 interfaceSignable
- 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 interfaceSignable
-
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 toSignable.getSignature()
should return aSignature
object that is equal to the specifiedsignature
.- Specified by:
setSignature
in interfaceSignable
-
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.
-
getUserAgent
public String getUserAgent()
Description copied from interface:Message
Returns the user agent of the sender's node.- Specified by:
getUserAgent
in interfaceMessage
- 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 interfaceMessage
- Returns:
- the network the sender belongs to
-
getSender
public CompressedPublicKey getSender()
Description copied from 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 interfaceMessage
- 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 interfaceMessage
- 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 configdrasyl.message.hop-limit
it will be dropped.- Specified by:
getHopCount
in interfaceMessage
- 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 interfaceMessage
-
-