From 95913ba28b565634814c58f1a2b9145abd85712d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 7 Jun 2021 16:39:14 +0200 Subject: [PATCH] Handle crypto for different OTP versions better in media proxy Signed-off-by: Thomas Citharel --- lib/web/media_proxy.ex | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/web/media_proxy.ex b/lib/web/media_proxy.ex index 549f0918d..a7c9fe4fb 100644 --- a/lib/web/media_proxy.ex +++ b/lib/web/media_proxy.ex @@ -58,7 +58,19 @@ defmodule Mobilizon.Web.MediaProxy do end defp signed_url(url) do - :crypto.mac(:hmac, :sha, Config.get([Web.Endpoint, :secret_key_base]), url) + sha_hmac(Config.get([Web.Endpoint, :secret_key_base]), url) + end + + @compile {:no_warn_undefined, {:crypto, :mac, 4}} + @compile {:no_warn_undefined, {:crypto, :hmac, 3}} + defp sha_hmac(key, url) do + # :crypto.hmac was removed in OTP24, but :crypto.mac was added in OTP 22.1 + # TODO: Remove me when we don't support OTP 21/22 anymore + if function_exported?(:crypto, :mac, 4) do + :crypto.mac(:hmac, :sha, key, url) + else + :crypto.hmac(:sha, key, url) + end end def filename(url_or_path) do