From 25b55ab1274dcb00f38af9c7a26272912be34336 Mon Sep 17 00:00:00 2001 From: Albin Antony Date: Wed, 17 Jan 2024 18:29:37 +0530 Subject: [PATCH] Add #25 Add bdd test for issue_616.feature --- fixtures/generate_signatures.py | 31 +++ fixtures/main.py | 42 ++++ fixtures/poetry.lock | 239 ++++++++++++++++++- fixtures/pyproject.toml | 1 + gherkin/features/issue_616/issue_616.feature | 10 +- gherkin/poetry.lock | 238 +++++++++++++++++- gherkin/pyproject.toml | 1 + gherkin/steps/issue_616.py | 226 ++++++++++++++++++ test/test-data.json | 187 ++++++++++++++- 9 files changed, 964 insertions(+), 11 deletions(-) create mode 100644 fixtures/generate_signatures.py create mode 100644 gherkin/steps/issue_616.py diff --git a/fixtures/generate_signatures.py b/fixtures/generate_signatures.py new file mode 100644 index 0000000..0e6ad70 --- /dev/null +++ b/fixtures/generate_signatures.py @@ -0,0 +1,31 @@ +import json + +from jwcrypto import jwk, jwt + + + +def generate_secp256r1_jwk(): + # Generate EC key pair for secp256r1 curve + key = jwk.JWK.generate(kty="EC", crv="P-256") + return key + + +def sign_jws(payload, private_key): + # Generate JSON web signature + key = jwk.JWK(**private_key) + token = jwt.JWT(header={"alg": "ES256"}, claims=payload) + token.make_signed_token(key) + return token.serialize() + +private_key = generate_secp256r1_jwk() + +payload = "{\"schemaName\":\"ConsentRecord\",\"objectId\":\"2\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-17T10:15:07Z\",\"authorizedByIndividualId\":\"1\",\"authorizedByOtherId\":\"\",\"objectData\":\"{\\\"id\\\":\\\"2\\\",\\\"dataAgreementId\\\":\\\"2\\\",\\\"dataAgreementRevisionId\\\":\\\"659fd68befcb8216c24c2695\\\",\\\"dataAgreementRevisionHash\\\":\\\"3f0f5aef5e79afb50428ed835ad628db449c4504\\\",\\\"individualId\\\":\\\"1\\\",\\\"optIn\\\":true,\\\"state\\\":\\\"signed\\\",\\\"signatureId\\\":\\\"1\\\"}\"}" + +jws_token = sign_jws(payload, private_key.export(as_dict=True)) + +print( + f"Public key JWK:\n{json.dumps(private_key.export(private_key=False, as_dict=False), indent=2)}\n" +) +print(f"JWS:\n{jws_token}") + + diff --git a/fixtures/main.py b/fixtures/main.py index 19d4e1a..e07b5e3 100644 --- a/fixtures/main.py +++ b/fixtures/main.py @@ -513,6 +513,46 @@ def populate_policies(db): except Exception as e: print(e) +def populate_signatures(db): + try: + signatures_collection = db["signatures"] + + # Populate signatures collection + seed_year = 2012 + index = 0 + + for signature in data.get("signatures", []): + + # Save signatures to db + signatures_collection.insert_one( + { + "_id": signature.get( + "id", generate_object_id(seed_year + index, 1, 1) + ), + "payload": signature.get("payload", ""), + "signature": signature.get("signature", ""), + "verificationmethod": signature.get( + "verificationMethod", "" + ), + "verificationpayload": signature.get("verificationPayload", ""), + "verificationpayloadhash": signature.get( + "verificationPayloadHash", "" + ), + "verificationartifact": signature.get("verificationArtifact", ""), + "verificationsignedby": signature.get("verificationSignedBy", ""), + "verificationsignedas": signature.get("verificationSignedAs", ""), + "verificationjwsheader": signature.get("verificationJwsHeader", ""), + "timestamp": signature.get("timestamp", ""), + "signedwithoutobjectreference": signature.get("signedWithoutObjectReference", ""), + "objecttype": signature.get("objectType", ""), + "objectreference": signature.get("objectReference", ""), + } + ) + + index += 1 + except Exception as e: + print(e) + def update_organisation_id(db): try: @@ -586,6 +626,8 @@ def main(): populate_policies(db) # Populate revisions in mongodb populate_revisions(db=db) + # Populate signatures in mongodb + populate_signatures(db) # Update caddy with default access token headers for organisation admin and individual endpoints org_admin_token = login_organisation_admin( diff --git a/fixtures/poetry.lock b/fixtures/poetry.lock index 354062f..3fdcee4 100644 --- a/fixtures/poetry.lock +++ b/fixtures/poetry.lock @@ -6,6 +6,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +pycparser = "*" + [[package]] name = "charset-normalizer" version = "3.3.2" @@ -14,6 +25,41 @@ category = "main" optional = false python-versions = ">=3.7.0" +[[package]] +name = "cryptography" +version = "41.0.7" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + +[[package]] +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + [[package]] name = "deprecation" version = "2.1.0" @@ -64,6 +110,18 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "jwcrypto" +version = "1.5.1" +description = "Implementation of JOSE Web standards" +category = "main" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +cryptography = ">=3.4" +deprecated = "*" + [[package]] name = "packaging" version = "23.2" @@ -80,6 +138,14 @@ category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pymongo" version = "4.6.0" @@ -196,16 +262,78 @@ brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "wrapt" +version = "1.16.0" +description = "Module for decorators, wrappers and monkey patching." +category = "main" +optional = false +python-versions = ">=3.6" + [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "84ab149920be3eb864c3ff4762def5d5ad388ddd4c49e3735f3b052d8b39c23f" +content-hash = "fb0f3e283c9e131e4aa0fbbc4ce7d9e37a5f2aa2ce371b5ce5dc3589350da136" [metadata.files] certifi = [ {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] +cffi = [ + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, +] charset-normalizer = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, @@ -298,6 +426,35 @@ charset-normalizer = [ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +cryptography = [ + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, + {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, + {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, + {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, +] +deprecated = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] deprecation = [ {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"}, {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"}, @@ -314,6 +471,9 @@ idna = [ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] +jwcrypto = [ + {file = "jwcrypto-1.5.1.tar.gz", hash = "sha256:48bb9bf433777136253579e52b75ffe0f9a4a721d133d01f45a0b91ed5f4f1ae"}, +] packaging = [ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, @@ -322,6 +482,10 @@ pyasn1 = [ {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, ] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] pymongo = [ {file = "pymongo-4.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c011bd5ad03cc096f99ffcfdd18a1817354132c1331bed7a837a25226659845f"}, {file = "pymongo-4.6.0-cp310-cp310-manylinux1_i686.whl", hash = "sha256:5e63146dbdb1eac207464f6e0cfcdb640c9c5ff0f57b754fa96fe252314a1dc6"}, @@ -353,6 +517,7 @@ pymongo = [ {file = "pymongo-4.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ab6bcc8e424e07c1d4ba6df96f7fb963bcb48f590b9456de9ebd03b88084fe8"}, {file = "pymongo-4.6.0-cp312-cp312-win32.whl", hash = "sha256:47aa128be2e66abd9d1a9b0437c62499d812d291f17b55185cb4aa33a5f710a4"}, {file = "pymongo-4.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:014e7049dd019a6663747ca7dae328943e14f7261f7c1381045dfc26a04fa330"}, + {file = "pymongo-4.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e24025625bad66895b1bc3ae1647f48f0a92dd014108fb1be404c77f0b69ca67"}, {file = "pymongo-4.6.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:288c21ab9531b037f7efa4e467b33176bc73a0c27223c141b822ab4a0e66ff2a"}, {file = "pymongo-4.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:747c84f4e690fbe6999c90ac97246c95d31460d890510e4a3fa61b7d2b87aa34"}, {file = "pymongo-4.6.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:055f5c266e2767a88bb585d01137d9c7f778b0195d3dbf4a487ef0638be9b651"}, @@ -433,3 +598,75 @@ urllib3 = [ {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, ] +wrapt = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] diff --git a/fixtures/pyproject.toml b/fixtures/pyproject.toml index 032b2d9..fd3f6c1 100644 --- a/fixtures/pyproject.toml +++ b/fixtures/pyproject.toml @@ -11,6 +11,7 @@ python = "^3.10" pymongo = "^4.6.0" python-keycloak = "^3.7.0" requests = "^2.31.0" +jwcrypto = "^1.5.1" [build-system] diff --git a/gherkin/features/issue_616/issue_616.feature b/gherkin/features/issue_616/issue_616.feature index 52db798..42ad52c 100644 --- a/gherkin/features/issue_616/issue_616.feature +++ b/gherkin/features/issue_616/issue_616.feature @@ -16,13 +16,13 @@ Feature: Review signature workflow in Consent Records And consent record contains `state` field as signed And revision contains `signedWithoutObjectId` field as true And `serializedSnapshot` contains `objectId` field with empty value - And signature container `signedWithoutObjectReference` field as true + And signature contains `signedWithoutObjectReference` field as true And signature contains `objectReference` field with empty value And signature is verified by recreating the payload from revision in response Examples: | dataAgreementId | - | 1 | + | 4 | @positive Scenario Outline: Update consent record and add a new signature @@ -36,13 +36,13 @@ Feature: Review signature workflow in Consent Records And consent record contains `state` field as signed And revision contains `signedWithoutObjectId` field as false And `serializedSnapshot` contains `objectId` field with "" - And signature container `signedWithoutObjectReference` field as false + And signature contains `signedWithoutObjectReference` field as false And signature contains `objectReference` field with "" And signature is verified by recreating the payload from revision in response Examples: | consentRecordId | revisionId | - | 1 | 1 | + | 2 | 1 | @positive @@ -53,6 +53,6 @@ Feature: Review signature workflow in Consent Records Examples: | consentRecordId | revisionId | - | 1 | 1 | + | 3 | 2 | diff --git a/gherkin/poetry.lock b/gherkin/poetry.lock index 9ae0e94..d4ac997 100644 --- a/gherkin/poetry.lock +++ b/gherkin/poetry.lock @@ -63,6 +63,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +pycparser = "*" + [[package]] name = "charset-normalizer" version = "3.3.2" @@ -71,6 +82,41 @@ category = "main" optional = false python-versions = ">=3.7.0" +[[package]] +name = "cryptography" +version = "41.0.7" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + +[[package]] +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + [[package]] name = "idna" version = "3.6" @@ -79,6 +125,18 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "jwcrypto" +version = "1.5.1" +description = "Implementation of JOSE Web standards" +category = "main" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +cryptography = ">=3.4" +deprecated = "*" + [[package]] name = "parse" version = "1.20.0" @@ -116,6 +174,14 @@ python-versions = ">=3.8" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "requests" version = "2.31.0" @@ -155,10 +221,18 @@ brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "wrapt" +version = "1.16.0" +description = "Module for decorators, wrappers and monkey patching." +category = "main" +optional = false +python-versions = ">=3.6" + [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "c4c00d9dfa6315823044efef2b7d08f2fe333881ab2e924263482e1e127c2eb0" +content-hash = "ea2ff8877991809c5d6ae941a717ea1c89bfad3344f79207eff76148bf727d2f" [metadata.files] allure-behave = [ @@ -181,6 +255,60 @@ certifi = [ {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] +cffi = [ + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, +] charset-normalizer = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, @@ -273,10 +401,42 @@ charset-normalizer = [ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +cryptography = [ + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, + {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, + {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, + {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, +] +deprecated = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] idna = [ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] +jwcrypto = [ + {file = "jwcrypto-1.5.1.tar.gz", hash = "sha256:48bb9bf433777136253579e52b75ffe0f9a4a721d133d01f45a0b91ed5f4f1ae"}, +] parse = [ {file = "parse-1.20.0-py2.py3-none-any.whl", hash = "sha256:5e171b001452fa9f004c5a58a93525175468daf69b493e9fa915347ed7ff6968"}, {file = "parse-1.20.0.tar.gz", hash = "sha256:bd28bae37714b45d5894d77160a16e2be36b64a3b618c81168b3684676aa498b"}, @@ -289,6 +449,10 @@ pluggy = [ {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] requests = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, @@ -301,3 +465,75 @@ urllib3 = [ {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, ] +wrapt = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] diff --git a/gherkin/pyproject.toml b/gherkin/pyproject.toml index 1df3d5c..dd08262 100644 --- a/gherkin/pyproject.toml +++ b/gherkin/pyproject.toml @@ -10,6 +10,7 @@ python = "^3.10" behave = "^1.2.6" requests = "^2.31.0" allure-behave = "^2.13.2" +jwcrypto = "^1.5.1" [build-system] diff --git a/gherkin/steps/issue_616.py b/gherkin/steps/issue_616.py new file mode 100644 index 0000000..a169a3e --- /dev/null +++ b/gherkin/steps/issue_616.py @@ -0,0 +1,226 @@ +import json + +import requests +from behave import * +from jwcrypto import jws,jwk + +@given("a data agreement with id \"{dataAgreementId}\"") +def step_impl(context, dataAgreementId): + context.data_agreement_id = dataAgreementId + context.individual_id = "1" + +@when("I create a draft consent record. It returns consent record and signatures objects partially filled") +def step_impl(context): + individual_id = context.individual_id + base_url = context.config.userdata.get("base_url") + params = {"individualId": individual_id,"dataAgreementId":context.data_agreement_id} + # Construct the full API endpoint URL + url = base_url + f"/service/individual/record/consent-record/draft" + response = requests.post(url + "/", verify=False,params=params) + context.response = response + response_data = json.loads(context.response.content) + assert "consentRecord" in response_data, "Response does not contains consent record" + assert "signature" in response_data, "Response does not contains signature" + +@when("Create consent record payload with optIn as true. Generates signature payload using P-256 secp256r1 for the consent record in JWS format and make a POST request to create consent record and signature in consent BB") +def step_impl(context): + individual_id = context.individual_id + data_agreement_id = context.data_agreement_id + response_data = json.loads(context.response.content) + data_agreement_revision_id = response_data["consentRecord"]["dataAgreementRevisionId"] + base_url = context.config.userdata.get("base_url") + data = { + "consentRecord": { + "dataAgreementId": data_agreement_id, + "dataAgreementRevisionId": data_agreement_revision_id, + "individualId": individual_id, + "optIn": True + }, + "signature": { + "payload": "{\"verificationMethod\":\"P-256\",\"verificationArtifact\":\"\",\"verificationSignedBy\":\"{\\\"crv\\\":\\\"P-256\\\",\\\"kty\\\":\\\"EC\\\",\\\"x\\\":\\\"bNMhRP_V0M8gbHcdqP2CbQQs6OKAWROLHqL2jjitykw\\\",\\\"y\\\":\\\"zZivG5UKJqliypWBDCJIgaOeae-z4uCNXMFOSPYot80\\\"}\",\"verificationSignedAs\":\"individual\",\"timestamp\":\"2024-01-15T04:56:13Z\",\"objectType\":\"Revision\",\"objectReference\":\"\"}", + "signature": "eyJhbGciOiJFUzI1NiJ9.eyJzY2hlbWFOYW1lIjoiQ29uc2VudFJlY29yZCIsIm9iamVjdElkIjoiIiwic2lnbmVkV2l0aG91dE9iamVjdElkIjp0cnVlLCJ0aW1lc3RhbXAiOiIiLCJhdXRob3JpemVkQnlJbmRpdmlkdWFsSWQiOiIyIiwiYXV0aG9yaXplZEJ5T3RoZXIiOiIiLCJvYmplY3REYXRhIjoie1wiaWRcIjpcIlwiLFwiZGF0YUFncmVlbWVudElkXCI6XCIxXCIsXCJkYXRhQWdyZWVtZW50UmV2aXNpb25JZFwiOlwiNjU5ZmQ2OGJlZmNiODIxNmMyNGMyNjk5XCIsXCJkYXRhQWdyZWVtZW50UmV2aXNpb25IYXNoXCI6XCJkMDc1NGQ5ODllOWYyN2ZhMDVhYTY5ZmMxMzU5MWJjMzQzZGRkZjM3XCIsXCJpbmRpdmlkdWFsSWRcIjpcIjJcIixcIm9wdEluXCI6dHJ1ZSxcInN0YXRlXCI6XCJ1bnNpZ25lZFwiLFwic2lnbmF0dXJlSWRcIjpcIlwifSJ9.J-EPHsvIjrvFdYL79CIysl3IcD__DrULl8LsRiLXkvBA-7YetrEdbxVPnQ2q0VbnB8p7IEcG72fIossGHWQR8Q", + "verificationMethod": "P-256", + "verificationPayload": "{\"schemaName\":\"ConsentRecord\",\"objectId\":\"\",\"signedWithoutObjectId\":true,\"timestamp\":\"\",\"authorizedByIndividualId\":\"2\",\"authorizedByOther\":\"\",\"objectData\":\"{\\\"id\\\":\\\"\\\",\\\"dataAgreementId\\\":\\\"1\\\",\\\"dataAgreementRevisionId\\\":\\\"659fd68befcb8216c24c2699\\\",\\\"dataAgreementRevisionHash\\\":\\\"d0754d989e9f27fa05aa69fc13591bc343dddf37\\\",\\\"individualId\\\":\\\"2\\\",\\\"optIn\\\":true,\\\"state\\\":\\\"unsigned\\\",\\\"signatureId\\\":\\\"\\\"}\"}", + "verificationPayloadHash": "a0f25f3fe4cb3d18c8bfdd14c5ff7cdb8780e7fa", + "verificationArtifact": "", + "verificationSignedBy": "{\"crv\":\"P-256\",\"kty\":\"EC\",\"x\":\"bNMhRP_V0M8gbHcdqP2CbQQs6OKAWROLHqL2jjitykw\",\"y\":\"zZivG5UKJqliypWBDCJIgaOeae-z4uCNXMFOSPYot80\"}", + "verificationSignedAs": "individual", + "verificationJwsHeader": "", + "timestamp": "2024-01-15T04:56:13Z", + "signedWithoutObjectReference": True, + "objectType": "Revision", + "objectReference": "" + } + } + # Construct the full API endpoint URL + url = base_url + f"/service/individual/record/consent-record" + response = requests.post(url + "/", verify=False,json=data) + context.response = response + +@then("It returns a consent record, revision and signature") +def step_impl(context): + + response_data = json.loads(context.response.content) + assert "consentRecord" in response_data, "Response does not contains consent record" + assert "revision" in response_data, "Response does not contains revision" + assert "signature" in response_data, "Response does not contains signature" + +@then("consent record contains `optIn` field as true") +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["consentRecord"]["optIn"] == True), "Consent record does not contain optIn field as true" + +@then("consent record contains `state` field as signed") +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["consentRecord"]["state"] == "signed"), "Consent record does not contain `state` field as signed" + +@then("revision contains `signedWithoutObjectId` field as true") +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["revision"]["signedWithoutObjectId"] == True), "Revision does not contain `signedWithoutObjectId` field as true" + +@then("`serializedSnapshot` contains `objectId` field with empty value") +def step_impl(context): + response_data = json.loads(context.response.content) + serialized_snapshot = response_data["revision"]["serializedSnapshot"] + serialized_snapshot_dict = json.loads(serialized_snapshot) + object_data_dict = json.loads(serialized_snapshot_dict['objectData']) + serialized_snapshot_dict['objectData'] = object_data_dict + + assert len(serialized_snapshot_dict['objectData']["id"]) < 1, "`serializedSnapshot` contains `objectId` field with value" + + +@then("signature contains `signedWithoutObjectReference` field as true") +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["signature"]["signedWithoutObjectReference"] == True), "Signature does not contain `signedWithoutObjectReference` field as true" + +@then("signature contains `objectReference` field with empty value") +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["signature"]["objectReference"] == ""), "Signature does not contain `objectReference` field as empty value" + +@then("signature is verified by recreating the payload from revision in response") +def step_impl(context): + response_data = json.loads(context.response.content) + signature_string = response_data["signature"]["signature"] + public_key_string = response_data["signature"]["verificationSignedBy"] + public_key = json.loads(public_key_string) + + key = jwk.JWK(**public_key) + jwstoken = jws.JWS() + jwstoken.deserialize(signature_string) + jwstoken.verify(key) + payload = jwstoken.payload + + assert payload is not None, "Signature verification failed" + + +@given("a consent record with id \"{consentRecordId}\"") +def step_impl(context, consentRecordId): + context.consent_record_id = consentRecordId + +@when('I update consent record to `optIn` as true. It returns consent record and revision') +def step_impl(context): + consent_record_id = context.consent_record_id + base_url = context.config.userdata.get("base_url") + data = {"optIn": True} + # Construct the full API endpoint URL + url = base_url + f"/service/individual/record/consent-record/{consent_record_id}" + # Make the PUT request + response = requests.put(url + "/", verify=False, json=data) + context.response = response + response_data = json.loads(context.response.content) + assert "consentRecord" in response_data, "Response does not contains consent record" + assert "revision" in response_data, "Response does not contains revision" + +@when('Returned consent record has `optIn` as true.') +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["consentRecord"]["optIn"] == True), "Consent record does not contain optIn field as true" + +@when('Returned consent record has `state` as unsigned.') +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["consentRecord"]["state"] == "unsigned"), "Consent record does not contain `state` field as unsigned" + +@when('I generates signature payload using P-256 secp256r1 for the consent record in JWS format and make a PUT request to update consent record with new signature') +def step_impl(context): + consent_record_id = context.consent_record_id + base_url = context.config.userdata.get("base_url") + data = { + "signature": { + "payload": "{\"verificationMethod\":\"P-256\",\"verificationArtifact\":\"\",\"verificationSignedBy\":\"{\\\"crv\\\":\\\"P-256\\\",\\\"kty\\\":\\\"EC\\\",\\\"x\\\":\\\"bNMhRP_V0M8gbHcdqP2CbQQs6OKAWROLHqL2jjitykw\\\",\\\"y\\\":\\\"zZivG5UKJqliypWBDCJIgaOeae-z4uCNXMFOSPYot80\\\"}\",\"verificationSignedAs\":\"individual\",\"timestamp\":\"2024-01-15T04:56:13Z\",\"objectType\":\"Revision\",\"objectReference\":\"1\"}", + "signature": "eyJhbGciOiJFUzI1NiJ9.eyJzY2hlbWFOYW1lIjoiQ29uc2VudFJlY29yZCIsIm9iamVjdElkIjoiMiIsInNpZ25lZFdpdGhvdXRPYmplY3RJZCI6ZmFsc2UsInRpbWVzdGFtcCI6IjIwMjQtMDEtMTdUMTA6MTU6MDdaIiwiYXV0aG9yaXplZEJ5SW5kaXZpZHVhbElkIjoiMSIsImF1dGhvcml6ZWRCeU90aGVySWQiOiIiLCJvYmplY3REYXRhIjoie1wiaWRcIjpcIjJcIixcImRhdGFBZ3JlZW1lbnRJZFwiOlwiMlwiLFwiZGF0YUFncmVlbWVudFJldmlzaW9uSWRcIjpcIjY1OWZkNjhiZWZjYjgyMTZjMjRjMjY5NVwiLFwiZGF0YUFncmVlbWVudFJldmlzaW9uSGFzaFwiOlwiM2YwZjVhZWY1ZTc5YWZiNTA0MjhlZDgzNWFkNjI4ZGI0NDljNDUwNFwiLFwiaW5kaXZpZHVhbElkXCI6XCIxXCIsXCJvcHRJblwiOnRydWUsXCJzdGF0ZVwiOlwic2lnbmVkXCIsXCJzaWduYXR1cmVJZFwiOlwiMVwifSJ9.0-nJIXUQkn8guKKuQdkpxIqWADB4PBl0edqh_FNFwAIkI0C45DwbLjJPhX00Wue2wOLYrrBv6LnnlbqNTbvWgA", + "verificationMethod": "P-256", + "verificationPayload": "{\"schemaName\":\"ConsentRecord\",\"objectId\":\"2\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-17T10:15:07Z\",\"authorizedByIndividualId\":\"1\",\"authorizedByOtherId\":\"\",\"objectData\":\"{\\\"id\\\":\\\"2\\\",\\\"dataAgreementId\\\":\\\"2\\\",\\\"dataAgreementRevisionId\\\":\\\"659fd68befcb8216c24c2695\\\",\\\"dataAgreementRevisionHash\\\":\\\"3f0f5aef5e79afb50428ed835ad628db449c4504\\\",\\\"individualId\\\":\\\"1\\\",\\\"optIn\\\":true,\\\"state\\\":\\\"signed\\\",\\\"signatureId\\\":\\\"1\\\"}\"}", + "verificationPayloadHash": "a0f25f3fe4cb3d18c8bfdd14c5ff7cdb8780e7fa", + "verificationArtifact": "", + "verificationSignedBy": "{\"crv\":\"P-256\",\"kty\":\"EC\",\"x\":\"PHNpkZcQSx6kvnrU6C1K8tcF7GXIiXEYsQ67wsxCZx4\",\"y\":\"RN8ZVe3b99EXY6ogZ1iX4fDVFKQFzuhOVd3yAtGurmQ\"}", + "verificationSignedAs": "individual", + "verificationJwsHeader": "", + "timestamp": "2024-01-15T04:56:13Z", + "signedWithoutObjectReference": False, + "objectType": "Revision", + "objectReference": "1" + } + } + # Construct the full API endpoint URL + url = base_url + f"/service/individual/record/consent-record/{consent_record_id}/signature" + # Make the PUT request + response = requests.put(url + "/", verify=False, json=data) + context.response = response + +@then("revision contains `signedWithoutObjectId` field as false") +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["revision"]["signedWithoutObjectId"] == False), "Revision does not contain `signedWithoutObjectId` field as false" + + +@then("`serializedSnapshot` contains `objectId` field with \"{consentRecordId}\"") +def step_impl(context,consentRecordId): + response_data = json.loads(context.response.content) + serialized_snapshot = response_data["revision"]["serializedSnapshot"] + serialized_snapshot_dict = json.loads(serialized_snapshot) + object_data_dict = json.loads(serialized_snapshot_dict['objectData']) + serialized_snapshot_dict['objectData'] = object_data_dict + + assert serialized_snapshot_dict['objectData']["id"] == consentRecordId, "`serializedSnapshot` does not contains `objectId` field with \"{consentRecordId}\"" + +@then("signature contains `signedWithoutObjectReference` field as false") +def step_impl(context): + response_data = json.loads(context.response.content) + assert (response_data["signature"]["signedWithoutObjectReference"] == False), "Signature does not contain `signedWithoutObjectReference` field as false" + +@then("signature contains `objectReference` field with \"{revisionId}\"") +def step_impl(context,revisionId): + response_data = json.loads(context.response.content) + assert (response_data["signature"]["objectReference"] == revisionId), "Signature does not contain `objectReference` field as {revisionId}" + + + + + +@when('I make POST request to create blank signature for a consent record') +def step_impl(context): + consent_record_id = context.consent_record_id + base_url = context.config.userdata.get("base_url") + # Construct the full API endpoint URL + url = base_url + f"/service/individual/record/consent-record/{consent_record_id}/signature" + response = requests.post(url + "/", verify=False) + context.response = response + +@then("Returned signature with objectReference \"{revisionId}\"") +def step_impl(context,revisionId): + response_data = json.loads(context.response.content) + assert (response_data["signature"]["objectReference"] == revisionId), "Signature does not contain `objectReference` field as {revisionId}" + + + + + + + + + diff --git a/test/test-data.json b/test/test-data.json index 22fe815..709ed3c 100644 --- a/test/test-data.json +++ b/test/test-data.json @@ -61,7 +61,7 @@ } ], "methodOfUse": "data_source", - "datause": "data_source", + "dataUse": "data_source", "dpia": "", "compatibleWithVersion": "", "timestamp": "2024-01-03T09:23:31Z" @@ -90,6 +90,72 @@ "dpia": "", "compatibleWithVersion": "", "timestamp": "2024-01-10T08:51:59Z" + }, + { + "id": "2", + "purpose": "Registration in Sports App", + "purposeDescription": "Registration in Sports App", + "lawfulBasis": "consent", + "active": true, + "forgettable": false, + "lifecycle": "complete", + "dataAttributes": [ + { + "id": "659fd6aaefcb8216c24c26a5", + "name": "Name", + "description": "Name of customer", + "sensitivity": false, + "category": "" + } + ], + "dataUse": "data_source", + "dpia": "DPIA by MoJ on user registration for sports centers, April 2nd 2023", + "compatibleWithVersion": "", + "timestamp": "2024-01-17T06:40:57Z" + }, + { + "id": "3", + "purpose": "Registration for Blood donation", + "purposeDescription": "Registration for Blood donation", + "lawfulBasis": "consent", + "active": true, + "forgettable": false, + "lifecycle": "complete", + "dataAttributes": [ + { + "id": "659fd6aaefcb8216c24c26a5", + "name": "Name", + "description": "Name of customer", + "sensitivity": false, + "category": "" + } + ], + "dataUse": "data_source", + "dpia": "DPIA by MoJ on user registration for Blood donation, April 2nd 2023", + "compatibleWithVersion": "", + "timestamp": "2024-01-08T07:23:32Z" + }, + { + "id": "4", + "purpose": "Marketing", + "purposeDescription": "Marketing", + "lawfulBasis": "consent", + "active": true, + "forgettable": false, + "lifecycle": "complete", + "dataAttributes": [ + { + "id": "65a7c013288e3422cf28694d", + "name": "Name", + "description": "Name of customer", + "sensitivity": false, + "category": "" + } + ], + "dataUse": "data_source", + "dpia": "", + "compatibleWithVersion": "", + "timestamp": "2024-01-08T07:23:32Z" } ], "revisions": [ @@ -123,6 +189,51 @@ "serializedHash": "684355a579b1b78462027ae4d51eba08ffc66b3a", "serializedSnapshot": "{\"schemaName\":\"DataAgreement\",\"objectId\":\"659c12ea3140212807b80000\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-11T06:52:47Z\",\"authorizedByIndividualId\":\"\",\"authorizedByOther\":\"659f8be84b2b93f60ca301fe\",\"objectData\":\"{\\\"id\\\":\\\"659c12ea3140212807b80000\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"controllerId\\\":\\\"1\\\",\\\"controllerUrl\\\":\\\"https://www.skatteverket.se\\\",\\\"controllerName\\\":\\\"Skatteverket\\\",\\\"policy\\\":{\\\"id\\\":\\\"659f903f4b2b93f60ca3022c\\\",\\\"name\\\":\\\"Policy 1\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\",\\\"jurisdiction\\\":\\\"Sweden\\\",\\\"industrySector\\\":\\\"Public\\\",\\\"dataRetentionPeriodDays\\\":1095,\\\"geographicRestriction\\\":\\\"Sweden\\\",\\\"storageLocation\\\":\\\"Sweden\\\",\\\"thirdPartyDataSharing\\\":true},\\\"purpose\\\":\\\"Marketing and campaign\\\",\\\"purposeDescription\\\":\\\"Marketing and campaign\\\",\\\"lawfulBasis\\\":\\\"consent\\\",\\\"methodOfUse\\\":\\\"data_source\\\",\\\"dpiaDate\\\":\\\"\\\",\\\"dpiaSummaryUrl\\\":\\\"\\\",\\\"signature\\\":{\\\"id\\\":\\\"659f903f4b2b93f60ca3022d\\\",\\\"payload\\\":\\\"\\\",\\\"signature\\\":\\\"\\\",\\\"verificationMethod\\\":\\\"\\\",\\\"verificationPayload\\\":\\\"\\\",\\\"verificationPayloadHash\\\":\\\"\\\",\\\"verificationArtifact\\\":\\\"\\\",\\\"verificationSignedBy\\\":\\\"\\\",\\\"verificationSignedAs\\\":\\\"\\\",\\\"verificationJwsHeader\\\":\\\"\\\",\\\"timestamp\\\":\\\"\\\",\\\"signedWithoutObjectReference\\\":false,\\\"objectType\\\":\\\"\\\",\\\"objectReference\\\":\\\"\\\"},\\\"active\\\":true,\\\"forgettable\\\":false,\\\"compatibleWithVersionId\\\":\\\"\\\",\\\"lifecycle\\\":\\\"complete\\\",\\\"dataAttributes\\\":[{\\\"id\\\":\\\"659f903f4b2b93f60ca3022e\\\",\\\"name\\\":\\\"Name\\\",\\\"description\\\":\\\"Name of person\\\",\\\"sensitivity\\\":false,\\\"category\\\":\\\"\\\"}],\\\"dataUse\\\":\\\"data_source\\\",\\\"dpia\\\":\\\"\\\",\\\"compatibleWithVersion\\\":\\\"\\\",\\\"controller\\\":{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"Skatteverket\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\"}}\"}" }, + { + "id": "659fd68befcb8216c24c2695", + "schemaName": "DataAgreement", + "objectId": "2", + "signedWithoutObjectId": false, + "timestamp": "2024-01-17T06:40:57Z", + "authorizedByIndividualId": "", + "authorizedByOther": "659f8be84b2b93f60ca301fe", + "predecessorHash": "", + "predecessorSignature": "", + "objectData": "{\"id\":\"2\",\"version\":\"1.0.0\",\"controllerId\":\"1\",\"controllerUrl\":\"https://www.skatteverket.se\",\"controllerName\":\"Skatteverket\",\"policy\":{\"id\":\"659f8deb4b2b93f60ca3021f\",\"name\":\"Policy 1\",\"version\":\"1.0.0\",\"url\":\"https://www.skatteverket.se\",\"jurisdiction\":\"Sweden\",\"industrySector\":\"Public\",\"dataRetentionPeriodDays\":1095,\"geographicRestriction\":\"Sweden\",\"storageLocation\":\"Sweden\",\"thirdPartyDataSharing\":true},\"purpose\":\"Registration in Sports App\",\"purposeDescription\":\"Registration in Sports App\",\"lawfulBasis\":\"consent\",\"methodOfUse\":\"data_source\",\"dpiaDate\":\"\",\"dpiaSummaryUrl\":\"\",\"signature\":{\"id\":\"659f8deb4b2b93f60ca30220\",\"payload\":\"\",\"signature\":\"\",\"verificationMethod\":\"\",\"verificationPayload\":\"\",\"verificationPayloadHash\":\"\",\"verificationArtifact\":\"\",\"verificationSignedBy\":\"\",\"verificationSignedAs\":\"\",\"verificationJwsHeader\":\"\",\"timestamp\":\"\",\"signedWithoutObjectReference\":false,\"objectType\":\"\",\"objectReference\":\"\"},\"active\":true,\"forgettable\":false,\"compatibleWithVersionId\":\"\",\"lifecycle\":\"complete\",\"dataAttributes\":[{\"id\":\"659fd6aaefcb8216c24c26a5\",\"name\":\"Name\",\"description\":\"Name of customer\",\"sensitivity\":false,\"category\":\"\"}],\"dataUse\":\"data_source\",\"dpia\":\"DPIA by MoJ on user registration for sports centers, April 2nd 2023\",\"compatibleWithVersion\":\"\",\"controller\":{\"id\":\"1\",\"name\":\"Skatteverket\",\"url\":\"https://www.skatteverket.se\"}}", + "successorId": "", + "serializedHash": "3f0f5aef5e79afb50428ed835ad628db449c4504", + "serializedSnapshot": "{\"schemaName\":\"DataAgreement\",\"objectId\":\"2\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-17T06:40:57Z\",\"authorizedByIndividualId\":\"\",\"authorizedByOther\":\"659f8be84b2b93f60ca301fe\",\"objectData\":\"{\\\"id\\\":\\\"2\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"controllerId\\\":\\\"1\\\",\\\"controllerUrl\\\":\\\"https://www.skatteverket.se\\\",\\\"controllerName\\\":\\\"Skatteverket\\\",\\\"policy\\\":{\\\"id\\\":\\\"659f8deb4b2b93f60ca3021f\\\",\\\"name\\\":\\\"Policy 1\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\",\\\"jurisdiction\\\":\\\"Sweden\\\",\\\"industrySector\\\":\\\"Public\\\",\\\"dataRetentionPeriodDays\\\":1095,\\\"geographicRestriction\\\":\\\"Sweden\\\",\\\"storageLocation\\\":\\\"Sweden\\\",\\\"thirdPartyDataSharing\\\":true},\\\"purpose\\\":\\\"Registration in Sports App\\\",\\\"purposeDescription\\\":\\\"Registration in Sports App\\\",\\\"lawfulBasis\\\":\\\"consent\\\",\\\"methodOfUse\\\":\\\"data_source\\\",\\\"dpiaDate\\\":\\\"\\\",\\\"dpiaSummaryUrl\\\":\\\"\\\",\\\"signature\\\":{\\\"id\\\":\\\"659f8deb4b2b93f60ca30220\\\",\\\"payload\\\":\\\"\\\",\\\"signature\\\":\\\"\\\",\\\"verificationMethod\\\":\\\"\\\",\\\"verificationPayload\\\":\\\"\\\",\\\"verificationPayloadHash\\\":\\\"\\\",\\\"verificationArtifact\\\":\\\"\\\",\\\"verificationSignedBy\\\":\\\"\\\",\\\"verificationSignedAs\\\":\\\"\\\",\\\"verificationJwsHeader\\\":\\\"\\\",\\\"timestamp\\\":\\\"\\\",\\\"signedWithoutObjectReference\\\":false,\\\"objectType\\\":\\\"\\\",\\\"objectReference\\\":\\\"\\\"},\\\"active\\\":true,\\\"forgettable\\\":false,\\\"compatibleWithVersionId\\\":\\\"\\\",\\\"lifecycle\\\":\\\"complete\\\",\\\"dataAttributes\\\":[{\\\"id\\\":\\\"659fd6aaefcb8216c24c26a5\\\",\\\"name\\\":\\\"Name\\\",\\\"description\\\":\\\"Name of person\\\",\\\"sensitivity\\\":false,\\\"category\\\":\\\"\\\"}],\\\"dataUse\\\":\\\"data_source\\\",\\\"dpia\\\":\\\"DPIA by MoJ on user registration for sports centers, April 2nd 2023\\\",\\\"compatibleWithVersion\\\":\\\"\\\",\\\"controller\\\":{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"Skatteverket\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\"}}\"}" + }, + { + "id": "65a7b304419233604850973c", + "schemaName": "DataAgreement", + "objectId": "3", + "signedWithoutObjectId": false, + "timestamp": "2024-01-08T07:23:32Z", + "authorizedByIndividualId": "", + "authorizedByOther": "659f8be84b2b93f60ca301fe", + "predecessorHash": "", + "predecessorSignature": "", + "objectData": "{\"id\":\"3\",\"version\":\"1.0.0\",\"controllerId\":\"1\",\"controllerUrl\":\"https://www.skatteverket.se\",\"controllerName\":\"Skatteverket\",\"policy\":{\"id\":\"659f8deb4b2b93f60ca3021f\",\"name\":\"Policy 1\",\"version\":\"1.0.0\",\"url\":\"https://www.skatteverket.se\",\"jurisdiction\":\"Sweden\",\"industrySector\":\"Public\",\"dataRetentionPeriodDays\":1095,\"geographicRestriction\":\"Sweden\",\"storageLocation\":\"Sweden\",\"thirdPartyDataSharing\":true},\"purpose\":\"Registration for Blood donation\",\"purposeDescription\":\"Registration for Blood donation\",\"lawfulBasis\":\"consent\",\"methodOfUse\":\"data_source\",\"dpiaDate\":\"\",\"dpiaSummaryUrl\":\"\",\"signature\":{\"id\":\"659f8deb4b2b93f60ca30220\",\"payload\":\"\",\"signature\":\"\",\"verificationMethod\":\"\",\"verificationPayload\":\"\",\"verificationPayloadHash\":\"\",\"verificationArtifact\":\"\",\"verificationSignedBy\":\"\",\"verificationSignedAs\":\"\",\"verificationJwsHeader\":\"\",\"timestamp\":\"\",\"signedWithoutObjectReference\":false,\"objectType\":\"\",\"objectReference\":\"\"},\"active\":true,\"forgettable\":false,\"compatibleWithVersionId\":\"\",\"lifecycle\":\"complete\",\"dataAttributes\":[{\"id\":\"659fd6aaefcb8216c24c26a5\",\"name\":\"Name\",\"description\":\"Name of customer\",\"sensitivity\":false,\"category\":\"\"}],\"dataUse\":\"data_source\",\"dpia\":\"DPIA by MoJ on user registration for Blood donation, April 2nd 2023\",\"compatibleWithVersion\":\"\",\"controller\":{\"id\":\"1\",\"name\":\"Skatteverket\",\"url\":\"https://www.skatteverket.se\"}}", + "successorId": "", + "serializedHash": "d0754d989e9f27fa05aa69fc13591bc343dddf37", + "serializedSnapshot": "{\"schemaName\":\"DataAgreement\",\"objectId\":\"3\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-08T07:23:32Z\",\"authorizedByIndividualId\":\"\",\"authorizedByOther\":\"659f8be84b2b93f60ca301fe\",\"objectData\":\"{\\\"id\\\":\\\"2\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"controllerId\\\":\\\"1\\\",\\\"controllerUrl\\\":\\\"https://www.skatteverket.se\\\",\\\"controllerName\\\":\\\"Skatteverket\\\",\\\"policy\\\":{\\\"id\\\":\\\"659f8deb4b2b93f60ca3021f\\\",\\\"name\\\":\\\"Policy 1\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\",\\\"jurisdiction\\\":\\\"Sweden\\\",\\\"industrySector\\\":\\\"Public\\\",\\\"dataRetentionPeriodDays\\\":1095,\\\"geographicRestriction\\\":\\\"Sweden\\\",\\\"storageLocation\\\":\\\"Sweden\\\",\\\"thirdPartyDataSharing\\\":true},\\\"purpose\\\":\\\"Registration for Blood donation\\\",\\\"purposeDescription\\\":\\\"Registration for Blood donation\\\",\\\"lawfulBasis\\\":\\\"consent\\\",\\\"methodOfUse\\\":\\\"data_source\\\",\\\"dpiaDate\\\":\\\"\\\",\\\"dpiaSummaryUrl\\\":\\\"\\\",\\\"signature\\\":{\\\"id\\\":\\\"659f8deb4b2b93f60ca30220\\\",\\\"payload\\\":\\\"\\\",\\\"signature\\\":\\\"\\\",\\\"verificationMethod\\\":\\\"\\\",\\\"verificationPayload\\\":\\\"\\\",\\\"verificationPayloadHash\\\":\\\"\\\",\\\"verificationArtifact\\\":\\\"\\\",\\\"verificationSignedBy\\\":\\\"\\\",\\\"verificationSignedAs\\\":\\\"\\\",\\\"verificationJwsHeader\\\":\\\"\\\",\\\"timestamp\\\":\\\"\\\",\\\"signedWithoutObjectReference\\\":false,\\\"objectType\\\":\\\"\\\",\\\"objectReference\\\":\\\"\\\"},\\\"active\\\":true,\\\"forgettable\\\":false,\\\"compatibleWithVersionId\\\":\\\"\\\",\\\"lifecycle\\\":\\\"complete\\\",\\\"dataAttributes\\\":[{\\\"id\\\":\\\"659fd6aaefcb8216c24c26a5\\\",\\\"name\\\":\\\"Name\\\",\\\"description\\\":\\\"Name of person\\\",\\\"sensitivity\\\":false,\\\"category\\\":\\\"\\\"}],\\\"dataUse\\\":\\\"data_source\\\",\\\"dpia\\\":\\\"DPIA by MoJ on user registration for Blood donation, April 2nd 2023\\\",\\\"compatibleWithVersion\\\":\\\"\\\",\\\"controller\\\":{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"Skatteverket\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\"}}\"}" + }, + { + "id": "65a7c013288e3422cf28694e", + "schemaName": "DataAgreement", + "objectId": "4", + "signedWithoutObjectId": false, + "timestamp": "2024-01-17T11:54:59Z", + "authorizedByIndividualId": "", + "authorizedByOther": "65a7bf58288e3422cf286848", + "predecessorHash": "", + "predecessorSignature": "", + "objectData": "{\"id\":\"4\",\"version\":\"1.0.0\",\"controllerId\":\"1\",\"controllerUrl\":\"https://www.skatteverket.se\",\"controllerName\":\"Skatteverket\",\"policy\":{\"id\":\"65a7c013288e3422cf28694b\",\"name\":\"Policy 1\",\"version\":\"1.0.0\",\"url\":\"https://www.skatteverket.se\",\"jurisdiction\":\"Sweden\",\"industrySector\":\"Public\",\"dataRetentionPeriodDays\":1095,\"geographicRestriction\":\"Sweden\",\"storageLocation\":\"Sweden\",\"thirdPartyDataSharing\":true},\"purpose\":\"Marketing\",\"purposeDescription\":\"Marketing\",\"lawfulBasis\":\"consent\",\"methodOfUse\":\"data_source\",\"dpiaDate\":\"\",\"dpiaSummaryUrl\":\"\",\"signature\":{\"id\":\"65a7c013288e3422cf28694c\",\"payload\":\"\",\"signature\":\"\",\"verificationMethod\":\"\",\"verificationPayload\":\"\",\"verificationPayloadHash\":\"\",\"verificationArtifact\":\"\",\"verificationSignedBy\":\"\",\"verificationSignedAs\":\"\",\"verificationJwsHeader\":\"\",\"timestamp\":\"\",\"signedWithoutObjectReference\":false,\"objectType\":\"\",\"objectReference\":\"\"},\"active\":true,\"forgettable\":false,\"compatibleWithVersionId\":\"\",\"lifecycle\":\"complete\",\"dataAttributes\":[{\"id\":\"65a7c013288e3422cf28694d\",\"name\":\"Name\",\"description\":\"Name of person\",\"sensitivity\":false,\"category\":\"\"}],\"dataUse\":\"data_source\",\"dpia\":\"\",\"compatibleWithVersion\":\"\",\"controller\":{\"id\":\"1\",\"name\":\"Skatteverket\",\"url\":\"https://www.skatteverket.se\"}}", + "successorId": "", + "serializedHash": "eb31877efa2bc218110435ca1ab31649d37b5f59", + "serializedSnapshot": "{\"schemaName\":\"DataAgreement\",\"objectId\":\"4\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-17T11:54:59Z\",\"authorizedByIndividualId\":\"\",\"authorizedByOther\":\"65a7bf58288e3422cf286848\",\"objectData\":\"{\\\"id\\\":\\\"4\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"controllerId\\\":\\\"1\\\",\\\"controllerUrl\\\":\\\"https://www.skatteverket.se\\\",\\\"controllerName\\\":\\\"Skatteverket\\\",\\\"policy\\\":{\\\"id\\\":\\\"65a7c013288e3422cf28694b\\\",\\\"name\\\":\\\"Policy 1\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\",\\\"jurisdiction\\\":\\\"Sweden\\\",\\\"industrySector\\\":\\\"Public\\\",\\\"dataRetentionPeriodDays\\\":1095,\\\"geographicRestriction\\\":\\\"Sweden\\\",\\\"storageLocation\\\":\\\"Sweden\\\",\\\"thirdPartyDataSharing\\\":true},\\\"purpose\\\":\\\"Marketing\\\",\\\"purposeDescription\\\":\\\"Marketing\\\",\\\"lawfulBasis\\\":\\\"consent\\\",\\\"methodOfUse\\\":\\\"data_source\\\",\\\"dpiaDate\\\":\\\"\\\",\\\"dpiaSummaryUrl\\\":\\\"\\\",\\\"signature\\\":{\\\"id\\\":\\\"65a7c013288e3422cf28694c\\\",\\\"payload\\\":\\\"\\\",\\\"signature\\\":\\\"\\\",\\\"verificationMethod\\\":\\\"\\\",\\\"verificationPayload\\\":\\\"\\\",\\\"verificationPayloadHash\\\":\\\"\\\",\\\"verificationArtifact\\\":\\\"\\\",\\\"verificationSignedBy\\\":\\\"\\\",\\\"verificationSignedAs\\\":\\\"\\\",\\\"verificationJwsHeader\\\":\\\"\\\",\\\"timestamp\\\":\\\"\\\",\\\"signedWithoutObjectReference\\\":false,\\\"objectType\\\":\\\"\\\",\\\"objectReference\\\":\\\"\\\"},\\\"active\\\":true,\\\"forgettable\\\":false,\\\"compatibleWithVersionId\\\":\\\"\\\",\\\"lifecycle\\\":\\\"complete\\\",\\\"dataAttributes\\\":[{\\\"id\\\":\\\"65a7c013288e3422cf28694d\\\",\\\"name\\\":\\\"Name\\\",\\\"description\\\":\\\"Name of person\\\",\\\"sensitivity\\\":false,\\\"category\\\":\\\"\\\"}],\\\"dataUse\\\":\\\"data_source\\\",\\\"dpia\\\":\\\"\\\",\\\"compatibleWithVersion\\\":\\\"\\\",\\\"controller\\\":{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"Skatteverket\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\"}}\"}" + }, { "id": "659ba2f439e82e51b4885d77", "schemaName": "ConsentRecord", @@ -164,9 +275,39 @@ "predecessorHash": "", "predecessorSignature": "", "objectData": "{\"id\":\"659e5aafa35cad660a9021f5\",\"version\":\"1.0.0\",\"controllerId\":\"1\",\"controllerUrl\":\"https://www.skatteverket.se\",\"controllerName\":\"Skatteverket\",\"policy\":{\"id\":\"659e5aafa35cad660a9021f6\",\"name\":\"Policy 2\",\"version\":\"1.0.0\",\"url\":\"https://www.skatteverket.se\",\"jurisdiction\":\"Sweden\",\"industrySector\":\"Public\",\"dataRetentionPeriodDays\":1095,\"geographicRestriction\":\"Sweden\",\"storageLocation\":\"Sweden\",\"thirdPartyDataSharing\":true},\"purpose\":\"Issue License\",\"purposeDescription\":\"Issue License\",\"lawfulBasis\":\"consent\",\"methodOfUse\":\"data_source\",\"dpiaDate\":\"2023-10-31T14:24\",\"dpiaSummaryUrl\":\"https://privacyant.se/dpia_results.html\",\"signature\":{\"id\":\"659e5aafa35cad660a9021f7\",\"payload\":\"\",\"signature\":\"\",\"verificationMethod\":\"\",\"verificationPayload\":\"\",\"verificationPayloadHash\":\"\",\"verificationArtifact\":\"\",\"verificationSignedBy\":\"\",\"verificationSignedAs\":\"\",\"verificationJwsHeader\":\"\",\"timestamp\":\"\",\"signedWithoutObjectReference\":false,\"objectType\":\"\",\"objectReference\":\"\"},\"active\":true,\"forgettable\":false,\"compatibleWithVersionId\":\"\",\"lifecycle\":\"complete\",\"dataAttributes\":[{\"id\":\"659e5aafa35cad660a9021f8\",\"name\":\"Age\",\"description\":\"Age of person\",\"sensitivity\":false,\"category\":\"\"}],\"dataUse\":\"data_source\",\"dpia\":\"\",\"compatibleWithVersion\":\"\",\"controller\":{\"id\":\"1\",\"name\":\"Skatteverket\",\"url\":\"https://www.skatteverket.se\"}}", - "SuccessorId": "", - "SerializedHash": "f88bda218177f3ee1296d5897c145de96a2f59d0", - "SerializedSnapshot": "{\"schemaName\":\"DataAgreement\",\"objectId\":\"659e5aafa35cad660a9021f5\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-10T08:51:59Z\",\"authorizedByIndividualId\":\"\",\"authorizedByOther\":\"659e5aa4a35cad660a9021e4\",\"objectData\":\"{\\\"id\\\":\\\"659e5aafa35cad660a9021f5\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"controllerId\\\":\\\"1\\\",\\\"controllerUrl\\\":\\\"https://www.skatteverket.se\\\",\\\"controllerName\\\":\\\"Skatteverket\\\",\\\"policy\\\":{\\\"id\\\":\\\"659e5aafa35cad660a9021f6\\\",\\\"name\\\":\\\"Policy 2\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\",\\\"jurisdiction\\\":\\\"Sweden\\\",\\\"industrySector\\\":\\\"Public\\\",\\\"dataRetentionPeriodDays\\\":1095,\\\"geographicRestriction\\\":\\\"Sweden\\\",\\\"storageLocation\\\":\\\"Sweden\\\",\\\"thirdPartyDataSharing\\\":true},\\\"purpose\\\":\\\"Issue License\\\",\\\"purposeDescription\\\":\\\"Issue License\\\",\\\"lawfulBasis\\\":\\\"consent\\\",\\\"methodOfUse\\\":\\\"data_source\\\",\\\"dpiaDate\\\":\\\"2023-10-31T14:24\\\",\\\"dpiaSummaryUrl\\\":\\\"https://privacyant.se/dpia_results.html\\\",\\\"signature\\\":{\\\"id\\\":\\\"659e5aafa35cad660a9021f7\\\",\\\"payload\\\":\\\"\\\",\\\"signature\\\":\\\"\\\",\\\"verificationMethod\\\":\\\"\\\",\\\"verificationPayload\\\":\\\"\\\",\\\"verificationPayloadHash\\\":\\\"\\\",\\\"verificationArtifact\\\":\\\"\\\",\\\"verificationSignedBy\\\":\\\"\\\",\\\"verificationSignedAs\\\":\\\"\\\",\\\"verificationJwsHeader\\\":\\\"\\\",\\\"timestamp\\\":\\\"\\\",\\\"signedWithoutObjectReference\\\":false,\\\"objectType\\\":\\\"\\\",\\\"objectReference\\\":\\\"\\\"},\\\"active\\\":true,\\\"forgettable\\\":false,\\\"compatibleWithVersionId\\\":\\\"\\\",\\\"lifecycle\\\":\\\"complete\\\",\\\"dataAttributes\\\":[{\\\"id\\\":\\\"659e5aafa35cad660a9021f8\\\",\\\"name\\\":\\\"Age\\\",\\\"description\\\":\\\"Age of person\\\",\\\"sensitivity\\\":false,\\\"category\\\":\\\"\\\"}],\\\"dataUse\\\":\\\"data_source\\\",\\\"dpia\\\":\\\"\\\",\\\"compatibleWithVersion\\\":\\\"\\\",\\\"controller\\\":{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"Skatteverket\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\"}}\"}" + "successorId": "", + "serializedHash": "f88bda218177f3ee1296d5897c145de96a2f59d0", + "serializedSnapshot": "{\"schemaName\":\"DataAgreement\",\"objectId\":\"659e5aafa35cad660a9021f5\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-10T08:51:59Z\",\"authorizedByIndividualId\":\"\",\"authorizedByOther\":\"659e5aa4a35cad660a9021e4\",\"objectData\":\"{\\\"id\\\":\\\"659e5aafa35cad660a9021f5\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"controllerId\\\":\\\"1\\\",\\\"controllerUrl\\\":\\\"https://www.skatteverket.se\\\",\\\"controllerName\\\":\\\"Skatteverket\\\",\\\"policy\\\":{\\\"id\\\":\\\"659e5aafa35cad660a9021f6\\\",\\\"name\\\":\\\"Policy 2\\\",\\\"version\\\":\\\"1.0.0\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\",\\\"jurisdiction\\\":\\\"Sweden\\\",\\\"industrySector\\\":\\\"Public\\\",\\\"dataRetentionPeriodDays\\\":1095,\\\"geographicRestriction\\\":\\\"Sweden\\\",\\\"storageLocation\\\":\\\"Sweden\\\",\\\"thirdPartyDataSharing\\\":true},\\\"purpose\\\":\\\"Issue License\\\",\\\"purposeDescription\\\":\\\"Issue License\\\",\\\"lawfulBasis\\\":\\\"consent\\\",\\\"methodOfUse\\\":\\\"data_source\\\",\\\"dpiaDate\\\":\\\"2023-10-31T14:24\\\",\\\"dpiaSummaryUrl\\\":\\\"https://privacyant.se/dpia_results.html\\\",\\\"signature\\\":{\\\"id\\\":\\\"659e5aafa35cad660a9021f7\\\",\\\"payload\\\":\\\"\\\",\\\"signature\\\":\\\"\\\",\\\"verificationMethod\\\":\\\"\\\",\\\"verificationPayload\\\":\\\"\\\",\\\"verificationPayloadHash\\\":\\\"\\\",\\\"verificationArtifact\\\":\\\"\\\",\\\"verificationSignedBy\\\":\\\"\\\",\\\"verificationSignedAs\\\":\\\"\\\",\\\"verificationJwsHeader\\\":\\\"\\\",\\\"timestamp\\\":\\\"\\\",\\\"signedWithoutObjectReference\\\":false,\\\"objectType\\\":\\\"\\\",\\\"objectReference\\\":\\\"\\\"},\\\"active\\\":true,\\\"forgettable\\\":false,\\\"compatibleWithVersionId\\\":\\\"\\\",\\\"lifecycle\\\":\\\"complete\\\",\\\"dataAttributes\\\":[{\\\"id\\\":\\\"659e5aafa35cad660a9021f8\\\",\\\"name\\\":\\\"Age\\\",\\\"description\\\":\\\"Age of person\\\",\\\"sensitivity\\\":false,\\\"category\\\":\\\"\\\"}],\\\"dataUse\\\":\\\"data_source\\\",\\\"dpia\\\":\\\"\\\",\\\"compatibleWithVersion\\\":\\\"\\\",\\\"controller\\\":{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"Skatteverket\\\",\\\"url\\\":\\\"https://www.skatteverket.se\\\"}}\"}" + }, + { + "id": "1", + "schemaName": "ConsentRecord", + "objectId": "2", + "signedWithoutObjectId": false, + "timestamp": "2024-01-17T10:15:07Z", + "authorizedByIndividualId": "", + "authorizedByOther": "659b9d1539e82e51b4885ca7", + "predecessorHash": "", + "predecessorSignature": "", + "objectData": "{\"id\":\"2\",\"dataAgreementId\":\"2\",\"dataAgreementRevisionId\":\"659fd68befcb8216c24c2695\",\"dataAgreementRevisionHash\":\"3f0f5aef5e79afb50428ed835ad628db449c4504\",\"individualId\":\"1\",\"optIn\":true,\"state\":\"unsigned\",\"signatureId\":\"1\"}", + "successorId": "", + "serializedHash": "7d8399e3d7a9c6a8cf5d01ca8c3f1d2a2d1885fd", + "serializedSnapshot": "{\"schemaName\":\"ConsentRecord\",\"objectId\":\"2\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-17T10:15:07Z\",\"authorizedByIndividualId\":\"1\",\"authorizedByOtherId\":\"\",\"objectData\":\"{\\\"id\\\":\\\"2\\\",\\\"dataAgreementId\\\":\\\"2\\\",\\\"dataAgreementRevisionId\\\":\\\"659fd68befcb8216c24c2695\\\",\\\"dataAgreementRevisionHash\\\":\\\"3f0f5aef5e79afb50428ed835ad628db449c4504\\\",\\\"individualId\\\":\\\"1\\\",\\\"optIn\\\":true,\\\"state\\\":\\\"unsigned\\\",\\\"signatureId\\\":\\\"1\\\"}\"}" + }, + { + "id": "2", + "schemaName": "ConsentRecord", + "objectId": "3", + "signedWithoutObjectId": false, + "timestamp": "2024-01-17T10:59:16Z", + "authorizedByIndividualId": "", + "authorizedByOther": "659b9d1539e82e51b4885ca7", + "predecessorHash": "", + "predecessorSignature": "", + "objectData": "{\"id\":\"3\",\"dataAgreementId\":\"3\",\"dataAgreementRevisionId\":\"65a7b304419233604850973c\",\"dataAgreementRevisionHash\":\"d0754d989e9f27fa05aa69fc13591bc343dddf37\",\"individualId\":\"1\",\"optIn\":true,\"state\":\"unsigned\",\"signatureId\":\"\"}", + "successorId": "", + "serializedHash": "f1f6c5eb2742c03aa964d5bb61d1cdd148d39972", + "serializedSnapshot": "{\"schemaName\":\"ConsentRecord\",\"objectId\":\"3\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-17T10:59:16Z\",\"authorizedByIndividualId\":\"1\",\"authorizedByOtherId\":\"\",\"objectData\":\"{\\\"id\\\":\\\"3\\\",\\\"dataAgreementId\\\":\\\"3\\\",\\\"dataAgreementRevisionId\\\":\\\"65a7b304419233604850973c\\\",\\\"dataAgreementRevisionHash\\\":\\\"d0754d989e9f27fa05aa69fc13591bc343dddf37\\\",\\\"individualId\\\":\\\"1\\\",\\\"optIn\\\":true,\\\"state\\\":\\\"unsigned\\\",\\\"signatureId\\\":\\\"\\\"}\"}" } ], "consentRecords": [ @@ -179,6 +320,26 @@ "optIn" : true, "state" : "unsigned", "signatureId" : "" + }, + { + "id" : "2", + "dataAgreementId" : "2", + "dataAgreementRevisionId" : "659fd68befcb8216c24c2695", + "dataAgreementRevisionHash" : "3f0f5aef5e79afb50428ed835ad628db449c4504", + "individualId" : "1", + "optIn" : true, + "state" : "unsigned", + "signatureId" : "1" + }, + { + "id" : "3", + "dataAgreementId" : "3", + "dataAgreementRevisionId" : "65a7b304419233604850973c", + "dataAgreementRevisionHash" : "d0754d989e9f27fa05aa69fc13591bc343dddf37", + "individualId" : "1", + "optIn" : true, + "state" : "unsigned", + "signatureId" : "" } ], "policies": [ @@ -194,5 +355,23 @@ "storageLocation": "Sweden", "thirdPartyDataSharing": true } + ], + "signature": [ + { + "id": "1", + "payload": "{\"verificationMethod\":\"P-256\",\"verificationArtifact\":\"\",\"verificationSignedBy\":\"{\\\"crv\\\":\\\"P-256\\\",\\\"kty\\\":\\\"EC\\\",\\\"x\\\":\\\"bNMhRP_V0M8gbHcdqP2CbQQs6OKAWROLHqL2jjitykw\\\",\\\"y\\\":\\\"zZivG5UKJqliypWBDCJIgaOeae-z4uCNXMFOSPYot80\\\"}\",\"verificationSignedAs\":\"individual\",\"timestamp\":\"2024-01-17T10:15:07Z\",\"objectType\":\"Revision\",\"objectReference\":\"\"}", + "signature": "eyJhbGciOiJFUzI1NiJ9.eyJzY2hlbWFOYW1lIjoiQ29uc2VudFJlY29yZCIsIm9iamVjdElkIjoiMiIsInNpZ25lZFdpdGhvdXRPYmplY3RJZCI6ZmFsc2UsInRpbWVzdGFtcCI6IjIwMjQtMDEtMTdUMTA6MTU6MDdaIiwiYXV0aG9yaXplZEJ5SW5kaXZpZHVhbElkIjoiMSIsImF1dGhvcml6ZWRCeU90aGVySWQiOiIiLCJvYmplY3REYXRhIjoie1wiaWRcIjpcIjJcIixcImRhdGFBZ3JlZW1lbnRJZFwiOlwiMlwiLFwiZGF0YUFncmVlbWVudFJldmlzaW9uSWRcIjpcIjY1OWZkNjhiZWZjYjgyMTZjMjRjMjY5NVwiLFwiZGF0YUFncmVlbWVudFJldmlzaW9uSGFzaFwiOlwiM2YwZjVhZWY1ZTc5YWZiNTA0MjhlZDgzNWFkNjI4ZGI0NDljNDUwNFwiLFwiaW5kaXZpZHVhbElkXCI6XCIxXCIsXCJvcHRJblwiOnRydWUsXCJzdGF0ZVwiOlwidW5zaWduZWRcIixcInNpZ25hdHVyZUlkXCI6XCIxXCJ9In0.ojwXTcCWrRwFbTL7eoZzf1IRu5zG4kZ3Jd7FRMhGK-6QwQsLIYvv8-7sniPUSLeMPtfm7z9eLhOWa87kKmr_fQ", + "verificationMethod": "P-256", + "verificationPayload": "{\"schemaName\":\"ConsentRecord\",\"objectId\":\"2\",\"signedWithoutObjectId\":false,\"timestamp\":\"2024-01-17T10:15:07Z\",\"authorizedByIndividualId\":\"1\",\"authorizedByOtherId\":\"\",\"objectData\":\"{\\\"id\\\":\\\"2\\\",\\\"dataAgreementId\\\":\\\"2\\\",\\\"dataAgreementRevisionId\\\":\\\"659fd68befcb8216c24c2695\\\",\\\"dataAgreementRevisionHash\\\":\\\"3f0f5aef5e79afb50428ed835ad628db449c4504\\\",\\\"individualId\\\":\\\"1\\\",\\\"optIn\\\":true,\\\"state\\\":\\\"unsigned\\\",\\\"signatureId\\\":\\\"1\\\"}\"}", + "verificationPayloadHash": "7d8399e3d7a9c6a8cf5d01ca8c3f1d2a2d1885fd", + "verificationArtifact": "", + "verificationSignedBy": "{\"crv\":\"P-256\",\"kty\":\"EC\",\"x\":\"dsinPJtDdWOVQMqvzTes17MSzut4ys7hz_b7I3mV7O8\",\"y\":\"uGExKGujL1zYLbc2JphA_qq2rSCFKI_57r6omE88RFQ\"}", + "verificationSignedAs": "individual", + "verificationJwsHeader": "", + "timestamp": "2024-01-17T10:15:07Z", + "signedWithoutObjectReference": true, + "objectType": "Revision", + "objectReference": "" + } ] }