Skip to content

Commit 0a90951

Browse files
Exclude Base64 padding from ICEAgent credentials (#98)
1 parent d230a73 commit 0a90951

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

lib/ex_ice/priv/ice_agent.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2700,8 +2700,8 @@ defmodule ExICE.Priv.ICEAgent do
27002700
end
27012701

27022702
defp generate_credentials() do
2703-
ufrag = :crypto.strong_rand_bytes(3) |> Base.encode64()
2704-
pwd = :crypto.strong_rand_bytes(16) |> Base.encode64()
2703+
ufrag = :crypto.strong_rand_bytes(3) |> Base.encode64(padding: false)
2704+
pwd = :crypto.strong_rand_bytes(16) |> Base.encode64(padding: false)
27052705
{ufrag, pwd}
27062706
end
27072707

test/priv/ice_agent_test.exs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3063,6 +3063,23 @@ defmodule ExICE.Priv.ICEAgentTest do
30633063
assert <<_channel_number::16, _len::16, "somedata">> = packet
30643064
end
30653065

3066+
describe "generate_credentials/0" do
3067+
test "generates credentials without padding" do
3068+
ice_agent =
3069+
ICEAgent.new(
3070+
controlling_process: self(),
3071+
role: :controlling,
3072+
if_discovery_module: IfDiscovery.MockSingle,
3073+
transport_module: Transport.Mock
3074+
)
3075+
3076+
refute String.contains?(ice_agent.local_ufrag, "=")
3077+
refute String.contains?(ice_agent.local_pwd, "=")
3078+
assert byte_size(ice_agent.local_ufrag) == 4
3079+
assert byte_size(ice_agent.local_pwd) == 22
3080+
end
3081+
end
3082+
30663083
defp connect(ice_agent) do
30673084
[socket] = ice_agent.sockets
30683085
[remote_cand] = Map.values(ice_agent.remote_cands)

0 commit comments

Comments
 (0)