Add padding for outgoing upstream traffic in secure mode

This commit is contained in:
Сергей Прохоров 2018-07-12 13:44:17 +02:00
parent ad394a2aa8
commit 4eab3caa66
No known key found for this signature in database
GPG key ID: 1C570244E4EF3337
2 changed files with 9 additions and 2 deletions

View file

@ -64,7 +64,13 @@ try_decode_packet_len(Len, Data, #int_st{padding = Pad} = St) ->
end.
-spec encode_packet(iodata(), codec()) -> iodata().
encode_packet(Data, St) ->
encode_packet(Data, #int_st{padding = Pad} = St) ->
Size = iolist_size(Data),
Packet = [<<Size:32/little>> | Data],
Packet = case Pad of
false -> [<<Size:32/little>> | Data];
true ->
PadSize = rand:uniform(4) - 1,
Padding = crypto:strong_rand_bytes(PadSize), % 0 is ok
[<<(Size + PadSize):32/little>>, Data | Padding]
end,
{Packet, St}.

View file

@ -28,6 +28,7 @@
-define(FLAG_HAS_AD_TAG , 16#8).
-define(FLAG_MAGIC , 16#1000).
-define(FLAG_EXTMODE2 , 16#20000).
-define(FLAG_PAD , 16#8000000). %TODO: use it
-define(FLAG_INTERMEDIATE , 16#20000000).
-define(FLAG_ABRIDGED , 16#40000000).
-define(FLAG_QUICKACK , 16#80000000).