Class PublicHeader
- java.lang.Object
-
- org.drasyl.handler.remote.protocol.PublicHeader
-
public abstract class PublicHeader extends Object
This class models the public header of a drasyl protocol message. The header is structured as follows:- Flags: Several packet flags (bits 1-3: hop count, bit 4: set if message is armed, bits 5-8: unused).
- NetworkId: The 4 bytes network id value. Is a unique network-wide value. Used to filter messages from other networks.
- Nonce: The 24 bytes nonce value. Is used for encryption and as message id.
- Recipient: The 32 bytes recipient address. This value is optional. If not set it MUST be sent as 0.
- Sender: The 32 bytes sender address.
- ProofOfWork: The 4 bytes proof of work for the sender address.
-
-
Field Summary
Fields Modifier and Type Field Description static int
LENGTH
-
Constructor Summary
Constructors Constructor Description PublicHeader()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description byte[]
buildAuthTag()
Builds the authentication tag from this public header.abstract boolean
getArmed()
abstract HopCount
getHopCount()
abstract int
getNetworkId()
abstract Nonce
getNonce()
abstract ProofOfWork
getProofOfWork()
abstract DrasylAddress
getRecipient()
abstract DrasylAddress
getSender()
static PublicHeader
of(io.netty.buffer.ByteBuf byteBuf)
static PublicHeader
of(HopCount hopCount, boolean isArmed, int networkId, Nonce nonce, DrasylAddress recipient, DrasylAddress sender, ProofOfWork proofOfWork)
static PublicHeader
of(RemoteMessage msg)
void
writeTo(io.netty.buffer.ByteBuf byteBuf)
Writes this header to the bufferbyteBuf
.void
writeTo(io.netty.buffer.ByteBuf byteBuf, boolean withHopCount)
Writes this header to the bufferbyteBuf
.
-
-
-
Field Detail
-
LENGTH
public static final int LENGTH
- See Also:
- Constant Field Values
-
-
Method Detail
-
of
public static PublicHeader of(HopCount hopCount, boolean isArmed, int networkId, Nonce nonce, DrasylAddress recipient, DrasylAddress sender, ProofOfWork proofOfWork)
-
of
public static PublicHeader of(RemoteMessage msg)
-
of
public static PublicHeader of(io.netty.buffer.ByteBuf byteBuf) throws InvalidMessageFormatException
- Throws:
InvalidMessageFormatException
-
getHopCount
public abstract HopCount getHopCount()
-
getArmed
public abstract boolean getArmed()
-
getNetworkId
public abstract int getNetworkId()
-
getNonce
public abstract Nonce getNonce()
-
getRecipient
@Nullable public abstract DrasylAddress getRecipient()
-
getSender
public abstract DrasylAddress getSender()
-
getProofOfWork
public abstract ProofOfWork getProofOfWork()
-
buildAuthTag
public byte[] buildAuthTag()
Builds the authentication tag from this public header.- Returns:
- the authentication tag
-
writeTo
public void writeTo(io.netty.buffer.ByteBuf byteBuf, boolean withHopCount)
Writes this header to the bufferbyteBuf
.- Parameters:
byteBuf
- writes this header to the given bufferwithHopCount
- if the hop count should be included
-
writeTo
public void writeTo(io.netty.buffer.ByteBuf byteBuf)
Writes this header to the bufferbyteBuf
. Similar to#writeTo(ByteBuf, true)
.- Parameters:
byteBuf
- writes this header to the given buffer
-
-