final class SSU2Header extends Object
Modifier and Type | Class and Description |
---|---|
static class |
SSU2Header.Header
A temporary structure returned from trial decrypt,
with methods to access the fields.
|
Modifier and Type | Field and Description |
---|---|
static byte[] |
CHACHA_IV_0
12 bytes of zeros
|
static byte[] |
HEADER_PROT_DATA
8 bytes of zeros
|
Modifier and Type | Method and Description |
---|---|
static void |
acceptTrialDecrypt(UDPPacket packet,
SSU2Header.Header header)
Copy the header back to the packet.
|
static long |
decryptDestConnID(DatagramPacket pkt,
byte[] key1)
Decrypt bytes 0-7 in header.
|
static void |
encryptHandshakeHeader(UDPPacket packet,
byte[] key1,
byte[] key2)
First 64 bytes
|
static void |
encryptLongHeader(UDPPacket packet,
byte[] key1,
byte[] key2)
First 32 bytes
|
static void |
encryptShortHeader(UDPPacket packet,
byte[] key1,
byte[] key2)
First 16 bytes.
|
static SSU2Header.Header |
trialDecryptHandshakeHeader(UDPPacket packet,
byte[] key1,
byte[] key2)
Session Request and Session Created only.
|
static SSU2Header.Header |
trialDecryptLongHeader(UDPPacket packet,
byte[] key1,
byte[] key2)
Retry, Token Request, Peer Test only.
|
static SSU2Header.Header |
trialDecryptShortHeader(UDPPacket packet,
byte[] key1,
byte[] key2)
Session Confirmed and data phase.
|
public static final byte[] HEADER_PROT_DATA
public static final byte[] CHACHA_IV_0
public static SSU2Header.Header trialDecryptHandshakeHeader(UDPPacket packet, byte[] key1, byte[] key2)
packet
- must be 88 bytes minpublic static SSU2Header.Header trialDecryptLongHeader(UDPPacket packet, byte[] key1, byte[] key2)
packet
- must be 56 bytes minpublic static SSU2Header.Header trialDecryptShortHeader(UDPPacket packet, byte[] key1, byte[] key2)
packet
- must be 40 bytes minpublic static long decryptDestConnID(DatagramPacket pkt, byte[] key1)
pkt
- must be 8 bytes minIndexOutOfBoundsException
- if too shortpublic static void acceptTrialDecrypt(UDPPacket packet, SSU2Header.Header header)
public static void encryptHandshakeHeader(UDPPacket packet, byte[] key1, byte[] key2)
public static void encryptLongHeader(UDPPacket packet, byte[] key1, byte[] key2)
public static void encryptShortHeader(UDPPacket packet, byte[] key1, byte[] key2)