logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 1ce1b7b58dc0e009635c9dd6e2571df56c04f356
parent: 921571c19bf4a7fcea666aa70744a02fe108d11a
Author: lambda <pleromagit@rogerbraun.net>
Date:   Fri, 15 Feb 2019 14:58:13 +0000

Merge branch 'bugfix/oauth-token-padding' into 'develop'

oauth: never use base64 padding when returning tokens to applications

See merge request pleroma/pleroma!825

Diffstat:

Mlib/pleroma/web/oauth/app.ex10++++++++--
Mlib/pleroma/web/oauth/authorization.ex2+-
Mlib/pleroma/web/oauth/oauth_controller.ex2+-
Mlib/pleroma/web/oauth/token.ex4++--
4 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/lib/pleroma/web/oauth/app.ex b/lib/pleroma/web/oauth/app.ex @@ -25,8 +25,14 @@ defmodule Pleroma.Web.OAuth.App do if changeset.valid? do changeset - |> put_change(:client_id, :crypto.strong_rand_bytes(32) |> Base.url_encode64()) - |> put_change(:client_secret, :crypto.strong_rand_bytes(32) |> Base.url_encode64()) + |> put_change( + :client_id, + :crypto.strong_rand_bytes(32) |> Base.url_encode64(padding: false) + ) + |> put_change( + :client_secret, + :crypto.strong_rand_bytes(32) |> Base.url_encode64(padding: false) + ) else changeset end diff --git a/lib/pleroma/web/oauth/authorization.ex b/lib/pleroma/web/oauth/authorization.ex @@ -24,7 +24,7 @@ defmodule Pleroma.Web.OAuth.Authorization do end def create_authorization(%App{} = app, %User{} = user) do - token = :crypto.strong_rand_bytes(32) |> Base.url_encode64() + token = :crypto.strong_rand_bytes(32) |> Base.url_encode64(padding: false) authorization = %Authorization{ token: token, diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex @@ -173,7 +173,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do token |> URI.decode() |> Base.url_decode64!(padding: false) - |> Base.url_encode64() + |> Base.url_encode64(padding: false) end defp get_app_from_request(conn, params) do diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex @@ -31,8 +31,8 @@ defmodule Pleroma.Web.OAuth.Token do end def create_token(%App{} = app, %User{} = user) do - token = :crypto.strong_rand_bytes(32) |> Base.url_encode64() - refresh_token = :crypto.strong_rand_bytes(32) |> Base.url_encode64() + token = :crypto.strong_rand_bytes(32) |> Base.url_encode64(padding: false) + refresh_token = :crypto.strong_rand_bytes(32) |> Base.url_encode64(padding: false) token = %Token{ token: token,