diff --git a/Makefile b/Makefile index 1f5ccdd18..bcde46dcb 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ VCS_STRESS_IMAGE_NAME ?= trustbloc/vcs-stress WEBHOOK_IMAGE_NAME ?= vcs/sample-webhook COGNITO_AUTH_IMAGE_NAME ?= vcs/sample-cognito-auth OPENAPIGEN_VERSION ?=v1.11.0 -VC_FRAMEWORK_VERSION = 03fc2b8e9895d6256e1d154984de808dada3433e +VC_FRAMEWORK_VERSION = c5e5222928487ff92c58b9db8562d3ce04a46e6f MOCK_VERSION ?=v1.7.0-rc.1 GO_IMAGE ?=golang ALPINE_IMAGE ?=alpine diff --git a/api/spec/openapi.gen.go b/api/spec/openapi.gen.go index 96db26ffe..8f564439e 100644 --- a/api/spec/openapi.gen.go +++ b/api/spec/openapi.gen.go @@ -85,115 +85,116 @@ var swaggerSpec = []string{ "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", + "AP//rgb57Q34AAA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/cmd/vc-rest/go.mod b/cmd/vc-rest/go.mod index 0d1bc7fed..34c782823 100644 --- a/cmd/vc-rest/go.mod +++ b/cmd/vc-rest/go.mod @@ -11,7 +11,7 @@ require ( github.com/cenkalti/backoff/v4 v4.2.0 github.com/deepmap/oapi-codegen v1.11.0 github.com/dgraph-io/ristretto v0.1.1 - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 + github.com/go-jose/go-jose/v3 v3.0.1 github.com/google/uuid v1.3.0 github.com/labstack/echo/v4 v4.10.2 github.com/ory/dockertest/v3 v3.9.1 @@ -22,9 +22,9 @@ require ( github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.4 github.com/trustbloc/cmdutil-go v1.0.0 - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 github.com/trustbloc/logutil-go v1.0.0 - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 github.com/trustbloc/vcs v0.0.0 github.com/trustbloc/vcs/component/credentialstatus v0.0.0-00010101000000-000000000000 github.com/trustbloc/vcs/component/echo v0.0.0-00010101000000-000000000000 @@ -96,6 +96,7 @@ require ( github.com/fatih/structtag v1.2.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fxamacker/cbor/v2 v2.5.0 // indirect github.com/getkin/kin-openapi v0.94.0 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect github.com/go-logr/logr v1.2.3 // indirect @@ -171,19 +172,20 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect - github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a // indirect - github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 // indirect + github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fastjson v1.6.3 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect + github.com/veraison/go-cose v1.1.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -199,13 +201,13 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/cmd/vc-rest/go.sum b/cmd/vc-rest/go.sum index 6d16fa2e1..26002c689 100644 --- a/cmd/vc-rest/go.sum +++ b/cmd/vc-rest/go.sum @@ -218,6 +218,8 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo= github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -229,8 +231,8 @@ github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITL github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -553,8 +555,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 h1:wD1IWQwAhdWclCwaf6DdzgCAe9Bfz1M+4AHRd7N786Y= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= @@ -585,20 +585,20 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= github.com/trustbloc/cmdutil-go v1.0.0 h1:QCe7wVEIASWmy9ZDD0l0tsQCEsX6fx+kBFX5UqCVRdk= github.com/trustbloc/cmdutil-go v1.0.0/go.mod h1:o/v7C1z6d/5UrjaC6GAUc1hk0XVuE3M4tpyvsMMUw5k= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0 h1:KzNs9TRbnmn+M3oYw9UkrtOjNd3ZGO8aLgfYttMypcE= github.com/trustbloc/logutil-go v1.0.0/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 h1:e701OxbML1BEu0MnlhqPl4Z1YC/ZR0EJb4oFPUYv2k0= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12/go.mod h1:P8KNf/BjWYRbFIJUq+KRd1rtukk5G4NjTc0RqqA0ekc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 h1:xx5Fg5boc9ibrltoaapZRTvti3BAqchzglUdrY1oZuY= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7/go.mod h1:cYiU0rOxzOoLldb0cKfVlWlBD5gk+q4MVgpkX+4jWT4= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= @@ -610,6 +610,10 @@ github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLr github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -694,8 +698,8 @@ golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -863,8 +867,8 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -879,8 +883,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/cmd/vc-rest/startcmd/start.go b/cmd/vc-rest/startcmd/start.go index 8f16e2fdc..2591c97b7 100644 --- a/cmd/vc-rest/startcmd/start.go +++ b/cmd/vc-rest/startcmd/start.go @@ -837,6 +837,7 @@ func buildEchoHandler( Tracer: conf.Tracer, AckService: ackService, JWEEncrypterCreator: jweEncrypterCreator, + CWTVerifier: proofChecker, })) oidc4vpv1.RegisterHandlers(e, oidc4vpv1.NewController(&oidc4vpv1.Config{ diff --git a/component/credentialstatus/go.mod b/component/credentialstatus/go.mod index 0adc51f8e..8ac463dad 100644 --- a/component/credentialstatus/go.mod +++ b/component/credentialstatus/go.mod @@ -12,10 +12,10 @@ require ( github.com/piprate/json-gold v0.5.1-0.20230111113000-6ddbe6e6f19f github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.4 - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 github.com/trustbloc/logutil-go v1.0.0 - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 github.com/trustbloc/vcs v0.0.0-00010101000000-000000000000 ) @@ -56,7 +56,8 @@ require ( github.com/evanphx/json-patch v4.11.0+incompatible // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/fxamacker/cbor/v2 v2.5.0 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/glog v1.1.1 // indirect @@ -108,17 +109,18 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect - github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/veraison/go-cose v1.1.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -133,13 +135,13 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/component/credentialstatus/go.sum b/component/credentialstatus/go.sum index cb608cdfb..40a2dbab5 100644 --- a/component/credentialstatus/go.sum +++ b/component/credentialstatus/go.sum @@ -177,11 +177,13 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -418,8 +420,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 h1:wD1IWQwAhdWclCwaf6DdzgCAe9Bfz1M+4AHRd7N786Y= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -448,22 +448,26 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0 h1:KzNs9TRbnmn+M3oYw9UkrtOjNd3ZGO8aLgfYttMypcE= github.com/trustbloc/logutil-go v1.0.0/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 h1:e701OxbML1BEu0MnlhqPl4Z1YC/ZR0EJb4oFPUYv2k0= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12/go.mod h1:P8KNf/BjWYRbFIJUq+KRd1rtukk5G4NjTc0RqqA0ekc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 h1:xx5Fg5boc9ibrltoaapZRTvti3BAqchzglUdrY1oZuY= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7/go.mod h1:cYiU0rOxzOoLldb0cKfVlWlBD5gk+q4MVgpkX+4jWT4= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -525,8 +529,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -682,8 +686,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -698,8 +702,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/component/event/go.mod b/component/event/go.mod index 9f68e82fc..7e5a45e49 100644 --- a/component/event/go.mod +++ b/component/event/go.mod @@ -11,7 +11,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/trustbloc/cmdutil-go v1.0.0 github.com/trustbloc/logutil-go v1.0.0 - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 github.com/trustbloc/vcs v0.0.0-00010101000000-000000000000 go.opentelemetry.io/otel/trace v1.14.0 ) @@ -51,7 +51,8 @@ require ( github.com/ecordell/optgen v0.0.9 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/fxamacker/cbor/v2 v2.5.0 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/glog v1.1.1 // indirect @@ -105,11 +106,13 @@ require ( github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f // indirect - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 // indirect + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/veraison/go-cose v1.1.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -123,13 +126,13 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/component/event/go.sum b/component/event/go.sum index c1cea2419..32121716f 100644 --- a/component/event/go.sum +++ b/component/event/go.sum @@ -176,11 +176,13 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -430,22 +432,26 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= github.com/trustbloc/cmdutil-go v1.0.0 h1:QCe7wVEIASWmy9ZDD0l0tsQCEsX6fx+kBFX5UqCVRdk= github.com/trustbloc/cmdutil-go v1.0.0/go.mod h1:o/v7C1z6d/5UrjaC6GAUc1hk0XVuE3M4tpyvsMMUw5k= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0 h1:KzNs9TRbnmn+M3oYw9UkrtOjNd3ZGO8aLgfYttMypcE= github.com/trustbloc/logutil-go v1.0.0/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -506,8 +512,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -663,8 +669,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -679,8 +685,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/component/healthchecks/go.mod b/component/healthchecks/go.mod index f66c6ac5f..15c16f80a 100644 --- a/component/healthchecks/go.mod +++ b/component/healthchecks/go.mod @@ -37,9 +37,9 @@ require ( github.com/xdg-go/stringprep v1.0.3 // indirect github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect go.mongodb.org/mongo-driver v1.11.4 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/component/healthchecks/go.sum b/component/healthchecks/go.sum index 5eaac2aa5..920490bf6 100644 --- a/component/healthchecks/go.sum +++ b/component/healthchecks/go.sum @@ -111,8 +111,8 @@ go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5queth golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -128,14 +128,14 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E= golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= diff --git a/component/oidc/fosite/go.mod b/component/oidc/fosite/go.mod index cf192b0af..78c0167c4 100644 --- a/component/oidc/fosite/go.mod +++ b/component/oidc/fosite/go.mod @@ -18,7 +18,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/trustbloc/vcs v0.0.0 go.mongodb.org/mongo-driver v1.11.4 - golang.org/x/text v0.12.0 + golang.org/x/text v0.14.0 ) require ( @@ -42,7 +42,7 @@ require ( github.com/ecordell/optgen v0.0.9 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -93,13 +93,13 @@ require ( go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/metric v0.35.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect + golang.org/x/sys v0.15.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.30.0 // indirect diff --git a/component/oidc/fosite/go.sum b/component/oidc/fosite/go.sum index 9b696d166..6a92d09dd 100644 --- a/component/oidc/fosite/go.sum +++ b/component/oidc/fosite/go.sum @@ -123,8 +123,8 @@ github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbS github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -404,8 +404,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -564,8 +564,8 @@ golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -580,8 +580,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/component/profile/reader/file/go.mod b/component/profile/reader/file/go.mod index f4c5d11be..8ee21abd6 100644 --- a/component/profile/reader/file/go.mod +++ b/component/profile/reader/file/go.mod @@ -10,8 +10,8 @@ require ( github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.4 github.com/trustbloc/cmdutil-go v1.0.0 - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 github.com/trustbloc/logutil-go v1.0.0 github.com/trustbloc/vcs v0.0.0-00010101000000-000000000000 ) @@ -53,7 +53,8 @@ require ( github.com/evanphx/json-patch v4.11.0+incompatible // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/fxamacker/cbor/v2 v2.5.0 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/glog v1.1.1 // indirect @@ -108,18 +109,19 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect - github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 // indirect - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 // indirect + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/veraison/go-cose v1.1.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -134,13 +136,13 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/component/profile/reader/file/go.sum b/component/profile/reader/file/go.sum index 107e7dc33..b81710a80 100644 --- a/component/profile/reader/file/go.sum +++ b/component/profile/reader/file/go.sum @@ -177,11 +177,13 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -420,8 +422,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 h1:wD1IWQwAhdWclCwaf6DdzgCAe9Bfz1M+4AHRd7N786Y= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -450,24 +450,28 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= github.com/trustbloc/cmdutil-go v1.0.0 h1:QCe7wVEIASWmy9ZDD0l0tsQCEsX6fx+kBFX5UqCVRdk= github.com/trustbloc/cmdutil-go v1.0.0/go.mod h1:o/v7C1z6d/5UrjaC6GAUc1hk0XVuE3M4tpyvsMMUw5k= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0 h1:KzNs9TRbnmn+M3oYw9UkrtOjNd3ZGO8aLgfYttMypcE= github.com/trustbloc/logutil-go v1.0.0/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 h1:e701OxbML1BEu0MnlhqPl4Z1YC/ZR0EJb4oFPUYv2k0= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12/go.mod h1:P8KNf/BjWYRbFIJUq+KRd1rtukk5G4NjTc0RqqA0ekc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 h1:xx5Fg5boc9ibrltoaapZRTvti3BAqchzglUdrY1oZuY= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7/go.mod h1:cYiU0rOxzOoLldb0cKfVlWlBD5gk+q4MVgpkX+4jWT4= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -529,8 +533,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -686,8 +690,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -702,8 +706,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/component/wallet-cli/cmd/oidc4vci_cmd.go b/component/wallet-cli/cmd/oidc4vci_cmd.go index 356340974..5a0935c8e 100644 --- a/component/wallet-cli/cmd/oidc4vci_cmd.go +++ b/component/wallet-cli/cmd/oidc4vci_cmd.go @@ -38,6 +38,7 @@ type oidc4vciCommandFlags struct { grantType string qrCodePath string credentialOffer string + proofType string demoIssuerURL string vcFormat string credentialType string @@ -191,6 +192,12 @@ func NewOIDC4VCICommand() *cobra.Command { walletDIDIndex = len(w.DIDs()) - 1 } + if flags.proofType == "cwt" { + opts = append(opts, oidc4vci.WithProofBuilder( + oidc4vci.NewCWTProofBuilder(), + )) + } + opts = append(opts, oidc4vci.WithWalletDIDIndex(walletDIDIndex)) switch flags.grantType { @@ -263,6 +270,7 @@ func NewOIDC4VCICommand() *cobra.Command { cmd.Flags().StringVar(&flags.demoIssuerURL, "demo-issuer-url", "", "demo issuer url for downloading qr code automatically") cmd.Flags().StringVar(&oidcCredentialFormat, "credential-format", "ldp_vc", "supported credential formats: ldp_vc,jwt_vc_json-ld") cmd.Flags().StringVar(&flags.credentialType, "credential-type", "", "credential type") + cmd.Flags().StringVar(&flags.proofType, "proof-type", "", "proof-type. jwt or cwt. default jwt") cmd.Flags().IntVar(&flags.walletDIDIndex, "wallet-did-index", -1, "index of wallet did, if not set the most recently created DID is used") cmd.Flags().StringVar(&flags.clientID, "client-id", "", "vcs oauth2 client") cmd.Flags().StringSliceVar(&flags.scopes, "scopes", []string{"openid"}, "vcs oauth2 scopes") diff --git a/component/wallet-cli/go.mod b/component/wallet-cli/go.mod index 3c7788e01..909c127a3 100644 --- a/component/wallet-cli/go.mod +++ b/component/wallet-cli/go.mod @@ -9,6 +9,7 @@ go 1.21 require ( github.com/cenkalti/backoff/v4 v4.2.0 github.com/cli/browser v1.1.0 + github.com/fxamacker/cbor/v2 v2.5.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/henvic/httpretty v0.1.0 @@ -21,12 +22,13 @@ require ( github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.4 github.com/syndtr/goleveldb v1.0.0 - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 github.com/trustbloc/logutil-go v1.0.0-rc1 - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 github.com/trustbloc/vcs v0.0.0-00010101000000-000000000000 github.com/valyala/fastjson v1.6.3 + github.com/veraison/go-cose v1.1.0 go.mongodb.org/mongo-driver v1.11.4 go.uber.org/zap v1.23.0 golang.org/x/oauth2 v0.7.0 @@ -79,7 +81,7 @@ require ( github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getkin/kin-openapi v0.94.0 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect @@ -143,17 +145,17 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect - github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -166,13 +168,13 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/component/wallet-cli/go.sum b/component/wallet-cli/go.sum index f870cdf37..47ee7ea8e 100644 --- a/component/wallet-cli/go.sum +++ b/component/wallet-cli/go.sum @@ -194,6 +194,8 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo= github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -205,8 +207,8 @@ github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITL github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -524,8 +526,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 h1:wD1IWQwAhdWclCwaf6DdzgCAe9Bfz1M+4AHRd7N786Y= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -557,18 +557,18 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0-rc1 h1:rRJbvgQfrlUfyej+mY0nuQJymGqjRW4oZEwKi544F4c= github.com/trustbloc/logutil-go v1.0.0-rc1/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 h1:e701OxbML1BEu0MnlhqPl4Z1YC/ZR0EJb4oFPUYv2k0= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12/go.mod h1:P8KNf/BjWYRbFIJUq+KRd1rtukk5G4NjTc0RqqA0ekc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 h1:xx5Fg5boc9ibrltoaapZRTvti3BAqchzglUdrY1oZuY= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7/go.mod h1:cYiU0rOxzOoLldb0cKfVlWlBD5gk+q4MVgpkX+4jWT4= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= @@ -580,8 +580,12 @@ github.com/valyala/fastjson v1.6.3 h1:tAKFnnwmeMGPbwJ7IwxcTPCNr3uIzoIj3/Fh90ra4x github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -648,8 +652,8 @@ golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -822,8 +826,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -838,8 +842,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/component/wallet-cli/pkg/oidc4vci/models.go b/component/wallet-cli/pkg/oidc4vci/models.go index ab9f756ac..811e9ac1c 100644 --- a/component/wallet-cli/pkg/oidc4vci/models.go +++ b/component/wallet-cli/pkg/oidc4vci/models.go @@ -12,21 +12,22 @@ import ( "github.com/trustbloc/vcs/pkg/doc/verifiable" ) -type JWTProofClaims struct { - Issuer string `json:"iss,omitempty"` - Audience string `json:"aud,omitempty"` - IssuedAt int64 `json:"iat,omitempty"` - Nonce string `json:"nonce,omitempty"` +type ProofClaims struct { + Issuer string `json:"iss,omitempty" cbor:"1,keyasint"` + Audience string `json:"aud,omitempty" cbor:"3,keyasint"` + IssuedAt *int64 `json:"iat,omitempty" cbor:"6,keyasint"` + Nonce string `json:"nonce,omitempty" cbor:"10,keyasint"` } type CredentialRequest struct { Format verifiable.OIDCFormat `json:"format,omitempty"` Types []string `json:"types"` - Proof JWTProof `json:"proof,omitempty"` + Proof Proof `json:"proof,omitempty"` } -type JWTProof struct { +type Proof struct { JWT string `json:"jwt"` + CWT string `json:"cwt"` ProofType string `json:"proof_type"` } diff --git a/component/wallet-cli/pkg/oidc4vci/oidc4vci_flow.go b/component/wallet-cli/pkg/oidc4vci/oidc4vci_flow.go index c569807ac..c97082ce6 100644 --- a/component/wallet-cli/pkg/oidc4vci/oidc4vci_flow.go +++ b/component/wallet-cli/pkg/oidc4vci/oidc4vci_flow.go @@ -71,7 +71,7 @@ type Flow struct { documentLoader ld.DocumentLoader vdrRegistry vdrapi.Registry signer jose.Signer - proofBuilder JWTProofBuilder + proofBuilder ProofBuilder wallet *wallet.Wallet wellKnownService *wellknown.Service trustRegistryURL string @@ -102,8 +102,6 @@ type provider interface { WellKnownService() *wellknown.Service } -type JWTProofBuilder func(claims *JWTProofClaims, headers map[string]interface{}, signer jose.Signer) (string, error) - func NewFlow(p provider, opts ...Opt) (*Flow, error) { o := &options{ flowType: FlowTypeAuthorizationCode, @@ -172,23 +170,7 @@ func NewFlow(p provider, opts ...Opt) (*Flow, error) { proofBuilder := o.proofBuilder if proofBuilder == nil { - proofBuilder = func( - claims *JWTProofClaims, - headers map[string]interface{}, - signer jose.Signer, - ) (string, error) { - signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, jwsSigner) - if jwtErr != nil { - return "", fmt.Errorf("create signed jwt: %w", jwtErr) - } - - jws, jwtErr := signedJWT.Serialize(false) - if jwtErr != nil { - return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) - } - - return jws, nil - } + proofBuilder = NewJWTProofBuilder() } return &Flow{ @@ -696,18 +678,14 @@ func (f *Flow) receiveVC( "credential_issuer", credentialIssuer, ) - claims := &JWTProofClaims{ + claims := &ProofClaims{ Issuer: f.clientID, - IssuedAt: time.Now().Unix(), + IssuedAt: lo.ToPtr(time.Now().Unix()), Audience: credentialIssuer, Nonce: token.Extra("c_nonce").(string), } - headers := map[string]interface{}{ - jose.HeaderType: jwtProofTypeHeader, - } - - jws, err := f.proofBuilder(claims, headers, f.signer) + proof, err := f.proofBuilder.Build(claims, nil, f.signer) if err != nil { return nil, fmt.Errorf("build proof: %w", err) } @@ -733,10 +711,7 @@ func (f *Flow) receiveVC( b, err := json.Marshal(CredentialRequest{ Format: oidcCredentialFormat, Types: []string{"VerifiableCredential", f.credentialType}, - Proof: JWTProof{ - ProofType: "jwt", //TODO: take the value from wellKnown.CredentialsConfigurationSupported[credentialType].ProofTypesSupported - JWT: jws, - }, + Proof: *proof, }) if err != nil { return nil, fmt.Errorf("marshal credential request: %w", err) @@ -979,7 +954,7 @@ func (s *callbackServer) ServeHTTP( type options struct { flowType FlowType - proofBuilder JWTProofBuilder + proofBuilder ProofBuilder credentialOffer string credentialType string oidcCredentialFormat vcsverifiable.OIDCFormat @@ -1004,7 +979,7 @@ func WithFlowType(flowType FlowType) Opt { } } -func WithProofBuilder(proofBuilder JWTProofBuilder) Opt { +func WithProofBuilder(proofBuilder ProofBuilder) Opt { return func(opts *options) { opts.proofBuilder = proofBuilder } diff --git a/component/wallet-cli/pkg/oidc4vci/proof.go b/component/wallet-cli/pkg/oidc4vci/proof.go new file mode 100644 index 000000000..2d9851e64 --- /dev/null +++ b/component/wallet-cli/pkg/oidc4vci/proof.go @@ -0,0 +1,195 @@ +package oidc4vci + +import ( + "encoding/hex" + "fmt" + + "github.com/fxamacker/cbor/v2" + "github.com/trustbloc/kms-go/doc/jose" + "github.com/trustbloc/vc-go/cwt" + "github.com/trustbloc/vc-go/jwt" + "github.com/trustbloc/vc-go/proof" + "github.com/trustbloc/vc-go/proof/creator" + "github.com/trustbloc/vc-go/proof/jwtproofs/eddsa" + "github.com/trustbloc/vc-go/proof/jwtproofs/es256" + "github.com/trustbloc/vc-go/proof/jwtproofs/es256k" + "github.com/trustbloc/vc-go/proof/jwtproofs/es384" + "github.com/trustbloc/vc-go/proof/jwtproofs/es521" + "github.com/trustbloc/vc-go/proof/jwtproofs/ps256" + "github.com/trustbloc/vc-go/proof/jwtproofs/rs256" + "github.com/trustbloc/vc-go/proof/ldproofs/bbsblssignature2020" + "github.com/trustbloc/vc-go/proof/ldproofs/ecdsasecp256k1signature2019" + "github.com/trustbloc/vc-go/proof/ldproofs/ed25519signature2018" + "github.com/trustbloc/vc-go/proof/ldproofs/ed25519signature2020" + "github.com/trustbloc/vc-go/proof/ldproofs/jsonwebsignature2020" + cwt2 "github.com/trustbloc/vc-go/verifiable/cwt" + "github.com/veraison/go-cose" +) + +type ProofBuilder interface { + Build( + claims *ProofClaims, + customerHeaders map[string]interface{}, + signer jose.Signer, + ) (*Proof, error) +} + +type CWTProofBuilder struct { +} + +func NewCWTProofBuilder() *CWTProofBuilder { + return &CWTProofBuilder{} +} + +func (b *CWTProofBuilder) newProofCreator(signer jose.Signer) (*creator.ProofCreator, []proof.JWTProofDescriptor) { + desc := []proof.JWTProofDescriptor{ + eddsa.New(), + es256.New(), + es256k.New(), + es384.New(), + es521.New(), + rs256.New(), + ps256.New(), + } + + opt := []creator.Opt{ + creator.WithLDProofType(bbsblssignature2020.New(), signer), + creator.WithLDProofType(ecdsasecp256k1signature2019.New(), signer), + creator.WithLDProofType(ed25519signature2018.New(), signer), + creator.WithLDProofType(ed25519signature2020.New(), signer), + creator.WithLDProofType(jsonwebsignature2020.New(), signer), + } + + for _, d := range desc { + opt = append(opt, creator.WithJWTAlg(d, signer)) + } + + return creator.New( + opt..., + ), desc +} + +func (b *CWTProofBuilder) Build( + claims *ProofClaims, + _ map[string]interface{}, + signer jose.Signer, +) (*Proof, error) { + encoded, err := cbor.Marshal(claims) + if err != nil { + return nil, fmt.Errorf("marshal proof claims: %w", err) + } + + proofCreator, descriptors := b.newProofCreator(signer) + + algo, _ := signer.Headers().Algorithm() + var targetAlgo cose.Algorithm + for _, d := range descriptors { + if d.JWTAlgorithm() == algo && d.CWTAlgorithm() != 0 { + targetAlgo = d.CWTAlgorithm() + } + } + + if targetAlgo == 0 { + return nil, fmt.Errorf("unsupported cosg algorithm: %s", algo) + } + + keyID, _ := signer.Headers().KeyID() + msg := &cose.Sign1Message{ + Headers: cose.Headers{ + Protected: cose.ProtectedHeader{ + cose.HeaderLabelAlgorithm: targetAlgo, + cose.HeaderLabelContentType: "openid4vci-proof+cwt", + "COSE_Key": []byte(keyID), + }, + }, + Payload: encoded, + } + + signData, err := cwt2.GetProofValue(msg) + if err != nil { + return nil, fmt.Errorf("get proof value: %w", err) + } + + signed, err := proofCreator.SignCWT(cwt.SignParameters{ + KeyID: keyID, + CWTAlg: targetAlgo, + }, signData) + if err != nil { + return nil, fmt.Errorf("sign cwt: %w", err) + } + + msg.Signature = signed + + finalMsg, err := msg.MarshalCBOR() + if err != nil { + return nil, fmt.Errorf("marshal cbor: %w", err) + } + + return &Proof{ + CWT: hex.EncodeToString(finalMsg), + ProofType: "cwt", + }, nil +} + +type JWTProofBuilder struct { + proofFn JWTProofFn +} + +type JWTProofFn func( + claims *ProofClaims, + headers map[string]interface{}, + proofSigner jose.Signer, +) (string, error) + +func NewJWTProofBuilder() *JWTProofBuilder { + return &JWTProofBuilder{ + proofFn: func( + claims *ProofClaims, + headers map[string]interface{}, + proofSigner jose.Signer, + ) (string, error) { + signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, proofSigner) + if jwtErr != nil { + return "", fmt.Errorf("create signed jwt: %w", jwtErr) + } + + jws, jwtErr := signedJWT.Serialize(false) + if jwtErr != nil { + return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) + } + + return jws, nil + }, + } +} + +func (b *JWTProofBuilder) WithCustomProofFn( + proofFn JWTProofFn, +) *JWTProofBuilder { + b.proofFn = proofFn + + return b +} + +func (b *JWTProofBuilder) Build( + claims *ProofClaims, + customHeaders map[string]interface{}, + signer jose.Signer, +) (*Proof, error) { + headers := map[string]interface{}{ + jose.HeaderType: jwtProofTypeHeader, + } + for k, v := range customHeaders { + headers[k] = v + } + + jws, err := b.proofFn(claims, headers, signer) + if err != nil { + return nil, fmt.Errorf("build proof: %w", err) + } + + return &Proof{ + JWT: jws, + ProofType: "jwt", + }, nil +} diff --git a/docs/v1/openapi.yaml b/docs/v1/openapi.yaml index 2a5178a23..35381ac33 100644 --- a/docs/v1/openapi.yaml +++ b/docs/v1/openapi.yaml @@ -1905,10 +1905,12 @@ components: description: REQUIRED. JSON String denoting the proof type. Currently the only supported proof type is 'jwt'. jwt: type: string - description: REQUIRED. Signed JWT as proof of key possession. + description: REQUIRED if proof_type equals jwt. Signed JWT as proof of key possession. + cwt: + type: string + description: REQUIRED if proof_type equals cwt. Signed CWT as proof of key possession. required: - proof_type - - jwt AckRequest: title: AckRequest x-tags: diff --git a/go.mod b/go.mod index 5c62b73f1..5fbd86eb6 100644 --- a/go.mod +++ b/go.mod @@ -16,8 +16,9 @@ require ( github.com/cenkalti/backoff v2.2.1+incompatible github.com/cenkalti/backoff/v4 v4.2.0 github.com/deepmap/oapi-codegen v1.11.0 + github.com/fxamacker/cbor/v2 v2.5.0 github.com/getkin/kin-openapi v0.94.0 - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 + github.com/go-jose/go-jose/v3 v3.0.1 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/jinzhu/copier v0.3.5 @@ -35,12 +36,13 @@ require ( github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 - github.com/trustbloc/bbs-signature-go v1.0.1 - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 github.com/trustbloc/logutil-go v1.0.0-rc1 - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 github.com/valyala/fastjson v1.6.3 + github.com/veraison/go-cose v1.1.0 github.com/xeipuuv/gojsonschema v1.2.0 go.mongodb.org/mongo-driver v1.11.4 go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo v0.40.0 @@ -164,6 +166,7 @@ require ( github.com/tidwall/pretty v1.2.1 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -173,13 +176,13 @@ require ( go.opentelemetry.io/otel/metric v0.35.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.30.0 // indirect diff --git a/go.sum b/go.sum index e1ff61a7f..912d38059 100644 --- a/go.sum +++ b/go.sum @@ -224,6 +224,8 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo= github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -235,8 +237,8 @@ github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITL github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -622,16 +624,16 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0-rc1 h1:rRJbvgQfrlUfyej+mY0nuQJymGqjRW4oZEwKi544F4c= github.com/trustbloc/logutil-go v1.0.0-rc1/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= @@ -643,8 +645,12 @@ github.com/valyala/fastjson v1.6.3 h1:tAKFnnwmeMGPbwJ7IwxcTPCNr3uIzoIj3/Fh90ra4x github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -720,8 +726,8 @@ golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -909,8 +915,8 @@ golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -925,8 +931,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/pkg/kms/aws/service_mocks.go b/pkg/kms/aws/service_mocks.go index ac8806377..3675c654a 100644 --- a/pkg/kms/aws/service_mocks.go +++ b/pkg/kms/aws/service_mocks.go @@ -337,4 +337,4 @@ func (m *MockmetricsProvider) VerifyTime(value time.Duration) { func (mr *MockmetricsProviderMockRecorder) VerifyTime(value interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyTime", reflect.TypeOf((*MockmetricsProvider)(nil).VerifyTime), value) -} +} \ No newline at end of file diff --git a/pkg/kms/mocks/kms_mocks.go b/pkg/kms/mocks/kms_mocks.go index 8ca0def08..5fe7d704d 100644 --- a/pkg/kms/mocks/kms_mocks.go +++ b/pkg/kms/mocks/kms_mocks.go @@ -96,4 +96,4 @@ func (m *MockVCSKeyManager) SupportedKeyTypes() []kms.KeyType { func (mr *MockVCSKeyManagerMockRecorder) SupportedKeyTypes() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SupportedKeyTypes", reflect.TypeOf((*MockVCSKeyManager)(nil).SupportedKeyTypes)) -} +} \ No newline at end of file diff --git a/pkg/restapi/v1/oidc4ci/controller.go b/pkg/restapi/v1/oidc4ci/controller.go index 65fa9087b..3ea174bd9 100644 --- a/pkg/restapi/v1/oidc4ci/controller.go +++ b/pkg/restapi/v1/oidc4ci/controller.go @@ -5,7 +5,7 @@ SPDX-License-Identifier: Apache-2.0 */ //go:generate oapi-codegen --config=openapi.cfg.yaml ../../../../docs/v1/openapi.yaml -//go:generate mockgen -destination controller_mocks_test.go -self_package mocks -package oidc4ci_test . StateStore,OAuth2Provider,IssuerInteractionClient,HTTPClient,ClientManager,ProfileService,AckService +//go:generate mockgen -destination controller_mocks_test.go -self_package mocks -package oidc4ci_test . StateStore,OAuth2Provider,IssuerInteractionClient,HTTPClient,ClientManager,ProfileService,AckService,CwtProofChecker package oidc4ci @@ -24,13 +24,17 @@ import ( "strings" "time" + "github.com/fxamacker/cbor/v2" gojose "github.com/go-jose/go-jose/v3" "github.com/google/uuid" "github.com/labstack/echo/v4" "github.com/ory/fosite" "github.com/samber/lo" "github.com/trustbloc/logutil-go/pkg/log" + "github.com/trustbloc/vc-go/cwt" "github.com/trustbloc/vc-go/jwt" + "github.com/trustbloc/vc-go/proof/checker" + "github.com/veraison/go-cose" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "golang.org/x/oauth2" @@ -54,6 +58,7 @@ const ( preAuthorizedCodeGrantType = "urn:ietf:params:oauth:grant-type:pre-authorized_code" discoverableClientIDScheme = "urn:ietf:params:oauth:client-id-scheme:oauth-discoverable-client" jwtProofTypHeader = "openid4vci-proof+jwt" + cwtProofTypHeader = "openid4vci-proof+cwt" cNonceKey = "cNonce" cNonceExpiresAtKey = "cNonceExpiresAt" cNonceSize = 15 @@ -63,6 +68,9 @@ const ( invalidGrantOIDCErr = "invalid_grant" invalidTokenOIDCErr = "invalid_token" invalidClientOIDCErr = "invalid_client" + + proofTypeCWT = "cwt" + proofTypeJWT = "jwt" ) var logger = log.New("oidc4ci") @@ -101,6 +109,15 @@ type ProfileService interface { GetProfile(profileID profileapi.ID, profileVersion profileapi.Version) (*profileapi.Issuer, error) } +type CwtProofChecker interface { + CheckCWTProof( + checkCWTRequest checker.CheckCWTProofRequest, + expectedProofIssuer string, + msg []byte, + signature []byte, + ) error +} + type AckService interface { Ack( ctx context.Context, @@ -121,6 +138,7 @@ type Config struct { ClientManager ClientManager ClientIDSchemeService ClientIDSchemeService JWTVerifier jwt.ProofChecker + CWTVerifier CwtProofChecker Tracer trace.Tracer IssuerVCSPublicHost string ExternalHostURL string @@ -138,6 +156,7 @@ type Controller struct { clientManager ClientManager clientIDSchemeService ClientIDSchemeService jwtVerifier jwt.ProofChecker + cwtVerifier CwtProofChecker tracer trace.Tracer issuerVCSPublicHost string internalHostURL string @@ -161,6 +180,7 @@ func NewController(config *Config) *Controller { internalHostURL: config.ExternalHostURL, ackService: config.AckService, jweEncrypterCreator: config.JWEEncrypterCreator, + cwtVerifier: config.CWTVerifier, } } @@ -628,6 +648,71 @@ func (c *Controller) OidcAcknowledgement(e echo.Context) error { return e.NoContent(http.StatusNoContent) } +func (c *Controller) HandleProof( + clientID string, + credentialReq *CredentialRequest, + session *fosite.DefaultSession, +) (string, string, error) { + var proofClaims ProofClaims + + proofHeaders := ProofHeaders{ + ProofType: credentialReq.Proof.ProofType, + } + + switch credentialReq.Proof.ProofType { + case proofTypeJWT: + jws, rawClaims, err := jwt.ParseAndCheckProof(lo.FromPtr(credentialReq.Proof.Jwt), + c.jwtVerifier, false, + jwt.WithIgnoreClaimsMapDecoding(true), + ) + if err != nil { + return "", "", + resterr.NewOIDCError(string(resterr.InvalidOrMissingProofOIDCErr), fmt.Errorf("parse jwt: %w", err)) + } + + proofHeaders.Type, _ = jws.Headers.Type() + proofHeaders.KeyID, _ = jws.Headers.KeyID() + + if err = json.Unmarshal(rawClaims, &proofClaims); err != nil { + return "", "", resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid jwt claims")) + } + case proofTypeCWT: + cwtBytes, err := hex.DecodeString(lo.FromPtr(credentialReq.Proof.Cwt)) + if err != nil { + return "", "", resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid cwt")) + } + + cwtParsed, rawClaims, err := cwt.ParseAndCheckProof(cwtBytes, c.cwtVerifier, false) + if err != nil { + return "", "", resterr.NewOIDCError(invalidRequestOIDCErr, fmt.Errorf("parse cwt: %w", err)) + } + + if err = cbor.Unmarshal(rawClaims, &proofClaims); err != nil { + return "", "", resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid cwt claims")) + } + + typ, ok := cwtParsed.Headers.Protected[cose.HeaderLabelContentType].(string) + if !ok { + return "", "", resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid COSE content type")) + } + proofHeaders.Type = typ + + cosKeyBytes, ok := cwtParsed.Headers.Protected["COSE_Key"] + if !ok { + return "", "", resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid COSE_KEY")) + } + + proofHeaders.KeyID = string(cosKeyBytes.([]byte)) + } + + did, err := c.validateProofClaims(clientID, &proofClaims, proofHeaders, session) + if err != nil { + return "", "", err + } + + return did, proofClaims.Audience, nil +} + // OidcCredential handles OIDC credential request (POST /oidc/credential). func (c *Controller) OidcCredential(e echo.Context) error { //nolint:funlen req := e.Request() @@ -655,30 +740,17 @@ func (c *Controller) OidcCredential(e echo.Context) error { //nolint:funlen session := ar.GetSession().(*fosite.DefaultSession) //nolint:errcheck - jws, rawClaims, err := jwt.ParseAndCheckProof(credentialReq.Proof.Jwt, - c.jwtVerifier, false, - jwt.WithIgnoreClaimsMapDecoding(true), - ) - if err != nil { - return resterr.NewOIDCError(string(resterr.InvalidOrMissingProofOIDCErr), fmt.Errorf("parse jwt: %w", err)) - } - - var claims JWTProofClaims - if err = json.Unmarshal(rawClaims, &claims); err != nil { - return resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid jwt claims")) - } - - did, err := c.validateProofClaims(ar.GetClient().GetID(), &claims, jws, session) + did, aud, err := c.HandleProof(ar.GetClient().GetID(), &credentialReq, session) if err != nil { return err } prepareCredentialReq := issuer.PrepareCredentialJSONRequestBody{ TxId: session.Extra[txIDKey].(string), //nolint:errcheck - Did: lo.ToPtr(did), + Did: &did, Types: credentialReq.Types, Format: credentialReq.Format, - AudienceClaim: claims.Audience, + AudienceClaim: aud, HashedToken: hashToken(token), } @@ -774,7 +846,16 @@ func validateCredentialRequest(e echo.Context, req *CredentialRequest) error { return resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("missing proof type")) } - if req.Proof.ProofType != "jwt" || req.Proof.Jwt == "" { + switch req.Proof.ProofType { + case "jwt": + if lo.FromPtr(req.Proof.Jwt) == "" { + return resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid proof type")) + } + case "cwt": + if lo.FromPtr(req.Proof.Cwt) == "" { + return resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("missing cwt proof")) + } + default: return resterr.NewOIDCError(invalidRequestOIDCErr, errors.New("invalid proof type")) } @@ -817,8 +898,8 @@ func (c *Controller) encryptCredentialResponse( //nolint:gocognit func (c *Controller) validateProofClaims( clientID string, - claims *JWTProofClaims, - jws *jwt.JSONWebToken, + claims *ProofClaims, + headers ProofHeaders, session *fosite.DefaultSession, ) (string, error) { if nonceExp, ok := session.Extra[cNonceExpiresAtKey].(int64); ok && nonceExp < time.Now().Unix() { @@ -841,16 +922,24 @@ func (c *Controller) validateProofClaims( return "", resterr.NewOIDCError(string(resterr.InvalidOrMissingProofOIDCErr), errors.New("invalid nonce")) } - if typ, ok := jws.Headers.Type(); ok && typ != jwtProofTypHeader { - return "", resterr.NewOIDCError(string(resterr.InvalidOrMissingProofOIDCErr), errors.New("invalid typ")) + switch headers.ProofType { + case "jwt": + if headers.Type != jwtProofTypHeader { + return "", + resterr.NewOIDCError(string(resterr.InvalidOrMissingProofOIDCErr), errors.New("invalid typ")) + } + case "cwt": + if headers.Type != cwtProofTypHeader { + return "", + resterr.NewOIDCError(string(resterr.InvalidOrMissingProofOIDCErr), errors.New("invalid typ")) + } } - keyID, ok := jws.Headers.KeyID() - if !ok { + if headers.KeyID == "" { return "", resterr.NewOIDCError(string(resterr.InvalidOrMissingProofOIDCErr), errors.New("invalid kid")) } - return strings.Split(keyID, "#")[0], nil + return strings.Split(headers.KeyID, "#")[0], nil } // oidcPreAuthorizedCode handles pre-authorized code token request. diff --git a/pkg/restapi/v1/oidc4ci/controller_e2e_flows_test.go b/pkg/restapi/v1/oidc4ci/controller_e2e_flows_test.go index a10acdb89..2fd141fc2 100644 --- a/pkg/restapi/v1/oidc4ci/controller_e2e_flows_test.go +++ b/pkg/restapi/v1/oidc4ci/controller_e2e_flows_test.go @@ -11,6 +11,7 @@ import ( "context" "crypto/ed25519" "crypto/rand" + "encoding/hex" "encoding/json" "fmt" "io" @@ -22,6 +23,7 @@ import ( "testing" "time" + "github.com/fxamacker/cbor/v2" "github.com/golang/mock/gomock" "github.com/labstack/echo/v4" "github.com/ory/fosite" @@ -33,8 +35,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/trustbloc/kms-go/doc/jose" + "github.com/trustbloc/vc-go/cwt" "github.com/trustbloc/vc-go/jwt" + "github.com/trustbloc/vc-go/proof/creator" "github.com/trustbloc/vc-go/proof/testsupport" + cwt2 "github.com/trustbloc/vc-go/verifiable/cwt" + "github.com/veraison/go-cose" "go.opentelemetry.io/otel/trace" "golang.org/x/oauth2" @@ -52,7 +58,15 @@ const ( aud = "https://server.example.com" ) -func TestAuthorizeCodeGrantFlow(t *testing.T) { +func TestAuthorizeCodeGrantFlowWithJWTProof(t *testing.T) { + testAuthorizeCodeGrantFlow(t, "jwt") +} + +func TestAuthorizeCodeGrantFlowWithCWTProof(t *testing.T) { + testAuthorizeCodeGrantFlow(t, "cwt") +} + +func testAuthorizeCodeGrantFlow(t *testing.T, proofType string) { e := echo.New() e.HTTPErrorHandler = resterr.HTTPErrorHandler(trace.NewNoopTracerProvider().Tracer("")) @@ -112,6 +126,7 @@ func TestAuthorizeCodeGrantFlow(t *testing.T) { IssuerInteractionClient: mockIssuerInteractionClient(t, srv.URL, opState), IssuerVCSPublicHost: srv.URL, JWTVerifier: proofChecker, + CWTVerifier: proofChecker, Tracer: trace.NewNoopTracerProvider().Tracer(""), }) @@ -161,27 +176,18 @@ func TestAuthorizeCodeGrantFlow(t *testing.T) { currentTime := time.Now().Unix() - claims := &oidc4ci.JWTProofClaims{ + claims := &oidc4ci.ProofClaims{ Issuer: clientID, IssuedAt: ¤tTime, Audience: srv.URL, Nonce: token.Extra("c_nonce").(string), } - headers := map[string]interface{}{ - jose.HeaderType: "openid4vci-proof+jwt", - } - - signedJWT, err := jwt.NewSigned( - claims, jwt.SignParameters{JWTAlg: "EdDSA", KeyID: "any", AdditionalHeaders: headers}, proofCreator) - require.NoError(t, err) - - jws, err := signedJWT.Serialize(false) - require.NoError(t, err) + proofVal := generateProof(t, proofType, claims, proofCreator) b, err := json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: proofVal, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) @@ -191,6 +197,67 @@ func TestAuthorizeCodeGrantFlow(t *testing.T) { require.Equal(t, http.StatusOK, resp.StatusCode) } +func generateProof( + t *testing.T, + proofType string, + claims *oidc4ci.ProofClaims, + jwtProofCreator *creator.ProofCreator, +) *oidc4ci.JWTProof { + finalProof := &oidc4ci.JWTProof{ProofType: proofType} + + keyID := "any" + switch proofType { + case "jwt": + headers := map[string]interface{}{ + jose.HeaderType: "openid4vci-proof+jwt", + } + + signedJWT, err := jwt.NewSigned( + claims, jwt.SignParameters{JWTAlg: "EdDSA", KeyID: keyID, AdditionalHeaders: headers}, jwtProofCreator) + require.NoError(t, err) + + jws, err := signedJWT.Serialize(false) + require.NoError(t, err) + + finalProof.Jwt = &jws + case "cwt": + encoded, err := cbor.Marshal(claims) + require.NoError(t, err) + + msg := &cose.Sign1Message{ + Headers: cose.Headers{ + Protected: cose.ProtectedHeader{ + cose.HeaderLabelAlgorithm: cose.AlgorithmEd25519, + cose.HeaderLabelContentType: "openid4vci-proof+cwt", + "COSE_Key": []byte(testsupport.AnyPubKeyID), + }, + Unprotected: map[interface{}]interface{}{ + int64(4): []byte(testsupport.AnyPubKeyID), + }, + }, + Payload: encoded, + } + + signData, err := cwt2.GetProofValue(msg) + assert.NoError(t, err) + + signed, err := jwtProofCreator.SignCWT(cwt.SignParameters{ + KeyID: testsupport.AnyPubKeyID, + CWTAlg: cose.AlgorithmEd25519, + }, signData) + assert.NoError(t, err) + + msg.Signature = signed + + finalMsg, err := msg.MarshalCBOR() + assert.NoError(t, err) + + finalProof.Cwt = lo.ToPtr(hex.EncodeToString(finalMsg)) + } + + return finalProof +} + func TestPreAuthorizeCodeGrantFlow(t *testing.T) { e := echo.New() e.HTTPErrorHandler = resterr.HTTPErrorHandler(trace.NewNoopTracerProvider().Tracer("")) diff --git a/pkg/restapi/v1/oidc4ci/controller_test.go b/pkg/restapi/v1/oidc4ci/controller_test.go index 0cbd73739..f14eb1a9d 100644 --- a/pkg/restapi/v1/oidc4ci/controller_test.go +++ b/pkg/restapi/v1/oidc4ci/controller_test.go @@ -27,6 +27,7 @@ import ( "testing" "time" + "github.com/fxamacker/cbor/v2" gojose "github.com/go-jose/go-jose/v3" "github.com/golang/mock/gomock" "github.com/google/uuid" @@ -38,6 +39,7 @@ import ( "github.com/trustbloc/kms-go/doc/jose" "github.com/trustbloc/vc-go/jwt" "github.com/trustbloc/vc-go/proof/testsupport" + "github.com/veraison/go-cose" "go.opentelemetry.io/otel/trace" "github.com/trustbloc/vcs/pkg/doc/verifiable" @@ -1130,7 +1132,7 @@ func TestController_OidcCredential(t *testing.T) { currentTime := time.Now().Unix() - signedJWT, err := jwt.NewSigned(&oidc4ci.JWTProofClaims{ + signedJWT, err := jwt.NewSigned(&oidc4ci.ProofClaims{ Issuer: clientID, IssuedAt: ¤tTime, Nonce: "c_nonce", @@ -1147,7 +1149,7 @@ func TestController_OidcCredential(t *testing.T) { credentialReq := oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jws}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, } @@ -1299,7 +1301,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jws}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, CredentialResponseEncryption: &oidc4ci.CredentialResponseEncryption{ Alg: string(gojose.ECDH_ES), @@ -1339,7 +1341,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr("invalid"), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jws}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) @@ -1379,7 +1381,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: ""}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: nil}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) @@ -1447,7 +1449,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: "invalid jws"}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: lo.ToPtr("invalid jws")}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) @@ -1521,7 +1523,7 @@ func TestController_OidcCredential(t *testing.T) { credentialReqInvalid := oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jwsInvalid}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jwsInvalid}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, } @@ -1654,7 +1656,7 @@ func TestController_OidcCredential(t *testing.T) { accessToken = "access-token" var signedJWTInvalid *jwt.JSONWebToken - signedJWTInvalid, err = jwt.NewSigned(&oidc4ci.JWTProofClaims{ + signedJWTInvalid, err = jwt.NewSigned(&oidc4ci.ProofClaims{ Issuer: clientID, Nonce: "c_nonce", Audience: aud, @@ -1667,7 +1669,7 @@ func TestController_OidcCredential(t *testing.T) { credentialReqInvalid := oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jwsInvalid}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jwsInvalid}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, } @@ -1701,7 +1703,7 @@ func TestController_OidcCredential(t *testing.T) { accessToken = "access-token" - invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.JWTProofClaims{ + invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.ProofClaims{ Issuer: clientID, Audience: aud, IssuedAt: ¤tTime, @@ -1714,7 +1716,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: invalidJWS}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &invalidJWS}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) @@ -1746,7 +1748,7 @@ func TestController_OidcCredential(t *testing.T) { accessToken = "access-token" - invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.JWTProofClaims{ + invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.ProofClaims{ Issuer: clientID, Audience: aud, IssuedAt: ¤tTime, @@ -1759,21 +1761,14 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: invalidJWS}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &invalidJWS}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) - - mockInteractionClient.EXPECT().PrepareCredential(gomock.Any(), gomock.Any()). - Return( - &http.Response{ - StatusCode: http.StatusOK, - Body: io.NopCloser(bytes.NewBuffer(requestBody)), - }, nil) }, check: func(t *testing.T, rec *httptest.ResponseRecorder, err error) { - require.NoError(t, err) - require.Equal(t, http.StatusOK, rec.Code) + // typ is required per spec + require.ErrorContains(t, err, "invalid typ") }, }, { @@ -1805,7 +1800,7 @@ func TestController_OidcCredential(t *testing.T) { currentTime := time.Now().Unix() - invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.JWTProofClaims{ + invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.ProofClaims{ Issuer: clientID, Audience: aud, IssuedAt: ¤tTime, @@ -1818,7 +1813,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: invalidJWS}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &invalidJWS}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) @@ -1852,7 +1847,7 @@ func TestController_OidcCredential(t *testing.T) { currentTime := time.Now().Unix() - invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.JWTProofClaims{ + invalidNonceJWT, jwtErr := jwt.NewSigned(&oidc4ci.ProofClaims{ Issuer: clientID, Audience: aud, IssuedAt: ¤tTime, @@ -1868,7 +1863,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: invalidJWS}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &invalidJWS}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, }) require.NoError(t, err) @@ -2124,7 +2119,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jws}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, CredentialResponseEncryption: &oidc4ci.CredentialResponseEncryption{ Alg: string(gojose.ECDH_ES), @@ -2181,7 +2176,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jws}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, CredentialResponseEncryption: &oidc4ci.CredentialResponseEncryption{ Alg: string(gojose.ED25519), @@ -2242,7 +2237,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jws}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, CredentialResponseEncryption: &oidc4ci.CredentialResponseEncryption{ Alg: string(gojose.ECDH_ES), @@ -2303,7 +2298,7 @@ func TestController_OidcCredential(t *testing.T) { requestBody, err = json.Marshal(oidc4ci.CredentialRequest{ Format: lo.ToPtr(string(common.JwtVcJsonLd)), - Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: jws}, + Proof: &oidc4ci.JWTProof{ProofType: "jwt", Jwt: &jws}, Types: []string{"VerifiableCredential", "UniversityDegreeCredential"}, CredentialResponseEncryption: &oidc4ci.CredentialResponseEncryption{ Alg: string(gojose.ECDH_ES), @@ -2938,6 +2933,91 @@ func TestController_OidcRegisterClient(t *testing.T) { } } +func TestHandleCWTProof(t *testing.T) { + exampleProof := "d2845828a3012703746f70656e6964347663692d70726f6f662b63777468434f53455f4b657945616e794944a10445616e7949445842a4016b746573742d636c69656e740376687474703a2f2f3132372e302e302e313a3630343133061a65ba47ef0a746b596362437876656c6531706e393459704b6a44584009b11da68d72fc5e3fbf6aedd2c2dd81d99f69d93c5b063e7d714feae8b7b4e54b3d3780c1f7e43cc6a31405f3b67d81e1ca0a50423a8af34662022b70cd160c" //nolint + hexProof, err := hex.DecodeString(exampleProof) + require.NoError(t, err) + + t.Run("invalid string", func(t *testing.T) { + ctr := oidc4ci.NewController(&oidc4ci.Config{}) + _, _, err := ctr.HandleProof("invalid", &oidc4ci.CredentialRequest{ + Proof: &oidc4ci.JWTProof{ + ProofType: "cwt", + Cwt: lo.ToPtr("0xxx0"), + }, + }, nil) + assert.ErrorContains(t, err, "invalid cwt") + }) + + t.Run("invalid cwt content", func(t *testing.T) { + verifier := NewMockCwtProofChecker(gomock.NewController(t)) + ctr := oidc4ci.NewController(&oidc4ci.Config{ + CWTVerifier: verifier, + }) + + verifier.EXPECT().CheckCWTProof(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(errors.New("unexpected cwt error")) + _, _, err := ctr.HandleProof("invalid", &oidc4ci.CredentialRequest{ + Proof: &oidc4ci.JWTProof{ + ProofType: "cwt", + Cwt: &exampleProof, + }, + }, nil) + assert.ErrorContains(t, err, "unexpected cwt error") + }) + + t.Run("invalid proof claims", func(t *testing.T) { + verifier := NewMockCwtProofChecker(gomock.NewController(t)) + ctr := oidc4ci.NewController(&oidc4ci.Config{ + CWTVerifier: verifier, + }) + + var data cose.Sign1Message + assert.NoError(t, cbor.Unmarshal(hexProof, &data)) + + data.Payload = []byte{0x1, 0x2} + proof, cErr := cbor.Marshal(data) + require.NoError(t, cErr) + + verifier.EXPECT().CheckCWTProof(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(nil) + _, _, err := ctr.HandleProof("invalid", &oidc4ci.CredentialRequest{ + Proof: &oidc4ci.JWTProof{ + ProofType: "cwt", + Cwt: lo.ToPtr(hex.EncodeToString(proof)), + }, + }, nil) + assert.ErrorContains(t, err, "invalid cwt claims") + }) + + t.Run("invalid content type", func(t *testing.T) { + verifier := NewMockCwtProofChecker(gomock.NewController(t)) + ctr := oidc4ci.NewController(&oidc4ci.Config{ + CWTVerifier: verifier, + }) + + var data *cose.Sign1Message + assert.NoError(t, cbor.Unmarshal(hexProof, &data)) + + delete(data.Headers.Protected, cose.HeaderLabelContentType) + b, _ := data.Headers.Protected.MarshalCBOR() + data.Headers.RawProtected = b + + proof, cErr := cbor.Marshal(data) + require.NoError(t, cErr) + + verifier.EXPECT().CheckCWTProof(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(nil) + _, _, err := ctr.HandleProof("invalid", &oidc4ci.CredentialRequest{ + Proof: &oidc4ci.JWTProof{ + ProofType: "cwt", + Cwt: lo.ToPtr(hex.EncodeToString(proof)), + }, + }, nil) + assert.ErrorContains(t, err, "invalid COSE content type") + }) +} + type mockJWEEncrypter struct { JWE *gojose.JSONWebEncryption Err error diff --git a/pkg/restapi/v1/oidc4ci/models.go b/pkg/restapi/v1/oidc4ci/models.go index 2f967da88..fdded9d0e 100644 --- a/pkg/restapi/v1/oidc4ci/models.go +++ b/pkg/restapi/v1/oidc4ci/models.go @@ -26,9 +26,9 @@ type AuthorizationDetails struct { Locations *[]string } -type JWTProofClaims struct { - Issuer string `json:"iss,omitempty"` - Audience string `json:"aud,omitempty"` - IssuedAt *int64 `json:"iat,omitempty"` - Nonce string `json:"nonce,omitempty"` +type ProofClaims struct { + Issuer string `json:"iss,omitempty" cbor:"1,keyasint"` + Audience string `json:"aud,omitempty" cbor:"3,keyasint"` + IssuedAt *int64 `json:"iat,omitempty" cbor:"6,keyasint"` + Nonce string `json:"nonce,omitempty" cbor:"10,keyasint"` } diff --git a/pkg/restapi/v1/oidc4ci/openapi.gen.go b/pkg/restapi/v1/oidc4ci/openapi.gen.go index 791c91161..8857a8c93 100644 --- a/pkg/restapi/v1/oidc4ci/openapi.gen.go +++ b/pkg/restapi/v1/oidc4ci/openapi.gen.go @@ -107,8 +107,11 @@ type CredentialResponseEncryption struct { // JWTProof defines model for JWTProof. type JWTProof struct { - // REQUIRED. Signed JWT as proof of key possession. - Jwt string `json:"jwt"` + // REQUIRED if proof_type equals cwt. Signed CWT as proof of key possession. + Cwt *string `json:"cwt,omitempty"` + + // REQUIRED if proof_type equals jwt. Signed JWT as proof of key possession. + Jwt *string `json:"jwt,omitempty"` // REQUIRED. JSON String denoting the proof type. Currently the only supported proof type is 'jwt'. ProofType string `json:"proof_type"` diff --git a/pkg/restapi/v1/oidc4ci/types.go b/pkg/restapi/v1/oidc4ci/types.go new file mode 100644 index 000000000..c55a5393f --- /dev/null +++ b/pkg/restapi/v1/oidc4ci/types.go @@ -0,0 +1,7 @@ +package oidc4ci + +type ProofHeaders struct { + Type string + KeyID string + ProofType string +} diff --git a/test/bdd/attestation/go.mod b/test/bdd/attestation/go.mod index 9393b17f7..d75d6e2d2 100644 --- a/test/bdd/attestation/go.mod +++ b/test/bdd/attestation/go.mod @@ -10,8 +10,8 @@ require ( github.com/google/uuid v1.3.0 github.com/gorilla/mux v1.8.0 github.com/trustbloc/cmdutil-go v1.0.0 - github.com/trustbloc/did-go v1.1.0 - github.com/trustbloc/vc-go v1.1.0 + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b ) @@ -25,7 +25,8 @@ require ( github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/fxamacker/cbor/v2 v2.5.0 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/tink/go v1.7.0 // indirect @@ -45,19 +46,21 @@ require ( github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/sjson v1.1.4 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/kms-go v1.1.0 // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 // indirect github.com/trustbloc/logutil-go v0.0.0-20221124174025-c46110e3ea42 // indirect + github.com/veraison/go-cose v1.1.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.23.0 // indirect - golang.org/x/crypto v0.10.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.11.0 // indirect + golang.org/x/sys v0.15.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect diff --git a/test/bdd/attestation/go.sum b/test/bdd/attestation/go.sum index 212db78ec..eee5863d8 100644 --- a/test/bdd/attestation/go.sum +++ b/test/bdd/attestation/go.sum @@ -87,11 +87,13 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -217,18 +219,22 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.1.4 h1:bTSsPLdAYF5QNLSwYsKfBKKTnlGbIuhqL3CpRsjzGhg= github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= github.com/trustbloc/cmdutil-go v1.0.0 h1:QCe7wVEIASWmy9ZDD0l0tsQCEsX6fx+kBFX5UqCVRdk= github.com/trustbloc/cmdutil-go v1.0.0/go.mod h1:o/v7C1z6d/5UrjaC6GAUc1hk0XVuE3M4tpyvsMMUw5k= -github.com/trustbloc/did-go v1.1.0 h1:PH3b7hQtFxnb7BjadmZaDXbmIUjdarNHA2tGvn1O7Os= -github.com/trustbloc/did-go v1.1.0/go.mod h1:TA2gb7Dv6egIDXpjIwP8shCVzsJ1qrhVwuyFO6iBdfU= -github.com/trustbloc/kms-go v1.1.0 h1:npKO9hLrE1GbLmVw0Trpkiad5xNnSRmmhUk+80qYe0A= -github.com/trustbloc/kms-go v1.1.0/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v0.0.0-20221124174025-c46110e3ea42 h1:Mzg9wvEoUIWPoI/GHz3YlVbd4nKWeSPGc6+3l95eOZU= github.com/trustbloc/logutil-go v0.0.0-20221124174025-c46110e3ea42/go.mod h1:HRaXVV1caceumbDBwLO3ByiCcAc18KwrNvZ7JQBvDIQ= -github.com/trustbloc/vc-go v1.1.0 h1:XqaD8ZqyXCbxhbf8duqMK2kSrqum/aPoKJQZAOsBr6g= -github.com/trustbloc/vc-go v1.1.0/go.mod h1:0psweXAm7Y1H9vE+hKkgTvMoVsDOlX0O+KqYB/MoJCo= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -262,8 +268,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -370,8 +376,8 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/test/bdd/features/oidc4vc_api.feature b/test/bdd/features/oidc4vc_api.feature index 3b6ed0739..42198382c 100644 --- a/test/bdd/features/oidc4vc_api.feature +++ b/test/bdd/features/oidc4vc_api.feature @@ -57,6 +57,7 @@ Feature: OIDC4VC REST API Given Profile "" issuer has been authorized with username "profile-user-issuer-1" and password "profile-user-issuer-1-pwd" And User holds credential "" with templateID "" And Profile "" verifier has been authorized with username "profile-user-verifier-1" and password "profile-user-verifier-1-pwd" + And proofType is "" When User interacts with Wallet to initiate credential issuance using pre authorization code flow Then credential is issued @@ -66,16 +67,17 @@ Feature: OIDC4VC REST API And Verifier with profile "" requests deleted interactions claims Examples: - | issuerProfile | credentialType | credentialTemplate | verifierProfile | presentationDefinitionID | fields | + | issuerProfile | credentialType | credentialTemplate | verifierProfile | presentationDefinitionID | fields | proofType | # SDJWT issuer, JWT verifier, no limit disclosure in PD query. - | bank_issuer/v1.0 | UniversityDegreeCredential | universityDegreeTemplateID | v_myprofile_jwt/v1.0 | 32f54163-no-limit-disclosure-single-field | degree_type_id | -# SDJWT issuer, JWT verifier, limit disclosure and optional fields in PD query. - | bank_issuer/v1.0 | CrudeProductCredential | crudeProductCredentialTemplateID | v_myprofile_jwt/v1.0 | 3c8b1d9a-limit-disclosure-optional-fields | unit_of_measure_barrel,api_gravity,category,supplier_address | - | bank_issuer_sdjwt_v5/v1.0 | CrudeProductCredential | crudeProductCredentialTemplateID | v_myprofile_jwt/v1.0 | 3c8b1d9a-limit-disclosure-optional-fields | unit_of_measure_barrel,api_gravity,category,supplier_address | -# JWT issuer, JWT verifier, no limit disclosure and optional fields in PD query. - | i_myprofile_ud_es256k_jwt/v1.0 | PermanentResidentCard | permanentResidentCardTemplateID | v_myprofile_jwt/v1.0 | 32f54163-no-limit-disclosure-optional-fields | lpr_category_id,commuter_classification,registration_city | -# LDP issuer, LDP verifier, no limit disclosure and schema match in PD query. - | i_myprofile_cmtr_p256_ldp/v1.0 | CrudeProductCredential | crudeProductCredentialTemplateID | v_myprofile_ldp/v1.0 | lp403pb9-schema-match | schema_id | + | bank_issuer/v1.0 | UniversityDegreeCredential | universityDegreeTemplateID | v_myprofile_jwt/v1.0 | 32f54163-no-limit-disclosure-single-field | degree_type_id | jwt | + | bank_issuer/v1.0 | UniversityDegreeCredential | universityDegreeTemplateID | v_myprofile_jwt/v1.0 | 32f54163-no-limit-disclosure-single-field | degree_type_id | cwt | +## SDJWT issuer, JWT verifier, limit disclosure and optional fields in PD query. + | bank_issuer/v1.0 | CrudeProductCredential | crudeProductCredentialTemplateID | v_myprofile_jwt/v1.0 | 3c8b1d9a-limit-disclosure-optional-fields | unit_of_measure_barrel,api_gravity,category,supplier_address | jwt | + | bank_issuer_sdjwt_v5/v1.0 | CrudeProductCredential | crudeProductCredentialTemplateID | v_myprofile_jwt/v1.0 | 3c8b1d9a-limit-disclosure-optional-fields | unit_of_measure_barrel,api_gravity,category,supplier_address | jwt | +## JWT issuer, JWT verifier, no limit disclosure and optional fields in PD query. + | i_myprofile_ud_es256k_jwt/v1.0 | PermanentResidentCard | permanentResidentCardTemplateID | v_myprofile_jwt/v1.0 | 32f54163-no-limit-disclosure-optional-fields | lpr_category_id,commuter_classification,registration_city | jwt | +## LDP issuer, LDP verifier, no limit disclosure and schema match in PD query. + | i_myprofile_cmtr_p256_ldp/v1.0 | CrudeProductCredential | crudeProductCredentialTemplateID | v_myprofile_ldp/v1.0 | lp403pb9-schema-match | schema_id | jwt | @oidc4vc_rest_pre_auth_flow_trustlist_success Scenario Outline: OIDC credential issuance and verification Pre Auth flow with trustlist (Success) diff --git a/test/bdd/fixtures/cognito-config/db/local_5a9GzRvB.json b/test/bdd/fixtures/cognito-config/db/local_5a9GzRvB.json index d6058d5a9..bb5b74627 100644 --- a/test/bdd/fixtures/cognito-config/db/local_5a9GzRvB.json +++ b/test/bdd/fixtures/cognito-config/db/local_5a9GzRvB.json @@ -437,7 +437,74 @@ "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE2OTgyMzkwMDQsImp0aSI6IjQ4ZDdjNGY0LTA2YmItNDM2ZC05NWY2LTBmN2FiNjkzZmEzYSIsImV4cCI6MTY5ODg0MzgwNCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.AU6OWHsI7A7jk-JwoIvqepFhR1QNbVTRfzzumNIa5xQsCmv5ehKdWz3uoJPUnqm7Ex3kFvMMHkLR7AUigTJjhhtdXp8BWftbt-ps32cFfdsbBI4Cutry6-p1k3dwqjmICW_5rYTcCz9pQcv9MZ8HQCbqhaxwsPxxggs0Mc3qx-jmP-KesWrTbaTCkHiR0iQEg5utjxCaZoM1baaSqHgTyO8SGy_EW5CludYWakGOViylsxoMcRvutPwgMU2Wi1PaJVlxAIwXjNBX_PbBcqgnchi6w_t2WryUrjEt8S6buOt0vHJYkDdZL2PH1YrcgPrXnteEUoSDgy1acc4pqsf6sw", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE2OTgyMzkwMDgsImp0aSI6IjA0NWFhMDcxLWZmZTgtNDYwNy05ZjRhLTM1YmJjZjlmZGMwNCIsImV4cCI6MTY5ODg0MzgwOCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.uEbnnif2QwhPHenCbECk76UBpJKHanlV5ek0aGPro7XRNSFOHwuH66b8OwkhKNVmczkrzh1sJHXc8OlOzkv24Ki1EFRNqctMDbi5Fb_7Vzb69qpfCjl1ZuIiZfydPO365FGilZhQ3Dyi6xxEsE3Jhi2aQe8ULiWPW3ej7ZSw5tcobjz7SvRHzGECPD5efaxnKzlKRBgrOhAtmx1TBus93nlQlzcjcVqOJmb2tYdLfn9R763R-XWkLn-eo4Y1JZNKpG_JoMBczGBoVAtuVriBctDLrakhtWMUbzx6-QGqw6hKfUmMTSsMNVxWK_3YiiwGqzKAg2l3OvirdimISgGTiA", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE2OTgyMzk0NTcsImp0aSI6IjZlMjU5OTVjLWU2ZDYtNGNiYy05ZTBkLWZhZWEyNWQ1MjJlZiIsImV4cCI6MTY5ODg0NDI1NywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.TClenWaNfRwurNEBmwTErYLjBAr9AH6GeA2w0oVWuUHdiVmJ_VG8RNuTHHAzAO-nM9ll6KiEiipwufneUJtgHoqz00uivcIBrRC4NbYaHnCDQuH8ovXAwGpwK4ZIHPJ_iavFVsmucSEgVCh55oU3w4m0-u_hpfGensvmsOkwtjeRNw1617MCMh77gr-HcTSWlO-sgnBqgLHD97mGgMeV3DF8oMwfuzkx7JYTDA5REc9IBHOcLVVpEccRKd2JWHZWVzpRXt8YlTPqmQw8pTI-VZBijzAVIvncpMnmTU6-HDL8LPHYeClm6vsJ0I-UG0V9rdTbGofhPlSrIfdwsj8ZPg", - "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE2OTgzMTE2NzksImp0aSI6IjU4NmU3YjliLTYwNmMtNGIwZS04MWI0LWQzYWE3Mjc1MzdkNiIsImV4cCI6MTY5ODkxNjQ3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.ssz6UKODb-4HVcBa6KMpMJiPpeQgJDKi77TM1_uw3dDS8ac-Oj-hsOZffESea_iCI9ocozkgblgrfIFo6nCiZHO8rk4E7eyki9PbS4KGlRkFr_6jqXaLQh8taZwTsJOrFsmkfmjyVxvGP3pghua2g1Lz8rS_b47D0p_fe-XKDxwB4YnK_T-lPGuktbZ5ByoRYwJf6O-l6wq-hsq2yqw3OSjUF8_scK7R7tncUTQ708JVpxCHrT3pFdOdKw6r4EDnszajavtQYTdquYRaIbcXEtmiqUvbaXaWIsmlxSjyozsrgGPkgaul9e0RPj19vqcwbl3dbuHx7xkxvao42dRNJA" + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE2OTgzMTE2NzksImp0aSI6IjU4NmU3YjliLTYwNmMtNGIwZS04MWI0LWQzYWE3Mjc1MzdkNiIsImV4cCI6MTY5ODkxNjQ3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.ssz6UKODb-4HVcBa6KMpMJiPpeQgJDKi77TM1_uw3dDS8ac-Oj-hsOZffESea_iCI9ocozkgblgrfIFo6nCiZHO8rk4E7eyki9PbS4KGlRkFr_6jqXaLQh8taZwTsJOrFsmkfmjyVxvGP3pghua2g1Lz8rS_b47D0p_fe-XKDxwB4YnK_T-lPGuktbZ5ByoRYwJf6O-l6wq-hsq2yqw3OSjUF8_scK7R7tncUTQ708JVpxCHrT3pFdOdKw6r4EDnszajavtQYTdquYRaIbcXEtmiqUvbaXaWIsmlxSjyozsrgGPkgaul9e0RPj19vqcwbl3dbuHx7xkxvao42dRNJA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NTIsImp0aSI6Ijg2YTdjMGU5LWM1ZjAtNDVkNi04ODNmLTQ0ZjdiMjIwMTE2ZSIsImV4cCI6MTcwNzMxNTI1MiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.vGVAiCuoJ57q4XFox7gfMxmaLBO1uCqjtY99yO37QdaMGCsCxSgOryn9mfJnLtx8liCZ-48S-uKcv31nTOp0ATKfudwk-SWUkG_Bc0Sv8mYaFjvvzhwdUAbBFuNyYkCkmTY5UrvQJhBZLe650w9iGUVjs8HJCs6P4KBi3ULkyhDrFMxPgupBAURdiKWbVWs6Vll4HaIkU_dl9U5WUr7ry7wkPL-jwuZiW9RAYrAq2DPp0JStAbsX12MT06UOd07qcqalXz7D_ES-Tun1VtM1BqAbLkZAVHXpmh9pMSbRoIs-PXC9LPpGvTcyir-MIMCBRNmUSaNk16BK3ldMMSfQFw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NTUsImp0aSI6IjRjNWQ0MGE3LTU4YzEtNGYxZS1hNzJmLTYyZTY5ODY4ZDY1OSIsImV4cCI6MTcwNzMxNTI1NSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.af5o0m1kYpA3-bkVkM2qnZPUfDwrCXF8-63SbgVxPVzz7BNMrpUxHWt8zUPK0f1fvLnX2oQt2AbFuvwGMB3lWvjvDSfRRCYL2aFHPS_fD0FXpBDJyg6D33tybXG_cQamNgYAYM6VInWVWzCdEyZUtqsw_KNkFAqhhORFWaeGWRKE6krxOb052kHJGbrMNkYw1N0TYLXpvkSffcDsfrvIVgtZi89aSswlvFQggI4kllzt4g1FVTSIbUgt0k6eI_XqRWtBsTJz7jeerncgHl41PYOXLAZVj24LepVXFFqlpyTE9XESIVkv_PDqGKba2q_KN7mu2JeJIv7Scw7hxnI4tA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NTgsImp0aSI6IjZmN2YxOWRiLTU1OTktNDgxNS04OGNjLWI4OWI0NTc0NjdmNSIsImV4cCI6MTcwNzMxNTI1OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.DgYLgjUm-84ICYfp3qwPh_vs8hhASimUNCGyQhAI5RKCFam9GCvm9w464ISaD82LxvE3SOPJA531d8_chd2COWaMSO_09t0u7_VRAO8V5v872-p3Ph5Q1N-5MtSE__rL1cFnAl574LVMw88kYG8pFuib3wWyzNcBgrRC_uF_MIS0-Bgjfrfh8bXHJvhDTTrQEYegUXZNmpxwoTsuqImQ61Ju8xW5fkzOq0dr4uDct8gUVe5nbh-B9lrL_Knw8vlMyM0kIrLYVbz5BlhXvWNzVrDI_8sosdZ5m1IWfR76DLPQzVVyCLckWtmWgGZFGsqVXG7s2jxo_t8Ya2yAA69FcA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjEsImp0aSI6IjY5NmQ5ZmRhLWMyZTktNDMyOC1iYzRmLWM4MGNiZjMzNzQ0YyIsImV4cCI6MTcwNzMxNTI2MSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.MfwY5F5g7m_kDBBHd_yQ5gx3ENu5NBh8kBUQgZGTHI4sfaaTHwpKf7P_hU42YejU8MXK5qjZm4ouFz-mc6OmX2Ec3dTxVIbaquAb2cV09pKz1SXguxBLiJaIXIogxKTEHp2mbWw6PXN-5KmheHMs5j4DMJwSzurwWw20GWyemUafjZdio-dvc4fFTCxUtf5jJ51g-4r5xYWIzmfkMW9Rnk8n_C3N7Pn01WXvK7FbOWlJXW4gKKNhVi3sE68CuB0JPO2mREi1Pz-vbW86APDcaLJDfGD0Eq8adHY4FFTBzWUnk04r50cWHRt5g4Icw3PhDCczE6P9T10lMFAidVikqA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjQsImp0aSI6IjE3NDU0M2E0LWJlNzEtNDZmYS1iZjMzLWEyNjFmMzRmYTg4ZSIsImV4cCI6MTcwNzMxNTI2NCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.FbxQO3BbxYng86HURJ5vgEvpNwGZeB1_n6XaA-0cCMHMp6rSEYpti3fX8KgOAaNDlvIWY6E-NYLrb8UXpaGYbBBGUzyRlwZskWDjfqKnhRo3yWbnhxEFgsdno5-bah5FnrI6ZE3tFMWWAYhVcruUmcnIenr25E65NDhxaV3OtjMkq5uQGP66T7_otJhDXqDEOCZr5gJh3c5Uhl76kOs810svxjXHWtngTMuW-I-n6yMQnk0fXAewc4nWmlZJmzkCSwByKqSbBelTTB50PbDiyacWgIwFrwtZHl9VrLFi7ja_kIfapPseH-AKKHPMcgzREZ2DJFL_ukReYj0QybfzJA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjcsImp0aSI6ImM3ZTIyM2ZiLWFlMDktNDQ0MS1iNDkxLTY3YTk2ODc2MjI2ZSIsImV4cCI6MTcwNzMxNTI2NywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.s7hF3ZYhF5q0M_Mz1rDn8AXGGpA2t_eBs297QXqJh2e-GHcTc_Rn5p7XhWSc7eAEkINpvvjCbw9W8Ww2DJg4wr2Hf_2j_bV7BiBnNdQIhDRBPmiBJPSUBHy-N1oq-D59TEoTLJf_KCLLtOcRMwgiDybaSd54XObTHKNhiiqpsgtlpwKf4Dt32dtOWiuLu1iCIcXpq-7EuzqSa0g0_FBIWC3ZKHqt0cDQMMqQq9UnWWS6HVhZzt8kIaURiua5nznKsWKpMDfyRj9RlYXymndgeIcfrI4blLsub3p9mgLC0Emmf3TdDjEo_aoofmZY26AU-MZ0v9fg4rpX-REm1hy5lQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjcsImp0aSI6Ijc3MjFlZWU2LTA4NjgtNGE2Yy1iZWYzLTdlNTczMGJmMDczYSIsImV4cCI6MTcwNzMxNTI2NywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.WMPGHh6RokpuCvU0dlCO6omv2O44eED3OQGjJJRzxxPxE1z18N73Il7aG6sf82wTe9mmgwsrYNC9uOP2jwZZgz3XO6POSsjtYXjzHv0PECVcdlKwfSDcBKejeWtg5uRpMNC53tBOKnLW3vW0TE7Xqm6maVOxUwJRXoHm7a-i74OK-f4Qs1xrMUdJqKqXJTQR1I5i-HrRfiSauN9EMe-Yr_Y3IOqrLKcd87zURCcVEDFArGfe8u1qJdZCRf73IxnO2WoafOOzfbMh7j590ejR8td3PTmuFBCdVTuF-9s0h1F7_R-baYjm7lb3oOm_T_n9D0eIdW7fNRQdjLzfW27XtA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjgsImp0aSI6Ijc4MmVlMmM3LTExMmEtNDkxYy04ZTAwLWNiNGQ4YjE3N2M3NyIsImV4cCI6MTcwNzMxNTI2OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.rHEC1aHLAb2cCpm71uWFq6JSeC18hBjrfpA3XI1_x-8ZrISvcwtSKqdxO3cICtlE23h8bZhiP7u-oL76q6gHeiXYqe4x-ApH8O_pHmD0NEmxEreGFO0k8KFV7XLpi5DFkeiuZNWvsxjGCSCEalw2AV_qt7CU1BYEMdWQTf9lw6qGKWtVxzks-UeMCLFFVurGFlx4_NqrHI_hWLYikhrcUUz9qTpoDiZuTKKrZ01-n7rjQXngK3HLs_-X7w8sHDaRvAs4lUE2ZAHyBipHG4WEyqbaHIVQAe_7wR-kWPd_q_USYWwM7tI-D__bOiwc3Ky5XXr5FM1hnwNUsPt-dsx98A", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjgsImp0aSI6IjZkMDkyODg0LWE4N2MtNGEwNC04M2EzLWNlN2I5NDhmYTdjNiIsImV4cCI6MTcwNzMxNTI2OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.BCl48TukEv-vKIxRgez3NmxB79u9acrfDdBC7D3Op9zuG6jvZ0LU1Bakv_G8zZrVh6Vtjj-SGBAiM17mAGee3j_1h0ucaBDvNCi2kIwLnS4FCyZeehjryoHISOhK52xKMps7eYvOM086l9fGVEwQqGyC_Mb83qsacWquxxHmrPpOhdhW_AixzveLKwsl0LKwxBiC9E-u1jhD9DMigdzsQME-D9NCiWx1T8WarAOt2dRY52OUPX8g0YGdkz1NaTgjT34HYd1HepZ4yxEEwYns0Q__anayFQ5GfgA0trmUsj1IPhSk534CTKZeR8CW0RsEEiVSk4Zo6stVhuXtdNyubA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjgsImp0aSI6ImY1MGQ4YzM0LTVkMDItNGJiOS1hMmU3LTg1NmRhMmZjNzAyNiIsImV4cCI6MTcwNzMxNTI2OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.hoHiAYLEjAx_FuSifcSwFxdKMcAE7nfWS1K2SCv0KrYyHAWiTTq-PA1gSUNV7SkJ_E_WazXMwMZFjUxJWV-bWzs5uDow2XV0LixbbB8HnkpW0LEznUVoSdl__8PttvszEEFvDCapTxqZtRUJ_kZdalTAiAmHQVmExXjt0EbXYFwls6QpEv87Yau0d5rlLpcd03wA5ysvTfKBVN8_JCf0MOw8d6_IICBYqgOW9SSTpNWqW8zejnKRYapR4YGXRl9BurOQTCx2rGyEJMZi7vd0iYys7jnlgPd5tHzr2xClGq7HMIHdb3Vivwle_1YbVPw6kIpelM_27CXAiAodde2OZw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NjgsImp0aSI6ImE2MDBiNGJkLTg3MzEtNDYxZC05ZjUxLTM1NjlmODMxZWMwMyIsImV4cCI6MTcwNzMxNTI2OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.WtRQqTMVay2hcjuis0QcWGO5yafdYdgLfJJS1Ubd4pxzBKPhxHmtgVwmx7U3fsYlxNzbg8Zhlfmt6BPMaGr8mnkStkZCSa-y8QbPC7JGnwIQdlPNDAncExNAnK00opGqmZoSYrrI902GK548ekC_r7ED2DeEIf3LvgLAf5MmFxzZ9TKkvgRS4-x-vgmPJQDHJ9c2WEj4iW9Z0BA8-nRa6lmv9vsJ89fIVomWVZya7sN03yDFXgTbN3buR3SOfi4avdxsZz8wMtcL0QCjqwLrQs3cffGjBseSRXCPvoGM_0l7AlBA4HbB9mlmxggoADtx2Ttlzw-8EloqjgBVxJHJyg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzEsImp0aSI6IjQ3ZjIxY2ZiLWZkOWItNGNiOC1iNDViLWVhMGM4NjU4M2IwNCIsImV4cCI6MTcwNzMxNTI3MSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.g4JyRa4frNMqtH3btugnrWp9RQdF3hPcmZ1v_3hkc8r5OFAjjpbb22HAXj6UNpwxd2GJfVbaNeReqAp2IK94BR3OajYZ1BVBW4qlag3uYkV_a9auoUCl6mExhQ0T0DIK_RxgVAhJI8VoXsdq0LppfsEbhBPv_4kx3vpE4tyYkLB2BaoLz_y-eK_grEoqJQ1YhbDe3tj99QvLMU73IckjAXnHzph8nXWMh69E55dWpdi1JU5zgYHkKHvkbIYdSlrwhecXTPGIj371jSIQVHRt07FEjkfuCS08Wq3xOvE252HlnNFkusjOjMzjGJ_4X9OFx3dEm-ol9wSUUdVBfMSBDw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzQsImp0aSI6ImYyM2U0ZTczLTdiM2ItNDc2Zi05Yjc5LTkxZTY2YjdiMzE1MyIsImV4cCI6MTcwNzMxNTI3NCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.TnVt3g5Cw5SaF4VKPOaRyrLaidC3S2ZHVilHITSBYxoGqDV7EbtTM0QLqiH1zWvs_GlCSq6WIwINZYcp5sez1ogyD4DhRhosXH9C5PYaJTw6eBA9KUi1BVrhWvC8M0agpOu_5SKwJv48bbP4ENJcoeRuM8FeWfevmR4a_ONbZobufvkL5cUer0_MN-y27jMfHYgRlo3X-_YZKv6U9E0kZVTgB9T_WdH5Htqrw8qPve32XbpXzisiElha03lvgXnoZ5X5cfNlJ5HstqQ2MQGVkvPGr6033iN5UnuynbNS34NjGbFWPF5oNrLg82SULmMtAgiigtQIVCGZu6hnE2Hciw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzgsImp0aSI6ImJiOTg1Y2VkLWEyZmQtNDU5Mi1hMWIyLWRjZjY2OTM5NDBlZSIsImV4cCI6MTcwNzMxNTI3OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.tciWnjOavCPpIdSmRDq_h2Evz73aU39TvlElDaNFZgg3zt-vnZzfot_67reI2q6sQji1C6N0Eilcn58VKnRnq6zE6gxRkMtshzmTVI8lbQQs3KJ2K244Eveq8owMhBdsHmgTaIpE9PDrpA8ETSOLukrzldRh0la5YWz0WWOGfJ6rt2fBE7wcqUfmyRU73ykqGmdD9IbjaqUiHx0GM3yz_dH7Tm-WL_Wqb-_xDpwJB_bMOtYbqeWWw4pSl-wyadF1ioL4bUBfzBwMjej6QUPOSXkx9eyzMvcJuVVeG1dpaG8GOjFycX_Ry0lrxUnh1kX4yf6rJY6bxYLBBJTO2qGdpg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzgsImp0aSI6ImExZWNiM2UzLTUwYmYtNDc2NC1iY2MwLWE0ZmJkMDE2YWY1MSIsImV4cCI6MTcwNzMxNTI3OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.piLlVtYfH03QFwGPRqBRXoI4TysF3m23QEahvTP7-MJL8kNNYDVoJjCfikNBtFWjAyE2TBUuSuS7YkVexsNGiXiycOWqmp5xG8xSYCFaeBpSNfCV3cbON0cUehxNEcATflmsYmDMOWHw7bjnVzxYkFkxruuoe45F6j7FMEtElvg_fl1Rwv-X8rPTVJ_l-cW8r3oQFYwZwcaNKywy-mK3DJbpTCWhFD_dXTelWbt1QJSxVNjCeJom-ToDrpHh98nfzTFBQRejdVQT2qzRkaZAceRRLP_WvMyvJH6jTStjNBPyJBS19qgS55aiL9zh0GJ_oMSpznrnsIwF7u2GZPAzVw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzgsImp0aSI6IjRjYWU5MjIxLTRiOTItNDU5Ni1hNjZlLThlZmQwMzhhMjA2NCIsImV4cCI6MTcwNzMxNTI3OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.a1fH3w9NoJZdssgKV1cJ66y_QmdQY-i2Usa2pe7gQGKd4Kjns5LDSpr35CsjxS3oY6TqcpFwC-bS1TlxmcKXqhheVSxO3WSiUGtiCQ2QUTO-GP-mL2a9069J4vAEnJkXz2fvxN8wzWlTH762ZXwqSmEWMghRWgQX0JtWhBm1N_epiopY3udReo8c77mZSI7fOsXlqMb68NS9eFE3DuTlDWI697f6ByC7Cn6cvG8_vNd1fHqRRnr_G55qro8ItlRt-jjsFsy3Spxe_u6bWNHVr2VkjkaInfMOxOFg5IuhskcxMQJ7VC9UB4KtYSlJZU-lzYuXStU8x-f5c8raVTBWFg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzksImp0aSI6IjAzODA5ZWUxLWYwMzUtNDVmNi1hNGIyLTljYjZkODBmOWU2NyIsImV4cCI6MTcwNzMxNTI3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.kZI8G-k-NGNwXm4TQZ0ljlS2h-0hqC7ffyvVCog0A0mmefKjFibogo8wXfMYPwf38N0VDhpSvDAPrtz_z2rlkFVDjKyrue7jqs5a_fZOcUKgDLwDyrTvnnM6X7OkRRRnxA5oLJ4_pUbGRB3HWmbk9_jOmP_uJy2Jm3O3EMcX7dSKMGdrm-3LdfvtA2zjtua92AacjrUbAepw_r2KiA3YeBGHs4msbluAHpBVuxLDdxoV5UecV9PnNA55wPJm86ZvBIBD1G-HddPK3aV3DiVO3AxmkMWVHlEzy5nFD35GD26xZdqxCPI7gDzz-sIqXptlyfStH3zSrGVmT7UiKa5lag", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzksImp0aSI6Ijk0MzU1ODQ5LTY3ZjktNDc3Mi1hNjRlLWUxNzg2MDE2Y2Q0YiIsImV4cCI6MTcwNzMxNTI3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.tw8q_46UoIHvxxSbrCq8ViRPo1n3F9G2HiAXdEcm_uJyM6OtVdTVrhZXKpEvDpID5uLmSkQ2IjXWxiAg9TA2U_JcNj7O1_KeDm7ZDl1oNZOLJbEa-9X960QZxet6GnlWopA6K5no1VSe2-_on5p0DJDWUEoOpOB_nsOQ9MvT5Jb8SatXQzo7UVT24O_-OL1KNwSlyD_guN5wKce9Slc8nKL6Je8ZiTdGrFFsbKJXqD1Q-BBo66-MtgU0spftLvs2uKNzoVr-AkUk5zhfeXhafid8dujfFlva0cdAthYJgxhSQa9-GOR95DRiLGqEps6gmCTOq_tdrAbVNw7E171kxA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzksImp0aSI6ImYzODNmMzdiLTE5M2ItNDA5Ni04MzQ1LWFmNTJkMWEyNjQ5ZSIsImV4cCI6MTcwNzMxNTI3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.tsToj5jWi23zlclq9xxqv_fph7JEDFYQgh1IbjQ9e4nLS13T4eIJSYCWlnXilBGg00Ux0yUVRdATFG_Kp__cNsg-Nn7ZVs82LPIYWeqqkWrin7Omwcr6dBEOfGNW6ZvDMq2e8_G-brufJJqsQXidj5yYp4SfX1Z28dNt1a1H-YK1Qp6TQFVTUGR3nOLHjRNft4yPdaMORcQi3iuNG8rLr8SPbFNNV3MAGr2to1ED5HCHgiHS2hATo6ZfFewOSpQ7nvN8L8BSJvhmqVs2smPwmW3BK9Q-koVEGBV_qzMDHch52iJBJO6OFuntuDUc680OnZ-Vl-ICcdpotrRxzPDgMg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzksImp0aSI6ImI1NjU5MjliLTA2MmItNGI1YS05YzMzLTUzNTQ2YzUzNTllZCIsImV4cCI6MTcwNzMxNTI3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.HExiaBXXWUz9DUkjPyNFcYPkwp1N519ItXYL6PyP98eX8mnPrTJQYBUlM68rsOK8vmG0MKT5LTwAY9HyUDZJUbZW4W3BmdbE7nYdXMHdRwlq6GsL1RUG5UZtQKo9BltAdC13VO-qab0uth7uO3I6wKIDsvqBbxq-3zDnXNqaGK7Gtdf3XSgcM01cCIQyUrLPhVP_kPzf6fdS6f7uDYLXyAuScTXQ-k5-vfyRMQT6L36Q61uJIuyLn6lUseEk_hnAmIxpG2563yMoFvVpF47SsHpaWEyUY_K1PL2CJ7zFugRV6e7nWN46Jy16JooBqFaeEH29cXm9lujJs-Ua1fdaDg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0NzksImp0aSI6IjIyMDc3NDhjLWVjZDctNDg4MS1hZjc2LTY2Y2FiNjRiMzYxMyIsImV4cCI6MTcwNzMxNTI3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.cxNNkWzcVsaIbNNizaupJF41N8uxBLKyMbzyARMqORP5_PqKh1qNBUjsssrLjV7O5SxLLGJV7JYVasjxZD1X-5Q_uRIaRUH20X1tKA1k-lqsdfkuGi3o1aThUw1-9JIDx6FgmunVLzNeVh7ZUiky6_HkVnaPRvsZIDwRt6w1oVpIPGqrB5QgKyaIMaM0yVDw0A4cNP0yb1B6jqa5SPjHsi7xCxNCCrYwqW4w6NPAjMmJomBnPiCoRTlUchJPyLFH7M6U2Fm8uPLurrP3Q6dgBKSUS8_aC7dL0dXUzSJGdCxSEmnzcwmx-dC13844PuL-W1X8nkOz_kCAhqwt4pDB4Q", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0ODAsImp0aSI6IjAyZmEwMzg2LThkOGMtNDM2My05ZjczLTE0ZTc0MzI5ZDZkOCIsImV4cCI6MTcwNzMxNTI4MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.GDFkkyS8jHrbT2JLemdgn3umt2utw9hVQvqhAqI9WG2BzP8KgMgn7TC6HTrksWtowGILNrzmwsHAPSW1fHWZrxzNUpw0ZKLKilR7IGoXMN3JZnFcg580rdKsA5oOKnQmHzdJ4cHkLSPy8qSPNJSFOg0kSG2LGkJo2AukSwa8lj76YvtT1hO4G9OevsgZU9du24_UUGDUlJFv3G7SxXeACp8bLf7NhmXVrIJ0RuyIbCiYVaVqk1UmsBZpd6hw6dm_dAC--WZMX1SHF--gz7GBhpSWMrFjgRM-Ye_mSX2BzsYrKCb3AGgyr8hFqOCgejoc3tu56SV8FQeBZK47-XzRHg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0ODAsImp0aSI6IjNjMjUxNTU4LWU3MzQtNDY1OS04ZmJkLTFhMTBlMzQ0YTNhNSIsImV4cCI6MTcwNzMxNTI4MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.RY0bQwoc-D_2VxtVezJbkHtOoU3pWeYfjGRB58lxnnY0Tw0kSFFFus6WhC9wnOwRQh02CTDTmEDL4_cDIdlG-y2RJ0cytOop57DCqljV3ZPVxv_oBQTvRAkfYAodplnKNi5CFIb3rCGR7diLwzDn3dXz4RzvoX4jeSubCek8FJhrB5Nma_PvHVNwpDYW8ZK9pM76sQZFpqTEC7HK_1Ta-VScxfHUxMW-zon_IrWmFOE7F52mtugWg5FRttibymcgSzevSmZIpX8FvRgwRTJzAVhlZAnBASwU2MY4Sv_PnRN9Aiib3aqWfdnk9e37rrfGLV0INmFEC15ZJcdAmYZ8yA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0ODAsImp0aSI6IjgzYTc0ZjJhLWYzYjQtNDUxNS1iYmU4LWRlMjUzOWY0NjA3NSIsImV4cCI6MTcwNzMxNTI4MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.ukHXQIw2ItTHuVQxIWbZO14Xe66O9-qFhSQaAIl9ndTzJHqPKVcOFYU4Nk00Ct2Rwn859Hr8vnFxFQGPdrjCHv4kACUgL0sayVlVX82lGn0dTmdqdcaN_RRY_naOzJrsVRxeRNe8-Wp3WgTJfE1syyGgczH4X9LL6_qRO1nFvT8bk2-a0En7Z1N6oGNXVQW2yeSLxum9mC-FCOWC65WliSlaMYzhuDa_KCp11jiCgQvMbikqU_GmsSbK8Q5MC5qIz4J31fOvmweNJ5rYHOU8jc9uAloTqfP0MnNDLP6D4yCTIcDQrk7FqnEPoUvO12Y2qInbwYWHBUZM-G3yfm0BPQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0ODAsImp0aSI6IjBlYmEyMTNmLTA1OGQtNDNlMy1hMWNmLWQzZGEzMzdiZGFhZSIsImV4cCI6MTcwNzMxNTI4MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.GnG7MSak-Iud61dmfrZl3K8J1Zlj50jengJDaiin3DwDVc1QOAXl5qnvJ2VPNyCAX5pZDxiCFN-NheZTfYQn8yGHdK7BDSQkEDrQIAzknsfcs8nuQJZvCZH6ui3iwZ7nzvW9lp3RYK9G0I8bCiL8pEYEQhnUuUa1-Unt_y0JbdpBe_AHvGlWzQ-Xm8kDp4fGda9rDxAutyAHZGlguy4eush8kr0DOR5jlVwXUl-5El3mWF6wEUUns9WFoU4Rw_gUd0XU4luhHQiEsLkX58DsdY-4HKBuzKjWJ4jPPE4LySXqkZsR6SNqlOZbEQPigyhQdbHW-SkznZfx5foSaqnMfw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA0OTcsImp0aSI6ImIyNGFmOWRmLTFhMmUtNDc4Ni1hZTIwLWQyM2Y3ZDQwNTVmOCIsImV4cCI6MTcwNzMxNTI5NywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.IOjStNWPJ7AWoGK_zj_7Iugg_J0oJ1hyR2GUPjdac7xWxphBYMOyKQXNPPuMc792HArwZBRgBQ4lZ5qyJYupMa5K-Hgpxm42LM55vKZyN_LXKKHoPNlIXtNBE-t3Or1c6NsnKmPX587Waf29wTtlt1TCJ8Mo4s62rSnXZbCEzyMdD6pbzmJFB3xfHu1o4LcmW2yxagsTHCc03DAHUCJOTJM690guhQUZPGZrQ5gKvvTuIfK6xnGnlS9JUKnZ_n-wQUm_k2qSH16vg9rC1PODJGEmTA5X3an-na3-V_L-bYTt_Avxwkovh3Kv_fe0Z7d1DOO0ZEf0U6Pmqh6bd6Sy-w", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1MTMsImp0aSI6IjQzYzM3MDRmLWE5NWItNDMzMi1hNDViLWE3NDE1ODgxNGNlYyIsImV4cCI6MTcwNzMxNTMxMywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.lnQIvXz-wiJizmSwvfhw_3Hxro6LToKOhMBLpVxTvXfqkT-NWOzAITEYw26tcUFQ9qI3dcpf-wnzYmal3CxTBC6zHZ2PYkap7erHyVQVp1u4LB7gMoWkU4XKW10imepRBh4yncLvvsf5BPm3HdFWQ_FeHJuEuNfgG6fH06pGdamKRaP9fXA7vWoMySqsqOI6u4TWR1EHLMhyMlp0Q7M059omKw92YFP8DfSnlFMmk5VHToxOT0_Q8GCSM0k7x8s0GalowA9tibNVjfjFWYQGfpaij8VuFjFQRtEdP7h4dA031S_SLhZ5ePEpSGtsNR6ffF8JlIyh3yQWy3Wdm8-HsQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1MjksImp0aSI6ImQ2ZTI0NTAwLWJhZmEtNDk1MS04NWM0LTI2MDFkNDVmZDg4YyIsImV4cCI6MTcwNzMxNTMyOSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.I6xKQh3yTiYDV2blmHOE2K4PAayr2kOzzAY2mZbj8IS6uGV3y4df2bLZ8v9T2pOSHWAG_7gAGTU_2p9r0dXjeJA--pnzn6UCjuT_qMzTMPYSBQDh8ODdyNMRoSgXcgd7HbQks1uup9iGqRvHfkEmDxhqc-bE0rIThCfjC8PIz2KWm-xBWxcxBeR-AcQP-D_N95pjw09KKLFy491R0CkfbZxWaPsjCGsc4eOzPFyu8nV9jePe0FXvtRy9pZEhRT7Q7V10SxILYSPDOu6Ch0HgY7kAHkS-nXU5rt0PEV5y12Wfma4ZfdgyuzbIzsNTvJdXp2ObFZLf4U8fKD-mWMMH7Q", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1NDQsImp0aSI6IjllZTMyMTM1LTE1MjAtNDU2OC1iMmM3LWYyMDk3ZTRkNGMzYSIsImV4cCI6MTcwNzMxNTM0NCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.vdNNtUt78Ks1zElDTVbJg8wXTRDJ8_ZK5IvOpTvQJ43XIt0j42_dAYVmjsP-Lca_oUOUghHYwTqqRONs0c3oKYIQZkQltSyTFnfx4DnJTvaJ9QYwHoTXJFFCNjemDOeEmqh_-NdAUBn4WZl-vWNQLwJMaIt8zRhQSl_O4AtEyfmH8XDrn37tV_S0G0r-hKGXCR4bZ4Sm3WYiSRaNB_OvxFHeYc1JVOpuA1r0NW-y_ELTs9luTMlQM7E9qvEE0ZSTOSAnpPWToqsSsFcdM45AWGrcPbb_LBQO1olNnebCt79FECAcX7fNzhbkoXMqHgrJEBfnD1rkWkwv9DXkRzXu3g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1NjAsImp0aSI6ImRiMTYzZTE0LTIyM2UtNGQ2OC04NmE4LWMzZDUwNzExZDJiNyIsImV4cCI6MTcwNzMxNTM2MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.2fuOGDwn8JBRrUqRf7nLLTMxv40Ca1SgFEqZvVJ5nj5QYlitrhtr7AaEA9reX5HKnxyDZMVGMu3bRDHQB57aYhpCfiYodMMQ3XvRPHC1zTzz-DhRPhSeNUtu_Z-aPwd6yb5EQsCy3_BzV5YEPkMCHbBOvZFWdpT4eaQu7E9ZrRgYQUHPFfd3AkonWark6MIQl_pnquSIm1_M5eJnk10mJ25goyjCYNzfd4Wz8l61vp1PitBFanaCauinndAHf81IBZkXdOyMk8D5q8CfyTmHTxQ-W_zWSjWzupL37ZkUfrjoCyNG3yXnu7b37UgLLWtzZPVRLlFrpOhKerWB7HpW7g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1NzUsImp0aSI6ImQxY2VmOWRlLWExNzMtNDUyNy04NTAxLThjMWEyMjQ0YTllZCIsImV4cCI6MTcwNzMxNTM3NSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.RYSz5qsMsz8fonCaAC5MD_9Jdww68r4bZqo_se1kQ27nYwK61KGBugRHeIkJ28tZRgZdHBc7eo9cYQ1OZYdCi3lgX-WMZaefftpkOkpBsVdpKiRxjVoB2yd9591uDP56FKoLoVgCnyNPHOZCxNFNEg8tQPN955I-plCbtU-RDoc-3mmIwOnA_GXlEiFEKbNGv1AshfQUFcexWbzjPWPaLdrFcXmBvVTUMLPEE9JzReoIPEorfCZyhCKd8oKAPVniMrDC4myamlvgAFJ36HVxABHxqM0mb4IDs5KPDKdr4uCotlSCW094sCVXTPsj69RSBcBB55ffEpRT1B2JbI3IxQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1NzYsImp0aSI6Ijc1YmQ0ZjMxLTE3YjUtNDdjNC1hZGMxLTA3ODFkZWY2NDIzMiIsImV4cCI6MTcwNzMxNTM3NiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.1z7_c1qcNBwY4YRnp3wSIxtSrghtqSisBZ2mgLvUAl81ttvXkp83uY4pIClxnT7nMbc0t3dleAlsqknEuSsp_q5aEIpvER6C1cQDjYjFFPVqVjFUt-QEKBXKMdfIw0cSr2GIA-Q6b5erUJsfbwkR7d0XO8_er1PNwVh-Lni5goVqkG2ZJoxp2fDgoLb0iWxMTQgnNgaz-Iy_YA3lxVsImTh_uFnOO0g06RVh59AJ-VloBG6dzoKoYflW8wzMyMavaSsDQaycR6JKFeRfEWVGORdtzLwm44g32KGpL99qozP8LIEnaXhenYYJztEm-RHSCt1GK4ij4y0WtG1ISZrspg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1NzYsImp0aSI6Ijg2YjIxYzg3LWY3NWMtNDgxNC04Nzc0LTJlMDYwOTE1MDYxNyIsImV4cCI6MTcwNzMxNTM3NiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.BsMz74OCojhkLeMD03oC91_bzSEgYjVZQi-KYXRWOXLqz4nyM7j7cSnhoK7q-WA60vzpkg5EaA1NktXCL_dOd7Gr3p7lbzuyfoXKZIiGgmSbGPRN63HauJnnbFS9Ef1wooN8XeVfjYCqPS_cG7FvtkO3UMCLkPiADdSHW8LhifO_KGzqUZ2Fmv1PqAnSbZENHBbyrkcHluRwEM9X2jWSQHgP2pWGI2V92tVfeHi35OSrPCRYgEN4mIwBjNZgfQL1gB_NxhHqYBODQDNmHEWGRSWBukCg2A9taPbhZc8jHB4_GBNynOaJCtTkjQSFhqyJ9xQAWpfI5Il3xSuQS4O55w", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1ODAsImp0aSI6ImNjMzM4NTYwLTBkZWQtNGYwNC04ZDdkLWNkNDIxZmFlOTliNSIsImV4cCI6MTcwNzMxNTM4MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.oty5bhfheByu8aDIUfYkAs-aKMGEImILTZvyRySeguLXJm34L4RNDnar_a93_PQ_PjTkABpD3QSkVN3P-OryuiLAGfcFVsrw1K51rTv8aPaDlM1hwsbkpBibJr9GXkNo3jShcRi7r1kM4Y-aOSuAiWFaT3UWpdMmRzf0tkZd1nWQ-o7pq6vA_xCBv2ScMZAEXu1lSvkeqMpF_L2UmzzbrOWZ7LCOwJCeaAcoiXKlBCVd4Ng52qSBVqUFQmxUz44-WOSrvurvz5VtpG0Vv7DqOGdXZMBRY1DlakggdDH2tBtGp_ydYyIz7VKL_UEnxJTkpviEodxKcvpLPInz0nusGg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1ODMsImp0aSI6Ijc1MzJmODQwLWVmYTgtNGVlZi04NWJiLTQwN2QzYzAyNjMxOSIsImV4cCI6MTcwNzMxNTM4MywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.J657wkhzANcJyfOh8MjdWK0QKeJuUOwfRZwEJVu_AUzT7WT9g4TlDwkiWNI0QAv-SfjN2DeixZ7lop_8Spa2a6J4ISoZKMBmEoedz70b5sO9u7N65nN24F3W1jBI8lr-Nd09kuLAc2guhjfZiCs_o1C8b4Jo3rBzuVoi9cdnhSanb1CmUKfGfvOqhBRhenAO5Oe02Tt8GWmAqE_MImmevKP3ArFIX06rgVfwbVEEkpDiIBFvV8T6hXARCc3QIlz2IJWJWhc330Nh4i2Dfq0RuztLnnuVQqPLZ6zsWuqHb6Ey4uKQWajsf0w3k9nnqc5pMnBZFqWOccxSzVlXZwqpHA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1ODcsImp0aSI6ImY3NDlkYmJkLTcxM2MtNGNkNC1iZTk1LWQyZTNhN2U4MTE0OCIsImV4cCI6MTcwNzMxNTM4NywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.lfiXelqRpK_89w0k7eExnCO42EF49YihnwqmodVHFq73JuAp1CRIa9x3sKJ_kSQmWOHaPJN0P53pZARKWQenndBFudM6P73PJojz7VexG_Cm8Ly5hHcbZA5lcgf46tmGBMzCFds2e7LpOk_tffpxwcN8Es3_tVQi9WAvPkN2QHQWjmpPthQvdH_k8yBl05ZtK8QDbeSQzOUT3CS4jD8CazPuHW2wmB9r6lXbPu1mn2uOFdvaHWCRvdeq31dFNTi4W5LWJuYyBkQJfllYt89idTU8UQbqqk9asLYg9E15MmNYvbIzi1utjaxZ1_hpim8xoeXN5na2MkRgj896rv2-2w", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTAsImp0aSI6Ijk0MWQ4MGMyLWJhMWQtNDljYy1iYzNiLWNmMTkyYWYxMzJiNyIsImV4cCI6MTcwNzMxNTM5MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.NrcT26CRegbQvKqJufVD6dWUBDXMtA_SGAznrp0-4iFqfzKVktcc8tk8be5I6Z2X89jhU3AnvtyksGGwSI34M8a2cxhTdYw4xQzKKkRhq53MBn0uA8Taw4wyj1JizfNMNjoVJkhBSfQ5y7rJXUD8rErYKNpu1K7qx_K4mGkByb8lFFI8uohYK_ZPQ5ch-Xrms7DEXR0BSPRAAmkBPo1yjb-N9TP6KL5509MVYIDw66hnXAMroQL35gTgO_xqhc7ooykp1tGLuOYCF5R4ZwrYTnNh_0KaHVVgI83HAUbl3WqbJJjNngTqSNR8_gdYnn-oU9IPR8V-Tuas7DJIyZUP2A", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTQsImp0aSI6ImU3NTYwODBlLTgzODMtNGQwNS04NTA1LThmNzhhMzY3NjE4MCIsImV4cCI6MTcwNzMxNTM5NCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.Q4ca9_svEj4kUtykwJTEq8Txu2sv2hDxN8jSD4gTELuo1ZEDcLxOaWZZKX6ow17MlL2YHVp61WlOeBmYtderGog68GOmLovZDNSYfwWuyQ0nPs8L3OJAiq_mz6UOvD2RZBQnMq0JdKb3kiEHbP9h_FjEtVc--inbNovxad7ILuf50BlUSMWFLA_szby2JvpL5VXOqE3AjqFBLMyZFg569c-ARnZA7Nk1fIPxOZLkG2TXlU05_lUeTIJa_-xAzQ2YI-ip9CBlfqJ6YXVhp2-BsUo9h9jVstr07sdyYGi6_g9mxM7xkG8zby8sIQ1HqPtiHxTU4fkXlU5VrpKGB-MDyQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTQsImp0aSI6IjhkMzQxM2Y2LThlOGItNDdjNC04ZmQ3LTVlYjNiY2ViYjNlZCIsImV4cCI6MTcwNzMxNTM5NCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.S_r6D8GSgVrt21UVZQGYKXJ1-IeS7X_WZ9p95U0fb4wrO0leWAAPP1Z63JXJAvxNkxJ71aSK5wXqzqSWwJ6-J2JPUMRq6mIsx8oCMeVF8iQh6gNJUX_JaQvi0waGonBmL_N740s7Gv_xUTcV1E6Bba4qhVKDnO7URwGiiTHnkxvTYYN7LSQFsdCh8NnF8P3yaqKJWb2DT525OlP4Z8Mn5QiG0JdzaoShbUIwuQXT4yeCn-86y7kMKsorqkRLhMmqMTQ9IVgDD2yetuXfBKhBte42gXl4Yfqyor0BvdmAkGHkctVHOf8ML_8acwqsIVGNcorri7uFbXbvnwZ0KHINCQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTQsImp0aSI6IjhhNDNmMDk1LTRkY2EtNDcyYi1iMDM5LWRjNmQ3NjI3MTgxZSIsImV4cCI6MTcwNzMxNTM5NCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.pYJDgHXiAOMp9umQRbcLD_N5FmGifMsC8CgYFik-De0Ny__4GOK67fSHqG3Fv111cVcmVW5gL0mEKXyyoxIAi-k6ErlUSlG5rGacxoehXtLJYKA_Ke58iAnbWkBmh5BhS7fUXWff4TJsYBsxF12vNcECaQLhGKadUvVQMlTa1_CyQt93i3oXl3mFmDH6oKyL0McckEYqpiPdT_isVYTYJvtH0pE-fm0YjlWXwdoSt3DgxHihRaVaGNHsw1FmVDcnXjK04I4judruqbdItgCItTXHAQOsIzYUFBo6j5_WXFlHbXCNxrNsL1xh5ZaIEj7EnM_Xt_n9qg3Orp1SMJwemw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTQsImp0aSI6IjU3ZDIwZDg4LWJmYTktNDI2Ny1hOTNkLWU4MTg3MWNmMmUxMyIsImV4cCI6MTcwNzMxNTM5NCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.NnzSFyw41x5FKnGFNBt3H1ppR-gPjBpeRZ9nAynL64hasOFCgoRIUWHftZpC-62H-9p0r1HrZ_8PjjjBh0l3A5Ga2ZprlxqVnQEgeDRKT4DiapAuQZT-omqZn_CiF4yR42gP4B4TbA-iQAL4QLLIsOKS6md4OywklM9tMRxvqIP-ObVfm_FOpdPqGRl5o5RC1FJIP8e7iAYPguUXHTYxgpm0ST5L6KmvoDgLdryEF3o0qFIK1_5_MV-I7fvfMGP2Nvmpe5c8mWuf7-uu4f6WzX-zBcKXpDAXjiP9zwIKaOgirX98LtSWB-IRofRNRMX2AX5cC2KNhAAQcEDgsHGLHA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTUsImp0aSI6ImRkNzkwMmIwLTY4M2QtNGQ3Yy05ZWFkLWEyZTc0NTEzYjU1OCIsImV4cCI6MTcwNzMxNTM5NSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.bZr0oOvnjq7SK7vDtTaN89UmA8QzaWd9CIq3G6F_yuaj4eRWg8bOOJ7pH6PUpgOrRH8WXE6VDJGcx7eYC3O1QGajxHBGxOgE_46UmuljDxWSTu86mD3sg3k173GLQjTTa2fYnP7RYZ8NbF3bdjHjq6kYIjRzt7GrEIkoRN-8OKTQqt7zh2ARfTT08IkwZy2bREhrFAZOFhW0nX_qbVWVOCcFC5ieAnYushh5CZHH09d-jch_yKJnWzpb2COYPK5iXCkjNfe14IyBgvMRKa6It4h1ZEAPOVIjwaiW0XRYmKi1xbDhg8BEuh7li7cWpPffL3wflIBeQed30moKHIhg2w", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTUsImp0aSI6ImVlMzhkMDAwLWJlM2QtNGEzZC04ODliLThjNjFlNmI2ZTUxYyIsImV4cCI6MTcwNzMxNTM5NSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.sBiJvl4cdh1tSNRAfEYvD6OSZqSeEvAKMsCVBxDEwBX6qWe6eF-wHm7Fh8qKpVQ51z_dbpFwrs9Bgn5jUYJHYr3pYU-BnI1MfyZvzFHO_ONUCGQ5vEv9qaglAd_hYHSg9MpxYZgO5pKZEswY-xAfQTYTJzSCgNYWBmS3JcTwUASdC57fa8GOGjfwwOhGgyMe6QAKUTeLmGflc3YJs03M5lbNnezRPzxaNi860Rm2cautWzsUOEhw_CQm3PtDR0rNqs_ttobKi7tkmxMLNMBFH8Gobd3bz3aFFepAwF_Jyw-779gw49aprt5YDFN5hHZSXFf-QXKUkWiQiC83QeXa_A", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTUsImp0aSI6IjVjMDkxYjdhLTAxZGMtNDNkYy1hODgzLWFjYTk1OWMzMjJjYSIsImV4cCI6MTcwNzMxNTM5NSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.sf3nqlT6c-ebFJv1i1rQup0QYBeo9h-m9zRolGDp3xta5IAxD_J4k4SVd383duIMtOZ-rdqYKSNqAVMjyXITS4ueGlfEkCjzovrsi7HkkxCxsU6xi6KsfOWYTwYuf1AsZsS7YQ_eO4pX1Bh4FhSLHPSgXpo5tU8YmSVwaW8H8IBn3TzE_oR8CB3id3zj5g-31qm_rtTOaFrIs93H2he2HeMnkEM9p2fD8ouIfFie68UXfQB28umaubsxQG5T3YM7VcXiZWmHnfU7J3vtI7zNcsbiaS-NIOCUD_AlaR-GbuoIeu9AZwRyRSWEImKYuRwe6Gvi5tz9Wrnh24zydnRX4A", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTUsImp0aSI6ImEyOGQ4YjJhLTM4ZTItNDFiNi1iMzQwLTZiNWNhYzdkYWVmYyIsImV4cCI6MTcwNzMxNTM5NSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.jYfB6Nqq8O3hXSNtJU-N262OAuRs41L_EdvynrdcmKji0Xzpj9ikxFoi3_KbeRLWLzpGxdRjOXL-KyTco2fsrrSZCPQsGrJaugCb2unQ1421J9e8XY4QkHYyJknCLFyP3EEt4J_OiFkVCa8NXcOCg7wrY0-Ux3aL3raX_bToGvJ6rXYg6iw--OamO2p2DzoV4LpfsoNxzuQvNSet6OPfUWYawoieYuW9Xue29EJfoNNUJ6qr6Qb7mYj69OpNTPOtVp2ka3mE09Inkf9cQWGgdJveqdJikb8bLR6ZBeZaPvGiawMfGSFixNyzkUEuX-H9lf-jHlvTZWNj19Sj0MULIQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA1OTYsImp0aSI6IjZlY2RmYTIxLTllYTEtNDhhNy05MDUzLWQ4ZDBlNjRjMzI3ZiIsImV4cCI6MTcwNzMxNTM5NiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.xHTftBFqWV5mK_hRruA-F1Ya-VsW9Oy2_DDbPMWbTeXvH64j8IBs4vZzTmG7waTSRY-tC2Es7dreclIdYGhaQCnIH_ovdVMpIS-7KGco2aM3c8_z8qUeEIQTF-dQ5oMOVdO_mpqX0ieoklKNRjmHUXs186khuPHtDcY20iC8v8pAieaAYzD91UovGYYlDFdVnuq1vOWBJNDoBNU15CF7-FCdsfaS0_FY-dvkmbpnmwopje3J5F0qzMBI85JRyx1ZJTbD8h9v66WV-lAQuEzg1HCARKVSjzw-Bo1XVLi1v7vSR6X9Jt_W_i2vEe1c2DjHYV069dpjIzerWLbwYN6rMw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA3MTEsImp0aSI6IjMyNjA2MzI4LWUwNDMtNGEwYi04MmY3LWFjYjE1Njk5YWRiYSIsImV4cCI6MTcwNzMxNTUxMSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.HOpvJO0K3rgoYAquS7vUxB47rAOyvk5ohDWUsWdEl1Ug40lOkkiHJcZOgfV12V-TxNfSmbrftmkIkqhk8Wi1j7JuTYYn5D2vHzr0Ei72gcIcweP19op577XfCG6sRNmFzNLm7SGdKKkissg5NytzV0W5B0km3TYs7JUoUHhOhjGbonMiRgTt6OSotvwy98UGS_Hf9T2ibT60eWR1Z8dsA1WfmdXhRXy_6Seonx9Q0zJIPiNLWKIoDXfmXg_VFn5LbpBsRsmbCPDRVy_uLJnm73HJKC83PC0U8kDon4GtS_pcbRwlXr3lMn3wLTArzZgEvBOWyiS3ZUHtawWWTBJTZA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA3MTQsImp0aSI6ImJlMzEwZTI1LTllZjEtNDI3OS1hMDg4LTdmMTVkYjIwNDcxNCIsImV4cCI6MTcwNzMxNTUxNCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.tj4NvMpxSLZHu8d3c6DD5ybi6PFDTgZ66W4ob9T6ad7m60tQ_VB6ak1I0vZTlMLnqLi1hxbFQV4GApKdIwwAlOtJOae83isMui6g8BLXJLVVUkJMm8GteL1eQHmRBaR_9g7-57XetXYH5sdHy6F9n3vtMK5ZcQhWqGGHRa6HmE9GfyHItLZ31fqiQkvY6QvBJKTB6L8BMo9T7TGQTUf6GK-pTKgAAQFgb6usr-5vWC9yDrezRk7_iNCLpdn7aRyVBB8TPeLAHWSgCIHb9DCqymEN4cCO_ety-tmYgfiBDT6xMHVfX1SC6qUnPlIP0Skvw_7walwktgf4Uc8DDzUiOQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA3MTcsImp0aSI6Ijk3OTQxZDU4LTBkYWItNDkwMS05Nzg4LWQ3NjlmNjhhYjZmMiIsImV4cCI6MTcwNzMxNTUxNywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.fS3N-vh0skES174fjIo8J19-h4zSPbU0lHrjfuR-UmY7j8GDe50iRq1tOoG7djg2x76zVGDJlB19pG9kBSZsOhSMow5R-wVUzqmnHbt1BIr1gCkpk3f_ldPGmdhwhdKXG-EqWRFbZKvlH5ae23-tIPhD5moYF-cuzJYFdEZMCYHWn17McWnmqJ9ChFSy8dFfWlkyJOvo8fYq27zgPJbydPjQnoKDFdasDDSxQpDjaSvsj8NCQg36WKneumD6AEIIKH9mvuXHynop6QTExuCM9W9hzKxeVahrgFyuZoVytOkMWiKFLictgZctMIv0qh5kTryA47S9-YWoYMyKh75c2w", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA3MTksImp0aSI6IjdhZWQ0MTMyLTVhNmItNDczMy1iMTc0LWU1MTU5YzY1NGNmYyIsImV4cCI6MTcwNzMxNTUxOSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.0wuHyVKsXJ9e2yNLe_WI48DyH1tp9-FC8urXq-gV3uk9N0jc6bQB-c_x1VDZbsGNwvf8f2jSA5CR6apZxeozENVTHjkp2EMLMc7tdX3N4tertvPrlVXXFlKDPVusWZcKAo7Uob42M1DCTjrHDXGlJ0Mn5Dx8UhZ9c_Z1ehoh0MgM2Lkzw-uvtqoAWZvNcpPSs3rej40GuvTdzfvhymGVup98JlQGhAKtzrt-gVY_f3nwzHf9vQDYXByMRByfLqW-MgW1ERNmUi1WJDxjvIb8O4dyJbeSKfrk3d48lBHO30rhQ6hzeV48rj9qJ-iRW5qWD7TdjLehBhSNDa5z16CSCQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA3MjIsImp0aSI6ImE5ZTU2NTA4LWU1NDktNGI5ZS05MThjLWM4YzA5NmQ1NDQ0MSIsImV4cCI6MTcwNzMxNTUyMiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.vYEH1BipIUJQkaNMkWbAxDnt6Zgsrp5yKvsXsbDMhky0mNE68XAa1BJgHLjYqDFlUVMqbJBusuJ2R1a7qCyl-80gHb9rZVj0EnpSNf0RkKxP7OD4poHThiTsEKUsOQusFbzhZ_epWzF7-4Jcpwy9O_VD1CBjYmHtcDoBhRmP-r3yA4UES8MDTJrpUX-Nz8RBc7qSxDiJ63O5fKGgzJy6FFQpdPr0wKUsCBa_TZh8T8qz8a9PTbUBIbhVeBIGFaYu6JVuckiEHaJgjKNCYnVOZkT-3JsYVnwxmieVZ7XhnwySaqiqSvg43j4p3icICbF9PVMY_4vG6opZja2VXSVddQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA3NDgsImp0aSI6ImQ0M2EzZmJhLTRhODctNDVjNC1hMDdjLTUxZWViZjUwNGUzZCIsImV4cCI6MTcwNzMxNTU0OCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.Ykb8op3oH8uPQlw_H1JSd2027qCx-ircuiTu9z1WhbqkpcYdEzGugDZDlJMboSBR2iSKHaZEkU_5KmsWc7K7CHFiFU25silllJQ-mhq73slR8KakUMU-WzcbxBHq1hZf-J7PXhCVEGKOf3kJDBXG7wTjnLS-m6ZJQEY5MeAtinq2GBiurCEPtZgdb4kA3XOglSjjsElI93w3pg4EtzM9t_siF2jk1zv4ypYWCLAC-CymGzSzqzWLHwRalAgF6mdVc_ujTi3jzA87g1DAGD25sVBBi1E8v9JJ66cBZE-Og-VjIoCsv_oM-ETea-3Gz29MK3eXlI_K8tJzXo4z3_7mLA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTA4MjAsImp0aSI6ImQxYWU2MDM2LTEzYTEtNGI3YS1iZTRhLWUxOTQ3MWE3NzBkZCIsImV4cCI6MTcwNzMxNTYyMCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.xKxJaTDekZTFFvyWRmED6lQfhtzYKmBOPiwFEzFxe7HXlKz6OuKHwv9z9P5ow5D0PqyvGiSiboS66xWZsykI-A6JV5mdoy4U1q1fEMEBdOSfYcH7tMknItB8PYzZ2vaU-Hmq5nRNvkzt1WqbaHBEC5eh6mWk7X33QsZpx_4zcw_DsA4eSayvOBuDDmLoemmvf4lCarP3-LGu-8F6Htt5KxZPR4ZowSBBn38HkYm5W4ItAyZngvKV_-hI1sZ5NlyIGttwP9RPWUxbIAN9iDh_wkSreTsIE9ZjDAmsfJspVhI6VWd3FTXMJ1EKZ4cw4FarGdqaPBzG_Q85Ad6MgdRjKw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTEwOTMsImp0aSI6ImU0MWFkNjI2LWEwNmYtNGRkNC05ZDk4LWRiYmNlOTYwNjg4OSIsImV4cCI6MTcwNzMxNTg5MywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.VlY-fmwg0IRzolMFtuZFjj21hx1Ka2T7I98iYvOhJwrRjLhHBOSVOGLV4FF03nZneO8D8XSskEh7ydkOvAZzZGwer6mqGtLmaSr4m2SdO_023u4CHqsQA8KIdY7KUkflqV3YYznCLZKKS6lAAhyWIyNxSYR_qivVbqGnEYcnWqelSTvZNK2d_z3KcOwFbwW321JIgHHd0BAmht1hYuXjHqj6W1fTSqXVuhzIZjUV9B3iUhFUs5uPTP0Bp8LYvOY0vk2LBN5m5553o_bYYggRZF7aMvX8KiwZHzI-ioFtrCrO-a-cwfL_WmVq6nolzDmBBfNSA-B7e6pF_B2PAugX9g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTExMDQsImp0aSI6IjY5OWZmMGE0LWQxOWUtNDJiNS04NjBmLWY4NTBjMDAzMjZhOCIsImV4cCI6MTcwNzMxNTkwNCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.SD1suGReSgBtPKBlb3fmkE4s4OHeyTmGb8BVMEAveJKIkOwRB_AAhxS9POii2Uxj5qcpUMef4tCmesNN9ouuvz3sP_45kp_qKhlfTgjLTB6z01jXuKhrcTOQoBlClDpgb0m3-miyR84imxFR7-XmDVm5wAeSsh1oKTfkCeSwlXFs3FmZs-J7l7E8z5lTK35MWvpslf-C_tKhaulZAVJon1l8WP83TeEI2KRgik9dtMVWdl9O6tYyhYQqyO-1n_CSOZ8cNYVK0c4zpzRVt6lV5JuTxBrVi6_t0fFJe9hQ_fEODGQn9nr8CEPyt50TKuzcZAHmPMkYlRUvcyaoeR5Daw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTExNDMsImp0aSI6IjQwOGU0Zjk4LTVkYzAtNGJhYS1hNDMwLTBjYzg5ODg2MDNiMyIsImV4cCI6MTcwNzMxNTk0MywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.Yo2Wao4RpcL9a68c6GLFIRjawmOssLqfZuKwb9NByBg8lARCM6zEnGtQqvdkksPNoi3dfD-kynhymb5sQVaL5xJ1yDqgENTy7qD5EWvcc87VRsL8bbq8aBKMyJDFfxRViZct80NQ9lW5CKFqprSqcOM5JJKQBnICHkf4YDYLJT8MdosRK3AwrKN75KotFowqrOwyjvqSpaDz2BVkVvvmp9drfPbXcQrXmZtTWuBEQJooNj-dxmkapnbXvWjDeC0K8u_bb_XosHsgpWrOP4ZCRmnU9TknfyBi9-c_gRZGPV-17lqdVOfvWnVqL77Mm0nbh-hbxdk2-lU9u_AS_g-F6g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTExNjIsImp0aSI6ImIzYzFmMDU5LTEwNDMtNDMyZC05Y2U1LWY1NzljYjA3OGU2ZSIsImV4cCI6MTcwNzMxNTk2MiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.uRXWMOXqAI_gt0MQRZEyqVB-89p-fktaxAlhUHxxuxSu-MHADMlpvPDZu-nFTTCn1GsIZeYOTEi7qV9IXwZeqcPr7R1OFrY6GTQDpaawP6y1Ik1u7u2eUgyxvad6rKVjwLb9L4CBmyw3LXzqpaQR569p6VBuMmdEpu0kZ_9oIuGId7VpI8qT_zHEz_VBawbpySsgF9RTJ-NOj4lHmkuTO2Xe3FtAXEx8eEqaTasVTp3tpiotIuhMmNnD-p6Yrs5deT_zA7yKZBxXCk-UkLVyhpKE78x7MBbybhznleW3Z_EGm5w572SlxkrAS6_SXnp2vUqavNBmM17MqVdFY_EJDw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTEyMDIsImp0aSI6IjFkMTIzNjU4LTNkNjgtNGIwZS1iNTY0LWFkODgxZDUzY2JkOSIsImV4cCI6MTcwNzMxNjAwMiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.Xu-TviOOVNZ5CgG2vUk5Twmk-do6NGO-mPPmm6tGAOa6JlxccznX6eEnd9ukJcyeD7K5k50zMp6M2Tb373WrDWALSxJ2TG7xrV0RPzRC6kUjwKoCjUy-aX-JM7-ldM5m6t4eBAznxcbnTy6Lu2aP0YQoLW8-futeNvr9BYPfW2Ab9mk_N1rqbsZNCSUWl32I9oNF7EQee50Zx7QwA-d5PkWjbi9df8WUCAk5x9L9Kz0RQUuLwhs0EJjgSD5XfQogzgWcZCB_jAAyTvYGOwUbxIYvHFk3ZBUwckXg8-kic-_6U13b7bp2HS3Y_5zwQUbXdAr6PJHqPDzV4GvZNsZHJg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTEyMjgsImp0aSI6IjgyMDljNzYwLWIyNDktNGY3Yi05OGUxLTdlZjc0NWQ1YTc1NyIsImV4cCI6MTcwNzMxNjAyOCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.BxUMyMRg8IwC3yW_kwE0Kk4ms8jfD65pcR-hZKEYkLb0nIx1uhfbDPk4WXGjR0X9PvumRnoirPH6BgmRcCWXbdDBman3cENpPDDlb_wfeCkZkccLur11F_2V74Xdj9cToQzOlJdxoT20Vk8B7i7cut4Sqe46ULTYRJtjsNwoBoOw9gSBc9uFUpcOjc3jXJuNy9dN2OofAAYG8d0eVjKtAoWDcmcZ6806AfJENFPNtaYBB3Pa2T_dgG-dXJ-dOF7q8EfH8hceGViDXUNJ5TLZcvzMLli-a2NVMuP7JGQoTmO-tfPJnieanS_MRwZIX4ak_OVazEsgKN2_kR6nBA2QdQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTEzNjIsImp0aSI6IjZkODk3Yjk5LTM3MjEtNDU4OS04NTBjLTlmNTZjNTc2ZDExNyIsImV4cCI6MTcwNzMxNjE2MiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.0N8sCeqD73ZfSH1VNDoY6fodILSH0xwhQ06lnr74ofw8TOVp_Em3RfOoZtH5P6z7rA7wzs4eKtu_81O7Q_VCs-hTXdFGhMGGPPASutCp4jSOvMLFsUmwdq1-jXVTanMS1LK_5UFak_YCvuwhe_u_aDkFY_GneCAe7b6oLBZ_u4SHr3q3u2gIh1rupCjpFkCgXcqP_xNwICclLyAFS3dDktBZZoEqZfCwCMJmXehrTPD_QGxtK48AM2shJ4cehchMkkduvLqZt2jdzVsn2NueFVs4oXGa8Drwi-sKvvStV26eaOhPTFCfbRJ1CWOBroY90cx-bi_aQQiWtHGLE5Rjow", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTEzODksImp0aSI6IjRmNDAwNmJkLWVmNTMtNGJjYS1iM2M3LWQwYzc3NjZmNDBjZSIsImV4cCI6MTcwNzMxNjE4OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.pHAtxXAP6gaYlH-2sX_qm6jUveHHRaSva1QdNTQV3BEhFQYCW21PYx12Ppls7YZbijK5vOIS8vr2Uhe4-HqnsbTfCxaxk_R1R32oGawAAh6EHnMm1JgXHNWVyywxS2y_CexQ_AIuqUsqCptL6L4W2kdSTr_Yc6mNe6ckIeeraZ3_oRWf57QKUqI-rOio1cGgyczdHYah09zm8bxef1f9PEC786Faa_BS_v9-J9dJGrYF5Hao-seSw6v7uAjMDnA7u6Ebq9LCmn6h5ZkUQkEHd8G382VlACji0RIAt98Woto3yQURVfhsaen4VQTMULZZ0k6lT2gMp4fTGSmwDqVBTg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTE3MDcsImp0aSI6IjYyYTVjNTZlLTNjMjktNGYyZi1hNGFiLTJhMmMzZmFmMDFkZSIsImV4cCI6MTcwNzMxNjUwNywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.NoPkh403LYeWtRb4N0EXoStuCAD2xcsS7gtj1_Kicv-0nOa3LpGTawyFMUyQMVF0z-mdjI5Cad1ccOKps84cQ5ODBAqI8l_kxNwDPu5U5huugEWGCrO25du6cjevP6d0Uth6-acK0QCK_OcxlEevT8PDTg9muYxqU2aZpZNiYJlAhG7kEe_h2cRfLdIHSj-5R6K7AtIEmaKc9pcU0LSE5gFQs4UdYKNhNFSFs-x2VOL4eJK5tQFamJ_YUu4DHRDYZuwnCvKlAjVaI4Th_TzNmyBt50GIRHfI9gp8vAEisQq3Ek1PfQA3idpf1RN43gE6FRiArrlC0idZ8nnyb0oLhA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTE3MjQsImp0aSI6ImMzNzcyZTAxLTYxY2ItNGQ4OC1iOWUxLTk1YjYxNGJkN2ExZCIsImV4cCI6MTcwNzMxNjUyNCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.VGYME_BhAiInZe-ECDwVcTAyFishfdj2BOoajCu6lzywfdjiBrDFvTJUTWd-vo__VI0eCrBjCtkNTCY-1blzF4c37fYPEAAHkGjVwnMoCawUaxmsE5tlrbijvQ1wMVuKfZlOuQNiRjj1yOc1D8bQ476HJ_qPIrPxQ3aJOgA7lH0qTXfyp1KbtIRNT4eHKXec-deoaJyAsTy6GGsXq6ObKzet-hRMLdfCGd5ckTe4eGEVuvjKE5SPMqYCwOzmKllRixnbgo3BC97_i4s1Acrq3hDx-LS4Iw2wHB0jDnnZJRWj-C6-MHIJAbPZ-hGR6iJJoWM_RQuVd08oP5a_ALGexg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTE3NTAsImp0aSI6ImY1YTYyNDFiLThlM2UtNGExZC1iNTZjLWZlYWIxYmU4YjI1ZSIsImV4cCI6MTcwNzMxNjU1MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.MSEqvon11Mr7zCJdfxEIS6XiXdk2QCgxP_AqnENYKAQ-2hdlxbF_uMlsACp8OclgLCq5G1MIXJ8HeB_bF3n_bUrTJ1nYw4wxy3qMeBywXCUFFtzmLMuFJBFNDoQZuI3P1ncmHuXA3XK_z5HBntv6op86Og08QFtm1BAeFB295i5Nplrf-gjHTCkNz8kmUh0FBObT8exHiC2lYKakUH-IlZHv9d_BG4EHDQ3fSSK53jNz-AI1HxE-JlNRiDt9KFbJEB7E75w90xCtMA4SiZvx_xF8Xam56CzNaSsxUG2TpGFgb7kDUDuPHZTzT_v5HX5c68g6uSgMGOPcBn0zWjTCAg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTE3OTksImp0aSI6ImQ2NTZmZTBjLTM1NjYtNDk3Ny04MjRjLTI5ZDhmMDExZTg1ZSIsImV4cCI6MTcwNzMxNjU5OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.N2E1U8kcskXwEBxAf74TaR4y7FHwWbjv-0vyp2RSIaD_YE54O4NGGQITltfwkMXvBIdnAdar9WcquiYbAat9fXFB3TJyMCSIcTgEWT0-4C915jC9WF6XziwdOd6BgPAi4vpS8MbVS7nQg2Ny730mNUhz7FpBzjwD-Q7-fyg00QuIztKIdIWD-5Ig4B3ST3bmQc0vvRB5mOMUFTDQUUusw2GHBJD3MQ1cU9Xz4T3R4O7w9KYP0CoB16ysDRHK7oj21zrvMn-WxKTSTV-493DopdFCXEFAuywX1X4U5jLHHBcWlM6sbodDovtSnO1gAH4b_0j0YFHCi7AxGb_4_eKFkQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTE4NDEsImp0aSI6IjZjYTExMTJhLTBkMmEtNDVmMS05YTNjLWNlYzdiMTczNmIyZSIsImV4cCI6MTcwNzMxNjY0MSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.pETUbwOhWGxudf5gAf_WBXJY6HRj54dPKLG-OwSNLi7Ei084dnnDLTcU2Cnu8sQ72LV9zjHgKi77Eh62OCTpdDZ_0A7duz8LpmPLGpIRPFIKfcgob-zrNCmOjuREldXUttixXJ6JoL3BGufP2qbGlQDYqjMOQ4wzWuA1fi_nbq-RxGmjac59pew8h9Loxc9BN_IVVOsv0zT39WMHQfoRin68cg-an18k8pqLT4FqXG4PszjD0cnMLuCDQfCj2lxmYpRQxENPDQewH1dJ1n5wS45OMWOYHwW6AEiAUWLhSgo2D9I8CsRqGn_-kNGvEi_pem6KQOFLCO9Oyj4uoAzhIw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItaXNzdWVyLTFAZXhhbXBsZS5jb20iLCJpYXQiOjE3MDY3MTE4OTYsImp0aSI6ImVhNzIwZDY4LWJiNjEtNDlhZC05NWE4LWUzNGI2ZjU2MDY5NSIsImV4cCI6MTcwNzMxNjY5NiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MjI5L2xvY2FsXzVhOUd6UnZCIn0.zrtRryR_SapmEiot4MerQGkTjeaUN000bXMRnY_7LGsbWUGaFx-DTgn9vaZrNYTdCyrgQbmvi4bpicq8jd0xbMndpIfI6SHGXtwRMMxDsuCnn4WSelgExt2fnJMM0XLnTzdo9W_Jo-7WsA91Pue_Cv8wZPNfVcEiGPBir6hPKcRpvTR3A-0vNOMFZsvWEobccqhcZSFnjRbsauLODunM-dkMGvc5K2PiwtNR5OTy_EyIbirS9HTYlp67aHJUMQoHrg48v1oCGtRZpjpnIU_H3e9R_XwxTPH2udi4MizpIFndD9YWM01YpYN6V7lwjzyG9ew0rbadqjOeX2-s-gtibQ" ] }, "profile-user-verifier-1": { @@ -764,7 +831,62 @@ "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MjM5MDA0LCJqdGkiOiJlNDFmZmQ1MS01Y2YwLTQzMzMtODIzMy01NTgyM2UyYmEwZTYiLCJleHAiOjE2OTg4NDM4MDQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.QYEuKfGfRJ1DR9B1PuJclPdhoaXaXdZcOpDJ13AwAsJM71jnYqTHqnyyhGlfzrV9Dx_vaLCu7ppTFFkIZpMVRWR4udRr5Cgqx9YL0CYQwmF17FS9GMpBt1QzXTohHKj7U47bkJbErT8v9DZmd7kbV325wYTVVCwjKk2uwmUUxF5I96jENg0n-75mHiqK9FD_Y5z2h5t2mTEX5EV6WW4VLgg1GFuSeI_cR9rzotYL2HtEAw3dD6c02p3ikm5N2xj2e57PuQg2q42-2SBjlIcCFE9fyFpbaIHNbgll7_AVrR9mjN323mS8Kd99-ku4brkBvBBVrIAjgVZYlyYZbYxwGA", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MjM5MDA4LCJqdGkiOiIyMWM4YjE4Yi03MTY0LTQ2ODYtOWVlNi1kNjk5MWI1ZjIwMmQiLCJleHAiOjE2OTg4NDM4MDgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.tgJm_b3peFhunLjewALUebsKNtn2OUx0VzXPBiu60rH0cGOYPKNWW0dOUOoX0-bTnJEWxZfm7TwOg1FMHDj_AY_RPIBEuKc72tx33gIjCpsyu-kwgZVCh_5Bl69qp1vyZBOEor9QcpJLTr8lJEnaqcFscPfFMd5gR_-T3uM0fKfbu3VuizHXHUPOl4CKswSS4uI0AOfSCGE0jvTun2edAHAOxjChepjnOTdLpFr39Ot9-Rwu_sJVDGqWOBqT-RbNhij3xY2BVccplRyE3GxUAeomZEJ4co14Q4bnyc_jXM3xPLQyYeiDN2CnId_VoUrXm3OqAp5UjT48P72V-kEYNQ", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MjM5NDU3LCJqdGkiOiIwNTRlYzBmMy0yMWNjLTRmODItYTc2OS02MWU0ZGJmMjZkMTYiLCJleHAiOjE2OTg4NDQyNTcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.0hyBvESTuwTsTgd8kEvQDzOYtkU2aMb8BRXNjTZrTBMbzPr4TVjmmdPo8WgNAboqzwnszkUNKz7UiMVB_5x81I0fCxNB9TO-G3z5dKzrLUo50YQrGv7ORF6FVMHKGGZpNkytwWopLRsqBru69rgnueOaL2S7hms9LN6Jr3ttaPklHPsntRLw0n95cX7QniHfI7zfadfI2u7JAMUVCala6yxgn65CtGdA4_Vn-RqUL_XCPHC97I4GqEralY6QM6LT6y3tTOFMQg8eJj9EwqL-h3M3_RNQuCMB4CqP5HH1zYAdrjYZm_egLH_gekrH_Slis10R-W5Cg7yYO_T52w5DGA", - "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MzExNjc5LCJqdGkiOiJlODQxZjk0YS00MzMwLTQ2ZmUtYWM3Zi1mZWM1MjVmODk3M2EiLCJleHAiOjE2OTg5MTY0NzksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.zPP3nOLilXVpndY6CsrVda6bAOkuKOuVSK3l3cqqs42AaM08Wx6cJeZNKAIJ3iDIdQJ3k0yXuG_A4utegRC7_SmYMiYKGB7l-wxfQiqAHtCidBHf_8bxxXjxUqc6-NEtSiWjKEjgk9JI7JxH3G9eij6zsiMp_6SsoRjcotUpB9ChZ9frPjFZaKT9kpUDcMN0cVo2jFl5Sw20gvEPGfflS8eih23g4VkA9G-C5gb6TVBbAoqzjrT-51lE4fARGHkGI0Kr7QGCiupExQb79ptvHTNliIxWn4cvSzw36-yBOxOH82vlkFlqHK6mQePowrQ29wR1IdR4mJDfJL3nL9nwEA" + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MzExNjc5LCJqdGkiOiJlODQxZjk0YS00MzMwLTQ2ZmUtYWM3Zi1mZWM1MjVmODk3M2EiLCJleHAiOjE2OTg5MTY0NzksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.zPP3nOLilXVpndY6CsrVda6bAOkuKOuVSK3l3cqqs42AaM08Wx6cJeZNKAIJ3iDIdQJ3k0yXuG_A4utegRC7_SmYMiYKGB7l-wxfQiqAHtCidBHf_8bxxXjxUqc6-NEtSiWjKEjgk9JI7JxH3G9eij6zsiMp_6SsoRjcotUpB9ChZ9frPjFZaKT9kpUDcMN0cVo2jFl5Sw20gvEPGfflS8eih23g4VkA9G-C5gb6TVBbAoqzjrT-51lE4fARGHkGI0Kr7QGCiupExQb79ptvHTNliIxWn4cvSzw36-yBOxOH82vlkFlqHK6mQePowrQ29wR1IdR4mJDfJL3nL9nwEA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDUyLCJqdGkiOiJhZWEyMjM0ZS1hMmRhLTRjODItYWRkNC0zYTJhMmRkYmI2ZTMiLCJleHAiOjE3MDczMTUyNTIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.W1YQZrOAvGMT4y5BaYW4RSV-8Q6uSzW78JbIqsDyBt0ABApuVvP2kyB7VBBvyiD7SOzGW_3IRZYsbixYsB-gpEL2TnYzUPJkqXwnrZK5s2s1JLX0BuEuXyVs1QYfjJuhkxmxIEgKZ8zBqhvIlUtVtcNfXEe3OpFLM7GQvMG2TNsgeTs44fLrBMP1zwohwuzTYRVP3rLf7iRt8KRSMjr4lGUTpizO4y-jBrg1WxMdevhOCBtpql4RymnLYYSyXcp6OJN9Q-ctoYoQ9j3o2l_2j6UeX1_b0Tckj5kd94_jXDwbJuLT78lREKSb9C346DiVWAa7p6IbqqKDTAy4c0gV-Q", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDU1LCJqdGkiOiI3ZmI3OTg2YS0zYjE0LTRlYTctYTBhZi01MmI0YmQ2ZmI0ZjgiLCJleHAiOjE3MDczMTUyNTUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.KSpc5JgjJ4miVs9y0YOmhrpEdl6u5zXhHI90YyMrRmFz00V2-plyouThhA5DbTJTfUn8AqImzl2xKTkt5qcKWiON69-OlU4aoETSNJGelkXRD10Pe-jSEbmRwN9J_4cqhi_AWEpMPFmoGwp6xbe0lPVD6Bmg0-vlYdlX96kTSTaFffvHi2Kh_UUl9pvZwqZJH26aXnpUVtx6GpJP8lIiceV-8CB_Vc035vi2Bi8lMjiI7EEWpTyAuOsu18YoUi8SjNYFYfza0PQouN5yWa_rjsRGpaV-wCMjhgCy48TcVqPtkknQ_drmYfN41obecZ8h8fF1Nj46INS0rrltQ0jIWg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDU4LCJqdGkiOiIxZmI2NDJiNC04YmUxLTQzZDktOGUyZi00MTEwNWVlYzViNmIiLCJleHAiOjE3MDczMTUyNTgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.wfgHSc9gAlAQIYNrE27XOY96HwfanmVT_PNBoC_XKLvBnaJasNeW9rrek9gtNarEQN39VnVfaoGCda2OKct_lnnKpFObndGs0pz1bKTrenJlEGnTNBBzSEOY3Q-7P6I4Dun3ljbwgC8514jbTq7citWxRoXO5m151x0-fHCQHXtsiZb2HPTrrm_0g5J6Ul07jD7IToGIGtHDmX8gnSrc22VlMAo40FuzXLRW_AuYnjbjNRJ9QXP8vatx4N9Jm_R4i4brkv3RgCEaHBXOgFcr4GLTG-YdyNy3LJ2PVn8s73DkQfq2sjVAmmcc8DE9DPubhFQH1CNWkZQ9ejvyw5VPOg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDYxLCJqdGkiOiJiYWU1NDg1OC01MmJmLTQwNjEtODA4OS02NzhiMDAyZmNiNWIiLCJleHAiOjE3MDczMTUyNjEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.e6HPJRna3p4iM632GNtrmThQkD1elqiqB_wpenLpsiIReuTX17iL39KzCREIkL4Toct_Suzvkzsn3Zw_qmlummdtlTsHTdyXkz2IzxPfWaLmCvWOT8IgKrQqPGQgbKHbQG1qmZnVQGP_MEndjrSBP7CU55k0qy6fMloxgZrlsClPwbVAUCiRLgbuT5qSHI6wZ5sZnQLcvtfk4ZI2mQkE5nG_vRvxm-BUuRxrlF7iLtehznyVcMh-D6nktvE2uvJJR4nHONPluH4_ch7mrgUAZesKjSkSM_2j_Maonig9foufvatopXUh0YOsKlMGurddP7P2-hI8P7p0eJCRh_KYZA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDY0LCJqdGkiOiJjMjgyZDQzYi0zOTc0LTQ1NmUtOWJjYS1iOGU1Nzk3YTViOWMiLCJleHAiOjE3MDczMTUyNjQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.UtAsj4-ggnQK_1vE0QePJRFNttJTp88BKcRruhlBqSmm8KWgs1ZJEt78Y3qVzAjBSHTd3toJZv3PyAVh6q2hGFC-f0gPv0kaik2UpDICk26UPEdMxprCuIrk89mRuX86WwY900trrOaykrRHep_gPSYxyPuo7R9dcjx1vlBQlwDsDafo4tT8GBbshDfq5MMjRwA7Xx94DoG9n56zGMJ44gX0c7Fnkctio4Yef2cKMqJL9OO2xcyVoovAiVTbNJQqqT0TouPz2raFyfVZ2A_wuT17am7wQXM5cGVDk7ym31fRFq4fp9Gxnj9Gh8kKYtFarMUQuegARwjzjwSgw9xXtg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDY3LCJqdGkiOiJkMTgxZDBmMC04MmYzLTRlOTItOTA2ZS04MzAyNDFkYTRiZWUiLCJleHAiOjE3MDczMTUyNjcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.rHVoorEAypPmyLFlnYDVxCrL3cHmZUPy-Q7vjWw4KRpihdqKw5BFU2X1_fAb0AGpJXDYX0sB_SGADyPLnNvdubn3Cl3heeKIV2S85DWQ_daEtO9ITl9tz0KzKLCdWPDwvNEQMPbZ_SBVhPUXQcNY1fRQ6-BED9w0GugZeGHdiEF138zdMnTRWrNuj-mahRSJpaF-px3d5tGZx4QYJGw2At4R-y5aXx-V4uFargLJgBzVB9uq20Phtmg_FqUWQGwHWOtUhIdvb2IglteRX36SabGAU2WoXusxrfoR93qFxX4evHLLkBhfA4Wr2cIWmGmrX1UP536mqVuv2fmc22Cvng", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDY3LCJqdGkiOiJkMmJlZTU5Yy1jNWIwLTQ5NzgtYWNiMi1iZjRkNTk3NjUzN2IiLCJleHAiOjE3MDczMTUyNjcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.rpDoXi4tFcFfDI-Cox2glioS4OcdMclxZnHgbv6KrKYBKndhbmjPTQXkYPVW3Y-uMuP0AM1itV7MO26T2JyWe8H_eVOh5OQj2EWxIoJGnQiMftib-UerXsoM16BPeVbmHOnkvgMylbGvhSgrb399mAI75hT9XPSNH7NA1q7exOSkFsOsocpmxsiugtmWUP9PreQcwcWi9qnJFQ7dJUkNp1cdBQntn4K1xoBNbkmY5rG5B01dwrVpqdoRX60rb6iRtdQJkolO5pZpKqZAVxwv8LWrm6NhZsVv7Xj7INxgFR_EIA2-xe0NUScRtadoloYLFWQe-YBaENUad50NGNE4tQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDY4LCJqdGkiOiIxMTQxNDZlNi1hNjkyLTRjZjQtOGY2YS03ZTRhZjFiOTk1OGIiLCJleHAiOjE3MDczMTUyNjgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.NCfjEZiim40hmN9o0yw6ZlULCwpYUYfpQwixA46Wt0Is3MbOVvrY70BWbZ5eh0i_bXbtdx6VJ9P5TJooy95keZTwjSWLcKD6FNScJd045HJGwdJAywRuUR0U0thTXPedCq7WZ7_ZfL3VT1WLzaPautPABkhjbCaEHOiWcK7Fr9xINyuo1u4aTanNJ5mKsFetm6Vv6yOOf3Y726W-kDLFHocV73OJGattBKCU1kg4vF735cfZv1NLOWxgAuKGSA6QPWF_tFRzQ4p1YFiQKj0_bYkRmYNiqhatDVrv5FtbVZDKaYoiOjv5slSpyoVP9Kt8vJpwLoql6zvyM7Hp8lqe9g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDY4LCJqdGkiOiI2ZjhmZDVmYS04YTdmLTQ3NGYtOWRmMy1kZWFlYzY3NTA0YzgiLCJleHAiOjE3MDczMTUyNjgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.sbumoM7l6rIadJ1hxneZOypTmugkJzfqHAxgtVFfr4uBXiTMjeo7n9OnAaZaxO_3t6njs_jrKJ9DPlPQJEI9fQh8ldou8voY3eW_t4SFir92Kuy00Dgp5l38q8wqkI_cmN3O591Me1DZwOJfZpVerKYy5VRtXCvAwBi7Puies7_eXWcXCQhh6ArL5ZgnYLxmZkRrE_VOJPFHIBdCUl2ysAb4Mj7x8Y8eDrbN1LDl15NDScPprzktUJKBWU-LAULLQLPuERaNSlbzSXSIIvNqC_wV7KVV2eKcH9d_aFTdgZ4YSIwbUaO_OXuHDI6t1wkofb6lpKZIZePUaRKH0ZlbqQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDY4LCJqdGkiOiI2NGJjZDNjYS05OGFhLTQ0ZGYtOTFlYy01YjJiMWI3MzU0YTUiLCJleHAiOjE3MDczMTUyNjgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.z3LecsQgxoH_TM5qTs6haonGEmTKwqRBFejYuwkHCi0TmTVoy4r7sUSuiR8eKT4fT9QrlDrX7H4esv2EXhJXUKa6VT2SstH43nf_67dlidsXZJSPmyCYC-DgPSRcsV6zwaD9bVVd39sqOvAs-JTfq_765_XiL5xGyqKazZNuvO4v-y445rOZefQ_YjVi_GFBV2FuuWb5Qo2VpAZJaKl75_Fqu-Zw8XCbvVfweP2rOZVbvPsII_HWWNquYVoAYxYTpC21EaiAatKo-KDjC_jcFGOQBPupac3hKnYj32RfO9QUj1NZ-uxqcauc4K7ZUO2RFTXxI3jpZgw5xKu9QHczoA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDY4LCJqdGkiOiJmOGVkY2M4Ny1kM2QzLTRjYzYtOWUyMS03ZDFkNGFiMzQ4NmYiLCJleHAiOjE3MDczMTUyNjgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.LEqETcjrThEZvtlJzAIKiU8mt1MgosCq0ROuAmDo47HJyWF71CMZjeRsH6yERrAOoWM1aF6JEiSthWkjoVFcB3F40cDJhDP6m4cliESU1NmAY0DdetOWKYrju8i528N3vykmFanswKpIaKm8kEDMBHDp6O9XQPsb66OQFGoPoyUjdRPO4MVr_tGzSUGFspqCdP9qVfXndW1HYpRczee-TaxRanztjMTeKAGxbhKLlPbr8MyV9H1_NCMWN_7-OLt4_C984D4FDs8q9jevXknhanmC1JZ3kkIx0YLZV8XL76c3KNor4ab2vlF6ZYBQEI9fsEiNduNRJw6aZRT4oURhzQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDcxLCJqdGkiOiI5YjFiM2ExYi1mODQwLTRmNjAtODU5MC02MTMwOTQ2MDMyNWYiLCJleHAiOjE3MDczMTUyNzEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.Wb0CjHHhH6lC1IfnU9E_ee_8hX5IhRtvGnipiThWt__BNfojkirb46ZpW-cvaK0a34aZCSXJRpIjUsMVFSy6lAwdCToOatIeCeuKwCDJc1yrWWv40Xr43w0QnBhaztf0CtVlY_IuVrSKoYV1FpRjNazL3RYt6Qh49p39u8J318PXSRoOrYtKQhmge5IxQUtkPYT8SILdP_vmlCUo2zrlUL1YLEvQA02_UxIX_AVAZnNzozO02xDBYUUR6sBf8s2cpOhNXHeGc1cePjgxwI5HMA3NZzIgJqfJMaPbEurYFRRE2uoBFh3R83WJG8ms3NY-axRh8OoAIUeNw7OfH41jQA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDc0LCJqdGkiOiJmOTE1ZDJjYi1mMzc3LTQ3NTYtODQyOS1lZTk2OWM1ZjMzNzgiLCJleHAiOjE3MDczMTUyNzQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.unnZSaGkSSaIyj7wvfIRaokxBfilkmik180jK6CC3uSu0rDPlnXU99G-XHhP0ByqjUpnKNrb1N52jd2AXy5ezZv6TH2PKzEnAjQQbZ347_Gt3hxFzI43_SntPgnNEjwvB9ODrfD9TIo2QvO0vPpLmJkAtgWslRNjiXrEWCj7DkObaMwGuQcgoSwqnN0SyfAnnwzQHVLRIhny-l1KGw_MnJUsquPL1dKzw-Cl5ByCPfLw4C_lCPMf3eJC07JnRJvsujipSCsrMubgmF4TAmGoQvwpv2FsjdTjGOaSuVqcLzdF3Z25rVR-E5aOACo2BLQlc6Oirp2wrJyxXuZgLtseJw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDc4LCJqdGkiOiJiZjY5ZDg3ZC1kNWM3LTQ1ODQtYTAyNS1hNTk5YTU5NjNmYzEiLCJleHAiOjE3MDczMTUyNzgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.a5M4h9n3FnGA1jMCCklcPkUBaTWq3YfxCaGBrr5FKFqaIFVeeuezfe3d3Tq8KeQUe2xtF_HSv08cnZkY8AvAef1FUq1y3sTz0t1tB0KOEOfh34fy3B-Xe-Ndzve_HXeg-vrsaKQllolmeifqN0wI92R54U4UOfpgoN-lwAeFBMzEhFu2zH3cLkpOxtp2KJngGiS0m9I_OPTZboUI_uI4KWNmBBn08wfRHJgjn66l0vX9m6PU06E0LcplCbQKicBn6NKtIUuBdA3WzeLdVIdNHxouc-BxcG6qttIwJcpRZvgSBWsd2WZ8ytY5zimdc66ksICAViAKrPLZmPmmtMELmA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDc4LCJqdGkiOiI5MTViOTI5ZS0zZTk3LTQzNTQtYTgwZC1lZjAyMTg2NWE5MTMiLCJleHAiOjE3MDczMTUyNzgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.yQkHyg2ZF_hMSu_ZD9GMAyvWha-g7RgNvKge6Zkkf_R40TwI8F09brssvauBY7lF_L6lrFmr3T8_Iixtpbrc2IOi50A2U7p8cW6gs8jwVG0ba9wwF9ObTzdTYRHoTlzkZvRFMANUevbENahl8CwuOADPNU2s-OMk8y8oEBcNDdoPxKDsTHCbei4jur2hm0mfUN7wZ8IpkVPqTu5hxyLB6qUTKRD8GqtjtgaTxU6IF4r3nENEwHxgBHrrhG3neBbrFr5SQdcvz95Klpj54OA_kC14wk5NUPOUmmWKUKE0_IfXdimvEuOSnZ8jmM1gZNav92EYFtzxnyF22pHBcikgoQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDc5LCJqdGkiOiI2MzJkYWUyNy0wYmUwLTQ2MTUtOWFmYy01MjY4N2M4OGFlNDYiLCJleHAiOjE3MDczMTUyNzksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.f3PKQhUkH2c8-zz95wo6fk5agPDkj_t8uvpuxE8ePA7Em3s2uWPmN4_2fh1_dedAAMn9_wnOHVNhEjw6Wa5CFDxgVvVdwDOdNrnKSQyGBS2s2qIIRjY5h-599DKhnblPTKQYjGbIAmBNVXNIpO2DUsF7z7kyZN3gGn7EomNqdPzw-l0y8ASnLCqer3xzB7FgvbJZjayN3EsF48AC2dUcMDTB8N4GC6lN0Qv3sQKUYRkh4ac46ixxmefaRwtR7w91BRwG4Jbkd76xXq26JZWMC72RWgX8cZ6jzUDZGk1MrPkOK_u71D5HgELr6BAaxDnqetrrIVFxA297t5zLgpkuiQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDgwLCJqdGkiOiJkMjZiZmE1Yy0wZjc0LTQ4MTEtODc4My00NjIxMDlmOGMwYjkiLCJleHAiOjE3MDczMTUyODAsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.DBNvwIkV_Yd8unO2qKKNGmYKv_YXQISFwtWQVNxWeSttsrJYgxIeUvkHOCscBkZpZ_mjgoEAFqH3sImzQpCi8rRF9hpkVmQoveHRyQpQZyHpUk-MeUC_YLTcxSdBD1t2WVEtxPQixcsUuFfg1J3vF6hk1xVzhxWE2y3mqHFsecEZl_XW8CMj5hBMt-ZXGF9Y4LjWXH0UE4UMcKL4r-X0qqhkA3EcumYdGTlu-mq-70FMeL3jqMTwSrVX4H9RbttgdusSXe4Qo2Id9GaSWYcCRTQjl46xLPDQ6XQuSoh3IizsGoprgoHhm7ivaZbLx_2GzaXTqvccYBqsbMd3xkyj6Q", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNDk3LCJqdGkiOiIxZWU4MTFlMy1mNjY2LTQzMjgtOTZmOC01Y2FkZDNlNTE2ZDMiLCJleHAiOjE3MDczMTUyOTcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.MW-jf2iGEffE0D-HIwPUegNE6f0DUMw817beknUB2fDaSyJeXUmJQY7g6EZ9u_2fe1BylXPUh-zburLyILJfzRxkP05di5Rx2p4IKz-D0Fb1h1feV-bKUeN2iiaaBTv68-H3_YUQ-KqXz20uBAVNSpQBbN-TcPxQSdvzrCW4CHfbdzPYPEZwmw4jHWzgeoElqNosCnXg6qRfk96rUsrTg81k-AjXmDYRc4y0iw8mZliuPwzeCYX7STI4ZwJKSb1DVf49rn_OGlWOpS2J3J_tPz5cpGJRkCaLzH-rgGJjformmTOXcjgAEegKQDQ-7BIafiGq14rKPHw7u1j2hXOvnA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTEzLCJqdGkiOiIwOGU0ODVlNi00MzFmLTQxNjUtOGMwMC01NmE1Y2NmZTM0YjEiLCJleHAiOjE3MDczMTUzMTMsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.YwZYIV4b9tiYckU0eIfhOd8JQ82IdjCZllN8xIBB9WPPjSHcas7q5OaDdMSfRyTDYrg17bksFbF0EKwD53ivBRONMv0GgBLzkP-hX76bj-wGyZD_-IcdCBP9U74tuiXXUpCVG6VoMwLmiodbiRqEI9K38We3CtkPTusWGbt6t4rMv3wDg9gFD7hr9ZYymJoNQOWJhjxuYhNOKQ8X7MJK7Lh8ywALrXK9M5FCukqztjizHE8lg_09HF13CbWOkGiL-BnP6NnDJE6VqvlOQb78BVwu_HJakgVJly7mNGoLGh4OM0X462wLmRD-aCDibRpoIPbEVS-UsfoiMfhgGyEang", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTI5LCJqdGkiOiI5NzgwN2NmYS1iYmQ3LTQ5ZDEtYjEwZC05MDM2M2EwMTViZDUiLCJleHAiOjE3MDczMTUzMjksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.aJlSOj1BUNRI2A-JER3Vz8zu_udGuCYog02bSvpv2kecW20C1og5Zk7Ot_jP_qrzthVkUdrbdvyqBAld3RnEZ-E6qct56FYfwaWAiokdc9uh4i68AVAorO7zxivrt91dVLjDmoMi62WIvGHfAXL3Ihp_XAZS1WKyhf3K7C2Vq6OQGR9jK0KlI1Hzyzaz3dU4g4I6HYG8mEEWfxd0Wk8eIngt3RHdlHVMcfL9O2h7JnGyEcoz1HXcWXSXGpGOCJFkKeDdE3lxfzwKG9LNrSwacx7ooJdM-2rg-aBgfVIFqewOMxTvjBYE9Vf0GZp0itvW5NS00yJpFfEUu8l7jz7Gvg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTQ0LCJqdGkiOiJlMjRhYzZhZS03ODdiLTRkNmEtOGI5ZS03MjAwYTI3NjAzYzAiLCJleHAiOjE3MDczMTUzNDQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.sDO066VlMGko2mvob693zwBKFkog338NHeW2LVZ0RM3qDQ0-eBQJFOW0Kn5owH3XQhurPtoQdw3MsctW7bar1ppK36YNw3ccZMIw7A-Heh7tDUi14pvfOXv9ARvmSj7-8OhcNaxEXhJFMQiuWh1TjLjx30rxwKqemEgTWQ-jVmfzzvf81ErJ6C4eq5zfYOjC5ruU_CW8DGWw81O1VZIUBHnwQzedJnpGZ-Q-PXQgvXLGw75_dNVFQUD1fzsYYeyzylS397LYn_sn6fdq5uLuQlentfncGaGnHMI6p8kFFAIgm1xuNEP2H_gMV1YWjUGviW8ORi49E7Koy2wmknYY0A", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTYwLCJqdGkiOiJkOTFlMjY2ZS00MDI5LTRkOGMtYjRkNi0xNjI3ZTc1YzAxMjgiLCJleHAiOjE3MDczMTUzNjAsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.XmqJsvDqOW9lVWCNeQUZqX0q3A8ARl4aKYK4TaHDl2qiV2Zg0C-yo3KkE-wYhSiY734nI1XevZAMGNse3HX5Y45SvQfyCSZoUsWwVjDQzFFzb6-vIax3NtVGHArgBl96I4NeTCHPKLifIznPlNOHOLBgRWXzpDc-R0QuOeiXLx9nBL8GvnUuWOe7RwuAGP49cVbMf9irg091mOh7U5seW0i9r7jPqk65pF0K9kUzhPyYDpRQejKICRdNUcU7HshjnzYXt-gj-sdhS2_4dktGqhgDGbj-TPPzvqms8w-L3-UVu5TydlPSDyvYXUOBu4iO-_zIcdTBKmyqtGLDzeaLHQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTc1LCJqdGkiOiJhMmJkYjM2Mi0yZWFmLTQ1MTQtOWVmNy05ZmI1NzMzODUwMTciLCJleHAiOjE3MDczMTUzNzUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.LMFNjnwkKoMD7k1Ey0ZxKZeSyXeulsGil_6xkMze1-ofoyLIhDK4uf67nexSQ6DAcuEflFgh7Fzupk1TVdCPRaPUJqt8lc9MXlgcIjB8PNMTt-7_i2FltqfuF7VgxVrZg6d5Bl4Cqw5GoteYi3VKmG2SDPh0C5N1c5hXCgwPppmcWrnD94Td9gjJNddXAe6cuwSUaQGZcS2_W6CuUsGtdkCuTiD6A15ghr4DGBFl5JOvdmBL3MT123junFsOo0M6ifWwKiWnB3u-0mSMQjBYUYXzULVpwGdgVsD5agjTFUuHJ90fYQnojjgCUaaN9_TMT-6mNdy4CAwHyVtVuCVtWg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTc2LCJqdGkiOiI4OGFmYjcxOS00YjgyLTRmM2ItYmI5MC05MDRkZmZjN2E1ZDEiLCJleHAiOjE3MDczMTUzNzYsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.UhR_RQgZkNeOFjpUNOAhrCxEKCxcUqcdmNtN0v_a-QBNcW4RQsq0aXmHp3zMY0e9dIA82roSl4tBlwTMiQuIJeXzNQub_10GKZ1ESUF1xfzGtzNz8-S0K5LaqQMCVru5AGQ59YWSiog1rz9iODO7sVYzRP0luXcVEsLjrho_7DIlFzCJcvWrdgBJal5Hmq9xpSnO3_BTzxAN6yXPlAAIXB86sKcRcZtByCEqqt_dVmrXHdJlnhH-ZO1S3jQPNbQ9MEgJb2G15ASYRgkX1DLgmVjmDSiTd8StVePK2P6my3ssj9KMKbD324CVvLGLj1xEkAFiy8Q8tbi-_7mx4eEyEQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTgwLCJqdGkiOiIzODhjZjIwYy01ZWFlLTQwZjQtYjVjZi00ZmFiMTFkODg0N2IiLCJleHAiOjE3MDczMTUzODAsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.IKaQFniAS5-cIr1jF6C5tRjwIO9YLK9FqdwqpxwB8nWrTf43JUA9zgyo3sv3Lr8-KCogmkdn4B-hSMABBixala7EhL4iK9-uZ-nFJMWkqeRTHbJWoR641k5DCQo4eQEauZPRc_bcV1soa3xXxbnnZ3cVUUQ6vIPLelbHPBcYa4RPT-AcdOR1Btik2Jc-Li11eCRD_hFFsTqvjObChwUiv5ySnCGo8hUZ_K7tLCHI7KVdo3TA3vTPW_p8FTjuZF1ZmpjJAMCHOSYlkAukz3GbrslPYt7qRaFgX-LT5FAU65aTh8pXwZkspxnEsLmVQcHIKhF1eTWh0_pBZo9wltntKw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTgzLCJqdGkiOiJmMjI4NWNkNi02OWJhLTQ3YjYtYTM0MC0zNzRmNWViNmVlYTAiLCJleHAiOjE3MDczMTUzODMsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.SajHxXerle62nuMHom4AK5n857BPyWLSOGYTcw6H3AemkBL_m2copAITDZWUg8xdKTokEcFpzMw4aNClACerjP4Tw6meW9j-DC-qbn2hsNktexM4e2lYZNK2nADHYtl91u5CyPWbovzqQ36htz0Q89jdIBz5P56MpvExgHmsxtEOeGL7DncJ_-ZvIc4f8Fxbtt9AG0_9nTo4QREAyZzdHhvctOZxlBOqMkIHWtMcUH0EzPhd6uSn6aD1l0y3GCvr1MZdZWJEkJUHnvWF3eCAdgPQ45Ta8u12dPl9MZ0zae_tEqXBmAVhob0MRLR9VgJB_i0a-xtxcUrIwWjmshrP9g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTg3LCJqdGkiOiJmMGVhMGFhNy03Y2FlLTRmNzYtOTU3MC0xZDdkYzYxMTMzNTQiLCJleHAiOjE3MDczMTUzODcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.JyqpB6J8v42aOymtM1PjTS_SWUZXwBdfOh2j83GrbRCu36W-5NH--oKpXJrZbqSFC7SyJ9sZ3iamITNN9vATaO_0oeiRcym0MPOAnODaMrCEW6zoSMN_Ib6LKnUuX6XP3uvB6sMA4Am5V-qFwach1xivVUHGaDe0E9GUNAhyHO7y_vnFfqjVZPEd0oS3eBd7bX26ROGgmgVvCnH8mMv03EXTThmoGsp4bOIMVn9aE6uZhZ-mSUO90mRnkVtaaTraWMyc8Pu8AjMDWbXBMKmK6rCyDSo6_v4E2UpmHB1HQfPw3z5KXuwwHq86cqVz95Woocn8M0kBGScfnGXvcLVFSw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTkwLCJqdGkiOiI5NTBiYmMxYS04MWVlLTRmZjctOTIzZC0xNGYzMmU3Y2Y3NGEiLCJleHAiOjE3MDczMTUzOTAsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.NvsOVdGdpD3OAvk9gmqze8Winvgr4FkHW8RlW-cwOSHC8ar-LBfwTqxrcY9UxZoqwlpDJtgRA-VqW3bAwoh6Au_oIjmMxLB_Dev4kpHjEtF1FF341erZ2Ygr6WgBhbqO7dh4EO2L6UUhnn1MGFQmiOQ-OVhNcqW0hJrPPlIlv_uR9rvjndUiAEg30YBC5BhvQzJrNkfOtCA8q7pKwCwLox-UwPU6nRhJV87iVI9Cacrf5X7TwRFlKF6DwCl1-1MRt9BBxjCMarNcfOP4ZFvBK_Makz6MDa3cPf0wJBK8-7ZhrJfW_np1TFpyLr2isygyxyfGGnWMxPJ8yj01RQ9lzw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTk0LCJqdGkiOiI3YzFhOGYyNC1hODZiLTQyYjUtOGI1Ni01MjE4NTcxZjBjMTUiLCJleHAiOjE3MDczMTUzOTQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.MN7BE0VBu2JfH9JeG4_qKKk4s7_74qpgS6q-CrTNoC3sAnWns-cm-b1T5v4bHFe5HHsOkfIMgmOS3YchWVAUXhhMqSeODVXfH3vsvm-WgICsqIIO8Pij8cbAPU0sHwAwojvX5ShnCi9niOJZvjOnhFEvyXmUJz2_cEs8rvchbSt9pGspOJuKDTDGOE5Gmc-D1hL39E8uNijQyTD1nDDhzH_I_5pcPlSZnqYHtBI0fWJrCqnU13dBvRcsSjVpCNoKxlZyg6Uq4EwqdQVVnproy30Qenmutb3CcZSPbfgd60oXoU_dLiF0tK5x8K8C-E-VN6gqdzJIIBCWsitRrdagPQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTk0LCJqdGkiOiI3MzkzZjNkMy03NDI0LTRhYjUtYTA3Yi03NmUyZTM5Y2E0NmMiLCJleHAiOjE3MDczMTUzOTQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.2H3g1owqaQpWwTlU-dcLL7Gr5bubc1aleSU8_KLjcYHeGflKoL9ySqMJn_QELrVFnfcFKqLMV-89yEdiT5M21rNwP9SCSodTHYMJN4DTtWqsr2_KmfRLv2IO8LqfF8kfnwyScsydi7kq3A9U1O5iU6qVrX7QKzP5h_UObjrtQxjIi7-43rkbPP6fsA4hVm5F2BoilX1hhEZJqzfusE3Jnv2TPyB3MC24I3xwW5IHMfdGtxKOcs6L_SSIJdAotNe8XwzcClHKdgyZ85blAdu383hfNtS4J-0HjQTUjlF-RUDYVfHQsX7IKa4xtMmcD3zmH8tPfL0FRb4zh9sIC3l92g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTk1LCJqdGkiOiJkNzExYzk3My0xZTM1LTQzNGQtYWE3Zi02OTFiMjI4NjY2MGQiLCJleHAiOjE3MDczMTUzOTUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.fFeUZBX2rRo4ZRuhaJL8tFJcHhDlujVQq0QrOwN7IfDHOy9x3aLnMWfzT8ICk3smpi6sVlX42EtpxetC2HgFnMBMTm3hFjZx0E2TD26Cj8yb_cQJX9SLYMyh3CrZmFdX1bSg8BZOspCk8hSmCnm3b8P89ZBH5sqKH37G5gaXYtVSTC5J4ScZbuD-CAm6HfOXRGNMSHTcSpgi0uTK2Vxg_H_nhOy6kvvG-5_VHMlgRoQW3_xiz8LHqGBXJebUy3pXMtn2dV6zKCq0nELA2d-DMPVwTtfwGgUgdMfHc9paJO_3-Suk0qSKPCaTD9fewB_Qi80ITKEkltKKj0XSqoKRtQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTk1LCJqdGkiOiIxNDU2NDdlZC0xOGIzLTQxNDgtODE0ZS1mMmM3ZjVkOGI1NDMiLCJleHAiOjE3MDczMTUzOTUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.KNuvajfh_gyZbTlU8HbSzL5WtukPjRIDEmTO8Sc3x9DWfXUkDwKSAyk9AX8wksYeNePlkPvkhVbylgkwdE1rXDXLIYwIsS3OgkYiSyWaGOUzd-iI-LIp7Md0CHZhIesWxbsuemlMyS5KanpgVcxAgFsihlbr1VmMb7cDC_qdhmFewxk3vgUVyudeLyj2rlpTq-HCpjpnDc_GLZFy5U-ARaOQM8Aa9V3p2IV20ga6wDgwA_5gP5TU4uFH6InxHwSlmBtJU8Z2n-ELPrMCJ6HUdatW8SwucfxeUFvtx31fahNLTsBVn-MFpaF_BlLt2wJocoj4UpatkoZMX8fsnQj5kA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTk2LCJqdGkiOiJjMmNmNjYyNS05MmEyLTQxMWQtOWRkZS0xNGVmMTU4OTgyZGYiLCJleHAiOjE3MDczMTUzOTYsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.y-S9FuBBfJjQCrwDy1jDQ1dWjv8vbUfSsJZaWKs3Z8PsYrrBmuf6LSJYae2L4_lA4gy3errgNgTNy-Y7WGuQ13F1Op7oCEGWgTPG_b4i1OuiAGZcCibm4kzC6RQ7ZxIEpWQEY0ChfC3fZlAeVoRpXIvvbYz_I6rEFM1YoxRd8WZwr2_QQVnr5qVA37x87wi0AuJ3S3IbBNDKrBqcD-9bJBxmjxQlQj-bbbI6A68Ye1OSL9UaP3hF0BjA80vKe9UsBUUclN4OUoijehdndmlM2-mMziAz4gmK1DP2TZDSIwmzt6oXyOH3laKmFEEkxzXnl9PoKHE5QVuE0IBCsrJpvA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTk2LCJqdGkiOiI4YWQyNGUxNy1mMDIzLTQ5YzMtODZlOC0yNmM2YmE2ODhhNjEiLCJleHAiOjE3MDczMTUzOTYsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.I98Loy_jqE7uMZlbsq-YyKefuzayv0cSBahuJmnUsNxVWaR-RM7IATZRoBJ4j6AFtkbVu6XHEAVn0QfX2_JYG3uNViMBOwsKfzYNG4B5Pk0HsHEU874dYIPWHlx6j2QI3TJ87wgmrHRiIt2s4cuRpYjLXKKIP6o2xg3AJ3NceCovX2XNPyGeKcsFFUUEWkuMWBJxDWMfVMyA1M6ti5AweABohMPqdn-yyq03_A6dvC2QLLtfm8X9hf5nrtiNNAV9FU9r-Z3_jN1yvV6cef1oXwE8kuzxYJDidwGCbI1v4vkcB03zfpZRwCLHL1xsiszALPEWOeklcquDVsw8AFs38Q", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNzExLCJqdGkiOiI3NWE0ODc1ZC0wNDVmLTRiMjgtYmVjYy0zNDExNDljMGM5MDQiLCJleHAiOjE3MDczMTU1MTEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.WUyKvRBtfKpCFkWJoh2YnLkrRAUjd22HGUZJiDEeU02HhLN1rIsJqouG7jvUgWx2k8ZUwpi2HvbTApeplho7OYlxPAY4PH8XOxYKS8yZ8hXKObPImMPkYeBspFYUOBDZx8Tj-ipavgG4wYVknARi8pH68xY-lKv29euS6PqAz3_W5ZI-pDFvpVrw6i1sgPAvl2ZQkt-DJu3PNDLD-7gpBUAE7UrftXM7io4CVKCTEa6PkwhmzK-qeuGaqlLqIQ9QCSEJ2o8xVhJiyCZJEXMtR-itPmp5BIqxfnaRfa6aLRnPN062q6Kaec39h3UcJW0alxgKbKLLhOQ1GkVtbLJG0g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNzE0LCJqdGkiOiJkYjVhYjRjOC1jMDJmLTRmNWEtYjQwYy1mMGVjMTM0ZWE4YTEiLCJleHAiOjE3MDczMTU1MTQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.AjWy_SMxRrO51DUoTpBmBcwQ9Sp4OC1Za8nZxvfW0I3b6_PmyHemrW1OPBkiz9t9XWL93fcPNijOKcleQSpDZy3cnhEEAflyeQH4uRRwNfEvAbEDG7iU4XpaPK4FFBDBrsGuvVMGJ7SpjEWPGlMH65Gt-Pje3Orl74jpNUUXtxQJoua1Ioqxe2R-SYEX6WxCHHwiuHb-f5S2Ly5v5An-Ie-N5YIIXDoQ9ifP8q2zGh17ft4bFA-e9kNzuzuKNDdVjdyqdV0sq11Q1BVCyVKiRENUrlRRebQtfEh-_DE9vBpfM_9pTVvHAqd-altXIW-X53V2MWLNzVfhJWSdis5ZQQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNzE3LCJqdGkiOiJjYThlOWEzNi00NmExLTRmMzItYTVmMC03M2UwN2ZjNWFjNzYiLCJleHAiOjE3MDczMTU1MTcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.BrfrbM__exxVom25jnRKguakQz8eFWxIRv95JiWJeCe05ipAGGJIBkakRNJS_yTGu3_IiPhHbgxAmV9tjMdRnFxZzhb_wbX7oZzCD3-EaJ3sX7U-ue4jDBeUSe-avWluAONDnLCfWa4Pw4RiZ-LB7XL2BFdxpLg2TsuIgYcE__1ZpvFzG9Fa_t_JUvaL_kzTFrxeJEm88Pxg3lFe6b22okwKGtIkPIQvDjiVooOzmrtqFIK1f8tmc8l0WUCEoEymTO4kpQZ2eRP1rHEusUoWYa6LUqU-9VDPIS7j-_1oRTJnBEnfY8SRrzFJHqjX_7QX9Zvs0zWdOXe2bugXbKkL2g", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNzE5LCJqdGkiOiJlNTE4NGMwNy0xMGZkLTRiMjktOWYwYy1hNDc4YjgwM2Y5ZTYiLCJleHAiOjE3MDczMTU1MTksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.ysEFThboOZBSRbuQFxCVRXvjiBIQq4tLr5FeSVNLjKnWSsdMDBziX5yOZFmRmAseeRQjgRNdQYs32Ojw_CmNlpKCZJIbsLcOYS7YVS1vOfOqBpNsE5w4odPQcjfD5Mh487kEiNDOgC09OQuC_adlfb3mzeZPi2UddGikr5BraLhVlAcpv3fPCVlD-HI5G7mSX5aqZFsqEQbkU27MMuEaVdgQlUXCl1oMNPsAeAl9p6zDyHz1OYmO2xCx4NSs_sBxep8F_DwUxyOpzvvu8zwdRraf27sX1p6NEZ-hrg9uJg3DVE5D3BRInRQ8W-8kudXTxNlqoXxrJ4AmrjJx7ssPZA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNzIyLCJqdGkiOiI0ZmMzOTAwNy00ZTdhLTRlZDMtYjg3My0wMjVjMjA3MzQyOWQiLCJleHAiOjE3MDczMTU1MjIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.0E7lCt38zK7CU9GCVU9w4s86zrBnbwyuGwjcPL96GRRRPhVjsTT9lX5gjxurWY72zZi3FFUqkS14aSHdr6LXA90Tz8YNlV5r0nd5dOsihDHtBWypl-o2My8CmMw5UO6nFpi0gPAAEKYNw3avn0bnaWlN6mjUyV7J4owDzp87jbhSkmNWDzGmvRX4lxq45KKj0bscXDG0vYqjrPcAqKHkcykDyxBLZykRqooll-u5anyG4gXFesYj93Lvt1Wl4YuPhJ3QLSQT7Fx0OWJQuNJwHDaLYO939BrCbiLRx2OeWoes9SuP8K0Fk00kAnMz9E1W8Kql4_JIfci_5gF10oUJxA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNzQ4LCJqdGkiOiIyN2M5MGUxZi02ZWQxLTQzN2QtODc4Mi1jN2U0MzRiYzNlN2MiLCJleHAiOjE3MDczMTU1NDgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.igJbnYuEe6rqbJbNj0aBk29lBJBgsDxyc2xdHzNb77qpsUxtpvUKax6OVbnk5JwTWsloQDRaK7ZzJqyiE_x5xOoytuLIPwvCA_9kszd41XcWZxTpE77Mhaci_tFYVWVhuCt-Cm2zEtJNCavJ4X0BDrWidq1R59xcurIDOtqGnmv6VxhVaZOH1-i-ilXiXucLO9jClUYIfxI7CqLoDKww17JqTBOmUb34UYQaR5xqt-R5ZSpN7QnC--NaWC6T2rDU1d4xFQh3-N-pzbAUvkxE3VD4vKhjhFukx9jP0qEDCCx-swPZ9aWnNgZAZ_sMC0t-v6HXs0MILXx3upjkeECvnw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwODIwLCJqdGkiOiJjZmZhMmJkMy1kOTA0LTQyN2QtOTM3Yi0xYjc3ZGJkMGYwM2QiLCJleHAiOjE3MDczMTU2MjAsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.Ttr730Cd-KiwaaY3PrJb4KlCdc_IQkvKm65u386xfFEgrbMQFVzIpMp0jojnS7lov4AsBSNcRqZqt_joV5_5QmvIDsKS9nVRaUublyLz4LQQXP41eoHrHU5Q64geVpPXM9zms2B56939OgQWmkhhCnz34FR5GIECDfGgZMjxKXQ2qGIC6mpFbgc4ym0bssiLU9u5_R72AW78RxXcdYS17GpHLd7pgi1Srul5PnCpg-8JH071GUJK1X_Wvp6HzC66uI1OM0lsVDMH2fKk-pWssan6inxzW08dSinZjqq5V__eYr0a73EAUkDbFBO2OUgXVFM-p-eWSIqYf7Ycpvpanw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMDkzLCJqdGkiOiI1Zjc2ZWYwMS1kZmQ0LTQxZDctOWY4Zi0wMjgxOTQ5Y2RkYzciLCJleHAiOjE3MDczMTU4OTMsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.ej-xuauw91VcPUG1rMzds4-BI-fkjybCSlKuzsBas3c9bHkamN4jfDWp2AZOaKnivwNCtKko8VX4cuIJ6amadEy2u_JRphDYhRyY2ttwYlTBojhFp79FLvZACWS9lK5AZmnjhCFpyNGOfjXsFIgW0TKh-l5rPR1r1oWAlY5DKvMVMq0bg6NoI10cR2UT6Zs3wMAZkzK0o8WLbJH8erGImd6EmtbJfotAKgVHje_uZ_w7ph2438EwvuTz9DIIYlQe8R1kYD10Rc7RMVKEykZm8kkqPbyu_3tTHnb2g_MfvvUIktpcvTPdpSanXmTq5Bl7rxNyPs1IUWTQ-Dv1pAo17w", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMTA0LCJqdGkiOiIxNDFiN2MwMy0yYmQzLTQxNDMtYmIwZi0yNTZjNzJhMWVjNDAiLCJleHAiOjE3MDczMTU5MDQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.RIyNMvlOWNzGuEMZW2Tt5GYM5xo-SiL3kQoZGhdnCe6TlQHtLbWzLAyionqff8MCn42ysoc8Qac8hOQ2Z1HPfAHJHi3HVOvWf5lpwmmNhNbxLUuMwf3L-iM0bZdk80rLPFYaaOrsCnqusio313o9PXwGYfCYdlpOJTP7GgsmolK3TujLCVzRKqcEyJn8dcbjRaCcq3K8K9DLKDLJWMY2M0d6vAAgSGLr24DmU1gR_HIEdDmZSX0Wo8MqdZcKv65IK0tqp8DHiO8Qmx3nRiG187mr9T8K8OyVczUKdKZZS9Iexns19O_I6YQJsRKsYGh4PMosR1q3Q8bKgpiVEFVmmA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMTQzLCJqdGkiOiIyODc4ZmUwMi0wOTVjLTRhM2YtYjdlNy0zNGMzODBkODVlZDEiLCJleHAiOjE3MDczMTU5NDMsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.t18vE1k8EfwaYdqu3y4Kci6Fc5SnZpUeTf_JI7mDvoM0NcQDFKEZdxtL-EVd7j97rfJfDRe1HbIbcYaJJVrtbvygZSN-TbusA8q904xr4hzxbhIgSHHz-rU7VKaKOjjeHcejH-hooneuoAUmQuVk9CZU7FctW2j7Sgo_J85geCIoApd7WRkOG0oT6XCPTiTRBGnv9n1bJ9EORoOwQ9Hxktyru_tixjuMr266v-5zgrj-aPP8TQSmcppIvMmUWwTB1aPqhpz5J-01bos0WmwWKuWNgOmU0pC8e6rFFrAcIEQn1C-wtxHene7Obkx7CYQfmLAhVcn5aeuCMfoqKEkOdQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMTYyLCJqdGkiOiIwODczYmJkMS00ZmIyLTQwNmUtOTQ0NS03ZjcwOWExNjc4YzYiLCJleHAiOjE3MDczMTU5NjIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.Rsp5bZwm8at86SzUDD4Pz5NTbbZUzbyn_pVc49K1Z-mBFkXDHVc5HhPNvsa_RtRNo9y40cQfqvaCDvXsBbdS_bphGvyZfmpOL5nuy8d5qUlAqPt754cQX8qqVTfk1yboX2kILX01FqeryywzBi-D4iguSQdilgrKytxJ_UNo9xV4XRBBiMH_x3jI4q6oAFRS5uMuUSKugMtsgN655rQBIJYA9TSDoPUB01-9wd1izqiwqjW3dmsxgeMAPH7Y3_5Ptp6oj6mBydsWq9esvrPDZJQgtSSCEME-4AJzoejsv-1rUOCG8GG4QKgWgDbHoteJYrJq2synwLirnr4sSUcOPA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMjAzLCJqdGkiOiIyZmI0MGYyOC0wOTgzLTQxZTAtOTc4OS05NThmM2I5Mjg0MGUiLCJleHAiOjE3MDczMTYwMDMsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.zd1833ouwBbdN_rWSD_UB3Sg2TxgkM362eSsGleucPRrqmV6qCnLMUhecoM8Z2y1Y-Dtp0TVT7PYez0D9fXpESGOIl6w95Z05lz-MtO20rEZtxWilxOYSS5SQNWPnckrRsFabTR0m3KMdK8FDhcd3Y1jM2fJu5S1igDmKPO2r8CK8XlQuo0nCNBAdsG6FA4lcV4DL7rJgzn5OcGq8CnUiHhcJSCg4YlXbeIRVw64eSRFilKaMIVusCMPKQnpkeWFmBKyf1D9l_WWFv7bPHpQdciNxsLe1E1r8S06cQXHCWUMesBstzHcf3eaiMACqNhmj5WI_EzQf-oig6jN08InrQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMjI4LCJqdGkiOiI5NDU1NGE1ZS02N2I3LTRmYjctOWRlNS1kODc5NmUxMzA1NzciLCJleHAiOjE3MDczMTYwMjgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.Ajchxv967Dft8xWGvKbJRxy_19RrJQymun8lJOULmaJ6XqXgss9qgewo_Ha95SfgNWxrZCuswIOf2cLpiESmsT4WoMtyuCB83twiWPte672Vo4HtcLcdfcUlIOi-e7Z5LQkdSCwCfVYkQrYxshmIRWZRhzcesUjOabTlSfUZALzxefq7mT4n7Gpitd62_AFQVEcJuiL9s-flywBAl3rHXmjsH_HZIXcOYrWGCQ30fxEQGjYrOOgGTp8xgJK70ViktoiTbDvHhM54T6sNhROqzWX3I2rPQgldMC039LQUIoWF7t6Bzn1mVp-zolYG-iB1x5H-gBjH2_hLPJpKzLMAcw", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMzYyLCJqdGkiOiJlZWRkNTFjYi1kZjQzLTRhNGUtODEzMC0xM2U4YWJmMzVmYzUiLCJleHAiOjE3MDczMTYxNjIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.wDP3GwEmB4f_kFhQl0gYdN1piNewfvv1YiBbU3mIkjt-d6_P8rbY9GM0wbZd3RuXOHmS9hEcBcXhbNZrp6Ejp004YONrY28r13ytZFS3oZ9z5bT4c03jvlDUU_KOvyY198VZSxZ-xr8hA122z378p-qLpmsCXrcuX4b7FfkktndAmbHHDt7_AQU4c8kQltjYFI2gQdpEV9wYuqNWUZJlO7fl2DLB3BVuImkQ7ZK-NxLTW4yl_dmR-cPWY5Ck9HDn3RjPTJkzO6AS82HxtGFpzbqdxgNTIqIwpYbHHK6ew7sAyYVZoHx9nb-qBD8lMkJYuZGu5oIztgxhk-VypUZRbg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExMzg5LCJqdGkiOiI2YjY5N2JkNy1iNTI0LTQzZGUtYmNhNS1jZGY2MDMwMzJlMmMiLCJleHAiOjE3MDczMTYxODksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.YZOI-5l086q2VSNfcS3vg4p_aYoi919gWYtRB2LqarjqHj6fWPBItgGK-8PvAhi0gtlNivbIaxQq5_a1yDFG-oj955cWpq9M5byXwDmcPrx7rxxSS_BI3Q3ebgOP_OWDc4aD1rsVfBlYwkgj60WXjyQhe-NmABDRf5h9C41K3br-JudXWvdociCE8eVPaqUsniyXEIPxJzeJSogoyWa8QQBLygM38m2OidkOGV55CuXmoeKFgbVP8ngjgDt5hC-QGtFHR23eAIh25hevfPmow9N9mt3W0Bao0_EqrL8RAnas_ecp9EDEDvZK-lqzdGXFDKiIC8gm1MfwDIBeV-gxTQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExNzA3LCJqdGkiOiJkMmIyNDgyYi0wMGI0LTQwMDEtOTBkMC04MTg0MTE5MWNiNGEiLCJleHAiOjE3MDczMTY1MDcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.GBRdN6qWtOAOxgUUD9MyI1VZuCyoMYWqZJyFcrNG5kgbnbQrWkrzG2pcNJDAavRMWRMZ5LcGZrrZbr_LZR3_EKZiO-aC3Pll1ugn0t9kP6-0qOlKj1-PtO9iIFajIKYHkKz9zzJIYn_6NWXcHZEZnF3R9ldmPT3OV-8j4IXoAVvGeF9i_eer_MTTKSbRM0FPI5E_VQWb-aIP3m3xjLWS1r0IbjgN39OD68YnTxpbzPdcRoouZejIMaoOTunaIwkl1yHasa0_cFpNuLkyzGS3gggwOxtlFZf_jFt73kK3d_LDoFoAdKLxqPL2fsLH3Bwd5cLStyUT1vM7W57Vj1oRqQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExNzI0LCJqdGkiOiJjMmY5YmQ0MC03NDdlLTQ2YjYtYTY0MS01MDhhZWJmMWZiYWEiLCJleHAiOjE3MDczMTY1MjQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.MVWQmVgn6Qqa1MNMSdEt_OQqJ676Yqy_MLV80B3syhZKe_O7zZs9qMnyAvC3KPFUUFHfVu5HR4CJXE2Ufeh4NmtqmED7WIRAh-PJRdPQSkRx-tNeJBd0kHd5dwNHqSOqo4-0KYQGsgjJPbD7OxqnI6DO6q1HLnfj6dAFqOmUj0fReUbdTZA3kqHvO3TzhjaNYRZhkxLwxWaiXc4lofKFOO9515Ql1us5pMGt-tTjSsiUSXtQT1wIAvKkrYbmJlu4lM73FiZQCb3LJ4F1duRr75Ay1DZylKmyGTm7c3N02ivnFeEG5Q45QA7ZUiy_waXx3PzXXkXUS0VaAzWJuaBBLg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExNzUwLCJqdGkiOiJkNzNmMzY2NS0wN2E3LTQwZjMtOWFiNS02Nzc2ZGIwOTMyZWMiLCJleHAiOjE3MDczMTY1NTAsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.FUjnAMjNbTVADmxzKKlY4lujGe4XEalf7i0MnKY50pi4UU1Jw5eLG2XllSPrebFb3T4paYStN3hqFBxB1WxPtSBffkEpav17lXkg293y5xQOHLvXRucmGk3pfgcx0NxJEncJPJWy0sVKxv-DPH6tthyjrBryv-b_q_r1KnVKjRKhU21hCwho52l6x2ZxV3WZsBrmHTKFW4DXVY6mtpm40ZLf8NDWUwtHin7dL89Pq6nB6v_c1NfUsnHAEmHDNpeav_VHFar0uYuY43qq0ND_Dfjqgc2kRk0mbimRxfdIRmaTcbMMSngGZgAV7m4eibr6xZgoPbvJytjEXdnELIZlgg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExNzk5LCJqdGkiOiI1ODNiOWQ0Zi1mYmNiLTQ5NTktYTBlMC04MGJhOGE5MGYxNTciLCJleHAiOjE3MDczMTY1OTksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.DBHTVTSrHtpmtqf0SktGVkrf8RZMqVOEabhFqLNqcFs_6RS3-g5eZ3_endq2K1Q1-90xEteIRECvJjoTwg8NkJEw72EuSgLtUt6U2g0WtOytZiPilKnTaprYgNu1DmthCYwDv8ns4KQe45gt7UR8hjln7WcnvdXIh6tYzbMZ40xbdVWTAJbV66cyW832RSjs3csSMv6ZEiQynFsLLlLBTyuOhGSKRCS0uOUMegCTVPpIvpU0lE8DaRFOsT8vCbUs1ZqnNY5X3I4dXYsAEOtDG9Y-bTnRVMfWZv70S3CMejbWpOXs_Pm_2_tSXlUgd6WSju18pF4ZT4xGFiffMDbq9Q", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExODQxLCJqdGkiOiI5YzgxZWYxZi0yZGVlLTQ0NWYtODQ1My1lNDUyMWFlYTQwMDkiLCJleHAiOjE3MDczMTY2NDEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.DA-tXe75ubmvjB29LgsJzRlekIWZGDg5_syKAPClhotXJOPeyvTBHDpAsdUxYu_A7WHUqZa9htFgRATLnoFURLrVgRFlftBrbAkcsadZN-IO3qItT9SEPz3jGVuRXvjiv5tnRgGTjODyk52w-n14giC7Y81PiPWJbETW1h8f3wLM5OzR3mikvPTJ5Q1con1cLWWiGJ_xTb-lZNjzjXMnVHkTWVPo2FufxAwor93ByjiaczBblmwT-keHHEQ0aYzf56JUCszja4-Gkcikmrez_KUFzywGioREZKWlh411shxvNwlro_9A0waJaKhvnR4OiU49Ag6hk8-sM7TAxJ_gDg", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLXZlcmlmaWVyLTEiLCJlbWFpbCI6InByb2ZpbGUtdXNlci12ZXJpZmllci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzExODk2LCJqdGkiOiI5NDFjNzE1ZC1kMjllLTQyNjUtYWM2Zi0zZmEzYjExNWQ2NWYiLCJleHAiOjE3MDczMTY2OTYsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.Lpub0-mO9AtEQ9Xye8s82OFKccPNkc_x-rqZKTijbULFfZ0nB3wOlvwo2QlDQ8ztqIfTWkbNYrrm6otIjbQ5EZ3lWAorqJShtzgB7_Mx-1OJcTHGSFfmS-7bx5Cw8xHm8rjLrricXVkqIcWJcT-ghOKXRQLeN0z5QKiDcrKEGzGPDOYZVAHwL9n2fckh51veTiv1MXvM0nfHLCOgP5XoGybvWZtItQlY1bOcjryAGD7T-1lMDj1E568zaftUxzPcLQVRPkdH55P_dRT3ICymYOcw8rlSGChRanCTGsJJ3PMpmUihtj2-puFTzYWvQ52XwyD3ZisKcgNlbh1wvwhP5g" ] }, "profile-user-non-issuer-1": { @@ -800,7 +922,8 @@ "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi1pc3N1ZXItMSIsImVtYWlsIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk3NjMzODA5LCJqdGkiOiJkY2MwYTZjZC0xNmNhLTRjNmEtOGRhMS1kYmYzYzdjMTZiNjYiLCJleHAiOjE2OTgyMzg2MDksImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.rwFbRjbNmhVs__RyR5RS1huLOh9WIMT4XObNwLRomECiHaTVtpZFv_p3T99wOpLgJJGb4D_9Ryo0B-iyd_AQ4eW7DQ_b5Ow_YcUYflb7vUyNFw9TKoG3dtG04nW8-0Kr_1e_eOv8Y5oPEr86bSvPPFkB5YZP-rHobjQyQiRo0deHLX9Qfqhtv3IEIKbdUREsVwvOUCr5Ci5MDMqa8pzU_eNFnJifZnXs8idxlZv2bw43EIEC3bDg4aydF2ofRGmawAiWcwx5wrWXSDEtq72xf9-DEj8Gha93LrH6vuvW1oe22qKpr-4_27EZ3FVpDFgxQXw-NAVZhkT4iDI_sLELAA", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi1pc3N1ZXItMSIsImVtYWlsIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk3NjM0NDQ3LCJqdGkiOiJlZmRhNDkyNi1hMThlLTQ3MjMtYTA3NC04YjFhZjkxMGY0ZDEiLCJleHAiOjE2OTgyMzkyNDcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.hj3N0IZ02-5X0Q2fKJLw-IO5SusKYTSEaRot2QVSyGuaoJLs16JRRphKw0JuPrsRcM9p33OVp1SwOhnVrylQEjzpYDJrzO0Wo695LVy0Yq_2INpqC5EgQ2iI2B-IImjjO8llGcB9oSDkLgTFRWzUOrc4Nzo8DnNzOjHL0AHAuwXDdbAAdkNFSM8Bi1WMnfl7avwKrhX4E3VeU07Zp3IKonNLnUF_w4beateZC7WXrRdKLmVooh-2AvU_AeWRSqMQHJtbPYser1r0KYs4zlxoGgiFINbr-N9dlaUsmiBfejetA-eyiuT4fwPQCafneoSf1hzA1sEDVAIAupaOi3gQcw", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi1pc3N1ZXItMSIsImVtYWlsIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MTAyMDE0LCJqdGkiOiJiZGQ3MzdiNC0zMDAyLTQyMTktYWM2OS03OTFmZDIxZmQxZTMiLCJleHAiOjE2OTg3MDY4MTQsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.uyh1Jt17cM2z-z8et6M7bfGwxri_JDFkdUmV7qx0EFuO55AcYNSzJImQ8CUzCJacOMtLs-5UKOgngOJyRez7QW5_XUMWvbs4hehd2d1L76MTZPC2K_U-_l1pBQaFp4QBGqJ2JD8kOUMLXKXPoimfQIvSCEtPEs7pZ9M2_okadZV_1gj_JR-cIiQVBWjC0l8bMvBrnVsWdC1qWK82yGiZe6GS5Z711HHFdSzXletAuYbMvR970QgT80DXQPvtNBt8ga2T_c4xtW0AHYt6U-bvi-zL8GL-TMVuRN3SogBhfdE-GqOLanu3baf-Df5AEC13pwP8_Aty9ClON-mtaxYJHg", - "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi1pc3N1ZXItMSIsImVtYWlsIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MjM4MDg2LCJqdGkiOiI0MGU1NTllMC1kYzQzLTQzNjgtODliNC01MmZiYzdkMTI1YTgiLCJleHAiOjE2OTg4NDI4ODYsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.rjtGTgmpaWvttKq_RwyqBM7Pm64Q7K-3FLdD0QF6dj6kGOgvAoSbdaxnzCsCDUbQs-aP4r7y03Kms7By_BuUFkQwm4UFj0Mn4LogQoMyM98BnHEm-ap2EKNCDONKbfr32eKRAORGAm-rZlSfKG-tQzFPPJUbMK5HcOGoc56H63X5S-eWPhJ0e6zE-7xBIY8_RoI_rfZFeTVG7tTEUg5toGgBO9bzrUZbGj9Fx49DzhQAzaE8AZrGdBJFYTgaX_NRcizxa_jR-6JaFCwhVcxeHDpmDeHJaoL2dX5idkpGyugoPP1hbycOfn6KNbEuM4lBKKYhiWXPLW1QDGaj0r-Hug" + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi1pc3N1ZXItMSIsImVtYWlsIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNjk4MjM4MDg2LCJqdGkiOiI0MGU1NTllMC1kYzQzLTQzNjgtODliNC01MmZiYzdkMTI1YTgiLCJleHAiOjE2OTg4NDI4ODYsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.rjtGTgmpaWvttKq_RwyqBM7Pm64Q7K-3FLdD0QF6dj6kGOgvAoSbdaxnzCsCDUbQs-aP4r7y03Kms7By_BuUFkQwm4UFj0Mn4LogQoMyM98BnHEm-ap2EKNCDONKbfr32eKRAORGAm-rZlSfKG-tQzFPPJUbMK5HcOGoc56H63X5S-eWPhJ0e6zE-7xBIY8_RoI_rfZFeTVG7tTEUg5toGgBO9bzrUZbGj9Fx49DzhQAzaE8AZrGdBJFYTgaX_NRcizxa_jR-6JaFCwhVcxeHDpmDeHJaoL2dX5idkpGyugoPP1hbycOfn6KNbEuM4lBKKYhiWXPLW1QDGaj0r-Hug", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi1pc3N1ZXItMSIsImVtYWlsIjoicHJvZmlsZS11c2VyLWlzc3Vlci0xQGV4YW1wbGUuY29tIiwiaWF0IjoxNzA2NzEwNTc1LCJqdGkiOiIwZDMxOTUyNS00MDNlLTQxZmMtYThmNi05NGE4YTIwNzY5OTgiLCJleHAiOjE3MDczMTUzNzUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTIyOS9sb2NhbF81YTlHelJ2QiJ9.T41uJS_JRkU6lSfjT391B8DdwZKWJ2pHH-kN1ztx-JcsYrpQc0zIvr4MsHRCaPqI6N6FXI7Hjbc4LOzAK4qdIroY6FR8yaNrRopCXdx6v5GItpcbKallhLATCUw0YRtKTu_V3MObNcJwBrEGpRtSWQrrwkWO9ZOjaaQGhCfb_0IHJZxL-HLvWlw7ZTLYwJmWEpXt8d2D0UvAUkFkkSI0AAJFOoMSvT_hQp2DuqgwehozAd7Zd65LWzsmBVvQCzzu4JNT5oozUQhNDl30g50NN15TSXXoFhkjTodmi65rCdn8rUpai56XGWv3YPY0yyNsci-7g6FNz0cBPZva1iVh8g" ] }, "profile-user-non-verifier-1": { @@ -836,7 +959,8 @@ "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi12ZXJpZmllci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItdmVyaWZpZXItMUBleGFtcGxlLmNvbSIsImlhdCI6MTY5NzYzMzgxMCwianRpIjoiYTU3MDRlOTEtYTIwZi00Mjg5LWFhZjMtOTUyZWMxODg0ZTljIiwiZXhwIjoxNjk4MjM4NjEwLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjkyMjkvbG9jYWxfNWE5R3pSdkIifQ.QOu2R8LRNptz4iewMGQUdhU1KHP8kfvbjf03fBEKZppXu8DIvdZPJPANs6WEQvNS5MMHDy0YN3hv72uYQrTfhpIJELLGDpQMLib_acriwrKMlQBjBbm9st1zRsMbEoZq03A9Zd3zB1J-tZ9VzeAQx9OZdals0o9TyKVMWP4vcoGJQMDuXvLOhpqnTRjBOGkIUcRP5h4dPF2ce52dfBH5OwJ5l5vpsrqa_d1yYyBkZWBJ37Dim1XFOC-_x62JHaJBF5kkOU34A2fJGb8K7tJgoct7UIFv_ZUVcNOALofDn0Azqf6AsuJcThcZGTaEF4DiXgFoRWX0FSaAKrZVOMzvUw", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi12ZXJpZmllci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItdmVyaWZpZXItMUBleGFtcGxlLmNvbSIsImlhdCI6MTY5NzYzNDQ0NywianRpIjoiMjhhZjQ2N2EtNGIwOC00OWI4LWE3NzEtNGM3ZWY5NWRjNTFmIiwiZXhwIjoxNjk4MjM5MjQ3LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjkyMjkvbG9jYWxfNWE5R3pSdkIifQ.jNUKpHxFy3QVADQ72Gw-eGv6Ii4Qa6LJjbdD_J_HcbRBixLaWghQ54BLbc3kGT6RWzkBi_FlHaGFkI4GWZ8z0-ZK5A5dJ5CW-n6zbxOwbjjuVYiFpKZKUQ8uU8NcgMYzJNOp8w4phbqM-elMkRvaxGQ4VRXAF0grQetTNq7N-Am0xRSYmtqkZKXqIBUk-8gAtCZ68sZxAyPFl5RVx2YgldDpUEFu46fqmEclQmc3FoY99SFosa8zqywLOJfeKuJ18U_6RK0ozRoN6gYEh9aJANs-aRuRUUCd80BKKFF9DAUYAUi0pN7lQ89e2d7ONVD5LeZ4L2yvVGbiXprauXNpXg", "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi12ZXJpZmllci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItdmVyaWZpZXItMUBleGFtcGxlLmNvbSIsImlhdCI6MTY5ODEwMjAzNSwianRpIjoiM2QwMTlkOTQtNjk0My00MTY0LWEwYjItOTcwZGRiZTUzNzY2IiwiZXhwIjoxNjk4NzA2ODM1LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjkyMjkvbG9jYWxfNWE5R3pSdkIifQ.shfaPplehnrvBC8TW2seevBJnT8uVGwnI83AY6WE4pniDr7fEo7zbIiL6UmtapK-UakwSO5Qp5_f7Th6SLtaYNgsRFKYo1_0pBUWBxq2wM25K64IUc3jMK6aFpXV6fClDbulxXDsB91xtPunJ4uZZbKlp7KTgBwiYV2zycTrghMz8mmk5bCmlJJRCGcJfQGcM_-G76Xf-_r8QLh-hpwZbUHOPJVAgKayRaip2tqyE0M7Trbv4cQi-9nn87iZBbg8inSLSRF-mhOzbl7Vq9j_cmu6U_rBPbdcf_XTE3toUhV1zQFnTPXktvCtOJnoj941ZcYYcPSYDBfW8OMh4EAx3g", - "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi12ZXJpZmllci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItdmVyaWZpZXItMUBleGFtcGxlLmNvbSIsImlhdCI6MTY5ODIzODA4NiwianRpIjoiZTg3MzhkNzgtYjAyMS00ZTViLTlmMzgtOWE1ZWM2NTgxOWU5IiwiZXhwIjoxNjk4ODQyODg2LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjkyMjkvbG9jYWxfNWE5R3pSdkIifQ.obFZ6iVmz90K4JX1xiqu3UK_pfasAe4VH6AMFr1_5hx-oHKL4eUS85Vyhp0UMbFRQ35ZMcUfQ9LTDvHUZyXXrh3I_NJvG1AAwKbTqco40ledRn7a8pegcPX2Ri2kg5JmAe_hT09nKDXvnnjd07SjAewVXWlRf13mJjfj8Np01brrnQ2LVSz4hM9zZ9NtuyAFkoDID9y9AunahMnXcxd6OSaeU_v7wbuzRvh_KcTo2Px-eG3XSks3LjTrFOppSvpJ6u-Jj17PjPnibR-dbGlgR5KSo82NBM0mklbEA2-dUImYOURagTrmm2QvzzAJGiBPtBLdjG4gAZvXdESOqMwOpA" + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi12ZXJpZmllci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItdmVyaWZpZXItMUBleGFtcGxlLmNvbSIsImlhdCI6MTY5ODIzODA4NiwianRpIjoiZTg3MzhkNzgtYjAyMS00ZTViLTlmMzgtOWE1ZWM2NTgxOWU5IiwiZXhwIjoxNjk4ODQyODg2LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjkyMjkvbG9jYWxfNWE5R3pSdkIifQ.obFZ6iVmz90K4JX1xiqu3UK_pfasAe4VH6AMFr1_5hx-oHKL4eUS85Vyhp0UMbFRQ35ZMcUfQ9LTDvHUZyXXrh3I_NJvG1AAwKbTqco40ledRn7a8pegcPX2Ri2kg5JmAe_hT09nKDXvnnjd07SjAewVXWlRf13mJjfj8Np01brrnQ2LVSz4hM9zZ9NtuyAFkoDID9y9AunahMnXcxd6OSaeU_v7wbuzRvh_KcTo2Px-eG3XSks3LjTrFOppSvpJ6u-Jj17PjPnibR-dbGlgR5KSo82NBM0mklbEA2-dUImYOURagTrmm2QvzzAJGiBPtBLdjG4gAZvXdESOqMwOpA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2duaXRvOnVzZXJuYW1lIjoicHJvZmlsZS11c2VyLW5vbi12ZXJpZmllci0xIiwiZW1haWwiOiJwcm9maWxlLXVzZXItdmVyaWZpZXItMUBleGFtcGxlLmNvbSIsImlhdCI6MTcwNjcxMDU3NSwianRpIjoiNTI1NjI3MGMtNTU1Yy00OTkyLWFhN2YtY2NlMWRlMjljZTQxIiwiZXhwIjoxNzA3MzE1Mzc1LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjkyMjkvbG9jYWxfNWE5R3pSdkIifQ.BFd2oj5OFIuHaLebFaV9Dd2pYrUmtQ-bUvcXZfarn6gr53Q4bCnuihqZ2VYKwL9aEdOvft-XFT045p84cMb_WQwAhQIU3bOdcdM8oqP-G58cal-x1G21AWJ86XylVqnIatmYFOgwTJuA7nWq93QFUZTcvg7NkyVTld_JSnT49imWlVt_CtmCxWaRX4HfrxvdtRc0whRdJzpfuruDt9K4izQ9F3afTAThEB-0yuaeq83aV8bzaLyQfnWj2CzHI12QdYCZOqQa0A0Rre5SB-ytzoXUVSaMTXlbY538RVUzlyERCdbj-qa4mgyUfwod7cuuz4wAjQUNFmfHtd6adt24fw" ] } }, diff --git a/test/bdd/go.mod b/test/bdd/go.mod index 339e7ad02..33ee6d998 100644 --- a/test/bdd/go.mod +++ b/test/bdd/go.mod @@ -22,10 +22,10 @@ require ( github.com/samber/lo v1.38.1 github.com/tidwall/gjson v1.14.4 github.com/trustbloc/cmdutil-go v0.0.0-20221125151303-09d42adcc811 - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 github.com/trustbloc/logutil-go v1.0.0-rc1 - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 github.com/trustbloc/vcs v0.1.9-0.20230210204445-f2870a36f0ea github.com/trustbloc/vcs/component/wallet-cli v0.0.0-20240103173902-7fbe030659b2 github.com/trustbloc/vcs/test/stress v0.0.0-00010101000000-000000000000 @@ -63,6 +63,7 @@ require ( github.com/cucumber/gherkin-go/v19 v19.0.3 // indirect github.com/cucumber/messages-go/v16 v16.0.1 // indirect github.com/dave/jennifer v1.6.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/deepmap/oapi-codegen v1.11.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect @@ -71,9 +72,10 @@ require ( github.com/evanphx/json-patch v4.11.0+incompatible // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fxamacker/cbor/v2 v2.5.0 // indirect github.com/getkin/kin-openapi v0.94.0 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect @@ -124,6 +126,7 @@ require ( github.com/pborman/uuid v1.2.1 // indirect github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pquerna/cachecontrol v0.1.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect @@ -135,17 +138,19 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect - github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 // indirect + github.com/stretchr/testify v1.8.4 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fastjson v1.6.3 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect + github.com/veraison/go-cose v1.1.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -159,13 +164,13 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.30.0 // indirect diff --git a/test/bdd/go.sum b/test/bdd/go.sum index ce79929fc..5451be6b0 100644 --- a/test/bdd/go.sum +++ b/test/bdd/go.sum @@ -222,6 +222,8 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo= github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -233,8 +235,8 @@ github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITL github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= @@ -647,8 +649,6 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 h1:wD1IWQwAhdWclCwaf6DdzgCAe9Bfz1M+4AHRd7N786Y= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -681,20 +681,20 @@ github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhso github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= github.com/trustbloc/cmdutil-go v0.0.0-20221125151303-09d42adcc811 h1:0e1d1w9o662+e7ZnJvRYJH8yblcBXngme8qbsjTvhQc= github.com/trustbloc/cmdutil-go v0.0.0-20221125151303-09d42adcc811/go.mod h1:o/v7C1z6d/5UrjaC6GAUc1hk0XVuE3M4tpyvsMMUw5k= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0-rc1 h1:rRJbvgQfrlUfyej+mY0nuQJymGqjRW4oZEwKi544F4c= github.com/trustbloc/logutil-go v1.0.0-rc1/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 h1:e701OxbML1BEu0MnlhqPl4Z1YC/ZR0EJb4oFPUYv2k0= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12/go.mod h1:P8KNf/BjWYRbFIJUq+KRd1rtukk5G4NjTc0RqqA0ekc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 h1:xx5Fg5boc9ibrltoaapZRTvti3BAqchzglUdrY1oZuY= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7/go.mod h1:cYiU0rOxzOoLldb0cKfVlWlBD5gk+q4MVgpkX+4jWT4= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= @@ -706,6 +706,10 @@ github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLr github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -779,8 +783,8 @@ golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -956,8 +960,8 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -972,8 +976,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/test/bdd/pkg/v1/oidc4vc/oidc4vci.go b/test/bdd/pkg/v1/oidc4vc/oidc4vci.go index 9f3def182..094148fb6 100644 --- a/test/bdd/pkg/v1/oidc4vc/oidc4vci.go +++ b/test/bdd/pkg/v1/oidc4vc/oidc4vci.go @@ -133,12 +133,20 @@ func (s *Steps) runOIDC4VCIPreAuth(initiateOIDC4CIRequest initiateOIDC4VCIReques return fmt.Errorf("init credential issuance: %w", err) } - flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts := []oidc4vci.Opt{ oidc4vci.WithFlowType(oidc4vci.FlowTypePreAuthorizedCode), oidc4vci.WithCredentialOffer(initiateOIDC4CIResponseData.OfferCredentialURL), oidc4vci.WithCredentialType(s.issuedCredentialType), oidc4vci.WithOIDCCredentialFormat(s.getIssuerOIDCCredentialFormat(s.issuedCredentialType)), oidc4vci.WithPin(*initiateOIDC4CIResponseData.UserPin), + } + + if s.proofType == "cwt" { + opts = append(opts, oidc4vci.WithProofBuilder(oidc4vci.NewCWTProofBuilder())) + } + + flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts..., ) if err != nil { return fmt.Errorf("init pre-auth flow: %w", err) @@ -245,6 +253,10 @@ func (s *Steps) runOIDC4CIPreAuthWithValidClaims() error { return s.runOIDC4VCIPreAuth(initiateIssuanceRequest) } +func (s *Steps) setProofType(proofType string) { + s.proofType = proofType +} + func (s *Steps) runOIDC4CIPreAuthWithClientAttestation() error { if err := s.requestAttestationVC(); err != nil { return fmt.Errorf("request attestation vc: %w", err) @@ -266,12 +278,20 @@ func (s *Steps) runOIDC4CIPreAuthWithClientAttestation() error { return fmt.Errorf("initiate credential issuance: %w", err) } - flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts := []oidc4vci.Opt{ oidc4vci.WithFlowType(oidc4vci.FlowTypePreAuthorizedCode), oidc4vci.WithCredentialOffer(initiateOIDC4CIResponseData.OfferCredentialURL), oidc4vci.WithCredentialType(s.issuedCredentialType), oidc4vci.WithOIDCCredentialFormat(s.getIssuerOIDCCredentialFormat(s.issuedCredentialType)), oidc4vci.WithPin(*initiateOIDC4CIResponseData.UserPin), + } + + if s.proofType == "cwt" { + opts = append(opts, oidc4vci.WithProofBuilder(oidc4vci.NewCWTProofBuilder())) + } + + flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts..., ) if err != nil { return fmt.Errorf("init pre-auth flow: %w", err) @@ -396,76 +416,79 @@ func (s *Steps) runOIDC4CIAuthWithErrorInvalidClient(updatedClientID, errorConta } func (s *Steps) runOIDC4VCIAuthWithErrorInvalidSigningKeyID(errorContains string) error { - proofBuilder := func( - claims *oidc4vci.JWTProofClaims, - headers map[string]interface{}, - signer jose.Signer, - ) (string, error) { - headers[jose.HeaderKeyID] = "invalid-key-id" - - signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, signer) - if jwtErr != nil { - return "", fmt.Errorf("create signed jwt: %w", jwtErr) - } - - jws, jwtErr := signedJWT.Serialize(false) - if jwtErr != nil { - return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) - } - - return jws, nil - } - - return s.runOIDC4VCIAuthWithError(errorContains, oidc4vci.WithProofBuilder(proofBuilder)) + builder := oidc4vci.NewJWTProofBuilder(). + WithCustomProofFn(func( + claims *oidc4vci.ProofClaims, + headers map[string]interface{}, + signer jose.Signer, + ) (string, error) { + headers[jose.HeaderKeyID] = "invalid-key-id" + + signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, signer) + if jwtErr != nil { + return "", fmt.Errorf("create signed jwt: %w", jwtErr) + } + + jws, jwtErr := signedJWT.Serialize(false) + if jwtErr != nil { + return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) + } + + return jws, nil + }) + + return s.runOIDC4VCIAuthWithError(errorContains, oidc4vci.WithProofBuilder(builder)) } func (s *Steps) runOIDC4VCIAuthWithErrorInvalidSignatureValue(errorContains string) error { - proofBuilder := func( - claims *oidc4vci.JWTProofClaims, - headers map[string]interface{}, - signer jose.Signer, - ) (string, error) { - signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, signer) - if jwtErr != nil { - return "", fmt.Errorf("create signed jwt: %w", jwtErr) - } - - jws, jwtErr := signedJWT.Serialize(false) - if jwtErr != nil { - return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) - } - - parts := strings.Split(jws, ".") - jws = strings.Join([]string{parts[0], parts[1], "invalid-signature"}, ".") - - return jws, nil - } - - return s.runOIDC4VCIAuthWithError(errorContains, oidc4vci.WithProofBuilder(proofBuilder)) + builder := oidc4vci.NewJWTProofBuilder(). + WithCustomProofFn(func( + claims *oidc4vci.ProofClaims, + headers map[string]interface{}, + signer jose.Signer, + ) (string, error) { + signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, signer) + if jwtErr != nil { + return "", fmt.Errorf("create signed jwt: %w", jwtErr) + } + + jws, jwtErr := signedJWT.Serialize(false) + if jwtErr != nil { + return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) + } + + parts := strings.Split(jws, ".") + jws = strings.Join([]string{parts[0], parts[1], "invalid-signature"}, ".") + + return jws, nil + }) + + return s.runOIDC4VCIAuthWithError(errorContains, oidc4vci.WithProofBuilder(builder)) } func (s *Steps) runOIDC4VCIAuthWithErrorInvalidNonce(errorContains string) error { - proofBuilder := func( - claims *oidc4vci.JWTProofClaims, - headers map[string]interface{}, - signer jose.Signer, - ) (string, error) { - claims.Nonce = "invalid-nonce" - - signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, signer) - if jwtErr != nil { - return "", fmt.Errorf("create signed jwt: %w", jwtErr) - } - - jws, jwtErr := signedJWT.Serialize(false) - if jwtErr != nil { - return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) - } - - return jws, nil - } - - return s.runOIDC4VCIAuthWithError(errorContains, oidc4vci.WithProofBuilder(proofBuilder)) + builder := oidc4vci.NewJWTProofBuilder(). + WithCustomProofFn(func( + claims *oidc4vci.ProofClaims, + headers map[string]interface{}, + signer jose.Signer, + ) (string, error) { + claims.Nonce = "invalid-nonce" + + signedJWT, jwtErr := jwt.NewJoseSigned(claims, headers, signer) + if jwtErr != nil { + return "", fmt.Errorf("create signed jwt: %w", jwtErr) + } + + jws, jwtErr := signedJWT.Serialize(false) + if jwtErr != nil { + return "", fmt.Errorf("serialize signed jwt: %w", jwtErr) + } + + return jws, nil + }) + + return s.runOIDC4VCIAuthWithError(errorContains, oidc4vci.WithProofBuilder(builder)) } func (s *Steps) runOIDC4VCIAuthWithError(errorContains string, overrideOpts ...oidc4vci.Opt) error { @@ -510,7 +533,7 @@ func (s *Steps) runOIDC4VCIAuth() error { return fmt.Errorf("initiate credential issuance: %w", err) } - flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts := []oidc4vci.Opt{ oidc4vci.WithFlowType(oidc4vci.FlowTypeAuthorizationCode), oidc4vci.WithCredentialOffer(resp.OfferCredentialURL), oidc4vci.WithCredentialType(s.issuedCredentialType), @@ -520,6 +543,14 @@ func (s *Steps) runOIDC4VCIAuth() error { oidc4vci.WithRedirectURI("http://127.0.0.1/callback"), oidc4vci.WithUserLogin("bdd-test"), oidc4vci.WithUserPassword("bdd-test-pass"), + } + + if s.proofType == "cwt" { + opts = append(opts, oidc4vci.WithProofBuilder(oidc4vci.NewCWTProofBuilder())) + } + + flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts..., ) if err != nil { return fmt.Errorf("init auth flow: %w", err) @@ -538,7 +569,7 @@ func (s *Steps) runOIDC4VCIAuthWithCredentialConfigurationID() error { return fmt.Errorf("initiate credential issuance: %w", err) } - flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts := []oidc4vci.Opt{ oidc4vci.WithFlowType(oidc4vci.FlowTypeAuthorizationCode), oidc4vci.WithCredentialOffer(resp.OfferCredentialURL), oidc4vci.WithCredentialType(s.issuedCredentialType), @@ -550,6 +581,13 @@ func (s *Steps) runOIDC4VCIAuthWithCredentialConfigurationID() error { oidc4vci.WithRedirectURI("http://127.0.0.1/callback"), oidc4vci.WithUserLogin("bdd-test"), oidc4vci.WithUserPassword("bdd-test-pass"), + } + if s.proofType == "cwt" { + opts = append(opts, oidc4vci.WithProofBuilder(oidc4vci.NewCWTProofBuilder())) + } + + flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts..., ) if err != nil { return fmt.Errorf("init auth flow: %w", err) @@ -563,7 +601,7 @@ func (s *Steps) runOIDC4VCIAuthWithCredentialConfigurationID() error { } func (s *Steps) runOIDC4VCIAuthWalletInitiatedFlow() error { - flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts := []oidc4vci.Opt{ oidc4vci.WithFlowType(oidc4vci.FlowTypeWalletInitiated), oidc4vci.WithIssuerState(fmt.Sprintf(vcsIssuerURL, s.issuerProfile.ID, s.issuerProfile.Version)), oidc4vci.WithCredentialType(s.issuedCredentialType), @@ -573,6 +611,14 @@ func (s *Steps) runOIDC4VCIAuthWalletInitiatedFlow() error { oidc4vci.WithRedirectURI("http://127.0.0.1/callback"), oidc4vci.WithUserLogin("bdd-test"), oidc4vci.WithUserPassword("bdd-test-pass"), + } + + if s.proofType == "cwt" { + opts = append(opts, oidc4vci.WithProofBuilder(oidc4vci.NewCWTProofBuilder())) + } + + flow, err := oidc4vci.NewFlow(s.oidc4vciProvider, + opts..., ) if err != nil { return fmt.Errorf("init wallet-initiated auth flow: %w", err) diff --git a/test/bdd/pkg/v1/oidc4vc/steps.go b/test/bdd/pkg/v1/oidc4vc/steps.go index eb4fd3bb2..8291e6943 100644 --- a/test/bdd/pkg/v1/oidc4vc/steps.go +++ b/test/bdd/pkg/v1/oidc4vc/steps.go @@ -57,6 +57,7 @@ type Steps struct { usersNum int concurrentReq int stressResult *stress.Result + proofType string } // NewSteps returns new Steps context. @@ -89,7 +90,7 @@ func (s *Steps) RegisterSteps(sc *godog.ScenarioContext) { sc.Step(`^User interacts with Wallet to initiate credential issuance using pre authorization code flow$`, s.runOIDC4CIPreAuthWithValidClaims) sc.Step(`^User interacts with Wallet to initiate credential issuance using authorization code flow with invalid claims schema$`, s.runOIDC4VCIAuthWithInvalidClaims) sc.Step(`^User interacts with Wallet to initiate credential issuance using pre authorization code flow with client attestation enabled$`, s.runOIDC4CIPreAuthWithClientAttestation) - + sc.Step(`^proofType is "([^"]*)"$`, s.setProofType) // OIDC4VP sc.Step(`^User interacts with Verifier and initiate OIDC4VP interaction under "([^"]*)" profile with presentation definition ID "([^"]*)" and fields "([^"]*)"$`, s.runOIDC4VPFlow) sc.Step(`^User interacts with Verifier and initiate OIDC4VP interaction under "([^"]*)" profile with presentation definition ID "([^"]*)" and fields "([^"]*)" and custom scopes "([^"]*)"$`, s.runOIDC4VPFlowWithCustomScopes) @@ -134,6 +135,7 @@ func (s *Steps) ResetAndSetup() error { s.usersNum = 0 s.concurrentReq = 0 s.stressResult = nil + s.proofType = "jwt" s.tlsConfig = s.bddContext.TLSConfig diff --git a/test/stress/go.mod b/test/stress/go.mod index 83df993ba..0e35e1a19 100644 --- a/test/stress/go.mod +++ b/test/stress/go.mod @@ -15,10 +15,10 @@ require ( github.com/piprate/json-gold v0.5.1-0.20230111113000-6ddbe6e6f19f github.com/redis/go-redis/v9 v9.0.3 github.com/samber/lo v1.38.1 - github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f - github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a + github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 + github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 github.com/trustbloc/logutil-go v1.0.0-rc1 - github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 + github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 github.com/trustbloc/vcs/component/wallet-cli v0.0.0-20240103173902-7fbe030659b2 github.com/trustbloc/vcs/test/bdd v0.0.0-00010101000000-000000000000 golang.org/x/oauth2 v0.7.0 @@ -56,6 +56,7 @@ require ( github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/creasty/defaults v1.7.0 // indirect github.com/dave/jennifer v1.6.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/deepmap/oapi-codegen v1.11.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect @@ -65,10 +66,11 @@ require ( github.com/evanphx/json-patch v4.11.0+incompatible // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fxamacker/cbor/v2 v2.5.0 // indirect github.com/gaukas/godicttls v0.0.4 // indirect github.com/getkin/kin-openapi v0.94.0 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect - github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect @@ -120,6 +122,7 @@ require ( github.com/pborman/uuid v1.2.1 // indirect github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pquerna/cachecontrol v0.1.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect github.com/quic-go/qtls-go1-20 v0.3.3 // indirect @@ -133,19 +136,21 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect - github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 // indirect + github.com/stretchr/testify v1.8.4 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/trustbloc/bbs-signature-go v1.0.1 // indirect - github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 // indirect + github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 // indirect + github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 // indirect github.com/trustbloc/vcs v0.1.9-0.20230210204445-f2870a36f0ea // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fastjson v1.6.3 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect + github.com/veraison/go-cose v1.1.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect @@ -160,13 +165,13 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.30.0 // indirect diff --git a/test/stress/go.sum b/test/stress/go.sum index 3ff9ac736..a67028311 100644 --- a/test/stress/go.sum +++ b/test/stress/go.sum @@ -196,6 +196,8 @@ github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= +github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/gaukas/godicttls v0.0.4 h1:NlRaXb3J6hAnTmWdsEKb9bcSBD6BvcIjdGdeb0zfXbk= github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI= github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo= @@ -209,8 +211,8 @@ github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITL github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214 h1:w5li6eMV6NCHh1YVbKRM/gMCVtZ2w7mnwq78eNnHXQQ= -github.com/go-jose/go-jose/v3 v3.0.1-0.20221117193127-916db76e8214/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -532,8 +534,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 h1:wD1IWQwAhdWclCwaf6DdzgCAe9Bfz1M+4AHRd7N786Y= -github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693/go.mod h1:6hSY48PjDm4UObWmGLyJE9DxYVKTgR9kbCspXXJEhcU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -562,18 +562,18 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/trustbloc/bbs-signature-go v1.0.1 h1:Nv/DCGVMQiY27dV0mD4U4924jGAnru/u3V+/QWivm8c= -github.com/trustbloc/bbs-signature-go v1.0.1/go.mod h1:gjYaYD+/wqBsA0IIdZBoCKSNKPXi775J2LE45u6pX+8= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f h1:1grnYCxXWla5s8efW4gNzqwqQ8XtmlyB91JgJMlOqWU= -github.com/trustbloc/did-go v1.0.2-0.20231117120416-ed019bda587f/go.mod h1:NExAhDDefAo9Tu8Z5gEg640M6TBef/Sif9pg8JRQYLQ= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a h1:o5QJVGWEZFHJKu1IKV6ucVVTVdzhmnnTzo5Wa+u57es= -github.com/trustbloc/kms-go v1.0.1-0.20231116141347-14d6bea5727a/go.mod h1:FEo4tIRWv7zNwgZsWZ4g10e/gOkJL5ybQtSrY2UdOXM= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4 h1:YwwlqncHhg7q3W7TDj4yAM4sr9iZmNX5DfhU3Afpe04= +github.com/trustbloc/bbs-signature-go v1.0.2-0.20240117165819-e99610e107f4/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955 h1:pVe5+rmEzDuuK64cd3EjM0WtBMfm2T26xraGgv3r0Mg= +github.com/trustbloc/did-go v1.1.1-0.20240117181910-cb9c77016955/go.mod h1:PXsxEF78QvuExNO3WkumlYvbrjLH+AN8P74D8IOMABo= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167 h1:tgzKqzUJRLg0sY/BmHEDpMQ3TZOtC7u1RDYEMPeqnCI= +github.com/trustbloc/kms-go v1.1.1-0.20240117181216-c38a74431167/go.mod h1:23chV97aYVcT3ihO8xO9+T0KZn9lFGbk2KXhJNaHbXE= github.com/trustbloc/logutil-go v1.0.0-rc1 h1:rRJbvgQfrlUfyej+mY0nuQJymGqjRW4oZEwKi544F4c= github.com/trustbloc/logutil-go v1.0.0-rc1/go.mod h1:JlxT0oZfNKgIlSNtgc001WEeDMxlnAvOM43gNm8DQVc= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12 h1:e701OxbML1BEu0MnlhqPl4Z1YC/ZR0EJb4oFPUYv2k0= -github.com/trustbloc/sidetree-go v0.0.0-20231117115139-d71ec9786d12/go.mod h1:P8KNf/BjWYRbFIJUq+KRd1rtukk5G4NjTc0RqqA0ekc= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734 h1:2+TO4pyXzPnKs8qK8tItu/lLNJAGpL7MxVVjaZ6SAzQ= -github.com/trustbloc/vc-go v1.0.3-0.20231117124429-a8a3b24ef734/go.mod h1:nPbBUX9nu8j3WX6G54u1szoep/89RBmAZghbVgrGxWc= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7 h1:xx5Fg5boc9ibrltoaapZRTvti3BAqchzglUdrY1oZuY= +github.com/trustbloc/sidetree-go v1.0.1-0.20240117181443-2f0d5acb92b7/go.mod h1:cYiU0rOxzOoLldb0cKfVlWlBD5gk+q4MVgpkX+4jWT4= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848 h1:yGmY6+gK+wx66rMv8uxNHBjWL6SI0jsTIjX8YHBBqe8= +github.com/trustbloc/vc-go v1.1.1-0.20240131142342-c5e522292848/go.mod h1:NhGY+S6cUL2zW00jfN/ED8Ch9oMF9nqlELppAD24hBc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= @@ -585,6 +585,10 @@ github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLr github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/veraison/go-cose v1.1.0 h1:AalPS4VGiKavpAzIlBjrn7bhqXiXi4jbMYY/2+UC+4o= +github.com/veraison/go-cose v1.1.0/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -651,8 +655,8 @@ golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -818,8 +822,8 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -834,8 +838,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=