This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a commit to branch jwtf-error-messages
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 14c5c20ddfd3d354c42ed4d1baba0ad2ce25b382
Author: Robert Newson <[email protected]>
AuthorDate: Tue Jul 7 19:35:25 2026 +0100

    improve JWT error messages
---
 src/jwtf/src/jwtf.erl        |  8 ++++----
 src/jwtf/test/jwtf_tests.erl | 14 +++++++-------
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/jwtf/src/jwtf.erl b/src/jwtf/src/jwtf.erl
index 4c4a3e8ba..98cafebb4 100644
--- a/src/jwtf/src/jwtf.erl
+++ b/src/jwtf/src/jwtf.erl
@@ -297,7 +297,7 @@ public_key_verify(Algorithm, Message, Signature, PublicKey) 
->
         true ->
             ok;
         false ->
-            throw({bad_request, <<"Bad signature">>})
+            throw({bad_request, <<"Bad signature in authentication token">>})
     end.
 
 hmac_verify(Algorithm, Message, HMAC, SecretKey) ->
@@ -305,7 +305,7 @@ hmac_verify(Algorithm, Message, HMAC, SecretKey) ->
         HMAC ->
             ok;
         _ ->
-            throw({bad_request, <<"Bad HMAC">>})
+            throw({bad_request, <<"Bad HMAC in authentication token">>})
     end.
 
 jose_to_der(Signature) ->
@@ -325,7 +325,7 @@ rs_len(<<"ES", SizeBin/binary>>) ->
 split(EncodedToken) ->
     case binary:split(EncodedToken, <<$.>>, [global]) of
         [_, _, _] = Split -> Split;
-        _ -> throw({bad_request, <<"Malformed token">>})
+        _ -> throw({bad_request, <<"Malformed authentication token">>})
     end.
 
 decode_passthrough(B64UrlEncoded) ->
@@ -341,7 +341,7 @@ decode_b64url_json(B64UrlEncoded) ->
         end
     catch
         _:_ ->
-            throw({bad_request, <<"Malformed token">>})
+            throw({bad_request, <<"Malformed authentication token">>})
     end.
 
 props({Props}) ->
diff --git a/src/jwtf/test/jwtf_tests.erl b/src/jwtf/test/jwtf_tests.erl
index 40b190f52..51991ce28 100644
--- a/src/jwtf/test/jwtf_tests.erl
+++ b/src/jwtf/test/jwtf_tests.erl
@@ -49,28 +49,28 @@ jwt_io_ec_pubkey() ->
 b64_badarg_test() ->
     Encoded = <<"0.0.0">>,
     ?assertEqual(
-        {error, {bad_request, <<"Malformed token">>}},
+        {error, {bad_request, <<"Malformed authentication token">>}},
         jwtf:decode(Encoded, [], nil)
     ).
 
 b64_bad_block_test() ->
     Encoded = <<" aGVsbG8. aGVsbG8. aGVsbG8">>,
     ?assertEqual(
-        {error, {bad_request, <<"Malformed token">>}},
+        {error, {bad_request, <<"Malformed authentication token">>}},
         jwtf:decode(Encoded, [], nil)
     ).
 
 invalid_json_test() ->
     Encoded = <<"fQ.fQ.fQ">>,
     ?assertEqual(
-        {error, {bad_request, <<"Malformed token">>}},
+        {error, {bad_request, <<"Malformed authentication token">>}},
         jwtf:decode(Encoded, [], nil)
     ).
 
 truncated_json_test() ->
     Encoded = <<"ew.ew.ew">>,
     ?assertEqual(
-        {error, {bad_request, <<"Malformed token">>}},
+        {error, {bad_request, <<"Malformed authentication token">>}},
         jwtf:decode(Encoded, [], nil)
     ).
 
@@ -190,7 +190,7 @@ bad_rs256_sig_test() ->
     ),
     KS = fun(<<"RS256">>, undefined) -> jwt_io_rsa_pubkey() end,
     ?assertEqual(
-        {error, {bad_request, <<"Bad signature">>}},
+        {error, {bad_request, <<"Bad signature in authentication token">>}},
         jwtf:decode(Encoded, [], KS)
     ).
 
@@ -201,13 +201,13 @@ bad_hs256_sig_test() ->
     ),
     KS = fun(<<"HS256">>, undefined) -> <<"bad">> end,
     ?assertEqual(
-        {error, {bad_request, <<"Bad HMAC">>}},
+        {error, {bad_request, <<"Bad HMAC in authentication token">>}},
         jwtf:decode(Encoded, [], KS)
     ).
 
 malformed_token_test() ->
     ?assertEqual(
-        {error, {bad_request, <<"Malformed token">>}},
+        {error, {bad_request, <<"Malformed authentication token">>}},
         jwtf:decode(<<"a.b.c.d">>, [], nil)
     ).
 

Reply via email to