Skip to content
This repository has been archived by the owner on Feb 21, 2020. It is now read-only.

Commit

Permalink
10.0.32.18 support
Browse files Browse the repository at this point in the history
  • Loading branch information
maxlapshin committed Oct 1, 2009
1 parent 4a9832d commit c9eb3a5
Showing 1 changed file with 10 additions and 23 deletions.
33 changes: 10 additions & 23 deletions src/rtmp_handshake.erl
Original file line number Diff line number Diff line change
Expand Up @@ -110,36 +110,23 @@
s1() ->
?HANDSHAKE.

clientGenuineConstDigest(C1) ->
?D("Old player"),
<<_:8/binary, P1/unsigned, P2/unsigned, P3/unsigned, P4/unsigned, _/binary>> = C1,
Offset = (P1+P2+P3+P4) rem 728 + 12,
<<_:Offset/binary, Seed:32/binary, _/binary>> = C1,
Seed.

serverGenuineConstDigest(C1) ->
clientDigest(<<_:5/binary, 0, 3, 2, _/binary>> = C1) ->
?D("New player"),
<<_:772/binary, P1/unsigned, P2/unsigned, P3/unsigned, P4/unsigned, _/binary>> = C1,
Offset = (P1+P2+P3+P4) rem 728 + 776,
<<_:Offset/binary, Seed:32/binary, _/binary>> = C1,
Seed;


clientDigest(C1) ->
?D("Old player"),
<<_:8/binary, P1/unsigned, P2/unsigned, P3/unsigned, P4/unsigned, _/binary>> = C1,
Offset = (P1+P2+P3+P4) rem 728 + 12,
<<_:Offset/binary, Seed:32/binary, _/binary>> = C1,
Seed.

version(<<_:32/integer, 1:1/integer, _:7/integer, 0:8/integer, 1:8/integer, 2:8/integer, _/binary>>) ->
v1;
version(<<_:32/integer, 1:1/integer, _/binary>>) ->
v2;
version(_) ->
v1.

seed(C1) ->
Seed = case version(C1) of
v1 -> clientGenuineConstDigest(C1);
v2 -> serverGenuineConstDigest(C1)
end,
binary_to_list(Seed).

s2(C1) ->
ServerDigest = hmac256:digest(?KEYSERVER, seed(C1)),
ServerDigest = hmac256:digest(?KEYSERVER, clientDigest(C1)),
<<S2:1504/binary, _/binary>> = s1(),
ServerSign = hmac256:digest(ServerDigest, S2),
<<S2/binary, (list_to_binary(ServerSign))/binary>>.

0 comments on commit c9eb3a5

Please sign in to comment.