mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-02 06:03:50 +00:00
parent
5ebd7c2d81
commit
18e35a9832
@ -1,6 +1,6 @@
|
||||
PORTNAME= couchdb3
|
||||
DISTVERSION= 3.1.1
|
||||
PORTREVISION= 1
|
||||
PORTREVISION= 2
|
||||
CATEGORIES= databases
|
||||
MASTER_SITES= APACHE/couchdb/source/${DISTVERSION}
|
||||
DISTNAME= apache-couchdb-${DISTVERSION}
|
||||
|
11
databases/couchdb3/files/patch-src_jwtf_src_jwtf.app.src
Normal file
11
databases/couchdb3/files/patch-src_jwtf_src_jwtf.app.src
Normal file
@ -0,0 +1,11 @@
|
||||
--- src/jwtf/src/jwtf.app.src.orig 2021-03-31 15:23:39 UTC
|
||||
+++ src/jwtf/src/jwtf.app.src
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
{application, jwtf, [
|
||||
{description, "JSON Web Token Functions"},
|
||||
- {vsn, "3.1.1"},
|
||||
+ {vsn, "3.1.2"},
|
||||
{registered, []},
|
||||
{applications, [
|
||||
kernel,
|
86
databases/couchdb3/files/patch-src_jwtf_src_jwtf.erl
Normal file
86
databases/couchdb3/files/patch-src_jwtf_src_jwtf.erl
Normal file
@ -0,0 +1,86 @@
|
||||
--- src/jwtf/src/jwtf.erl.orig 2021-03-31 15:23:39 UTC
|
||||
+++ src/jwtf/src/jwtf.erl
|
||||
@@ -188,8 +188,7 @@ validate_alg(Props, Checks) ->
|
||||
end.
|
||||
|
||||
|
||||
-%% Not all these fields have to be present, but if they _are_ present
|
||||
-%% they must be valid.
|
||||
+%% Only validate required checks.
|
||||
validate_payload(Props, Checks) ->
|
||||
validate_iss(Props, Checks),
|
||||
validate_iat(Props, Checks),
|
||||
@@ -202,7 +201,7 @@ validate_iss(Props, Checks) ->
|
||||
ActualISS = prop(<<"iss">>, Props),
|
||||
|
||||
case {ExpectedISS, ActualISS} of
|
||||
- {undefined, undefined} ->
|
||||
+ {undefined, _} -> % ignore unrequired check
|
||||
ok;
|
||||
{ISS, undefined} when ISS /= undefined ->
|
||||
throw({bad_request, <<"Missing iss claim">>});
|
||||
@@ -218,11 +217,11 @@ validate_iat(Props, Checks) ->
|
||||
IAT = prop(<<"iat">>, Props),
|
||||
|
||||
case {Required, IAT} of
|
||||
- {undefined, undefined} ->
|
||||
+ {undefined, _} -> % ignore unrequired check
|
||||
ok;
|
||||
{true, undefined} ->
|
||||
throw({bad_request, <<"Missing iat claim">>});
|
||||
- {_, IAT} when is_integer(IAT) ->
|
||||
+ {true, IAT} when is_integer(IAT) ->
|
||||
ok;
|
||||
{true, _} ->
|
||||
throw({bad_request, <<"Invalid iat claim">>})
|
||||
@@ -234,12 +233,12 @@ validate_nbf(Props, Checks) ->
|
||||
NBF = prop(<<"nbf">>, Props),
|
||||
|
||||
case {Required, NBF} of
|
||||
- {undefined, undefined} ->
|
||||
+ {undefined, _} -> % ignore unrequired check
|
||||
ok;
|
||||
{true, undefined} ->
|
||||
throw({bad_request, <<"Missing nbf claim">>});
|
||||
- {_, IAT} ->
|
||||
- assert_past(<<"nbf">>, IAT)
|
||||
+ {true, NBF} ->
|
||||
+ assert_past(<<"nbf">>, NBF)
|
||||
end.
|
||||
|
||||
|
||||
@@ -248,11 +247,11 @@ validate_exp(Props, Checks) ->
|
||||
EXP = prop(<<"exp">>, Props),
|
||||
|
||||
case {Required, EXP} of
|
||||
- {undefined, undefined} ->
|
||||
+ {undefined, _} -> % ignore unrequired check
|
||||
ok;
|
||||
{true, undefined} ->
|
||||
throw({bad_request, <<"Missing exp claim">>});
|
||||
- {_, EXP} ->
|
||||
+ {true, EXP} ->
|
||||
assert_future(<<"exp">>, EXP)
|
||||
end.
|
||||
|
||||
@@ -351,3 +350,20 @@ now_seconds() ->
|
||||
|
||||
prop(Prop, Props) ->
|
||||
proplists:get_value(Prop, Props).
|
||||
+
|
||||
+
|
||||
+-ifdef(TEST).
|
||||
+-include_lib("eunit/include/eunit.hrl").
|
||||
+
|
||||
+validate_payload_ignore_unchecked_props_test() ->
|
||||
+ ?assertEqual(ok, validate_payload(_Props = [], _Checks = [])),
|
||||
+ BogusProps = [
|
||||
+ {iss, bogus},
|
||||
+ {iat, bogus},
|
||||
+ {nbf, bogus},
|
||||
+ {exp, bogus}
|
||||
+ ],
|
||||
+ ?assertEqual(ok, validate_payload(BogusProps, _Checks = [])),
|
||||
+ ok.
|
||||
+
|
||||
+-endif.
|
@ -0,0 +1,28 @@
|
||||
--- src/jwtf/src/jwtf_keystore.erl.orig 2021-03-31 15:23:39 UTC
|
||||
+++ src/jwtf/src/jwtf_keystore.erl
|
||||
@@ -140,13 +140,18 @@ get_from_config(Kty, KID) ->
|
||||
end.
|
||||
|
||||
pem_decode(PEM) ->
|
||||
- BinPEM = iolist_to_binary(string:replace(PEM, "\\n", "\n", all)),
|
||||
- case public_key:pem_decode(BinPEM) of
|
||||
- [PEMEntry] ->
|
||||
- public_key:pem_entry_decode(PEMEntry);
|
||||
- [] ->
|
||||
- throw({bad_request, <<"Not a valid key">>})
|
||||
- end.
|
||||
+ BinPEM = re:replace(PEM, "\\\\n", "\n", [global, {return, binary}]),
|
||||
+ try
|
||||
+ case public_key:pem_decode(BinPEM) of
|
||||
+ [PEMEntry] ->
|
||||
+ public_key:pem_entry_decode(PEMEntry);
|
||||
+ _ ->
|
||||
+ throw({bad_request, <<"Not a valid key">>})
|
||||
+ end
|
||||
+ catch
|
||||
+ error:_ ->
|
||||
+ throw({bad_request, <<"Not a valid key">>})
|
||||
+ end.
|
||||
|
||||
kty(<<"HS", _/binary>>) ->
|
||||
"hmac";
|
@ -153,11 +153,11 @@ libexec/couchdb3/lib/dreyfus-%%VERSION%%/priv/stats_descriptions.cfg
|
||||
libexec/couchdb3/lib/fabric-%%VERSION%%/ebin/fabric_db_partition_info.beam
|
||||
libexec/couchdb3/lib/fabric-%%VERSION%%/ebin/fabric_ring.beam
|
||||
libexec/couchdb3/lib/fabric-%%VERSION%%/ebin/fabric_streams.beam
|
||||
libexec/couchdb3/lib/jwtf-%%VERSION%%/ebin/jwtf.app
|
||||
libexec/couchdb3/lib/jwtf-%%VERSION%%/ebin/jwtf.beam
|
||||
libexec/couchdb3/lib/jwtf-%%VERSION%%/ebin/jwtf_app.beam
|
||||
libexec/couchdb3/lib/jwtf-%%VERSION%%/ebin/jwtf_keystore.beam
|
||||
libexec/couchdb3/lib/jwtf-%%VERSION%%/ebin/jwtf_sup.beam
|
||||
libexec/couchdb3/lib/jwtf-3.1.2/ebin/jwtf.app
|
||||
libexec/couchdb3/lib/jwtf-3.1.2/ebin/jwtf.beam
|
||||
libexec/couchdb3/lib/jwtf-3.1.2/ebin/jwtf_app.beam
|
||||
libexec/couchdb3/lib/jwtf-3.1.2/ebin/jwtf_keystore.beam
|
||||
libexec/couchdb3/lib/jwtf-3.1.2/ebin/jwtf_sup.beam
|
||||
libexec/couchdb3/lib/ken-%%VERSION%%/ebin/ken.app
|
||||
libexec/couchdb3/lib/ken-%%VERSION%%/ebin/ken.beam
|
||||
libexec/couchdb3/lib/ken-%%VERSION%%/ebin/ken_app.beam
|
||||
|
Loading…
Reference in New Issue
Block a user