diff --git a/.github/workflows/app-test-coverage.yml b/.github/workflows/app-test-coverage.yml new file mode 100644 index 000000000..887589282 --- /dev/null +++ b/.github/workflows/app-test-coverage.yml @@ -0,0 +1,101 @@ +# Disabled until is is runnable on github + +## /******************************************************************************** +## * Copyright (c) 2023 Contributors to the Eclipse Foundation +## * +## * See the NOTICE file(s) distributed with this work for additional +## * information regarding copyright ownership. +## * +## * This program and the accompanying materials are made available under the +## * terms of the Apache License, Version 2.0 which is available at +## * https://www.apache.org/licenses/LICENSE-2.0. +## * +## * Unless required by applicable law or agreed to in writing, software +## * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +## * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +## * License for the specific language governing permissions and limitations +## * under the License. +## * +## * SPDX-License-Identifier: Apache-2.0 +## ********************************************************************************/ +# +#name: Test application (test + coverage) +# +#on: +# workflow_dispatch: +# pull_request: +# paths: +# - 'src/**' +# +#permissions: +# id-token: write +# statuses: write +# checks: write +# # may also be read +# contents: write +# pull-requests: write +# actions: write +# +#jobs: +# test-app: +# runs-on: ubuntu-latest +# +# steps: +# - name: Checkout +# uses: actions/checkout@v3 +# with: +# fetch-depth: 0 +# +# - name: Set up Java 17 +# uses: actions/setup-java@v3 +# with: +# distribution: 'temurin' +# java-version: '17' +# +# - name: Setup .NET Core # Required to execute ReportGenerator +# uses: actions/setup-dotnet@v3 +# if: success() || failure() +# with: +# dotnet-version: 6.x +# dotnet-quality: 'ga' +# +# - name: Test app +# run: ORG_GRADLE_PROJECT_githubToken=${{ secrets.GITHUB_TOKEN }} ./gradlew test +# +# - name: Get coverage +# if: success() || failure() +# run: ORG_GRADLE_PROJECT_githubToken=${{ secrets.GITHUB_TOKEN }} ./gradlew jacocoTestReport +# +# - name: Generate test report +# uses: dorny/test-reporter@v1.6.0 +# if: success() || failure() +# with: +# name: Test results +# path: 'build/test-results/test/*.xml' +# reporter: java-junit +# fail-on-error: false +# +# - name: Generate code coverage report +# uses: danielpalme/ReportGenerator-GitHub-Action@5.1.25 +# if: success() || failure() +# with: +# reports: build/reports/xml/jacoco +# targetdir: coveragereport +# reporttypes: MarkdownSummaryGithub +# sourcedirs: src/main/java +# title: 'Code Coverage' +# +# - name: Publish code coverage report as job summary +# if: success() || failure() +# run: cat coveragereport/SummaryGithub.md >> $GITHUB_STEP_SUMMARY +# +# - name: Publish code coverage report as PR comment +# uses: madrapps/jacoco-report@v1.6.1 +# if: github.event_name == 'pull_request' && (success() || failure()) +# with: +# paths: | +# ${{ github.workspace }}/build/reports/xml/jacoco +# token: ${{ secrets.GITHUB_TOKEN }} +# min-coverage-overall: 80 +# min-coverage-changed-files: 80 +# title: Coverage Report diff --git a/.github/workflows/chart-lint-test.yml b/.github/workflows/chart-lint-test.yml index c9ade72e2..8d4b21e94 100644 --- a/.github/workflows/chart-lint-test.yml +++ b/.github/workflows/chart-lint-test.yml @@ -58,7 +58,7 @@ jobs: python-version: "3.10" - name: Set up chart-testing - uses: helm/chart-testing-action@v2.4.0 + uses: helm/chart-testing-action@v2 - name: Run linting run: ct lint --config charts/chart-testing-config.yaml --charts ./charts/managed-identity-wallet diff --git a/.github/workflows/chart-releaser.yaml b/.github/workflows/chart-releaser.yaml index ac52dec1a..a61e99b5e 100644 --- a/.github/workflows/chart-releaser.yaml +++ b/.github/workflows/chart-releaser.yaml @@ -56,6 +56,6 @@ jobs: helm repo add bitnami https://charts.bitnami.com/bitnami - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.4.1 + uses: helm/chart-releaser-action@v1 env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/dast-scan.yaml b/.github/workflows/dast-scan.yaml new file mode 100644 index 000000000..236c69c6a --- /dev/null +++ b/.github/workflows/dast-scan.yaml @@ -0,0 +1,132 @@ +# /******************************************************************************** +# * Copyright (c) 2023 Contributors to the Eclipse Foundation +# * +# * See the NOTICE file(s) distributed with this work for additional +# * information regarding copyright ownership. +# * +# * This program and the accompanying materials are made available under the +# * terms of the Apache License, Version 2.0 which is available at +# * https://www.apache.org/licenses/LICENSE-2.0. +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# * License for the specific language governing permissions and limitations +# * under the License. +# * +# * SPDX-License-Identifier: Apache-2.0 +# ********************************************************************************/ + +name: DAST scan (OWASP ZAP) + +on: + workflow_dispatch: + pull_request: + paths: + - 'src/main/**' + push: + paths: + - 'src/main/**' + +jobs: + dast-scan: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Helm + uses: azure/setup-helm@v3 + with: + version: v3.12.3 + + - name: Set up Taskfile + uses: arduino/setup-task@v1 + + - uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + + - name: Add bitnami repo + run: | + helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo update + + - name: Update Helm dependencies + run: | + cd charts/managed-identity-wallet + helm dependency build + + - name: Build app + run: SKIP_GRADLE_TASKS_PARAM="-x jacocoTestCoverageVerification -x test" GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} task app:build + + - name: Kubernetes KinD Cluster + uses: container-tools/kind-action@v2 + with: + node_image: 'kindest/node:v1.27.3' + version: v0.20.0 + + - name: Build image + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: kind-registry:5000/miw:testing + + - name: Install the chart on KinD cluster + run: helm install -n apps --create-namespace --wait --set image.tag=testing --set=image.repository=kind-registry:5000/miw testing charts/managed-identity-wallet + + - name: Configure port forward to app in KinD + run: | + echo "Getting Agent IP..." + IP_ADDR=$(hostname -i) + echo "-> IP: $IP_ADDR" + echo "IP_ADDR=$IP_ADDR" >> $GITHUB_ENV + + POD_NAME=$(kubectl get pods --namespace apps -l "app.kubernetes.io/name=managed-identity-wallet,app.kubernetes.io/instance=testing" -o jsonpath="{.items[0].metadata.name}") + CONTAINER_PORT=$(kubectl get pod --namespace apps $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + + echo "Port-forwarding 0.0.0.0:8080 to $POD_NAME:$CONTAINER_PORT..." + + kubectl --namespace apps port-forward $POD_NAME 8080:$CONTAINER_PORT --address 0.0.0.0 & + + # Sleep for 4 seconds to ensure, that the port-forward is established + - name: Sleep for 4s + uses: juliangruber/sleep-action@v1 + with: + time: 4s + + - name: Generating report skeletons + if: success() || failure() + run: | + touch report_md.md report_html.html + chmod a+w report_md.md report_html.html + ls -lrt + + - name: Run ZAP scan + run: | + set +e + + echo "Pulling ZAP image..." + docker pull ghcr.io/zaproxy/zaproxy:stable -q + + echo "Starting ZAP Docker container..." + docker run -v ${GITHUB_WORKSPACE}:/zap/wrk/:rw ghcr.io/zaproxy/zaproxy:stable zap-api-scan.py -t http://$IP_ADDR:8080/docs/api-docs/docs -f openapi -w report_md.md -r report_html.html -T 1 + + echo "... done." + + - name: Add Summary + if: success() || failure() + run: | + echo "Publishing Job summary... " + cat report_md.md >> $GITHUB_STEP_SUMMARY + + - name: Upload HTML report + if: success() || failure() + uses: actions/upload-artifact@v3 + with: + name: ZAP scan report + path: ./report_html.html diff --git a/.github/workflows/deploy-staging.yaml b/.github/workflows/deploy-staging.yaml deleted file mode 100644 index b9c8b4a5c..000000000 --- a/.github/workflows/deploy-staging.yaml +++ /dev/null @@ -1,156 +0,0 @@ -################################################################################ -# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0. -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# -# SPDX-License-Identifier: Apache-2.0 -################################################################################ - -name: Build and push the latest build to staging - -on: - push: - branches: [ develop ] - workflow_dispatch: - branches: [ develop ] - -env: - NAMESPACE: "ingress-custodian" - SECRET: "acr-credentials" - CLUSTER_RESOURCE_GROUP: "cxtsi-dev013-rg" - CLUSTER_NAME: "cxtsi-dev013-aks-services" - -jobs: - build: - runs-on: ubuntu-20.04 - if: ${{ false }} # disable for now - - steps: - # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 - - - uses: madhead/read-java-properties@latest - id: version - with: - file: gradle.properties - property: version - default: 0.0.1 - - - name: Set App Version - run: echo "APP_VERSION=${{ steps.version.outputs.value }}" >> $GITHUB_ENV - - - name: Set outputs - id: vars - run: | - echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - - - name: Show version - run: echo ${APP_VERSION}.${SHORT_SHA} - - - name: Docker Login - uses: docker/login-action@v1 - with: - registry: ${{ secrets.CX_ACR_SERVER }} - username: ${{ secrets.CX_ACR_USER }} - password: ${{ secrets.CX_ACR_PASSWORD }} - - - name: Set up JDK 17 - uses: actions/setup-java@v1 - with: - java-version: 17 - - - name: Build with Gradle - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: build - - - name: Create dist - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: installDist - - - name: Build and push staging images - uses: docker/build-push-action@v2 - with: - context: . - tags: ${{ secrets.CX_ACR_SERVER }}/catena-x/custodian:${{ env.APP_VERSION }}.${{ env.SHORT_SHA }} - push: true - - deploy: - needs: build - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v2 - - - uses: madhead/read-java-properties@latest - id: version - with: - file: gradle.properties - property: version - default: 0.0.1 - - - name: Set App Version - run: echo "APP_VERSION=${{ steps.version.outputs.value }}" >> $GITHUB_ENV - - - name: Install Helm - uses: Azure/setup-helm@v1 - with: - version: v3.3.1 - - - name: Set the target Azure Kubernetes Service (AKS) cluster. - uses: azure/aks-set-context@v1 - with: - creds: '${{ secrets.AZURE_SP_DEV013_TSI }}' - cluster-name: ${{ env.CLUSTER_NAME }} - resource-group: ${{ env.CLUSTER_RESOURCE_GROUP }} - - - name: Create namespace if doesn't exist - run: | - kubectl create namespace ${{ env.NAMESPACE }} --dry-run=client -o json | kubectl apply -f - - - - name: Create image pull secret for ACR - uses: azure/k8s-create-secret@v1 - with: - container-registry-url: ${{ secrets.CX_ACR_SERVER }} - container-registry-username: ${{ secrets.CX_ACR_USER }} - container-registry-password: ${{ secrets.CX_ACR_PASSWORD }} - secret-name: ${{ env.SECRET }} - namespace: ${{ env.NAMESPACE }} - arguments: --force true - - - name: Set outputs - id: vars - run: | - echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - - - name: Package Helm App version and Chart - run: | - helm package --app-version=${APP_VERSION} --version=${APP_VERSION} ./helm/custodian - - - name: Run Helm Deploy app to dev - run: | - helm upgrade \ - --install \ - --atomic \ - --wait \ - --namespace ${{ env.NAMESPACE }} \ - cx-custodian catenax-custodian-${APP_VERSION}.tgz \ - -f ./helm/custodian/values-staging.yaml \ - --set image.registry=${{ secrets.CX_ACR_SERVER }} \ - --set image.tag=${APP_VERSION}.${SHORT_SHA} \ - --set app.version=${APP_VERSION} \ - --set certificate.host="custodian-dev.germanywestcentral.cloudapp.azure.com" diff --git a/.github/workflows/docker-hub-release.yaml b/.github/workflows/docker-hub-release.yaml index a02ec2fc1..69e083d22 100644 --- a/.github/workflows/docker-hub-release.yaml +++ b/.github/workflows/docker-hub-release.yaml @@ -30,6 +30,9 @@ on: pull_request: branches: - main + paths: + - 'Dockerfile' + - 'src/main/**' env: IMAGE_NAMESPACE: "tractusx" @@ -74,6 +77,7 @@ jobs: type=semver,pattern={{version}} type=semver,pattern={{major}} type=semver,pattern={{major}}.{{minor}} + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - name: DockerHub login if: github.event_name != 'pull_request' diff --git a/.github/workflows/kics.yml b/.github/workflows/kics.yml index 666784aa9..01837e17b 100644 --- a/.github/workflows/kics.yml +++ b/.github/workflows/kics.yml @@ -16,20 +16,22 @@ # SPDX-License-Identifier: Apache-2.0 --- -name: "KICS" +name: "KICS Scan" on: push: - branches: [main, development] + branches: [main, develop] pull_request: # The branches below must be a subset of the branches above - branches: [main, development] + branches: [main, develop] paths: - "charts/managed-identity-wallet/**" - "dev-assets/docker-environment/**" - "docs/**" schedule: - cron: "0 0 * * *" + workflow_dispatch: + # Trigger manually jobs: analyze: diff --git a/.github/workflows/semantic-release.yml b/.github/workflows/semantic-release.yml index 1563ca216..d74b55f49 100644 --- a/.github/workflows/semantic-release.yml +++ b/.github/workflows/semantic-release.yml @@ -26,10 +26,12 @@ jobs: - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '17' distribution: 'temurin' + java-version: '17' + - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 + - name: Build with Gradle uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index 620009aee..f0312a9e6 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -19,17 +19,9 @@ # Depending on the location of your Docker container # you need to change the path to the specific Docker registry. # -name: "Trivy" +name: "Daily Trivy Scan" on: - push: - branches: [main, development] - # pull_request: - # The branches below must be a subset of the branches above - # branches: [ main, develop ] - # paths-ignore: - # - "**/*.md" - # - "**/*.txt" schedule: # Once a day - cron: "0 0 * * *" @@ -37,7 +29,7 @@ on: # Trigger manually jobs: - analyze-config: + analyze-managed-identity-wallet: runs-on: ubuntu-latest permissions: actions: read @@ -48,87 +40,18 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 - - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.11.2 + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@0.12.0 with: - scan-type: "config" - # ignore-unfixed: true - exit-code: "1" - hide-progress: false + # Path to Docker image + image-ref: "tractusx/managed-identity-wallet:latest" format: "sarif" - output: "trivy-results1.sarif" + output: "trivy-results2.sarif" + exit-code: "1" severity: "CRITICAL,HIGH" - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v2 if: always() + uses: github/codeql-action/upload-sarif@v2 with: - sarif_file: "trivy-results1.sarif" -# -# analyze-managed-identity-wallet-service: -# runs-on: ubuntu-latest -# if: github.ref == 'refs/heads/main' -# permissions: -# actions: read -# contents: read -# security-events: write -# -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 -# -# # It's also possible to scan your private registry with Trivy's built-in image scan. -# # All you have to do is set ENV vars. -# # Docker Hub needs TRIVY_USERNAME and TRIVY_PASSWORD. -# # You don't need to set ENV vars when downloading from a public repository. -# # For public images, no ENV vars must be set. -# - name: Run Trivy vulnerability scanner -# if: always() -# uses: aquasecurity/trivy-action@0.11.2 -# with: -# # Path to Docker image -# image-ref: "ghcr.io/catenax-ng/tx-managed-identity-wallets_service:latest" -# format: "sarif" -# output: "trivy-results3.sarif" -# exit-code: "1" -# severity: "CRITICAL,HIGH" -# -# - name: Upload Trivy scan results to GitHub Security tab -# if: always() -# uses: github/codeql-action/upload-sarif@v2 -# with: -# sarif_file: "trivy-results3.sarif" -# -# analyze-managed-identity-wallet-service-development: -# runs-on: ubuntu-latest -# if: github.ref == 'refs/heads/development' -# permissions: -# actions: read -# contents: read -# security-events: write -# -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 -# -# # It's also possible to scan your private registry with Trivy's built-in image scan. -# # All you have to do is set ENV vars. -# # Docker Hub needs TRIVY_USERNAME and TRIVY_PASSWORD. -# # You don't need to set ENV vars when downloading from a public repository. -# # For public images, no ENV vars must be set. -# - name: Run Trivy vulnerability scanner -# if: always() -# uses: aquasecurity/trivy-action@0.11.2 -# with: -# # Path to Docker image -# image-ref: "ghcr.io/catenax-ng/tx-managed-identity-wallets_service:latest-develop" -# format: "sarif" -# output: "trivy-results3.sarif" -# exit-code: "1" -# severity: "CRITICAL,HIGH" -# -# - name: Upload Trivy scan results to GitHub Security tab -# if: always() -# uses: github/codeql-action/upload-sarif@v2 -# with: -# sarif_file: "trivy-results3.sarif" + sarif_file: "trivy-results2.sarif" diff --git a/.github/workflows/veracode.yaml b/.github/workflows/veracode.yaml index 431bccda2..2b8d2a211 100644 --- a/.github/workflows/veracode.yaml +++ b/.github/workflows/veracode.yaml @@ -16,7 +16,7 @@ # SPDX-License-Identifier: Apache-2.0 --- -name: Weekly Veracode Scan +name: Daily Veracode Scan on: schedule: @@ -27,7 +27,7 @@ on: jobs: scan-code: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest permissions: contents: read @@ -55,17 +55,18 @@ jobs: run: echo ${APP_VERSION}.${SHORT_SHA} - name: Set up JDK 17 - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: - java-version: 17 + distribution: 'temurin' + java-version: '17' - name: Build with Gradle - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + uses: gradle/gradle-build-action@v2 with: arguments: build -PgithubToken=${{ secrets.GITHUB_TOKEN }} - name: Veracode Upload And Scan - uses: veracode/veracode-uploadandscan-action@0.2.1 + uses: veracode/veracode-uploadandscan-action@0.2.6 continue-on-error: true with: appname: 'project-managed-identity-wallet' diff --git a/.tractusx b/.tractusx new file mode 100644 index 000000000..18597f958 --- /dev/null +++ b/.tractusx @@ -0,0 +1,22 @@ +# ############################################################################# +# Copyright (c) 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0. +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################# +--- +product: "Managed Identity Wallet (MIW)" +leadingRepository: "https://github.com/eclipse-tractusx/managed-identity-wallet" +repositories: [] diff --git a/CHANGELOG.md b/CHANGELOG.md index e5fc29e37..352baacb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,274 +6,321 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## Unreleased +## [V0.1.1] - 2023-09-06 -[Compare with latest](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.7.5...HEAD) +### Known Knowns -### Features - -- add task for generating CHANGELOG.md file ([0ba1142](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/0ba1142069bf2abd85f90aaa12a7f2f9d371a89d) by Peter Motzko). -- add GH Action for DAST scanning ([8ff4e1a](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/8ff4e1abf37334ead3e4fd14a3df7aead1f43ec4) by Peter Motzko). -- update Helm chart Readme and corresponding Readme-template ([ada59c2](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ada59c2ee2fa6744afe1a2b759644589b1c700bd) by Peter Motzko). -- update Helm chart description ([73235a8](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/73235a88b1ba48a1880dc74554b3cfe71b614650) by Peter Motzko). -- add helm-docs documentation ([24c0fcd](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/24c0fcd63cc33b6255c51abcab3fc157f814bb1f) by Peter Motzko). -- remove predefined annotation for ingress ([2d8d81b](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/2d8d81bc025d3f4921e333cf229502046945ea94) by Peter Motzko). -- add one more folder depth to helm unittest in Taskfile ([967afc1](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/967afc1c0216951a9635185dca1f8c38c4e66100) by Peter Motzko). -- add helm values for local deployment ([895c506](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/895c506f941a4d658c6fcb092fa04494f042d0a5) by Peter Motzko). -- add simple backup of database to a PV ([680e09f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/680e09fd18bf95518244f0a92c181d0264837aa6) by Peter Motzko). -- add tests for env and secrets in values ([e7a17b4](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e7a17b4b4014cd0e518b78dc88358b62b0caabbc) by Peter Motzko). -- added end user documentation ([83ae886](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/83ae88672a1dd28c31ca987e73ef84fd85fa366f) by Ronak Thacker). -- added administrator documentation ([1931fa0](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1931fa0a8f1afd01249dbcbeecfa09b1cb739f83) by Ronak Thacker). -- adjust trivy GH Action ([ee2f548](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ee2f54884289ad308c87b7e93b5be0c739ed55bd) by Peter Motzko). -- remove manual trigger from veracode.yaml ([fab2f10](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/fab2f1075b339933152c78ac09ec43bc2a284c71) by Peter Motzko). -- update KICS.yaml to fit current application ([af214cd](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/af214cd80cc30f9cd0e0d0b40748ca0fdaf5b1df) by Peter Motzko). -- update README.md by using current helm-docs template ([74e8bf9](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/74e8bf9cfa60d035f2baf4fafe3e3b972e2e485f) by Peter Motzko). -- add Helm chart Readme template for helm-docs ([a96ca4c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a96ca4c6ace3c47f051007b8ae7b04c2b670adf1) by Peter Motzko). -- update chart description and add homepage link and keywords ([5b7b6b4](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/5b7b6b484f83462469b71dc931ff9291492b7f7b) by Peter Motzko). -- check expiry of VC while VP validate support added and test cases updated ([3c1d965](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3c1d965f913b1da7f0f5d58c99e89ea36c58fffc) by Ronak Thacker). -- updated context url of did document and test case ([0b05e15](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/0b05e15bfd9e366d80c9004f0b3e9b5aea255438) by Ronak Thacker). -- Extend Mac user information ([403362d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/403362d2e7cb4f4e87b3b940415fb3d88dfab2f0) by Peter Motzko). -- CGD-347: manage log level at runtime ([1676bc3](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1676bc311f005f5207241d3138d690f05fb19131) by Nitin Vavdiya). -- Uncomment KC_HOSTNAME in env.docker.dist and env.local.dist (is required, not optional) ([aaeefc6](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/aaeefc61546d4ed3fa6fe0c91527e73d17068f45) by Peter Motzko). -- Add DEV_ENVIRONMENT variable to env.docker.dist and env.local.dist ([a0ed2a4](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a0ed2a4d7a51b14e3c22d1b6740c9dbebe648a49) by Peter Motzko). -- CGD-368: Check expiry date of VC during validation ([37bee28](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/37bee283777f081b82120cf6437da19260f901b3) by Nitin Vavdiya). -- replace check for "docker compose" plugin ([d75c719](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/d75c71903f69f9f62dad4ae2aa97e7be2fc525d4) by Peter Motzko). -- remove docker compose selection -> fixed to new V2 version ([aab42bc](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/aab42bc1590e62f0410c789da435614c127921a2) by Peter Motzko). -- mark important content in README.md ([43dec2d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/43dec2d1918296a17117070bb4e4c6d279bcc71f) by Peter Motzko). -- document COMPOSE_COMMAND env ([a6fc918](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a6fc91812ad9065c1f5011597deb1bc6fd9b545a) by Peter Motzko). -- use COMPOSE_COMMAND env from env.* to execute the available docker compose binary ([931e69f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/931e69fd02a0ada7c5b0827eaaf5aa140b5f07af) by Peter Motzko). -- add COMPOSE_COMMAND to env.*.dist to configure the available docker compose binary ([1893a64](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1893a6484bd0150d7d2ac3e5cb2e45e221403b2f) by Peter Motzko). -- run Helm unittests ([f11f824](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f11f8246da65fa17b0a4f4fac59ae67e42b709de) by Peter Motzko). -- suppress task header in output ([87aff68](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/87aff685c7b6db40cd701d3b7f51101e4b02e0c4) by Peter Motzko). -- add missing tasks and rename working dir ([27c2b03](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/27c2b03325004932c317c96989733c0a88ef4785) by Peter Motzko). -- show install link provided as parameter ([cb7ae41](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/cb7ae41b21e6a3acbafcf98dcc09000514b298d1) by Peter Motzko). -- add default labels to secret ([dfe107d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/dfe107dcd54fd44ad87e56ab799ee78a7f39a0ec) by Peter Motzko). -- add tests for dev stage and put tests in subfolder for each stage ([ecbe7e5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ecbe7e5d9765c7336914801001444905d8f84529) by Peter Motzko). -- put Helm chart unittests in subfolder for each stage ([3e17880](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3e17880beb79fc50f094a79cd49f47c06dbdc4b2) by Peter Motzko). -- update readme ([74fdb21](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/74fdb21dc549ed80bc1cbf8f71b40e0a9410a834) by Peter Motzko). -- add tasks for test-report and coverage ([b4ceeb5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b4ceeb5b8325a1b573ec7d6f9fd671e1e9cc41f1) by Peter Motzko). -- add task to check, if helm-docs is installed ([d559cdc](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/d559cdcb87edc427bbb46a80769dfed3137216d4) by Peter Motzko). -- add task to rebuild Helm chart readme ([881e131](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/881e131008cd358a376df62a72107711620c2845) by Peter Motzko). -- Update readme ([81e58df](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/81e58dfcbcdee82b1554c770d98f107875d3cf04) by Peter Motzko). -- swagger doc updated as per new role in api and Retrieve wallet by identifier test cases updated ([330d207](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/330d207e239004340465ecfb34c606a658616c26) by Ronak Thacker). -- make Taskfile app namespace OS specific ([6245576](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/62455766d2ea7ab9da95af6948a62cb455fbc623) by Peter Motzko). -- add environment type switch ([4a5c128](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/4a5c1287c3396ac9ee42e985db67579ab75bccc8) by Peter Motzko). -- update .gitignore ([33b7262](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/33b726263658687608e75379e8cfe1236fda05ca) by Peter Motzko). -- moved to dev-assets folder ([a70115c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a70115c1d1243908ccc16d2fe2c3bbefd0070d8a) by Peter Motzko). -- add realm for local dev config ([56a67b7](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/56a67b742fbb1dc12806459ba72778f525fad966) by Peter Motzko). -- env-files move to dev folder ([660cac9](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/660cac957dd683ed6211653ca552f1320ab7f3f7) by Peter Motzko). -- script to obtain an authority token from keycloak ([65b8b20](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/65b8b20a24ac6cbce7572f173844d21d4bff0bfc) by Peter Motzko). -- rename tasks and point to new dev-env ([62e0f2b](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/62e0f2b06c75a71e65e2e1dfeb16666cbb826b97) by Peter Motzko). -- add new dev environment ([0858bf9](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/0858bf9611162f1055b7b29d20494685878aab39) by Peter Motzko). -- split tasks to own namespaces ([db0151c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/db0151c68fb208dd3981d271277490f48ccdca7a) by Peter Motzko). -- increment appVersion to 3.3.3.b420443 as an attempt ([b75ebaf](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b75ebafd5395492116d99eca4de6f496cd06ff9f) by Mathias Knoop). -- increment app version to '1.0.0-rc1' and chart version to '4.0.1-rc1' ([07e21cf](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/07e21cfa048fa445fbb4895a0c932fbbd399ac51) by Mathias Knoop). -- json web signature and key generation from lib ([8fda456](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/8fda456a59e011f250677f2e929e6ffb14d1f5f9) by Nitin Vavdiya). -- fallthrough in check-prerequisites task ([28801cc](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/28801cc3996f9dc9f699326285bed538f9d9ba6f) by Peter Motzko). -- authenticate using client_id and claint_secret added in swagger UI ([aaa0a8f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/aaa0a8f5efd5c7282579d42c51677e5816a9c6a6) by Nitin Vavdiya). -- add Helm unittests for default values ([cc6d2bf](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/cc6d2bf32f711dd0b745e9e24c7bc73cb02cb5b3) by Peter Motzko). -- remove "dash" from template ([7b5bca9](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7b5bca9e3261ddc49605799c68fac32dc1e353ce) by Peter Motzko). -- add eclipse copyright header everywhere ([ad5c631](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ad5c631fa2bc3ce22415d215f2cb7207feee014a) by Peter Motzko). -- adds direct '.java-version' from program 'jenv' to '.gitignore' to avoid that is version-controled. ([3531dd5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3531dd527b1d0f4306a466a4b59d25fa49872470) by Mathias Knoop). -- add more cleanup commands ([c18b1b0](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/c18b1b079929a82d22e302ec641bb1107f7cf718) by Peter Motzko). -- include checks and new "local.env" + add check-prerequisites task ([eb277ff](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/eb277ffdb1605a1650d08ac340140beaa1246b0d) by Peter Motzko). -- rename tasks in Taskfile ([cdde677](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/cdde677a6f5a594d65633ebd0b472dddf21dfea4) by Peter Motzko). -- add "local.dev" to .gitignore ([0c4166d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/0c4166d1ce7cd4521e0fc7980c1a73c70e57245e) by Peter Motzko). -- adds (initially) a Postman-collection for testing MIW on stage 'dev'. ([25debc3](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/25debc365e18ca6f3f0eb0e864539ce0352e3807) by Mathias Knoop). -- add securityContext (primary same user/group id as docker image) ([25e93fa](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/25e93fa50652ced6b68b2e6e8fc18e4e5fdbcfe0) by Peter Motzko). -- use user/group id > 10000 and rename "user" to "miw" ([4b08914](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/4b08914d48ed598178db1cbaff6bfac8e008485b) by Peter Motzko). -- back to default values formatting (with accurate values) ([b0e3c61](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b0e3c6192f358dd3f88a72b05365dc76601b4a4d) by Peter Motzko). -- summary VC context URL updated ([0cc6bfb](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/0cc6bfbd61d845689d6b0fe56214fd03b98bf0e6) by Nitin Vavdiya). -- json web signature 2020 support added for did document, vc and vp ([a9838ce](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a9838ce167a7f2d6a92849de66c8242e093a93b4) by Ronak Thacker). -- add and adjust authority user's BPN and DID:WEB ([7e2ab46](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7e2ab464c81f9b90d234ce963f204c9d5e46f100) by Mathias Knoop). -- json web signature 2020 support WIP ([62ee442](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/62ee442e799e59df0ed70925b71e419413a0bc9a) by Ronak Thacker). -- set health check actuator resp. liveliness probe endpoint to '/actuator/health/liveness' and readiness probe endpoint to '/actuator/health/readiness' both on port '8090' ([af44016](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/af44016dc3e04d5e7e1448007cb73a429c529de9) by Mathias Knoop). -- updated vc type ([8b6ebfa](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/8b6ebfadbddabe9342b227e8043be110f7ae1ae1) by Ronak Thacker). -- adjust task 'stopDockerApp' to stop the actual container 'local_miw_app' ([2fb0000](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/2fb0000162383dd9e8947e5f7d2ef985c66aa319) by Mathias Knoop). -- Holder identifier added in framework VC subject ([e65af19](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e65af19f777154e7f2bc69f90e40e32feef52dbf) by Nitin Vavdiya). -- framework VC name changes and test case changes ([7952f4b](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7952f4b1ef94ec144308683607bf5083226da523) by Nitin Vavdiya). -- adding generated 'README.md' to accompany the charts for 'Managed-Identity-Wallet' as required. ([d33f6aa](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/d33f6aa50f5f7cb0276c1e6391d85a4eae793c87) by Mathias Knoop). -- add app setup for the stages 'dev' and 'int' in order to deploy the (new) 'Managed-Identity-Wallet' on these stages. ([3f8be32](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3f8be327f44c44e58fe3fd08a6e2853ba8e254d7) by Mathias Knoop). -- validation added in issue VC api for summary VC ([97ac189](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/97ac189d1e2ef13da12432c2e340d5b9140fa8cf) by Nitin Vavdiya). -- change in create VP API, type and name removed from summary VC ([d4909b0](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/d4909b05f05d4141616abb22acbb31e1d1c4a5ec) by Nitin Vavdiya). -- revert renaming and postpone that for later. ([3a63399](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3a63399e80220bca2de0ed3bdcaf3b453b68c8fa) by Mathias Knoop). -- add '/dev.env' to '.gitignore' to prevent it form being comitted/ pushed unwanted. ([ac09710](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ac09710204a9c123c66ae2bcd5a5d668a4a84de9) by Mathias Knoop). -- rename tasks from beginning with 'run' to beginning with 'start' to achieve a uniform 'start...' and 'stop...' appearance of task names. ([a3f3f1c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a3f3f1c4f9450cc436537672dc439a5e598ea0b5) by Mathias Knoop). -- updated create wallet api ([ba320ab](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ba320ab31fbed0c833ffb8462b0b39c4a5ab3648) by Ronak Thacker). -- updated store credential api ([74df138](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/74df138aa01417887e2bd439178f1e80b7be840a) by Ronak Thacker). -- summery VC flow after holder delete summary VC ([1b61f38](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1b61f38c721ef961e4f6d5c97555a3dc49c1668d) by Nitin Vavdiya). -- Paggination support added in list VC API ([f4338fd](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f4338fd1711e66b64db03f36f0a61c9d189ed70d) by Nitin Vavdiya). -- summary credential test cases added ([b322515](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b322515b8b5ed1f9fa10f7cd0138820ba15a7e6e) by Ronak Thacker). -- Summary VC flow, code changes as per input given in code review, test case changes as per summary VC flow ([07c4706](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/07c4706a8beb85313f325317e5feb9dca6bfff17) by Nitin Vavdiya). -- updated issuer credential api and test cases as per new api spec ([f33b056](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f33b056c41584e65492b028cebb7f4a9f361d01d) by Ronak Thacker). -- Issuer get credential API testcases, test case modification for self_issued and is_stored ([bafaab9](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/bafaab91d67ef1d85229f786500243dc22ef4d33) by Nitin Vavdiya). -- Testcase modification as per new API specification ([f29edb3](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f29edb30ff9c651be10dc082ef6454fd293e7177) by Nitin Vavdiya). -- delete credential api and test cases added ([e56a52e](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e56a52e5218c9d07d738f590b2aeea01b9f33202) by Ronak Thacker). -- API changes as per new API specification(separate apis for holder and issuer wallet) ([6286538](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/628653865b0a4db9193fde1d07e5e946df05160c) by Nitin Vavdiya). -- validate VP and validate VC test cases updated with mock ([7531191](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7531191afc62fba81d16aeef26b2ff0a84f20fd8) by Nitin Vavdiya). -- validate VP as jwt API, enforce https while did resolve in config, changes according to new lib ([235420f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/235420fcd3eed36e575c10951bb067b0bb530e9a) by Nitin Vavdiya). -- update lib method to resolved vc/vp validate ([6f70b09](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6f70b09523bed428472ed61c0c88964473a243b5) by Ronak Thacker). -- updated credential get api ([1698996](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/16989967d67160ffbff6a0b9eae4d616634fd456) by Ronak Thacker). -- token support added in swagger ([cd74001](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/cd74001c323a54c4dcc9094daca42614c5826ff6) by Nitin Vavdiya). -- test case of validate vc wip ([2123468](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/21234689065a7a39fc45a6d87ce40e7dc79e3ff2) by Ronak Thacker). -- credential get api type filter support added ([9d6a49d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/9d6a49daab04bda7fe06484ec1e827a534addbd9) by Ronak Thacker). -- shorten enc_key to 32 bytes ([a52e2ce](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a52e2cec45befdb699fe4c90a29be8eb464eb6e1) by Peter Motzko). -- extend application name ([5aca6f2](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/5aca6f2a1063830373faa52fd5ee5673cf3860ab) by Peter Motzko). -- add authority_wallet_did env ([ce2e531](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ce2e531e7fac46b23d656823e1ea11cb1396359d) by Peter Motzko). -- WIP: add more stuff to Taskfile ([280f51c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/280f51cb4d7050a87f4faca547c45d05eacc6089) by Peter Motzko). -- set ingress host type to "ImplementationSpecific" ([8e40f3a](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/8e40f3a0b32473bd5501fde76c3f3a837354c9ce) by Peter Motzko). -- add classname annotation to ingress ([d250497](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/d25049790c2d10c8be784a953426a872adf88998) by Peter Motzko). -- add init script to setup initial database ([9950690](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/99506905c8e9a53bccc28cd7f7ecc752179c1112) by Peter Motzko). -- read me file chamges, sample reponse added ([88651fa](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/88651fa518fdcabf5ab1902d775d748a701df46e) by Nitin Vavdiya). -- set default values for dev environment in ArgoCD ([2d10bcf](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/2d10bcfe7e5159573d275f42556bd852eda7df07) by Peter Motzko). -- set default values for image tag and ingress className ([f8310e6](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f8310e6b65682ffff9aa5d82641aced98ee933bb) by Peter Motzko). -- comment out default values ([d424086](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/d4240868609392558bc3cb682b9e3747ec7cc59d) by Peter Motzko). -- comment out unused config ([248ab4c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/248ab4cede85449e1028bc8aa00f4b8b5e3d9636) by Peter Motzko). -- add full release name to ingress secret name ([58a7299](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/58a72999f8229ddc39dd76442f4e8754b47e7720) by Peter Motzko). -- readm changes and gradle fix ([79d5bf0](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/79d5bf04488477296c07c151b455623d7b023e58) by Nitin Vavdiya). -- update ditignore and dev.env added ([b90fe94](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b90fe944a6f447e54349ff1ef99298d7fa9f2468) by Nitin Vavdiya). -- readme added, validate VP wip ([1c4d6af](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1c4d6af2642b81e94430614ceb9ec4c2c3497da9) by Nitin Vavdiya). -- issue credential api test case added ([6edf1e6](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6edf1e635c4bd82536a9a76bf88153a73bcb6a95) by Ronak Thacker). -- add values for dev stage (WIP) ([bb2c6a5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/bb2c6a5be738d042510f00a62947df303ea58bb6) by Peter Motzko). -- remove unused secrets ([fa21e4d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/fa21e4d536ab6c7bf62a97ee3188b3873e24592a) by Peter Motzko). -- add container env (plain and from secret) ([7242b4b](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7242b4b78834a0965d756f416ef0ac0068ca22a3) by Peter Motzko). -- add container env and DB secrets ([f175786](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f1757861ff2d204e0f3e98035f4fdc10c247c2cb) by Peter Motzko). -- adjust to current setup ([ee92bf5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ee92bf5f5519d5e7759351d7a04962c08fceae79) by Peter Motzko). -- rename miw service GH repo ([ab9c7ff](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ab9c7ffb2632ad7621e010917306997589100599) by Peter Motzko). -- adjust Dockerfile to current setup ([8556169](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/85561698505ef5d72a76314dbb8d69223e5e57cb) by Peter Motzko). -- change default name of miw-app artifact ([29e65af](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/29e65afbc1b0e9ec941e8e516a0e8a8b292eb12a) by Peter Motzko). -- add local miw-app image to docker-compose ([21ac5e8](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/21ac5e880bd5fff9ad6c478986aecc02e36e4069) by Peter Motzko). -- credentials validation api wip ([0515ef6](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/0515ef6244d52bea506363540593489bee48d165) by Ronak Thacker). -- reamdme added with env verables, vp as jwt, credentials id added in table, search with credential id ([524c537](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/524c5370aabd95e95b9c23eb902543394a0dbbb2) by Nitin Vavdiya). -- caller BPN security added and test case modification for the same ([b375317](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b3753173eb2eb90474c6a9e92d7465203ddc17c3) by Nitin Vavdiya). -- remove acapy vars from .env.example ([3ce0c6d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3ce0c6d21c735209503e17025089e4b024050a32) by Peter Motzko). -- change active Helm chart ([a5a88b5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a5a88b5e0482bd802e964661b41660bf0908141b) by Peter Motzko). -- remove old acapy actions ([e0f0ae7](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e0f0ae7b8a1560b458511d922bae1624c18294fb) by Peter Motzko). -- switch to new Helm chart "charts/managed-identity-wallet" ([c302664](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/c302664b96431373ef111361c1d994c27640fe98) by Peter Motzko). -- add new helm chart "managed-identity-wallet" (WIP) ([eac9f3a](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/eac9f3addc4edb60ffe93d58bed4db5816ab0252) by Peter Motzko). -- added test cases for getCredentials api ([56072f6](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/56072f68d092b3ebf8cbef9647074e4b7d6f456a) by Ronak Thacker). -- code changes to create DidDocument ([1675ef4](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1675ef4d1f6b5cb32b80b856b39955383902f1f9) by Nitin Vavdiya). -- authority wallet did in env ([139f9d9](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/139f9d95f116e02fc1ba91404d3b010fe0587386) by Nitin Vavdiya). -- presenation API WIP, code refactor ([2c1b5d9](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/2c1b5d9c3bc667d8f91d1f35145bd3fb9c0c38c0) by Nitin Vavdiya). -- Create BPN VC while creating wallet, test case modification, filter support added in get all wallet and get all credential API ([aa04faa](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/aa04faa2adf828bfbb712993af90926a397e4ff0) by Nitin Vavdiya). -- bpnCredential added in wallet creation ([67c749f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/67c749f98ff768deaea2f68a219916c46e0276e5) by Ronak Thacker). -- Framwork VC API, Dismantler VC API, Testcase modificatoin, VC context URL in config, VC expiry in config ([6ea7580](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6ea7580023ee6fef9d561558ab22eec79c27e242) by Nitin Vavdiya). -- test cases added for issueMembershipCredential api ([a3d19c1](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a3d19c15ad59c57cd06f18fa5630e9555d639d10) by Ronak Thacker). -- membership credentials api added ([45602c8](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/45602c8fe8db3a982ea9c644c180902ad512b75e) by Ronak Thacker). -- ssi lib v4 added, autority wallet config added ([1c5ee0e](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1c5ee0e116bbc0ad69525da8cc7a3fbdfa67da4a) by Nitin Vavdiya). -- Store credential API with test case, Validate test case ([4911817](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/4911817dfdf40038cc2298d62676d4e2fa25c2b2) by Nitin Vavdiya). -- credential list api added ([e34cf00](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e34cf0067d77401be28aa1e43ad9d118465e39a8) by Ronak Thacker). -- Store credntial API, testcase mofitication based on DidDocument Java POJO ([569097b](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/569097b392d0fb7242ed9df47fcaf5fda40904b0) by Nitin Vavdiya). -- ssi:lib version updated ([4939ddb](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/4939ddb2d9d4f4b982ffeb75279414b63d16a005) by Ronak Thacker). -- Spring security added with keycloak, Swagger added, Testcases modification based on spring security ([aed48ee](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/aed48ee4de89ab0df1d649260609db69264b6530) by Nitin Vavdiya). -- Resolve the DID document for a given DID or BPN api added ([1368edf](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1368edfb1cef1cac0640b599bd8ba76b7e2aa627) by Ronak Thacker). -- disable authorization check, because of potential bug (to be investigated) ([718af89](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/718af892e70eaf478e3001b14772f1ade4fc5747) by Peter Motzko). -- add console logger to db init transaction (commented out, but useful for debugging) ([6706f18](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6706f186ebb1343bf28dc8b59ff63a8a4d18fd7f) by Peter Motzko). -- adjust naming to snake_case and add suffixes ([720217f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/720217fdfa650e2785a92708df688d8738bf04bc) by Peter Motzko). -- Bump Keycloak version of docker-compose to 21.1 and update env file ([9b81087](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/9b81087ac2d811c67217adee06df57a7522770bf) by Peter Motzko). -- Add first helm unittest draft for Deployment resource ([b533b52](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b533b52460578872117c101c5a07c5d9cbb19f3e) by Peter Motzko). -- Introduce Taskfile ([5d4a889](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/5d4a88989ce8fc1dc93ea69a57ab4b3a8da3bdf6) by Peter Motzko). -- Replace old custom Dockerfile with official postgres image ([ce2c907](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ce2c907bb9e4c10a81da4652cdeb3c21a363381e) by Peter Motzko). -- Remove obsolete stuff ([c2ff738](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/c2ff738ab5f13de40734bfccc17fa10d59a57b39) by Peter Motzko). - -### Bug Fixes +- By default the role "view_wallets" is exclusively foreseen for the issuer/authority. In case of an unintended + assignment of this role to any technical user, those are able to see the list of existing wallets with the current + code version. A suitable fix with a second validation step will be provided with the next update of MIW. -- add empty object ([00a9b08](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/00a9b08c1a9bd319e0ebe05734d26fae2209b8fe) by Peter Motzko). -- Veracode finding for CVE-2023-24998 ([5ac9f2d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/5ac9f2dfeb1b80afce33014eae9d592774ae3bf3) by Nitin Vavdiya). -- test cases ([1a9b51e](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/1a9b51ea8ef256b2b8275e7361fd54a0c2d09d90) by Nitin Vavdiya). -- veracode log issue ([69cd4d8](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/69cd4d83470faa2615b6128f416ea4f3a601f21e) by Nitin Vavdiya). -- veracode log realted issue fix ([7908741](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7908741e3a765bc68e9c955dfccc58e4b3f72da2) by Nitin Vavdiya). -- veracode issues: Spring boot and other lib version update ([f30c4d8](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f30c4d80ec70db4387dbb41e06d867579a4bdde6) by Nitin Vavdiya). -- fix test values for helm test in GH Actions ([4532aa7](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/4532aa7611c54270e20e2adec8be24cad21eed20) by Peter Motzko). -- adjust gradle build command and remove unused code ([590d56a](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/590d56a7d990799fa985f81447f3b4be6b35d653) by Peter Motzko). -- conflict resolved ([a2ce51f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/a2ce51fce616644364abc6348c34b1050ca33400) by Nitin Vavdiya). -- replace docker_compose env var with real command ([187435b](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/187435be54f66d88dda11c152c38205223791f38) by Peter Motzko). -- split into two lines ([0b2e11f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/0b2e11fb4a3d6f7b862f688da5c7f85b1ea9fe1e) by Peter Motzko). -- add missing "sudo" ([e912482](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e912482c8c87fa9d1f904ef26ed52d65810bf271) by Peter Motzko). -- move information about docker for macos upwards ([ff414f8](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ff414f8e3cb764ad1602f2b2367e2756d123cdd8) by Peter Motzko). -- add empty line at the bottom for Helm lint testing ([57a37f4](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/57a37f467d60cef5eb595911f101bc36050d924b) by Peter Motzko). -- use jdk 17 instead of jdk 18 and remove the EXPOSE statement ([e2ef3fe](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e2ef3fe536b8168a3806508c8c2da8f15cc5d247) by Peter Motzko). -- add install links to check-tools.yaml ([7c94f89](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7c94f8954fd2fb2020b444ea9466d8eef8325353) by Peter Motzko). -- move APPLICATION_PORT env var outside if condition ([299b669](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/299b669b4b71315cd9c7c19672d510ddb5727c65) by Peter Motzko). -- CGD-288 and code refactor ([f037c16](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f037c168a5a16aa3ff2009e7c086d82a8030bf44) by Nitin Vavdiya). -- use "localhost" instead docker container name ([c6caf36](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/c6caf36297582b0d1a6697f181b51f967d550cb1) by Peter Motzko). -- attempt to deploy recent code ([3b5e5f7](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3b5e5f7919674213b0f18374c4bd9715fbb418c8) by Mathias Knoop). -- adjust git history for Peter Motzko, peter.motzko@volkswagen.de ([06e4d83](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/06e4d838b9ccb5175ceac48547a70e9c18d62a7f) by Mathias Knoop). -- remove quotes ([8889455](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/8889455b67a6e88168b5bdc576393b758a638ffa) by Peter Motzko). -- quote numbers ([9a48104](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/9a4810452cf7a4187a8f4d9c33a7c7fbc346514e) by Peter Motzko). -- adjust resources and limits for 'managed-identity-wallets-new' in order to attain and retain app-health-status. ([b4e5ba5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b4e5ba51db62f2bc1b995b2a85111c6ab4b01aa4) by Mathias Knoop). -- adjust values to enable sync again. ([b856059](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b856059008fc62f565eb1b8b7c52354224384447) by Mathias Knoop). -- adjust values for timeouts and resources for 'liveness' and 'readiness' actuators to mitigate restarts to to cpu-throttling and respective memory peaks which would possibly yield a restart, too. ([f7673a0](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f7673a005f83b26418a9c82c45f8628713dfd98c) by Mathias Knoop). -- CGD-238: BPN from access_token ignore case ([f6bf0d5](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f6bf0d5bf08ed839f37b0b6a2cb09258c02b8cfd) by Nitin Vavdiya). -- changes task name to 'build' from 'buildJar' and adjusts all occurrences in file 'Taskfile'. ([458834c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/458834c9a0875990551dc553dd948e61f62e30f6) by Mathias Knoop). -- remove token (already revoked) ([835654d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/835654d9be8504a896f916ed928c5f2a6481793e) by Peter Motzko). -- remove double className ([e8e2a43](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e8e2a43301a62a8596a1415e62d0debab59bd502) by Peter Motzko). -- remove last slash ([dab469f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/dab469fe8f6d643284cd1f9d4691391026e5c482) by Peter Motzko). -- set ingress host path to "/" ([3dcfd46](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3dcfd460d630f9893ebebc9c760c2a96cf1dabd6) by Peter Motzko). -- bind APPLICATION_PORT to 8080 ([9a9097d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/9a9097deb094ce868d071e40f3bbdac70897d376) by Peter Motzko). -- add random generated encryption_key ([6e89285](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6e89285a797fc90a9b2e9d2b48687c4188dd1fa2) by Peter Motzko). -- typo in db_host ([66daf19](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/66daf19f10b5654b9d7c60c5611a1fd03d023c21) by Peter Motzko). -- wrong data type in secret ([c600d16](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/c600d1648065130d3ab21b56148b3348debf82bf) by Peter Motzko). -- add correct service for postgresql db ([e00a84f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/e00a84f5aaa231465d733e41e911aa4ee8eef3c8) by Peter Motzko). -- use lowercase letters for repository name ([9e10c9f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/9e10c9f9dd8859b2eb2b8613369a15787b0cccd4) by Peter Motzko). -- default port for postgresDB ([6b603c0](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6b603c038c38b567e7f882b0eaefd03b093bf292) by Peter Motzko). +### Security -### Code Refactoring - -- rename tests suites ([3304d0d](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/3304d0d91a339f47d9ed8e38e3e7b7c7413daf89) by Peter Motzko). -- move test template definition out to root ([2163f28](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/2163f283dc0f868a2ecf99557a545097569c178a) by Peter Motzko). -- remove manual trigger ([50d6370](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/50d6370628c4d22f9f42af7545fbf1a98f205ea7) by Peter Motzko). -- remove old MIW Helm chart ([6cd5d6c](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6cd5d6c6fd9e088f0f9b81a09cf1559477b1143b) by Peter Motzko). -- use custom values.yaml (instead of values-dev.yaml) for testing and add more tests ([37c9289](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/37c9289a054cc2e70a9169119e951986abd0b074) by Peter Motzko). -- remove env.environment due to set env order of Taskfile ([11ad959](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/11ad959c37f1a9d23f0b3d8fe119a7d85a73ccd8) by Peter Motzko). -- reorder variables ([7149df4](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/7149df4791460d95c5638b946b4fd6db2e782221) by Peter Motzko). -- add missing task to linux tasks ([b1e9c0e](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b1e9c0e80cf9a480b2b6b4b4cdec55146e72e65e) by Peter Motzko). -- spilt tasks after os in folders ([5ac1bd3](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/5ac1bd345f8e155317b810273eefc26d22bc5711) by Peter Motzko). -- move get_token.sh to scripts folder ([8bf92ed](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/8bf92edd11e7d0d513a4179a21d14d28971e6e6b) by Peter Motzko). -- rename paths ([ea18e72](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ea18e72a2e1266ea2aa141dd8a0b2531e4409c02) by Peter Motzko). -- auth method removed, company name removed from sample data ([6b6b80f](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/6b6b80fc2fe621ab0848142ae78a7f75a8e64e32) by Nitin Vavdiya). -- allowedVehicleBrands optional while issue Dismantler VC ([ba45aee](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/ba45aeeea26c9cafcb56847a7864b47a89ab0e84) by Nitin Vavdiya). -- refactor Taskfile ([b4f9f54](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/b4f9f54b14f0b5c8919626cd952348094c79160e) by Peter Motzko). -- variable name change and minor refactor ([f1f6a56](https://github.com/catenax-ng/tx-managed-identity-wallets/commit/f1f6a56928fb8612247356ab45acc73a379404d3) by Nitin Vavdiya). - - -## [managed-identity-wallets-0.7.5](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.7.5) - 2023-02-28 +- update spring-boot to version 3.1.2, updating transitive dependency spring-security-core to 6.1.2 (by Boris Rizov) -[Compare with managed-identity-wallets-0.7.2](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.7.2...managed-identity-wallets-0.7.5) +## [managed-identity-wallet-0.1.0-rc.3](https://github.com/pmoscode/managed-identity-wallet/releases/tag/managed-identity-wallet-0.1.0-rc.3) - 2023-08-28 -## [managed-identity-wallets-0.7.2](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.7.2) - 2023-02-24 +[Compare with managed-identity-wallet-0.1.0-rc.2](https://github.com/pmoscode/managed-identity-wallet/compare/managed-identity-wallet-0.1.0-rc.2...managed-identity-wallet-0.1.0-rc.3) -[Compare with managed-identity-wallets-0.7.1](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.7.1...managed-identity-wallets-0.7.2) - -## [managed-identity-wallets-0.7.1](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.7.1) - 2023-02-23 +### Features -[Compare with managed-identity-wallets-0.7.0](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.7.0...managed-identity-wallets-0.7.1) +- adds gradle task to equip 'jar/META-INF/' with 'DEPENDENCIES', 'SECURITY.md', 'NOTICE.md', 'LICENSE' (by Mathias Knoop). -## [managed-identity-wallets-0.7.0](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.7.0) - 2023-02-13 +### Bug Fixes -[Compare with managed-identity-wallets-0.6.9](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.6.9...managed-identity-wallets-0.7.0) +- tests fail randomly because of KeyGenerator (by Boris Rizov). -## [managed-identity-wallets-0.6.9](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.6.9) - 2023-02-09 +## [managed-identity-wallet-0.1.0-rc.2](https://github.com/pmoscode/managed-identity-wallet/releases/tag/managed-identity-wallet-0.1.0-rc.2) - 2023-08-25 -[Compare with managed-identity-wallets-0.6.8](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.6.8...managed-identity-wallets-0.6.9) +[Compare with managed-identity-wallet-1.1.0](https://github.com/pmoscode/managed-identity-wallet/compare/managed-identity-wallet-1.1.0...managed-identity-wallet-0.1.0-rc.2) -## [managed-identity-wallets-0.6.8](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.6.8) - 2023-02-06 +### Bug Fixes -[Compare with managed-identity-wallets-0.6.7](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.6.7...managed-identity-wallets-0.6.8) +- remove out-of-date deployment workflow (by Sebastian Bezold). -## [managed-identity-wallets-0.6.7](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.6.7) - 2023-02-02 +## [managed-identity-wallet-1.1.0](https://github.com/pmoscode/managed-identity-wallet/releases/tag/managed-identity-wallet-1.1.0) - 2023-08-23 -[Compare with managed-identity-wallets-0.6.6](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.6.6...managed-identity-wallets-0.6.7) +[Compare with first commit](https://github.com/pmoscode/managed-identity-wallet/compare/060340e0f43f6bd2616afc1d3589c12bb1a5ffe6...managed-identity-wallet-1.1.0) -## [managed-identity-wallets-0.6.6](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.6.6) - 2023-02-02 +### Features -[Compare with managed-identity-wallets-0.6.3](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.6.3...managed-identity-wallets-0.6.6) +- did document resolver component changes reverted (by Nitin Vavdiya). +- add docker hub release workflow (by Peter Motzko). +- add trigger on push (by Peter Motzko). +- adds license file 'CC-BY-4.0.tyt' in the corresponding directory 'LICENSES'. (by Mathias Knoop). +- ssi-lib version set to 15 (by Nitin Vavdiya). +- removed endpoint from config file (by Ronak Thacker). +- CGD-444: sql migration added (by Nitin Vavdiya). +- CGD-444-add-random-key-reference-to-did (by Nitin Vavdiya). +- validate issuer bpn while creating new wallet (by Ronak Thacker). +- add --wait to helm install (by Peter Motzko). +- add external chart repos (by Peter Motzko). +- update Chart.lock (by Peter Motzko). +- separate linting and testing and build temporary image to deploy on cluster (by Peter Motzko). +- update deprecated code (by Peter Motzko). +- enable manual trigger (by Peter Motzko). +- encryption key is now always stored in secret (by Dominik Pinsel). +- remove anchors from values.yaml (by Dominik Pinsel). +- generate authority wallet DID out of BPN and host (by Dominik Pinsel). +- set default log level (by Dominik Pinsel). +- set default database encryption key to random value (by Dominik Pinsel). +- set vc expiry date default to end of year (by Dominik Pinsel). +- make chart standalone runnable (by Dominik Pinsel). +- CGD-204: changes related to did document resolver in ssi-lib (by Nitin Vavdiya). +- add healthcheck for use with docker, compose or swarm (by Peter Motzko). +- add documentation for env / secret variables (by Peter Motzko). +- adds overview of roles associated with available endpoints (by Mathias Knoop). +- add documentation for new content and adjust the old one (by Peter Motzko). +- add additional unittests (by Peter Motzko). +- add internal / external postgresql switch (by Peter Motzko). +- adds overview of the required roles per endpoint (by Mathias Knoop). +- add task for generating CHANGELOG.md file (by Peter Motzko). +- add GH Action for DAST scanning (by Peter Motzko). +- update Helm chart Readme and corresponding Readme-template (by Peter Motzko). +- update Helm chart description (by Peter Motzko). +- add helm-docs documentation (by Peter Motzko). +- remove predefined annotation for ingress (by Peter Motzko). +- add one more folder depth to helm unittest in Taskfile (by Peter Motzko). +- add helm values for local deployment (by Peter Motzko). +- add simple backup of database to a PV (by Peter Motzko). +- updated swagger doc (by Ronak Thacker). +- updated swagger doc response sample and env file (by Ronak Thacker). +- add tests for env and secrets in values (by Peter Motzko). +- swagger doc request example updated (by Ronak Thacker). +- test case added for VC expiry check while VP validate as JWT (by Ronak Thacker). +- added end user documentation (by Ronak Thacker). +- added administrator documentation (by Ronak Thacker). +- adjust trivy GH Action (by Peter Motzko). +- remove manual trigger from veracode.yaml (by Peter Motzko). +- update KICS.yaml to fit current application (by Peter Motzko). +- update README.md by using current helm-docs template (by Peter Motzko). +- add Helm chart Readme template for helm-docs (by Peter Motzko). +- update chart description and add homepage link and keywords (by Peter Motzko). +- check expiry of VC while VP validate support added and test cases updated (by Ronak Thacker). +- updated context url of did document and test case (by Ronak Thacker). +- Extend Mac user information (by Peter Motzko). +- CGD-347: manage log level at runtime (by Nitin Vavdiya). +- Uncomment KC_HOSTNAME in env.docker.dist and env.local.dist (is required, not optional) (by Peter Motzko). +- Add DEV_ENVIRONMENT variable to env.docker.dist and env.local.dist (by Peter Motzko). +- CGD-368: Check expiry date of VC during validation (by Nitin Vavdiya). +- replace check for "docker compose" plugin (by Peter Motzko). +- remove docker compose selection -> fixed to new V2 version (by Peter Motzko). +- mark important content in README.md (by Peter Motzko). +- document COMPOSE_COMMAND env (by Peter Motzko). +- use COMPOSE_COMMAND env from env.* to execute the available docker compose binary (by Peter Motzko). +- add COMPOSE_COMMAND to env.*.dist to configure the available docker compose binary (by Peter Motzko). +- run Helm unittests (by Peter Motzko). +- suppress task header in output (by Peter Motzko). +- add missing tasks and rename working dir (by Peter Motzko). +- show install link provided as parameter (by Peter Motzko). +- add default labels to secret (by Peter Motzko). +- add tests for dev stage and put tests in subfolder for each stage (by Peter Motzko). +- put Helm chart unittests in subfolder for each stage (by Peter Motzko). +- update readme (by Peter Motzko). +- add tasks for test-report and coverage (by Peter Motzko). +- add task to check, if helm-docs is installed (by Peter Motzko). +- add task to rebuild Helm chart readme (by Peter Motzko). +- Update readme (by Peter Motzko). +- swagger doc updated as per new role in api and Retrieve wallet by identifier test cases updated (by Ronak Thacker). +- make Taskfile app namespace OS specific (by Peter Motzko). +- add environment type switch (by Peter Motzko). +- update .gitignore (by Peter Motzko). +- moved to dev-assets folder (by Peter Motzko). +- add realm for local dev config (by Peter Motzko). +- env-files move to dev folder (by Peter Motzko). +- script to obtain an authority token from keycloak (by Peter Motzko). +- rename tasks and point to new dev-env (by Peter Motzko). +- add new dev environment (by Peter Motzko). +- split tasks to own namespaces (by Peter Motzko). +- increment appVersion to 3.3.3.b420443 as an attempt (by Mathias Knoop). +- increment app version to '1.0.0-rc1' and chart version to '4.0.1-rc1' (by Mathias Knoop). +- json web signature and key generation from lib (by Nitin Vavdiya). +- fallthrough in check-prerequisites task (by Peter Motzko). +- authenticate using client_id and claint_secret added in swagger UI (by Nitin Vavdiya). +- add Helm unittests for default values (by Peter Motzko). +- remove "dash" from template (by Peter Motzko). +- add eclipse copyright header everywhere (by Peter Motzko). +- adds direct '.java-version' from program 'jenv' to '.gitignore' to avoid that is version-controled. (by Mathias Knoop). +- add more cleanup commands (by Peter Motzko). +- include checks and new "local.env" + add check-prerequisites task (by Peter Motzko). +- rename tasks in Taskfile (by Peter Motzko). +- add "local.dev" to .gitignore (by Peter Motzko). +- adds (initially) a Postman-collection for testing MIW on stage 'dev'. (by Mathias Knoop). +- add securityContext (primary same user/group id as docker image) (by Peter Motzko). +- use user/group id > 10000 and rename "user" to "miw" (by Peter Motzko). +- back to default values formatting (with accurate values) (by Peter Motzko). +- summary VC context URL updated (by Nitin Vavdiya). +- json web signature 2020 support added for did document, vc and vp (by Ronak Thacker). +- add and adjust authority user's BPN and DID:WEB (by Mathias Knoop). +- json web signature 2020 support WIP (by Ronak Thacker). +- set health check actuator resp. liveliness probe endpoint to '/actuator/health/liveness' and readiness probe endpoint to '/actuator/health/readiness' both on port '8090' (by Mathias Knoop). +- updated vc type (by Ronak Thacker). +- adjust task 'stopDockerApp' to stop the actual container 'local_miw_app' (by Mathias Knoop). +- Holder identifier added in framework VC subject (by Nitin Vavdiya). +- framework VC name changes and test case changes (by Nitin Vavdiya). +- adding generated 'README.md' to accompany the charts for 'Managed-Identity-Wallet' as required. (by Mathias Knoop). +- add app setup for the stages 'dev' and 'int' in order to deploy the (new) 'Managed-Identity-Wallet' on these stages. (by Mathias Knoop). +- validation added in issue VC api for summary VC (by Nitin Vavdiya). +- change in create VP API, type and name removed from summary VC (by Nitin Vavdiya). +- revert renaming and postpone that for later. (by Mathias Knoop). +- add '/dev.env' to '.gitignore' to prevent it form being comitted/ pushed unwanted. (by Mathias Knoop). +- rename tasks from beginning with 'run' to beginning with 'start' to achieve a uniform 'start...' and 'stop...' appearance of task names. (by Mathias Knoop). +- updated create wallet api (by Ronak Thacker). +- updated store credential api (by Ronak Thacker). +- summery VC flow after holder delete summary VC (by Nitin Vavdiya). +- Paggination support added in list VC API (by Nitin Vavdiya). +- summary credential test cases added (by Ronak Thacker). +- Summary VC flow, code changes as per input given in code review, test case changes as per summary VC flow (by Nitin Vavdiya). +- updated issuer credential api and test cases as per new api spec (by Ronak Thacker). +- Issuer get credential API testcases, test case modification for self_issued and is_stored (by Nitin Vavdiya). +- Testcase modification as per new API specification (by Nitin Vavdiya). +- delete credential api and test cases added (by Ronak Thacker). +- API changes as per new API specification(separate apis for holder and issuer wallet) (by Nitin Vavdiya). +- validate VP and validate VC test cases updated with mock (by Nitin Vavdiya). +- validate VP as jwt API, enforce https while did resolve in config, changes according to new lib (by Nitin Vavdiya). +- update lib method to resolved vc/vp validate (by Ronak Thacker). +- updated credential get api (by Ronak Thacker). +- token support added in swagger (by Nitin Vavdiya). +- test case of validate vc wip (by Ronak Thacker). +- credential get api type filter support added (by Ronak Thacker). +- shorten enc_key to 32 bytes (by Peter Motzko). +- extend application name (by Peter Motzko). +- add authority_wallet_did env (by Peter Motzko). +- WIP: add more stuff to Taskfile (by Peter Motzko). +- set ingress host type to "ImplementationSpecific" (by Peter Motzko). +- add classname annotation to ingress (by Peter Motzko). +- add init script to setup initial database (by Peter Motzko). +- read me file chamges, sample reponse added (by Nitin Vavdiya). +- set default values for dev environment in ArgoCD (by Peter Motzko). +- set default values for image tag and ingress className (by Peter Motzko). +- comment out default values (by Peter Motzko). +- comment out unused config (by Peter Motzko). +- add full release name to ingress secret name (by Peter Motzko). +- readm changes and gradle fix (by Nitin Vavdiya). +- update ditignore and dev.env added (by Nitin Vavdiya). +- readme added, validate VP wip (by Nitin Vavdiya). +- issue credential api test case added (by Ronak Thacker). +- add values for dev stage (WIP) (by Peter Motzko). +- remove unused secrets (by Peter Motzko). +- add container env (plain and from secret) (by Peter Motzko). +- add container env and DB secrets (by Peter Motzko). +- adjust to current setup (by Peter Motzko). +- rename miw service GH repo (by Peter Motzko). +- adjust Dockerfile to current setup (by Peter Motzko). +- change default name of miw-app artifact (by Peter Motzko). +- add local miw-app image to docker-compose (by Peter Motzko). +- credentials validation api wip (by Ronak Thacker). +- reamdme added with env verables, vp as jwt, credentials id added in table, search with credential id (by Nitin Vavdiya). +- caller BPN security added and test case modification for the same (by Nitin Vavdiya). +- remove acapy vars from .env.example (by Peter Motzko). +- change active Helm chart (by Peter Motzko). +- remove old acapy actions (by Peter Motzko). +- switch to new Helm chart "charts/managed-identity-wallet" (by Peter Motzko). +- add new helm chart "managed-identity-wallet" (WIP) (by Peter Motzko). +- added test cases for getCredentials api (by Ronak Thacker). +- code changes to create DidDocument (by Nitin Vavdiya). +- authority wallet did in env (by Nitin Vavdiya). +- presenation API WIP, code refactor (by Nitin Vavdiya). +- Create BPN VC while creating wallet, test case modification, filter support added in get all wallet and get all credential API (by Nitin Vavdiya). +- bpnCredential added in wallet creation (by Ronak Thacker). +- Framwork VC API, Dismantler VC API, Testcase modificatoin, VC context URL in config, VC expiry in config (by Nitin Vavdiya). +- test cases added for issueMembershipCredential api (by Ronak Thacker). +- membership credentials api added (by Ronak Thacker). +- ssi lib v4 added, autority wallet config added (by Nitin Vavdiya). +- Store credential API with test case, Validate test case (by Nitin Vavdiya). +- credential list api added (by Ronak Thacker). +- Store credntial API, testcase mofitication based on DidDocument Java POJO (by Nitin Vavdiya). +- ssi:lib version updated (by Ronak Thacker). +- Spring security added with keycloak, Swagger added, Testcases modification based on spring security (by Nitin Vavdiya). +- Resolve the DID document for a given DID or BPN api added (by Ronak Thacker). +- disable authorization check, because of potential bug (to be investigated) (by Peter Motzko). +- add console logger to db init transaction (commented out, but useful for debugging) (by Peter Motzko). +- adjust naming to snake_case and add suffixes (by Peter Motzko). +- Bump Keycloak version of docker-compose to 21.1 and update env file (by Peter Motzko). +- Add first helm unittest draft for Deployment resource (by Peter Motzko). +- Introduce Taskfile (by Peter Motzko). +- Replace old custom Dockerfile with official postgres image (by Peter Motzko). +- Remove obsolete stuff (by Peter Motzko). -## [managed-identity-wallets-0.6.3](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.6.3) - 2023-01-26 +### Bug Fixes -[Compare with managed-identity-wallets-0.6.0](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/managed-identity-wallets-0.6.0...managed-identity-wallets-0.6.3) +- update README.md and remove duplicate variable (by Peter Motzko). +- adjust test (by Peter Motzko). +- use user/group 11111 instead of 1001/0 (by Peter Motzko). +- typo (by Peter Motzko). +- skip app tests (by Peter Motzko). +- add GITHUB_TOKEN variable before app build (by Peter Motzko). +- install java 17 (by Peter Motzko). +- build miw app (by Peter Motzko). +- install Taskfile (by Peter Motzko). +- quote python version (by Peter Motzko). +- add missing "quote" function and adjust tests (by Peter Motzko). +- fix suggested issues from PR (by Peter Motzko). +- update image repo (by Peter Motzko). +- remove trailing space (by Peter Motzko). +- add space (typo) (by Peter Motzko). +- remove duplicate env var (by Peter Motzko). +- removed recret from code (by Ronak Thacker). +- add empty object (by Peter Motzko). +- validation erorr message not shown in reponse, docs: CGD-391: sample repomse added in wallet APIs (by Nitin Vavdiya). +- Veracode finding for CVE-2023-24998 (by Nitin Vavdiya). +- test cases (by Nitin Vavdiya). +- veracode log issue (by Nitin Vavdiya). +- veracode log realted issue fix (by Nitin Vavdiya). +- veracode issues: Spring boot and other lib version update (by Nitin Vavdiya). +- fix test values for helm test in GH Actions (by Peter Motzko). +- adjust gradle build command and remove unused code (by Peter Motzko). +- missing add repo step from chart-releaser workflow (by Gábor Almádi). +- conflict resolved (by Nitin Vavdiya). +- replace docker_compose env var with real command (by Peter Motzko). +- split into two lines (by Peter Motzko). +- add missing "sudo" (by Peter Motzko). +- move information about docker for macos upwards (by Peter Motzko). +- add empty line at the bottom for Helm lint testing (by Peter Motzko). +- use jdk 17 instead of jdk 18 and remove the EXPOSE statement (by Peter Motzko). +- add install links to check-tools.yaml (by Peter Motzko). +- move APPLICATION_PORT env var outside if condition (by Peter Motzko). +- CGD-288 and code refactor (by Nitin Vavdiya). +- use "localhost" instead docker container name (by Peter Motzko). +- attempt to deploy recent code (by Mathias Knoop). +- adjust git history for Peter Motzko, peter.motzko@volkswagen.de (by Mathias Knoop). +- remove quotes (by Peter Motzko). +- quote numbers (by Peter Motzko). +- adjust resources and limits for 'managed-identity-wallets-new' in order to attain and retain app-health-status. (by Mathias Knoop). +- adjust values to enable sync again. (by Mathias Knoop). +- adjust values for timeouts and resources for 'liveness' and 'readiness' actuators to mitigate restarts to to cpu-throttling and respective memory peaks which would possibly yield a restart, too. (by Mathias Knoop). +- CGD-238: BPN from access_token ignore case (by Nitin Vavdiya). +- changes task name to 'build' from 'buildJar' and adjusts all occurrences in file 'Taskfile'. (by Mathias Knoop). +- remove token (already revoked) (by Peter Motzko). +- remove double className (by Peter Motzko). +- remove last slash (by Peter Motzko). +- set ingress host path to "/" (by Peter Motzko). +- bind APPLICATION_PORT to 8080 (by Peter Motzko). +- add random generated encryption_key (by Peter Motzko). +- typo in db_host (by Peter Motzko). +- wrong data type in secret (by Peter Motzko). +- add correct service for postgresql db (by Peter Motzko). +- use lowercase letters for repository name (by Peter Motzko). +- default port for postgresDB (by Peter Motzko). -## [managed-identity-wallets-0.6.0](https://github.com/catenax-ng/tx-managed-identity-wallets/releases/tag/managed-identity-wallets-0.6.0) - 2023-01-17 +### Code Refactoring -[Compare with first commit](https://github.com/catenax-ng/tx-managed-identity-wallets/compare/060340e0f43f6bd2616afc1d3589c12bb1a5ffe6...managed-identity-wallets-0.6.0) +- adjust values according to latest changes (by Peter Motzko). +- reorder postgres config and envs in deployment (by Peter Motzko). +- CGD-401 and CGD-399: logs added, xss protection added, removed secret from config file (by Nitin Vavdiya). +- rename tests suites (by Peter Motzko). +- move test template definition out to root (by Peter Motzko). +- remove manual trigger (by Peter Motzko). +- remove old MIW Helm chart (by Peter Motzko). +- use custom values.yaml (instead of values-dev.yaml) for testing and add more tests (by Peter Motzko). +- remove env.environment due to set env order of Taskfile (by Peter Motzko). +- reorder variables (by Peter Motzko). +- add missing task to linux tasks (by Peter Motzko). +- spilt tasks after os in folders (by Peter Motzko). +- move get_token.sh to scripts folder (by Peter Motzko). +- rename paths (by Peter Motzko). +- auth method removed, company name removed from sample data (by Nitin Vavdiya). +- allowedVehicleBrands optional while issue Dismantler VC (by Nitin Vavdiya). +- refactor Taskfile (by Peter Motzko). +- variable name change and minor refactor (by Nitin Vavdiya). diff --git a/CHANGELOG.md.jinja b/CHANGELOG.md.jinja new file mode 100644 index 000000000..980942b17 --- /dev/null +++ b/CHANGELOG.md.jinja @@ -0,0 +1,98 @@ + +{# +# /******************************************************************************** +# * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation +# * +# * See the NOTICE file(s) distributed with this work for additional +# * information regarding copyright ownership. +# * +# * This program and the accompanying materials are made available under the +# * terms of the Apache License, Version 2.0 which is available at +# * https://www.apache.org/licenses/LICENSE-2.0. +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# * License for the specific language governing permissions and limitations +# * under the License. +# * +# * SPDX-License-Identifier: Apache-2.0 +# ********************************************************************************/ +#} + +{#- macro: render_commit -#} +{%- macro render_commit(commit) -%} +- {{ commit.convention.subject|default(commit.subject) }} (by {{ commit.author_name }}). +{%- if commit.text_refs.issues_not_in_subject %} Related issues/PRs: {% for issue in commit.text_refs.issues_not_in_subject -%} +{% if issue.url %}[{{ issue.ref }}]({{ issue.url }}){% else %}{{ issue.ref }}{% endif %}{% if not loop.last %}, {% endif -%} +{%- endfor -%}{%- endif -%} +{%- for trailer_name, trailer_value in commit.trailers.items() -%} +{%- if trailer_value|is_url %} [{{ trailer_name }}]({{ trailer_value }}) +{%- else %} {{ trailer_name }}: {{ trailer_value }}{% endif %} +{%- if not loop.last %},{% endif %} +{%- endfor -%} +{%- endmacro -%} + +{#- macro: render_section -#} +{%- macro render_section(section) -%} +### {{ section.type or "Misc" }} + +{% for commit in section.commits|sort(attribute='author_date',reverse=true)|unique(attribute='subject') -%} +{{ render_commit(commit) }} +{% endfor %} +{%- endmacro -%} + +{#- macro: render_version -#} +{%- macro render_version(version) -%} +{%- if version.tag or version.planned_tag -%} +## {{ version.tag or version.planned_tag }}{% if version.date %} - {{ version.date }}{% endif %} + +{%- else -%} +## Unreleased + +{%- endif %} +{% for type in changelog.sections %} +{%- if type in version.sections_dict %} +{%- with section = version.sections_dict[type] %} +{{ render_section(section) }} +{%- endwith %} +{%- endif %} +{%- endfor %} +{%- if not (version.tag or version.planned_tag) %} +{% endif %} +{% endmacro -%} + +{#- template -#} +{%- if not in_place -%} + + +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +{% endif %} +{% for version in changelog.versions_list -%} +{{ render_version(version) }} +{%- endfor -%} diff --git a/DEPENDENCIES b/DEPENDENCIES index 4f1080cc3..835657722 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -1,9 +1,7 @@ maven/mavencentral/ch.qos.logback/logback-classic/1.4.8, EPL-1.0 OR LGPL-2.1-only, approved, #3435 maven/mavencentral/ch.qos.logback/logback-core/1.4.8, EPL-1.0 OR LGPL-2.1-only, approved, #3373 -maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.apicatalog/titanium-json-ld/1.1.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.danubetech/key-formats-java/1.2.0, Apache-2.0, approved, #3467 -maven/mavencentral/com.danubetech/verifiable-credentials-java/1.0.0, Apache-2.0, approved, #3465 +maven/mavencentral/com.apicatalog/titanium-json-ld-jre8/1.3.1, Apache-2.0, approved, #10237 +maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.2, Apache-2.0, approved, #8912 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.10.3, Apache-2.0, approved, CQ21280 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.12.6, Apache-2.0, approved, CQ23844 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.14.2, Apache-2.0, approved, #5303 @@ -11,10 +9,10 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.2, Apache maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.12.6, Apache-2.0, approved, CQ23845 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.2, MIT AND Apache-2.0, approved, #7932 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.11.0, Apache-2.0, approved, CQ23093 -maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.11.1, Apache-2.0, approved, CQ23093 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.12.6.1, Apache-2.0, approved, CQ23725 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.2, Apache-2.0, approved, #4105 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.2, Apache-2.0, approved, #7934 +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.15.2, Apache-2.0, approved, #9237 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.14.2, Apache-2.0, approved, #5933 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.2, Apache-2.0, approved, #8802 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.15.2, Apache-2.0, approved, #8808 @@ -26,18 +24,18 @@ maven/mavencentral/com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.15. maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jaxb-annotations/2.15.2, Apache-2.0, approved, #9100 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-parameter-names/2.15.2, Apache-2.0, approved, #8803 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.15.2, Apache-2.0, approved, #7929 +maven/mavencentral/com.fasterxml.woodstox/woodstox-core/6.5.1, Apache-2.0, approved, #7950 maven/mavencentral/com.fasterxml/classmate/1.5.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.github.ben-manes.caffeine/caffeine/3.1.6, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.github.curious-odd-man/rgxgen/1.4, Apache-2.0, approved, clearlydefined maven/mavencentral/com.github.dasniko/testcontainers-keycloak/2.5.0, Apache-2.0, approved, #9175 -maven/mavencentral/com.github.docker-java/docker-java-api/3.3.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.github.docker-java/docker-java-api/3.3.0, Apache-2.0, approved, #10346 maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.3.0, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #7946 maven/mavencentral/com.github.docker-java/docker-java-transport/3.3.0, Apache-2.0, approved, #7942 maven/mavencentral/com.github.java-json-tools/btf/1.3, Apache-2.0 OR LGPL-3.0-or-later, approved, #2721 -maven/mavencentral/com.github.java-json-tools/jackson-coreutils/2.0, , approved, #2719 +maven/mavencentral/com.github.java-json-tools/jackson-coreutils/2.0, Apache-2.0 OR LGPL-3.0-or-later, approved, #2719 maven/mavencentral/com.github.java-json-tools/json-patch/1.13, Apache-2.0 OR LGPL-3.0-or-later, approved, CQ23929 -maven/mavencentral/com.github.java-json-tools/msg-simple/1.2, , approved, #2720 -maven/mavencentral/com.github.jnr/jffi/1.2.9, Apache-2.0, approved, CQ9095 -maven/mavencentral/com.github.jnr/jnr-ffi/2.0.5, Apache-2.0, approved, CQ12035 -maven/mavencentral/com.github.jnr/jnr-x86asm/1.0.2, MIT, approved, CQ9094 +maven/mavencentral/com.github.java-json-tools/msg-simple/1.2, Apache-2.0 OR LGPL-3.0-or-later, approved, #2720 maven/mavencentral/com.github.multiformats/java-multibase/v1.1.0, MIT AND BSD-3-Clause AND EPL-1.0 AND Apache-2.0, approved, #4095 maven/mavencentral/com.github.stephenc.jcip/jcip-annotations/1.0-1, Apache-2.0, approved, CQ21949 maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, Apache-2.0, approved, #20 @@ -46,22 +44,19 @@ maven/mavencentral/com.google.crypto.tink/tink/1.9.0, Apache-2.0, approved, clea maven/mavencentral/com.google.errorprone/error_prone_annotations/2.18.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.errorprone/error_prone_annotations/2.5.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.guava/failureaccess/1.0.1, Apache-2.0, approved, CQ22654 -maven/mavencentral/com.google.guava/guava/28.2-android, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ22437 maven/mavencentral/com.google.guava/guava/29.0-android, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.guava/guava/30.1.1-android, Apache-2.0 AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ23244 maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 maven/mavencentral/com.google.http-client/google-http-client/1.43.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.j2objc/j2objc-annotations/1.3, Apache-2.0, approved, CQ21195 maven/mavencentral/com.google.protobuf/protobuf-java/3.19.6, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/com.google.protobuf/protobuf-java/3.6.1, BSD-3-Clause, approved, clearlydefined maven/mavencentral/com.h2database/h2/2.2.220, (EPL-1.0 OR MPL-2.0) AND (LGPL-3.0-or-later OR EPL-1.0 OR MPL-2.0), approved, #9322 maven/mavencentral/com.ibm.async/asyncutil/0.1.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.jayway.jsonpath/json-path/2.8.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.31, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.9, Apache-2.0, approved, clearlydefined maven/mavencentral/com.opencsv/opencsv/5.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.smartsensesolutions/commons-dao/0.0.5, Apache-2.0, approved, #9176 -maven/mavencentral/com.squareup.okhttp3/okhttp/3.12.8, Apache-2.0, approved, CQ19549 +maven/mavencentral/com.squareup.okhttp3/okhttp/4.10.0, Apache-2.0 AND MPL-2.0, approved, #3057 maven/mavencentral/com.squareup.okio/okio-jvm/3.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.sun.activation/jakarta.activation/1.2.1, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf maven/mavencentral/com.sun.istack/istack-commons-runtime/4.1.2, BSD-3-Clause, approved, #2590 @@ -69,7 +64,6 @@ maven/mavencentral/com.sun.mail/jakarta.mail/1.6.5, EPL-2.0 OR GPL-2.0-only WITH maven/mavencentral/com.vaadin.external.google/android-json/0.0.20131108.vaadin1, Apache-2.0, approved, CQ21310 maven/mavencentral/com.zaxxer/HikariCP/5.0.1, Apache-2.0, approved, clearlydefined maven/mavencentral/commons-codec/commons-codec/1.11, Apache-2.0 AND BSD-3-Clause, approved, CQ15971 -maven/mavencentral/commons-codec/commons-codec/1.14, Apache-2.0, approved, clearlydefined maven/mavencentral/commons-codec/commons-codec/1.15, Apache-2.0 AND BSD-3-Clause AND LicenseRef-Public-Domain, approved, CQ22641 maven/mavencentral/commons-fileupload/commons-fileupload/1.4, Apache-2.0, approved, clearlydefined maven/mavencentral/commons-fileupload/commons-fileupload/1.5, Apache-2.0, approved, #7109 @@ -77,22 +71,19 @@ maven/mavencentral/commons-io/commons-io/2.11.0, Apache-2.0, approved, CQ23745 maven/mavencentral/commons-io/commons-io/2.4, Apache-1.1, approved, CQ9218 maven/mavencentral/commons-io/commons-io/2.9.0, Apache-2.0, approved, clearlydefined maven/mavencentral/commons-logging/commons-logging/1.2, Apache-2.0, approved, CQ10162 -maven/mavencentral/decentralized-identity/jsonld-common-java/1.0.0, Apache-2.0, approved, #3108 -maven/mavencentral/info.weboftrust/ld-signatures-java/1.0.0, Apache-2.0, approved, #3463 -maven/mavencentral/io.github.erdtman/java-json-canonicalization/1.1, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.openfeign.form/feign-form-spring/3.8.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.openfeign.form/feign-form/3.8.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.openfeign/feign-core/12.3, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.openfeign/feign-slf4j/12.3, Apache-2.0, approved, clearlydefined maven/mavencentral/io.grpc/grpc-context/1.27.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.micrometer/micrometer-commons/1.11.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9243 -maven/mavencentral/io.micrometer/micrometer-core/1.11.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9238 -maven/mavencentral/io.micrometer/micrometer-observation/1.10.8, Apache-2.0, approved, #7331 -maven/mavencentral/io.micrometer/micrometer-observation/1.11.1, Apache-2.0, approved, #9242 +maven/mavencentral/io.micrometer/micrometer-commons/1.11.2, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9243 +maven/mavencentral/io.micrometer/micrometer-core/1.11.2, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9238 +maven/mavencentral/io.micrometer/micrometer-observation/1.10.9, Apache-2.0, approved, #7331 +maven/mavencentral/io.micrometer/micrometer-observation/1.11.2, Apache-2.0, approved, #9242 maven/mavencentral/io.opencensus/opencensus-api/0.31.1, Apache-2.0, approved, clearlydefined maven/mavencentral/io.opencensus/opencensus-contrib-http-util/0.31.1, Apache-2.0, approved, clearlydefined maven/mavencentral/io.quarkus/quarkus-junit4-mock/2.13.7.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.setl/rdf-urdna/1.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/io.setl/rdf-urdna/1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/io.smallrye.common/smallrye-common-annotation/1.6.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.smallrye.common/smallrye-common-classloader/1.6.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.smallrye.common/smallrye-common-constraint/1.6.0, Apache-2.0, approved, clearlydefined @@ -112,6 +103,7 @@ maven/mavencentral/jakarta.activation/jakarta.activation-api/2.1.2, EPL-2.0 OR B maven/mavencentral/jakarta.annotation/jakarta.annotation-api/2.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.ca maven/mavencentral/jakarta.annotation/jakarta.annotation-api/2.1.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.ca maven/mavencentral/jakarta.inject/jakarta.inject-api/2.0.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/jakarta.json/jakarta.json-api/2.1.2, EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, #7907 maven/mavencentral/jakarta.persistence/jakarta.persistence-api/3.1.0, EPL-2.0 OR BSD-3-Clause AND (EPL-2.0 OR BSD-3-Clause AND BSD-3-Clause), approved, #7696 maven/mavencentral/jakarta.transaction/jakarta.transaction-api/2.0.1, EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, #7697 maven/mavencentral/jakarta.validation/jakarta.validation-api/2.0.2, Apache-2.0, approved, clearlydefined @@ -128,11 +120,9 @@ maven/mavencentral/net.bytebuddy/byte-buddy/1.12.18, Apache-2.0 AND BSD-3-Clause maven/mavencentral/net.bytebuddy/byte-buddy/1.12.21, Apache-2.0 AND BSD-3-Clause, approved, #1811 maven/mavencentral/net.i2p.crypto/eddsa/0.3.0, CC0-1.0, approved, CQ22537 maven/mavencentral/net.java.dev.jna/jna/5.12.1, Apache-2.0 OR LGPL-2.1-or-later, approved, #3217 -maven/mavencentral/net.jcip/jcip-annotations/1.0, CC-BY-2.5, approved, clearlydefined maven/mavencentral/net.minidev/accessors-smart/2.4.11, Apache-2.0, approved, #7515 maven/mavencentral/net.minidev/json-smart/2.4.10, Apache-2.0, approved, #3288 maven/mavencentral/net.minidev/json-smart/2.4.11, Apache-2.0, approved, #3288 -maven/mavencentral/org.abstractj.kalium/kalium/0.8.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.antlr/antlr4-runtime/4.10.1, BSD-3-Clause AND LicenseRef-Public-domain AND MIT AND LicenseRef-Unicode-TOU, approved, #7065 maven/mavencentral/org.apache.commons/commons-collections4/4.4, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.commons/commons-compress/1.23.0, Apache-2.0 AND BSD-3-Clause, approved, #7506 @@ -146,37 +136,41 @@ maven/mavencentral/org.apache.james/apache-mime4j-dom/0.8.3, Apache-2.0, approve maven/mavencentral/org.apache.james/apache-mime4j-storage/0.8.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.logging.log4j/log4j-api/2.20.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.logging.log4j/log4j-to-slf4j/2.20.0, Apache-2.0, approved, #8799 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.10, Apache-2.0 AND (EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND (CDDL-1.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND W3C AND CC0-1.0, approved, #5949 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.10, Apache-2.0, approved, #6997 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.10, Apache-2.0, approved, #7920 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.11, Apache-2.0 AND (EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND (CDDL-1.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND W3C AND CC0-1.0, approved, #5949 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.11, Apache-2.0, approved, #6997 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.11, Apache-2.0, approved, #7920 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.aspectj/aspectjweaver/1.9.19, EPL-1.0, approved, tools.aspectj maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 -maven/mavencentral/org.bitcoinj/bitcoinj-core/0.15.10, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk15on/1.69, MIT, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcprov-jdk15on/1.69, MIT, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcprov-jdk15on/1.70, MIT, approved, #1712 -maven/mavencentral/org.bouncycastle/bcprov-jdk15to18/1.68, MIT, approved, #3464 maven/mavencentral/org.bouncycastle/bcutil-jdk15on/1.69, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-compat-qual/2.5.5, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined +maven/mavencentral/org.checkerframework/checker-qual/3.33.0, MIT, approved, clearlydefined +maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.1, BSD-2-Clause, approved, #2670 +maven/mavencentral/org.eclipse.angus/angus-activation/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.angus +maven/mavencentral/org.eclipse.microprofile.config/microprofile-config-api/2.0, Apache-2.0, approved, technology.microprofile +maven/mavencentral/org.eclipse.parsson/parsson/1.1.3, EPL-2.0, approved, ee4j.parsson +maven/mavencentral/org.eclipse.tractusx.ssi/cx-ssi-lib/0.0.16, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.glassfish.jaxb/jaxb-core/4.0.3, BSD-3-Clause, approved, ee4j.jaxb maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/2.3.3-b02, BSD-3-Clause, approved, ee4j.jaxb maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.2, BSD-3-Clause, approved, ee4j.jaxb maven/mavencentral/org.glassfish.jaxb/txw2/4.0.3, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish/jakarta.json/2.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/org.hamcrest/hamcrest-core/1.3, BSD-2-Clause, approved, CQ11429 maven/mavencentral/org.hamcrest/hamcrest/2.2, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.hdrhistogram/HdrHistogram/2.1.12, BSD-2-Clause OR LicenseRef-Public-Domain, approved, CQ13192 maven/mavencentral/org.hibernate.common/hibernate-commons-annotations/6.0.6.Final, LGPL-2.1-only, approved, #6962 -maven/mavencentral/org.hibernate.orm/hibernate-core/6.2.5.Final, LGPL-2.1-only AND Apache-2.0 AND MIT AND CC-PDDC AND (EPL-2.0 OR BSD-3-Clause), approved, #9121 -maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.0.Final, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.hibernate.orm/hibernate-core/6.2.6.Final, LGPL-2.1-only AND Apache-2.0 AND MIT AND CC-PDDC AND (EPL-2.0 OR BSD-3-Clause), approved, #9121 +maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.1.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jacoco/org.jacoco.agent/0.8.9, EPL-2.0, approved, CQ23285 maven/mavencentral/org.jacoco/org.jacoco.ant/0.8.9, EPL-2.0, approved, #1068 maven/mavencentral/org.jacoco/org.jacoco.core/0.8.9, EPL-2.0, approved, CQ23283 maven/mavencentral/org.jacoco/org.jacoco.report/0.8.9, EPL-2.0 AND Apache-2.0, approved, CQ23284 maven/mavencentral/org.jboss.logging/jboss-logging/3.4.1.Final, Apache-2.0, approved, CQ21255 maven/mavencentral/org.jboss.logging/jboss-logging/3.4.2.Final, Apache-2.0, approved, CQ21255 +maven/mavencentral/org.jboss.logging/jboss-logging/3.4.3.Final, Apache-2.0, approved, CQ21255 maven/mavencentral/org.jboss.logging/jboss-logging/3.5.0.Final, Apache-2.0, approved, #9471 maven/mavencentral/org.jboss.resteasy/resteasy-client-api/4.7.7.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jboss.resteasy/resteasy-client/4.7.7.Final, Apache-2.0, approved, clearlydefined @@ -218,13 +212,8 @@ maven/mavencentral/org.mockito/mockito-inline/5.2.0, MIT, approved, clearlydefin maven/mavencentral/org.mockito/mockito-junit-jupiter/5.3.1, MIT, approved, clearlydefined maven/mavencentral/org.objenesis/objenesis/3.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.opentest4j/opentest4j/1.2.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.ow2.asm/asm-analysis/5.0.3, BSD-2-Clause, approved, CQ9714 -maven/mavencentral/org.ow2.asm/asm-commons/5.0.3, BSD-2-Clause, approved, CQ9714 maven/mavencentral/org.ow2.asm/asm-commons/9.5, BSD-3-Clause, approved, #7553 -maven/mavencentral/org.ow2.asm/asm-tree/5.0.3, BSD-2-Clause, approved, CQ9714 maven/mavencentral/org.ow2.asm/asm-tree/9.5, BSD-3-Clause, approved, #7555 -maven/mavencentral/org.ow2.asm/asm-util/5.0.3, BSD-2-Clause, approved, CQ9714 -maven/mavencentral/org.ow2.asm/asm/5.0.3, BSD-2-Clause, approved, CQ9714 maven/mavencentral/org.ow2.asm/asm/9.1, BSD-3-Clause, approved, CQ23029 maven/mavencentral/org.ow2.asm/asm/9.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.ow2.asm/asm/9.5, BSD-3-Clause, approved, #7554 @@ -244,50 +233,50 @@ maven/mavencentral/org.slf4j/slf4j-api/2.0.7, MIT, approved, #5915 maven/mavencentral/org.springdoc/springdoc-openapi-starter-common/2.1.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-api/2.1.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-ui/2.1.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.boot/spring-boot-actuator-autoconfigure/3.1.1, Apache-2.0, approved, #9348 -maven/mavencentral/org.springframework.boot/spring-boot-actuator/3.1.1, Apache-2.0, approved, #9342 +maven/mavencentral/org.springframework.boot/spring-boot-actuator-autoconfigure/3.1.2, Apache-2.0, approved, #9348 +maven/mavencentral/org.springframework.boot/spring-boot-actuator/3.1.2, Apache-2.0, approved, #9342 maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.0.5, Apache-2.0, approved, #6981 maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.0.7, Apache-2.0, approved, #6981 -maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.1.1, Apache-2.0, approved, #9341 +maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.1.2, Apache-2.0, approved, #9341 maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.0.7, Apache-2.0, approved, #6965 -maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.1.1, Apache-2.0, approved, #9338 -maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.1.1, Apache-2.0, approved, #9737 -maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.1.1, Apache-2.0, approved, #9336 -maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.1.1, Apache-2.0, approved, #9343 -maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.1.1, Apache-2.0, approved, #9351 +maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.1.2, Apache-2.0, approved, #9338 +maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.1.2, Apache-2.0, approved, #9737 +maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.1.2, Apache-2.0, approved, #9336 +maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.1.2, Apache-2.0, approved, #9343 +maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.1.2, Apache-2.0, approved, #9351 maven/mavencentral/org.springframework.boot/spring-boot-starter/3.0.7, Apache-2.0, approved, #7330 -maven/mavencentral/org.springframework.boot/spring-boot-starter/3.1.1, Apache-2.0, approved, #9349 -maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.1.1, Apache-2.0, approved, #9339 -maven/mavencentral/org.springframework.boot/spring-boot-test/3.1.1, Apache-2.0, approved, #9346 -maven/mavencentral/org.springframework.boot/spring-boot/3.1.1, Apache-2.0, approved, #9352 +maven/mavencentral/org.springframework.boot/spring-boot-starter/3.1.2, Apache-2.0, approved, #9349 +maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.1.2, Apache-2.0, approved, #9339 +maven/mavencentral/org.springframework.boot/spring-boot-test/3.1.2, Apache-2.0, approved, #9346 +maven/mavencentral/org.springframework.boot/spring-boot/3.1.2, Apache-2.0, approved, #9352 maven/mavencentral/org.springframework.cloud/spring-cloud-commons/4.0.3, Apache-2.0, approved, #7292 maven/mavencentral/org.springframework.cloud/spring-cloud-context/4.0.3, Apache-2.0, approved, #7306 maven/mavencentral/org.springframework.cloud/spring-cloud-openfeign-core/4.0.3, Apache-2.0, approved, #7305 maven/mavencentral/org.springframework.cloud/spring-cloud-starter/4.0.3, Apache-2.0, approved, #7299 -maven/mavencentral/org.springframework.data/spring-data-commons/3.1.1, Apache-2.0, approved, #8805 -maven/mavencentral/org.springframework.data/spring-data-jpa/3.1.1, Apache-2.0, approved, #9120 -maven/mavencentral/org.springframework.security/spring-security-config/6.1.1, Apache-2.0, approved, #9736 -maven/mavencentral/org.springframework.security/spring-security-core/6.1.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.springframework.data/spring-data-commons/3.1.2, Apache-2.0, approved, #8805 +maven/mavencentral/org.springframework.data/spring-data-jpa/3.1.2, Apache-2.0, approved, #9120 +maven/mavencentral/org.springframework.security/spring-security-config/6.1.2, Apache-2.0, approved, #9736 +maven/mavencentral/org.springframework.security/spring-security-core/6.1.2, Apache-2.0, approved, #9801 maven/mavencentral/org.springframework.security/spring-security-crypto/6.0.3, Apache-2.0 AND ISC, approved, #7326 -maven/mavencentral/org.springframework.security/spring-security-crypto/6.1.1, Apache-2.0 AND ISC, approved, #9735 -maven/mavencentral/org.springframework.security/spring-security-oauth2-core/6.1.1, Apache-2.0, approved, #9741 +maven/mavencentral/org.springframework.security/spring-security-crypto/6.1.2, Apache-2.0 AND ISC, approved, #9735 +maven/mavencentral/org.springframework.security/spring-security-oauth2-core/6.1.2, Apache-2.0, approved, #9741 maven/mavencentral/org.springframework.security/spring-security-rsa/1.0.11.RELEASE, Apache-2.0, approved, CQ20647 -maven/mavencentral/org.springframework.security/spring-security-web/6.1.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework/spring-aop/6.0.10, Apache-2.0, approved, #5940 -maven/mavencentral/org.springframework/spring-aspects/6.0.10, Apache-2.0, approved, #5930 -maven/mavencentral/org.springframework/spring-beans/6.0.10, Apache-2.0, approved, #5937 -maven/mavencentral/org.springframework/spring-context/6.0.10, Apache-2.0, approved, #5936 -maven/mavencentral/org.springframework/spring-core/6.0.10, Apache-2.0 AND BSD-3-Clause, approved, #5948 -maven/mavencentral/org.springframework/spring-expression/6.0.10, Apache-2.0, approved, #3284 -maven/mavencentral/org.springframework/spring-jcl/6.0.10, Apache-2.0, approved, #3283 -maven/mavencentral/org.springframework/spring-jdbc/6.0.10, Apache-2.0, approved, #5924 -maven/mavencentral/org.springframework/spring-orm/6.0.10, Apache-2.0, approved, #5925 -maven/mavencentral/org.springframework/spring-test/6.0.10, Apache-2.0, approved, #7003 -maven/mavencentral/org.springframework/spring-tx/6.0.10, Apache-2.0, approved, #5926 +maven/mavencentral/org.springframework.security/spring-security-web/6.1.2, Apache-2.0, approved, #9800 +maven/mavencentral/org.springframework/spring-aop/6.0.11, Apache-2.0, approved, #5940 +maven/mavencentral/org.springframework/spring-aspects/6.0.11, Apache-2.0, approved, #5930 +maven/mavencentral/org.springframework/spring-beans/6.0.11, Apache-2.0, approved, #5937 +maven/mavencentral/org.springframework/spring-context/6.0.11, Apache-2.0, approved, #5936 +maven/mavencentral/org.springframework/spring-core/6.0.11, Apache-2.0 AND BSD-3-Clause, approved, #5948 +maven/mavencentral/org.springframework/spring-expression/6.0.11, Apache-2.0, approved, #3284 +maven/mavencentral/org.springframework/spring-jcl/6.0.11, Apache-2.0, approved, #3283 +maven/mavencentral/org.springframework/spring-jdbc/6.0.11, Apache-2.0, approved, #5924 +maven/mavencentral/org.springframework/spring-orm/6.0.11, Apache-2.0, approved, #5925 +maven/mavencentral/org.springframework/spring-test/6.0.11, Apache-2.0, approved, #7003 +maven/mavencentral/org.springframework/spring-tx/6.0.11, Apache-2.0, approved, #5926 maven/mavencentral/org.springframework/spring-web/5.1.5.RELEASE, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ18367 -maven/mavencentral/org.springframework/spring-web/6.0.10, Apache-2.0, approved, #5942 +maven/mavencentral/org.springframework/spring-web/6.0.11, Apache-2.0, approved, #5942 maven/mavencentral/org.springframework/spring-web/6.0.9, Apache-2.0, approved, #5942 -maven/mavencentral/org.springframework/spring-webmvc/6.0.10, Apache-2.0, approved, #5944 +maven/mavencentral/org.springframework/spring-webmvc/6.0.11, Apache-2.0, approved, #5944 maven/mavencentral/org.springframework/spring-webmvc/6.0.7, Apache-2.0, approved, #5944 maven/mavencentral/org.testcontainers/testcontainers/1.17.6, MIT, approved, #3074 maven/mavencentral/org.testcontainers/testcontainers/1.18.3, MIT, approved, #7938 diff --git a/NOTICE.md b/NOTICE.md index b589e03db..afa85bb03 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -36,6 +36,13 @@ This project leverages the following third party content. See DEPENDENCIES file. +cx-ssi-lib-0.0.16.jar (0.0.16) + - License:   Apache-2.0 + - Licence Path: + - Project URL:  + - Source URL:   + - Download URL:  + ## Cryptography Content may contain encryption software. The country in which you are currently diff --git a/README.md b/README.md index bd7aa9668..045b17f1c 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,13 @@ There are two possible flows, which can be used for development: Following tools the MIW development team used successfully: -| Area | Tool | Download Link | Comment | -| -------- | -------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| Area | Tool | Download Link | Comment | +|----------|----------|-------------------------------------------------|--------------------------------------------------------------------------------------------------| | IDE | IntelliJ | https://www.jetbrains.com/idea/download/ | Use[envfile plugin](https://plugins.jetbrains.com/plugin/7861-envfile) to use the **local** flow | -| Build | Gradle | https://gradle.org/install/ | | -| Runtime | Docker | https://www.docker.com/products/docker-desktop/ | | -| Database | DBeaver | https://dbeaver.io/ | | -| IAM | Keycloak | https://www.keycloak.org/ | | +| Build | Gradle | https://gradle.org/install/ | | +| Runtime | Docker | https://www.docker.com/products/docker-desktop/ | | +| Database | DBeaver | https://dbeaver.io/ | | +| IAM | Keycloak | https://www.keycloak.org/ | | # Administrator Documentation @@ -137,10 +137,17 @@ directory, but without ".dist" at the end. Description of the env files: -- **env.local**: Setup everything to get ready for flow "local". You need to fill in the passwords. Everything else can - remain as it is. -- **env.docker**: Setup everything to get ready for flow "docker". You need to fill in the passwords. Everything else - can remain as it is. +- **env.local**: Setup everything to get ready for flow "local". You need to fill in the passwords. +- **env.docker**: Setup everything to get ready for flow "docker". You need to fill in the passwords. + +> **IMPORTANT**: ssi-lib is resolving DID documents over network. There are two endpoints that rely on this resolution: +> - Verifiable Credentials - Validation +> - Verifiable Presentations - Validation +> +> The following parameters must be added or changed in env.local or env.docker file to ensure that these endpoints work as intended in local development environment: +> Add: ENFORCE_HTTPS_IN_DID_RESOLUTION=false +> Change: MIW_HOST_NAME from miw to localhost +> Change: APPLICATION_PORT from 8000 to 80 > **IMPORTANT**: When you are using MacOS and the MIW docker container won't start up (stuck somewhere or doesn't start > at all), you can enable the docker-desktop feature "Use Rosetta for x86/amd64 emulation on Apple Silicon" in your Docker @@ -312,3 +319,7 @@ curl --location 'http://localhost:8090/actuator/loggers/org.eclipse.tractusx.man 2. https://github.com/dasniko/testcontainers-keycloak 3. https://github.com/smartSenseSolutions/smartsense-java-commons 4. https://github.com/catenax-ng/product-lab-ssi + +## Notice for Docker image + +See [Docker-hub-notice.md](./Docker-hub-notice.md) diff --git a/Taskfile.yaml b/Taskfile.yaml index 13a829da3..dd0810d8a 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -45,8 +45,11 @@ tasks: changelog: desc: Generate Changelog cmds: - - rm -f CHANGELOG.md - - git-changelog -o CHANGELOG.md -c conventional -t keepachangelog . + - git-changelog -i -g '^## (?P[v|V]?\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?)' -o CHANGELOG.md -c conventional -t path:./CHANGELOG.md.jinja . + # Explanation of Regex: + # Semantic versioning named group: ?P[v|V]?\d+\.\d+\.\d+ + # Pre-release candidates group (e.g. -rc.2): ?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)* + # Optional build information group: ?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)? clean-all: desc: Cleans everything... diff --git a/build.gradle b/build.gradle index 474d304a1..e45bf77e6 100644 --- a/build.gradle +++ b/build.gradle @@ -50,7 +50,7 @@ dependencies { implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:${openApiVersion}" implementation group: 'com.smartsensesolutions', name: 'commons-dao', version: '0.0.5' implementation 'org.liquibase:liquibase-core' - implementation 'org.eclipse.tractusx.ssi:cx-ssi-lib:0.0.15' + implementation 'org.eclipse.tractusx.ssi:cx-ssi-lib:0.0.16' //Added explicitly to mitigate CVE 2022-1471 implementation group: 'org.yaml', name: 'snakeyaml', version: '2.0' @@ -72,6 +72,8 @@ dependencies { testImplementation group: 'com.github.dasniko', name: 'testcontainers-keycloak', version: '2.5.0' testImplementation group: 'org.mockito', name: 'mockito-inline', version: '5.2.0' testImplementation group: 'org.json', name: 'json', version: '20230227' + testImplementation group: 'com.github.curious-odd-man', name: 'rgxgen', version: '1.4' + } dependencyManagement { @@ -90,6 +92,15 @@ build { version = "latest" } +bootJar { + metaInf { + from 'DEPENDENCIES' + from 'SECURITY.md' + from 'NOTICE.md' + from 'LICENSE' + } +} + test { finalizedBy jacocoTestReport } @@ -146,4 +157,4 @@ jacocoTestCoverageVerification { } } -check.dependsOn jacocoTestCoverageVerification \ No newline at end of file +check.dependsOn jacocoTestCoverageVerification diff --git a/charts/managed-identity-wallet/Chart.yaml b/charts/managed-identity-wallet/Chart.yaml index 55e6dc974..100e5b508 100644 --- a/charts/managed-identity-wallet/Chart.yaml +++ b/charts/managed-identity-wallet/Chart.yaml @@ -25,8 +25,8 @@ description: | type: application -version: 1.1.0 -appVersion: 0.0.1 +version: 0.1.0 +appVersion: 0.1.0 home: https://github.com/eclipse-tractusx/managed-identity-wallet keywords: diff --git a/charts/managed-identity-wallet/LICENSE b/charts/managed-identity-wallet/LICENSE new file mode 100644 index 000000000..f49a4e16e --- /dev/null +++ b/charts/managed-identity-wallet/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/charts/managed-identity-wallet/README.md b/charts/managed-identity-wallet/README.md index ebe6b4560..95158bb53 100644 --- a/charts/managed-identity-wallet/README.md +++ b/charts/managed-identity-wallet/README.md @@ -2,7 +2,7 @@ # managed-identity-wallet -![Version: 1.1.0](https://img.shields.io/badge/Version-1.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.0.1](https://img.shields.io/badge/AppVersion-0.0.1-informational?style=flat-square) +![Version: 0.1.0-rc.2](https://img.shields.io/badge/Version-0.1.0--rc.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.1.0-rc.2](https://img.shields.io/badge/AppVersion-0.1.0--rc.2-informational?style=flat-square) Managed Identity Wallet is supposed to supply a secure data source and data sink for Digital Identity Documents (DID), in order to enable Self-Sovereign Identity founding on those DIDs. And at the same it shall support an uninterrupted tracking and tracing and documenting the usage of those DIDs, e.g. within logistical supply chains. diff --git a/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml b/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml index 37c546f76..d1e3398b4 100644 --- a/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml +++ b/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml @@ -60,7 +60,7 @@ tests: - name: AUTHORITY_WALLET_DID value: did:web:RELEASE-NAME-managed-identity-wallet%3A8080:BPNL000000000000 - name: ENFORCE_HTTPS_IN_DID_RESOLUTION - value: "false" + value: "true" - name: APPLICATION_ENVIRONMENT value: dev - name: KEYCLOAK_REALM diff --git a/charts/managed-identity-wallet/tests/default/deployment_test.yaml b/charts/managed-identity-wallet/tests/default/deployment_test.yaml index 0a8a1458b..1578632fa 100644 --- a/charts/managed-identity-wallet/tests/default/deployment_test.yaml +++ b/charts/managed-identity-wallet/tests/default/deployment_test.yaml @@ -119,7 +119,7 @@ tests: - name: AUTHORITY_WALLET_DID value: did:web:RELEASE-NAME-managed-identity-wallet%3A8080:BPNL000000000000 - name: ENFORCE_HTTPS_IN_DID_RESOLUTION - value: "false" + value: "true" - name: APPLICATION_ENVIRONMENT value: dev - name: KEYCLOAK_REALM diff --git a/charts/managed-identity-wallet/values.yaml b/charts/managed-identity-wallet/values.yaml index 2124e5a60..cb65cd23a 100644 --- a/charts/managed-identity-wallet/values.yaml +++ b/charts/managed-identity-wallet/values.yaml @@ -119,7 +119,7 @@ miw: environment: "dev" ssi: # -- Enable to use HTTPS in DID Web Resolution - enforceHttpsInDidWebResolution: false + enforceHttpsInDidWebResolution: true # -- Verifiable Credential expiry date. Format 'dd-MM-yyyy'. If empty it is set to 31-12- vcExpiryDate: "" authorityWallet: diff --git a/gradle.properties b/gradle.properties index c6c447ec3..dfa874c88 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,10 @@ springCloudVersion=2022.0.3 testContainerVersion=1.18.3 jacocoVersion=0.8.9 -springBootVersion=3.1.1 +springBootVersion=3.1.2 springDependencyVersion=1.1.0 groupName=org.eclipse.tractusx -applicationVersion=0.0.1-SNAPSHOT +applicationVersion=0.1.1 openApiVersion=2.1.0 githubUserName= githubToken= \ No newline at end of file diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/ExceptionHandling.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/ExceptionHandling.java index 813a00fb4..408633976 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/ExceptionHandling.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/ExceptionHandling.java @@ -21,16 +21,21 @@ package org.eclipse.tractusx.managedidentitywallets.config; +import com.apicatalog.jsonld.JsonLdError; import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolationException; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.eclipse.tractusx.managedidentitywallets.exception.*; +import org.eclipse.tractusx.ssi.lib.exception.NoVerificationKeyFoundExcpetion; +import org.springframework.data.mapping.PropertyReferenceException; import org.springframework.http.HttpStatus; import org.springframework.http.ProblemDetail; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import java.util.HashMap; import java.util.List; @@ -114,7 +119,7 @@ ProblemDetail handleBadDataException(BadDataException e) { */ @ExceptionHandler(MethodArgumentNotValidException.class) ProblemDetail handleValidation(MethodArgumentNotValidException e) { - ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, e.getMessage()); + ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ExceptionUtils.getMessage(e)); problemDetail.setTitle("Invalid data provided"); problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); problemDetail.setProperty("errors", handleValidationError(e.getFieldErrors())); @@ -129,7 +134,7 @@ ProblemDetail handleValidation(MethodArgumentNotValidException e) { */ @ExceptionHandler(ConstraintViolationException.class) ProblemDetail handleValidation(ConstraintViolationException exception) { - ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, exception.getMessage()); + ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ExceptionUtils.getMessage(exception)); problemDetail.setTitle("Invalid data provided"); problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); problemDetail.setProperty("errors", exception.getConstraintViolations().stream().map(ConstraintViolation::getMessage).toList()); @@ -164,6 +169,82 @@ ProblemDetail handleNotFoundCredentialProblem(CredentialNotFoundProblem e) { return problemDetail; } + + /** + * Handle illegal argument exception problem detail. + * + * @param exception the exception + * @return the problem detail + */ + @ExceptionHandler(IllegalArgumentException.class) + ProblemDetail handleIllegalArgumentException(IllegalArgumentException exception) { + ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ExceptionUtils.getMessage(exception)); + problemDetail.setTitle(ExceptionUtils.getMessage(exception)); + problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); + return problemDetail; + } + + /** + * Handle method argument type mismatch exception problem detail. + * + * @param exception the exception + * @return the problem detail + */ + @ExceptionHandler(MethodArgumentTypeMismatchException.class) + ProblemDetail handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException exception) { + ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ExceptionUtils.getMessage(exception)); + problemDetail.setTitle(ExceptionUtils.getMessage(exception)); + problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); + problemDetail.setProperty("invalidArgument", exception.getName()); + return problemDetail; + } + + /** + * Handle no verification key found exception problem detail. + * + * @param exception the exception + * @return the problem detail + */ + @ExceptionHandler(NoVerificationKeyFoundExcpetion.class) + ProblemDetail handleNoVerificationKeyFoundException(NoVerificationKeyFoundExcpetion exception) { + ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ExceptionUtils.getMessage(exception)); + problemDetail.setTitle(ExceptionUtils.getMessage(exception)); + problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); + return problemDetail; + } + + + /** + * Handle property reference exception problem detail. + * + * @param exception the exception + * @return the problem detail + */ + @ExceptionHandler(PropertyReferenceException.class) + ProblemDetail handlePropertyReferenceException(PropertyReferenceException exception) { + ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ExceptionUtils.getMessage(exception)); + problemDetail.setTitle(ExceptionUtils.getMessage(exception)); + problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); + problemDetail.setProperty("invalidProperty", exception.getPropertyName()); + return problemDetail; + } + + /** + * Handle json ld error problem detail. + * + * @param exception the exception + * @return the problem detail + */ + @ExceptionHandler(JsonLdError.class) + ProblemDetail handleJsonLdError(JsonLdError exception) { + ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ExceptionUtils.getMessage(exception)); + problemDetail.setTitle(ExceptionUtils.getMessage(exception)); + problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); + problemDetail.setProperty("error", "Can not parse data on JSON-LD"); + return problemDetail; + } + + /** * Handle exception problem detail. * @@ -173,7 +254,12 @@ ProblemDetail handleNotFoundCredentialProblem(CredentialNotFoundProblem e) { @ExceptionHandler(Exception.class) ProblemDetail handleException(Exception e) { log.error("Error ", e); - ProblemDetail problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage()); + ProblemDetail problemDetail; + if (e.getCause() instanceof JsonLdError) { //in case of invalid context of VC/VP, ssi-lid is giving RuntimeException cause bt JsonLdError, considering as bad data + problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, e.getMessage()); + } else { + problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage()); + } problemDetail.setTitle(e.getMessage()); problemDetail.setProperty(TIMESTAMP, System.currentTimeMillis()); return problemDetail; diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/constant/StringPool.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/constant/StringPool.java index d30d67700..1d05be7d2 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/constant/StringPool.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/constant/StringPool.java @@ -89,4 +89,6 @@ private StringPool() { public static final String CLIENT_CREDENTIALS = "client_credentials"; public static final String OPENID = "openid"; public static final String BEARER_SPACE = "Bearer "; + + public static final String BPN_NUMBER_REGEX = "^(BPN)(L|S|A)[0-9A-Z]{12}"; } diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/CreateWalletRequest.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/CreateWalletRequest.java index d9bfebd6e..6c6f4d62e 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/CreateWalletRequest.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/CreateWalletRequest.java @@ -22,8 +22,10 @@ package org.eclipse.tractusx.managedidentitywallets.dto; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.*; +import org.eclipse.tractusx.managedidentitywallets.constant.StringPool; /** @@ -37,7 +39,7 @@ public class CreateWalletRequest { @NotBlank(message = "Please provide BPN") - @Size(min = 5, max = 255, message = "Please provide valid BPN") + @Pattern(regexp = StringPool.BPN_NUMBER_REGEX, message = "Please provide valid BPN") private String bpn; @NotBlank(message = "Please provide name") diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueDismantlerCredentialRequest.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueDismantlerCredentialRequest.java index 54e7b71ed..a838d4b6f 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueDismantlerCredentialRequest.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueDismantlerCredentialRequest.java @@ -22,8 +22,10 @@ package org.eclipse.tractusx.managedidentitywallets.dto; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.*; +import org.eclipse.tractusx.managedidentitywallets.constant.StringPool; import java.util.Set; @@ -38,7 +40,7 @@ public class IssueDismantlerCredentialRequest { @NotBlank(message = "Please provide BPN") - @Size(min = 5, max = 255, message = "Please provide valid BPN") + @Pattern(regexp = StringPool.BPN_NUMBER_REGEX, message = "Please provide valid BPN") private String bpn; @NotBlank(message = "Please provide activity type") @@ -46,5 +48,5 @@ public class IssueDismantlerCredentialRequest { private String activityType; @Builder.Default - private Set allowedVehicleBrands = Set.of(); + private Set<@NotBlank String> allowedVehicleBrands = Set.of(); } diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueMembershipCredentialRequest.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueMembershipCredentialRequest.java index 2fc001a21..301a23229 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueMembershipCredentialRequest.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/dto/IssueMembershipCredentialRequest.java @@ -22,8 +22,9 @@ package org.eclipse.tractusx.managedidentitywallets.dto; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.Pattern; import lombok.*; +import org.eclipse.tractusx.managedidentitywallets.constant.StringPool; /** * The type Issue membership credential request. @@ -36,7 +37,7 @@ public class IssueMembershipCredentialRequest { @NotBlank(message = "Please provide BPN") - @Size(min = 5, max = 255, message = "Please provide valid BPN") + @Pattern(regexp = StringPool.BPN_NUMBER_REGEX, message = "Please provide valid BPN") private String bpn; } diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/IssuersCredentialService.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/IssuersCredentialService.java index 44f5485e4..8e36c20d3 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/IssuersCredentialService.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/IssuersCredentialService.java @@ -29,6 +29,7 @@ import com.smartsensesolutions.java.commons.sort.Sort; import com.smartsensesolutions.java.commons.sort.SortType; import com.smartsensesolutions.java.commons.specification.SpecificationUtil; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.text.StringEscapeUtils; import org.eclipse.tractusx.managedidentitywallets.config.MIWSettings; @@ -47,9 +48,8 @@ import org.eclipse.tractusx.managedidentitywallets.exception.ForbiddenException; import org.eclipse.tractusx.managedidentitywallets.utils.CommonUtils; import org.eclipse.tractusx.managedidentitywallets.utils.Validate; -import org.eclipse.tractusx.ssi.lib.did.resolver.DidDocumentResolverRegistry; -import org.eclipse.tractusx.ssi.lib.did.resolver.DidDocumentResolverRegistryImpl; -import org.eclipse.tractusx.ssi.lib.did.web.DidWebDocumentResolver; +import org.eclipse.tractusx.ssi.lib.did.resolver.DidResolver; +import org.eclipse.tractusx.ssi.lib.did.web.DidWebResolver; import org.eclipse.tractusx.ssi.lib.did.web.util.DidWebParser; import org.eclipse.tractusx.ssi.lib.model.did.DidDocument; import org.eclipse.tractusx.ssi.lib.model.verifiable.credential.VerifiableCredential; @@ -424,25 +424,23 @@ public VerifiableCredential issueCredentialUsingBaseWallet(String holderDid, Map * @param withCredentialExpiryDate the with credential expiry date * @return the map */ + @SneakyThrows public Map credentialsValidation(Map data, boolean withCredentialExpiryDate) { VerifiableCredential verifiableCredential = new VerifiableCredential(data); - // DID Resolver Constracture params - DidDocumentResolverRegistry didDocumentResolverRegistry = new DidDocumentResolverRegistryImpl(); - didDocumentResolverRegistry.register( - new DidWebDocumentResolver(HttpClient.newHttpClient(), new DidWebParser(), miwSettings.enforceHttps())); + DidResolver didResolver = new DidWebResolver(HttpClient.newHttpClient(), new DidWebParser(), miwSettings.enforceHttps()); String proofTye = verifiableCredential.getProof().get(StringPool.TYPE).toString(); LinkedDataProofValidation proofValidation; if (SignatureType.ED21559.toString().equals(proofTye)) { - proofValidation = LinkedDataProofValidation.newInstance(SignatureType.ED21559, didDocumentResolverRegistry); + proofValidation = LinkedDataProofValidation.newInstance(SignatureType.ED21559, didResolver); } else if (SignatureType.JWS.toString().equals(proofTye)) { - proofValidation = LinkedDataProofValidation.newInstance(SignatureType.JWS, didDocumentResolverRegistry); + proofValidation = LinkedDataProofValidation.newInstance(SignatureType.JWS, didResolver); } else { throw new BadDataException(String.format("Invalid proof type: %s", proofTye)); } - boolean valid = proofValidation.verifiyProof(verifiableCredential); + boolean valid = proofValidation.verifyProof(verifiableCredential); Map response = new TreeMap<>(); @@ -564,4 +562,4 @@ private Page getLastIssuedSummaryCredential(String issuerDid, return filter(filterRequest); } -} \ No newline at end of file +} diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/PresentationService.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/PresentationService.java index cc4dfec04..c5035e30e 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/PresentationService.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/PresentationService.java @@ -39,9 +39,8 @@ import org.eclipse.tractusx.ssi.lib.crypt.ed25519.Ed25519Key; import org.eclipse.tractusx.ssi.lib.crypt.octet.OctetKeyPairFactory; import org.eclipse.tractusx.ssi.lib.crypt.x21559.x21559PrivateKey; -import org.eclipse.tractusx.ssi.lib.did.resolver.DidDocumentResolverRegistry; -import org.eclipse.tractusx.ssi.lib.did.resolver.DidDocumentResolverRegistryImpl; -import org.eclipse.tractusx.ssi.lib.did.web.DidWebDocumentResolver; +import org.eclipse.tractusx.ssi.lib.did.resolver.DidResolver; +import org.eclipse.tractusx.ssi.lib.did.web.DidWebResolver; import org.eclipse.tractusx.ssi.lib.did.web.util.DidWebParser; import org.eclipse.tractusx.ssi.lib.exception.InvalidJsonLdException; import org.eclipse.tractusx.ssi.lib.exception.InvalidePrivateKeyFormat; @@ -225,11 +224,9 @@ public Map validatePresentation(Map vp, boolean private boolean validateSignature(SignedJWT signedJWT) { //validate jwt signature try { - DidDocumentResolverRegistry didDocumentResolverRegistry = new DidDocumentResolverRegistryImpl(); - didDocumentResolverRegistry.register( - new DidWebDocumentResolver(HttpClient.newHttpClient(), new DidWebParser(), miwSettings.enforceHttps())); + DidResolver didResolver = new DidWebResolver(HttpClient.newHttpClient(), new DidWebParser(), miwSettings.enforceHttps()); - SignedJwtVerifier jwtVerifier = new SignedJwtVerifier(didDocumentResolverRegistry); + SignedJwtVerifier jwtVerifier = new SignedJwtVerifier(didResolver); return jwtVerifier.verify(signedJWT); } catch (Exception e) { log.error("Can not verify signature of jwt", e); @@ -263,29 +260,27 @@ private boolean validateAudience(String audience, SignedJWT signedJWT) { } } - private boolean validateCredential(VerifiableCredential credential) throws UnsupportedSignatureTypeException { - - DidDocumentResolverRegistry didDocumentResolverRegistry = new DidDocumentResolverRegistryImpl(); - didDocumentResolverRegistry.register( - new DidWebDocumentResolver(HttpClient.newHttpClient(), new DidWebParser(), miwSettings.enforceHttps())); + @SneakyThrows + private boolean validateCredential(VerifiableCredential credential) { + DidResolver didResolver = new DidWebResolver(HttpClient.newHttpClient(), new DidWebParser(), miwSettings.enforceHttps()); String proofType = credential.getProof().getType(); LinkedDataProofValidation linkedDataProofValidation; if (SignatureType.ED21559.toString().equals(proofType)) { linkedDataProofValidation = LinkedDataProofValidation.newInstance( SignatureType.ED21559, - didDocumentResolverRegistry + didResolver ); } else if (SignatureType.JWS.toString().equals(proofType)) { linkedDataProofValidation = LinkedDataProofValidation.newInstance( SignatureType.JWS, - didDocumentResolverRegistry + didResolver ); } else { throw new UnsupportedSignatureTypeException(proofType); } - boolean isValid = linkedDataProofValidation.verifiyProof(credential); + boolean isValid = linkedDataProofValidation.verifyProof(credential); if (isValid) { log.debug("Credential validation result: (valid: {}, credential-id: {})", isValid, credential.getId()); } else { diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java index 17afeb5ba..3dd1435e9 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java @@ -55,11 +55,16 @@ import org.eclipse.tractusx.ssi.lib.model.did.*; import org.eclipse.tractusx.ssi.lib.model.verifiable.credential.VerifiableCredential; import org.eclipse.tractusx.ssi.lib.model.verifiable.credential.VerifiableCredentialType; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionCallbackWithoutResult; +import org.springframework.transaction.support.TransactionTemplate; import java.io.StringWriter; import java.net.URI; @@ -97,6 +102,9 @@ public class WalletService extends BaseService { private final CommonService commonService; + @Qualifier("transactionManager") + private final PlatformTransactionManager transactionManager; + @Override protected BaseRepository getRepository() { @@ -276,18 +284,23 @@ private Wallet createWallet(CreateWalletRequest request, boolean authority, Stri * Create authority wallet on application start up, skip if already created. */ @PostConstruct - @Transactional(isolation = Isolation.READ_UNCOMMITTED, propagation = Propagation.REQUIRED) public void createAuthorityWallet() { - if (!walletRepository.existsByBpn(miwSettings.authorityWalletBpn())) { - CreateWalletRequest request = CreateWalletRequest.builder() - .name(miwSettings.authorityWalletName()) - .bpn(miwSettings.authorityWalletBpn()) - .build(); - createWallet(request, true, miwSettings.authorityWalletBpn()); - log.info("Authority wallet created with bpn {}", StringEscapeUtils.escapeJava(miwSettings.authorityWalletBpn())); - } else { - log.info("Authority wallet exists with bpn {}", StringEscapeUtils.escapeJava(miwSettings.authorityWalletBpn())); - } + TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); + transactionTemplate.execute(new TransactionCallbackWithoutResult() { + @Override + protected void doInTransactionWithoutResult(TransactionStatus status) { + if (!walletRepository.existsByBpn(miwSettings.authorityWalletBpn())) { + CreateWalletRequest request = CreateWalletRequest.builder() + .name(miwSettings.authorityWalletName()) + .bpn(miwSettings.authorityWalletBpn()) + .build(); + createWallet(request, true, miwSettings.authorityWalletBpn()); + log.info("Authority wallet created with bpn {}", StringEscapeUtils.escapeJava(miwSettings.authorityWalletBpn())); + } else { + log.info("Authority wallet exists with bpn {}", StringEscapeUtils.escapeJava(miwSettings.authorityWalletBpn())); + } + } + }); } private void validateCreateWallet(CreateWalletRequest request, String callerBpn) { diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/utils/CommonUtils.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/utils/CommonUtils.java index 13e47aa2d..14e0a1aef 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/utils/CommonUtils.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/utils/CommonUtils.java @@ -22,8 +22,10 @@ package org.eclipse.tractusx.managedidentitywallets.utils; import lombok.SneakyThrows; +import lombok.experimental.UtilityClass; import org.eclipse.tractusx.managedidentitywallets.constant.StringPool; import org.eclipse.tractusx.managedidentitywallets.dao.entity.HoldersCredential; +import org.eclipse.tractusx.managedidentitywallets.exception.BadDataException; import org.eclipse.tractusx.ssi.lib.crypt.x21559.x21559PrivateKey; import org.eclipse.tractusx.ssi.lib.exception.InvalidePrivateKeyFormat; import org.eclipse.tractusx.ssi.lib.exception.UnsupportedSignatureTypeException; @@ -42,15 +44,16 @@ import java.util.Date; import java.util.List; import java.util.UUID; +import java.util.regex.Pattern; /** * The type Common utils. */ +@UtilityClass public class CommonUtils { - private CommonUtils() { - throw new IllegalStateException("Utility class"); - } + public static final Pattern BPN_NUMBER_PATTERN = Pattern.compile(StringPool.BPN_NUMBER_REGEX); + /** * Gets identifier type. @@ -62,6 +65,7 @@ public static String getIdentifierType(String identifier) { if (identifier.startsWith("did:web")) { return StringPool.DID; } else { + Validate.isFalse(BPN_NUMBER_PATTERN.matcher(identifier).matches()).launch(new BadDataException("Invalid BPN number - " + identifier)); return StringPool.BPN; } } @@ -106,8 +110,9 @@ private static VerifiableCredential createVerifiableCredential(DidDocument issue // if the credential does not contain the JWS proof-context add it URI jwsUri = URI.create("https://w3id.org/security/suites/jws-2020/v1"); - if (!contexts.contains(jwsUri)) + if (!contexts.contains(jwsUri)) { contexts.add(jwsUri); + } URI id = URI.create(UUID.randomUUID().toString()); VerifiableCredentialBuilder builder = diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/config/TestContextInitializer.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/config/TestContextInitializer.java index d52327f02..b9a492b90 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/config/TestContextInitializer.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/config/TestContextInitializer.java @@ -42,11 +42,15 @@ public class TestContextInitializer implements ApplicationContextInitializer response = restTemplate.getForEntity(RestURI.DID_DOCUMENTS, String.class, UUID.randomUUID().toString()); + ResponseEntity response = restTemplate.getForEntity(RestURI.DID_DOCUMENTS, String.class, TestUtils.getRandomBpmNumber()); Assertions.assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode().value()); } @Test void getDidDocumentWithBpn200() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); createWallet(bpn); ResponseEntity response = restTemplate.getForEntity(RestURI.DID_DOCUMENTS, String.class, bpn); @@ -70,14 +69,14 @@ void getDidDocumentWithBpn200() { @Test void getDidResolveInvalidBpn404() { - ResponseEntity response = restTemplate.getForEntity(RestURI.DID_RESOLVE, String.class, UUID.randomUUID().toString()); + ResponseEntity response = restTemplate.getForEntity(RestURI.DID_RESOLVE, String.class, TestUtils.getRandomBpmNumber()); Assertions.assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode().value()); } @Test void getDidResolveWithBpn200() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); createWallet(bpn); ResponseEntity response = restTemplate.getForEntity(RestURI.DID_RESOLVE, String.class, bpn); @@ -89,6 +88,6 @@ private Wallet createWallet(String bpn) { CreateWalletRequest createWalletRequest = new CreateWalletRequest(); createWalletRequest.setBpn(bpn); createWalletRequest.setName("wallet_" + bpn); - return walletService.createWallet(createWalletRequest,miwSettings.authorityWalletBpn()); + return walletService.createWallet(createWalletRequest, miwSettings.authorityWalletBpn()); } } diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/utils/TestUtils.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/utils/TestUtils.java index 885553974..d078b4938 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/utils/TestUtils.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/utils/TestUtils.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.curiousoddman.rgxgen.RgxGen; import org.eclipse.tractusx.managedidentitywallets.config.MIWSettings; import org.eclipse.tractusx.managedidentitywallets.constant.MIWVerifiableCredentialType; import org.eclipse.tractusx.managedidentitywallets.constant.RestURI; @@ -56,7 +57,7 @@ public class TestUtils { - public static ResponseEntity createWallet(String bpn, String name, TestRestTemplate testTemplate,String baseBPN) { + public static ResponseEntity createWallet(String bpn, String name, TestRestTemplate testTemplate, String baseBPN) { HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(baseBPN); CreateWalletRequest request = CreateWalletRequest.builder().bpn(bpn).name(name).build(); @@ -199,4 +200,9 @@ public static List getVerifiableCredentials(ResponseEntity } return credentialList; } + + public static String getRandomBpmNumber() { + RgxGen rgxGen = new RgxGen(StringPool.BPN_NUMBER_REGEX); + return rgxGen.generate(); + } } diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/DismantlerHoldersCredentialTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/DismantlerHoldersCredentialTest.java index 8f2c09f1b..37dec0b5d 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/DismantlerHoldersCredentialTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/DismantlerHoldersCredentialTest.java @@ -54,7 +54,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.UUID; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = {ManagedIdentityWalletsApplication.class}) @ContextConfiguration(initializers = {TestContextInitializer.class}) @@ -79,7 +78,7 @@ class DismantlerHoldersCredentialTest { @Test void issueDismantlerCredentialTest403() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); HttpHeaders headers = AuthenticationUtils.getInvalidUserHttpHeaders(); @@ -110,12 +109,12 @@ void issueDismantlerCredentialToBaseWalletTest201() throws JSONException { @Test void issueDismantlerCredentialTest201() throws JsonProcessingException, JSONException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String baseBpn = miwSettings.authorityWalletBpn(); //create wallet - Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate,baseBpn).getBody()); + Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate, baseBpn).getBody()); String oldSummaryCredentialId = TestUtils.getSummaryCredentialId(wallet.getDid(), holdersCredentialRepository); ResponseEntity response = issueDismantlerCredential(bpn, did); @@ -153,7 +152,7 @@ void issueDismantlerCredentialTest201() throws JsonProcessingException, JSONExce @Test void issueDismantlerCredentialWithInvalidBpnAccess409() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); @@ -178,7 +177,7 @@ void issueDismantlerCredentialWithInvalidBpnAccess409() { @Test void issueDismantlerCredentialWithoutAllowedVehicleBrands() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); Wallet wallet = TestUtils.createWallet(bpn, did, walletRepository); @@ -200,7 +199,7 @@ void issueDismantlerCredentialWithoutAllowedVehicleBrands() { @Test void issueDismantlerCredentialWithDuplicateBpn409() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); //create entry diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/FrameworkHoldersCredentialTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/FrameworkHoldersCredentialTest.java index 499519267..21e0ab498 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/FrameworkHoldersCredentialTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/FrameworkHoldersCredentialTest.java @@ -55,7 +55,6 @@ import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.stream.Stream; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = {ManagedIdentityWalletsApplication.class}) @@ -78,7 +77,7 @@ class FrameworkHoldersCredentialTest { @Test void issueFrameworkCredentialTest403() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); HttpHeaders headers = AuthenticationUtils.getInvalidUserHttpHeaders(); @@ -92,7 +91,7 @@ void issueFrameworkCredentialTest403() { @Test void issueFrameworkCredentialWithInvalidBpnAccessTest403() throws JsonProcessingException, JSONException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); TestUtils.createWallet(bpn, did, walletRepository); @@ -154,12 +153,12 @@ void issueFrameWorkVCTest201(IssueFrameworkCredentialRequest request) throws Jso static Stream getTypes() { return Stream.of( - IssueFrameworkCredentialRequest.builder().holderIdentifier(UUID.randomUUID().toString()).type("BehaviorTwinCredential").build(), - IssueFrameworkCredentialRequest.builder().holderIdentifier(UUID.randomUUID().toString()).type("PcfCredential").build(), - IssueFrameworkCredentialRequest.builder().holderIdentifier(UUID.randomUUID().toString()).type("QualityCredential").build(), - IssueFrameworkCredentialRequest.builder().holderIdentifier(UUID.randomUUID().toString()).type("ResiliencyCredential").build(), - IssueFrameworkCredentialRequest.builder().holderIdentifier(UUID.randomUUID().toString()).type("SustainabilityCredential").build(), - IssueFrameworkCredentialRequest.builder().holderIdentifier(UUID.randomUUID().toString()).type("TraceabilityCredential").build() + IssueFrameworkCredentialRequest.builder().holderIdentifier(TestUtils.getRandomBpmNumber()).type("BehaviorTwinCredential").build(), + IssueFrameworkCredentialRequest.builder().holderIdentifier(TestUtils.getRandomBpmNumber()).type("PcfCredential").build(), + IssueFrameworkCredentialRequest.builder().holderIdentifier(TestUtils.getRandomBpmNumber()).type("QualityCredential").build(), + IssueFrameworkCredentialRequest.builder().holderIdentifier(TestUtils.getRandomBpmNumber()).type("ResiliencyCredential").build(), + IssueFrameworkCredentialRequest.builder().holderIdentifier(TestUtils.getRandomBpmNumber()).type("SustainabilityCredential").build(), + IssueFrameworkCredentialRequest.builder().holderIdentifier(TestUtils.getRandomBpmNumber()).type("TraceabilityCredential").build() ); } @@ -167,7 +166,7 @@ static Stream getTypes() { @Test @DisplayName("Issue framework with invalid type") void issueFrameworkCredentialTest400() throws JsonProcessingException, JSONException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); Wallet wallet = TestUtils.createWallet(bpn, did, walletRepository); @@ -188,7 +187,7 @@ void issueFrameworkCredentialTest400() throws JsonProcessingException, JSONExcep private void createAndValidateVC(String bpn, String did, String type) throws JsonProcessingException { //create wallet String baseBpn = miwSettings.authorityWalletBpn(); - Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate,baseBpn).getBody()); + Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate, baseBpn).getBody()); String oldSummaryCredentialId = TestUtils.getSummaryCredentialId(wallet.getDid(), holdersCredentialRepository); HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(miwSettings.authorityWalletBpn()); diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/HoldersCredentialTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/HoldersCredentialTest.java index 4836771e4..61b941055 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/HoldersCredentialTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/HoldersCredentialTest.java @@ -37,7 +37,7 @@ import org.eclipse.tractusx.managedidentitywallets.dto.IssueFrameworkCredentialRequest; import org.eclipse.tractusx.managedidentitywallets.utils.AuthenticationUtils; import org.eclipse.tractusx.managedidentitywallets.utils.TestUtils; -import org.eclipse.tractusx.ssi.lib.did.resolver.DidDocumentResolverRegistryImpl; +import org.eclipse.tractusx.ssi.lib.did.resolver.DidResolver; import org.eclipse.tractusx.ssi.lib.did.web.DidWebFactory; import org.eclipse.tractusx.ssi.lib.model.verifiable.credential.VerifiableCredential; import org.eclipse.tractusx.ssi.lib.model.verifiable.credential.VerifiableCredentialBuilder; @@ -86,7 +86,7 @@ class HoldersCredentialTest { @Test void issueCredentialTestWithInvalidBPNAccess403() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String type = "TestCredential"; HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders("not valid BPN"); @@ -100,7 +100,7 @@ void issueCredentialTestWithInvalidBPNAccess403() throws JsonProcessingException @Test void issueCredentialTest200() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String type = "TestCredential"; HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(bpn); @@ -137,7 +137,7 @@ void getCredentials200() throws com.fasterxml.jackson.core.JsonProcessingExcepti String baseDID = miwSettings.authorityWalletDid(); - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(bpn); //save wallet @@ -214,9 +214,9 @@ void validateCredentialsWithInvalidVC() throws com.fasterxml.jackson.core.JsonPr //mock setup LinkedDataProofValidation mock = Mockito.mock(LinkedDataProofValidation.class); utils.when(() -> { - LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidDocumentResolverRegistryImpl.class)); + LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidResolver.class)); }).thenReturn(mock); - Mockito.when(mock.verifiyProof(Mockito.any(VerifiableCredential.class))).thenReturn(false); + Mockito.when(mock.verifyProof(Mockito.any(VerifiableCredential.class))).thenReturn(false); Map stringObjectMap = credentialController.credentialsValidation(map, false).getBody(); Assertions.assertFalse(Boolean.parseBoolean(stringObjectMap.get(StringPool.VALID).toString())); @@ -237,9 +237,9 @@ void validateCredentialsWithExpiryCheckTrue() throws com.fasterxml.jackson.core. //mock setup LinkedDataProofValidation mock = Mockito.mock(LinkedDataProofValidation.class); utils.when(() -> { - LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidDocumentResolverRegistryImpl.class)); + LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidResolver.class)); }).thenReturn(mock); - Mockito.when(mock.verifiyProof(Mockito.any(VerifiableCredential.class))).thenReturn(true); + Mockito.when(mock.verifyProof(Mockito.any(VerifiableCredential.class))).thenReturn(true); Map stringObjectMap = credentialController.credentialsValidation(map, true).getBody(); Assertions.assertTrue(Boolean.parseBoolean(stringObjectMap.get(StringPool.VALID).toString())); @@ -264,9 +264,9 @@ void validateCredentialsWithExpiryCheckFalse() throws com.fasterxml.jackson.core //mock setup LinkedDataProofValidation mock = Mockito.mock(LinkedDataProofValidation.class); utils.when(() -> { - LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidDocumentResolverRegistryImpl.class)); + LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidResolver.class)); }).thenReturn(mock); - Mockito.when(mock.verifiyProof(Mockito.any(VerifiableCredential.class))).thenReturn(true); + Mockito.when(mock.verifyProof(Mockito.any(VerifiableCredential.class))).thenReturn(true); Map stringObjectMap = credentialController.credentialsValidation(map, false).getBody(); Assertions.assertTrue(Boolean.parseBoolean(stringObjectMap.get(StringPool.VALID).toString())); @@ -290,9 +290,9 @@ void validateExpiredCredentialsWithExpiryCheckTrue() throws com.fasterxml.jackso //mock setup LinkedDataProofValidation mock = Mockito.mock(LinkedDataProofValidation.class); utils.when(() -> { - LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidDocumentResolverRegistryImpl.class)); + LinkedDataProofValidation.newInstance(Mockito.any(SignatureType.class), Mockito.any(DidResolver.class)); }).thenReturn(mock); - Mockito.when(mock.verifiyProof(Mockito.any(VerifiableCredential.class))).thenReturn(true); + Mockito.when(mock.verifyProof(Mockito.any(VerifiableCredential.class))).thenReturn(true); Map stringObjectMap = credentialController.credentialsValidation(map, true).getBody(); Assertions.assertFalse(Boolean.parseBoolean(stringObjectMap.get(StringPool.VALID).toString())); @@ -303,7 +303,7 @@ void validateExpiredCredentialsWithExpiryCheckTrue() throws com.fasterxml.jackso private Map issueVC() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String baseBpn = miwSettings.authorityWalletBpn(); TestUtils.createWallet(bpn, "Test", restTemplate, baseBpn); ResponseEntity vc = TestUtils.issueMembershipVC(restTemplate, bpn, miwSettings.authorityWalletBpn()); diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/IssuersCredentialTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/IssuersCredentialTest.java index b6cbdd9f2..e67bee8b0 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/IssuersCredentialTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/IssuersCredentialTest.java @@ -79,7 +79,7 @@ class IssuersCredentialTest { @Test void getCredentials200() throws com.fasterxml.jackson.core.JsonProcessingException { String baseBPN = miwSettings.authorityWalletBpn(); - String holderBpn = UUID.randomUUID().toString(); + String holderBpn = TestUtils.getRandomBpmNumber(); String holderDID = "did:web:localhost:" + holderBpn; HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(baseBPN); //save wallet @@ -161,7 +161,7 @@ void issueCredentialsTestWithInvalidRole403() { @Test void issueCredentialsWithoutBaseWalletBPN403() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String holderDid = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String type = "TestCredential"; HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(bpn); @@ -192,7 +192,7 @@ void issueCredentialsToBaseWallet200() throws JsonProcessingException { @Test void issueSummaryCredentials400() throws com.fasterxml.jackson.core.JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(miwSettings.authorityWalletBpn()); @@ -204,7 +204,7 @@ void issueSummaryCredentials400() throws com.fasterxml.jackson.core.JsonProcessi @Test void issueCredentials200() throws com.fasterxml.jackson.core.JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String type = "TestCredential"; HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(miwSettings.authorityWalletBpn()); @@ -231,7 +231,7 @@ void issueCredentials200() throws com.fasterxml.jackson.core.JsonProcessingExcep private ResponseEntity issueVC(String bpn, String holderDid, String issuerDid, String type, HttpHeaders headers) throws JsonProcessingException { String baseBpn = miwSettings.authorityWalletBpn(); //save wallet - TestUtils.createWallet(bpn, holderDid, restTemplate,baseBpn); + TestUtils.createWallet(bpn, holderDid, restTemplate, baseBpn); // Create VC without proof //VC Bulider diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/MembershipHoldersCredentialTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/MembershipHoldersCredentialTest.java index 7be86edbd..9f2c41550 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/MembershipHoldersCredentialTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/MembershipHoldersCredentialTest.java @@ -53,7 +53,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.UUID; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = {ManagedIdentityWalletsApplication.class}) @ContextConfiguration(initializers = {TestContextInitializer.class}) @@ -78,7 +77,7 @@ class MembershipHoldersCredentialTest { @Test void issueMembershipCredentialTest403() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); @@ -94,12 +93,12 @@ void issueMembershipCredentialTest403() { @Test void testIssueSummeryVCAfterDeleteSummaryVCFromHolderWallet() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String baseBpn = miwSettings.authorityWalletBpn(); // create wallet, in background bpn and summary credential generated - Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate,baseBpn).getBody()); + Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate, baseBpn).getBody()); List byHolderDid = holdersCredentialRepository.getByHolderDid(did); @@ -123,12 +122,12 @@ void testIssueSummeryVCAfterDeleteSummaryVCFromHolderWallet() throws JsonProcess @Test void testStoredSummaryVCTest() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String baseBpn = miwSettings.authorityWalletBpn(); // create wallet, in background bpn and summary credential generated - Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate,baseBpn).getBody()); + Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate, baseBpn).getBody()); String vc = """ @@ -186,11 +185,11 @@ void testStoredSummaryVCTest() throws JsonProcessingException { @Test void issueMembershipCredentialToBaseWalletTest400() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String baseBpn = miwSettings.authorityWalletBpn(); // create wallet, in background bpn and summary credential generated - Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate,baseBpn).getBody()); + Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate, baseBpn).getBody()); //add 2 subject in VC for testing List vcs = issuersCredentialRepository.getByIssuerDidAndHolderDidAndType(miwSettings.authorityWalletDid(), wallet.getDid(), MIWVerifiableCredentialType.SUMMARY_CREDENTIAL); @@ -279,11 +278,11 @@ void issueMembershipCredentialToBaseWalletTest201() throws JsonProcessingExcepti @Test void issueMembershipCredentialTest201() throws JsonProcessingException, JSONException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String baseBpn = miwSettings.authorityWalletBpn(); //create wallet - Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate,baseBpn).getBody()); + Wallet wallet = TestUtils.getWalletFromString(TestUtils.createWallet(bpn, bpn, restTemplate, baseBpn).getBody()); String oldSummaryCredentialId = TestUtils.getSummaryCredentialId(wallet.getDid(), holdersCredentialRepository); ResponseEntity response = TestUtils.issueMembershipVC(restTemplate, bpn, miwSettings.authorityWalletBpn()); @@ -315,7 +314,7 @@ void issueMembershipCredentialTest201() throws JsonProcessingException, JSONExce @Test void issueMembershipCredentialWithInvalidBpnAccess409() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); @@ -333,7 +332,7 @@ void issueMembershipCredentialWithInvalidBpnAccess409() { @Test void issueMembershipCredentialWithDuplicateBpn409() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/PresentationValidationTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/PresentationValidationTest.java index 1ce596a55..987d3895d 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/PresentationValidationTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vc/PresentationValidationTest.java @@ -21,7 +21,6 @@ package org.eclipse.tractusx.managedidentitywallets.vc; -import com.nimbusds.jwt.SignedJWT; import lombok.*; import org.eclipse.tractusx.managedidentitywallets.ManagedIdentityWalletsApplication; import org.eclipse.tractusx.managedidentitywallets.config.MIWSettings; @@ -36,6 +35,7 @@ import org.eclipse.tractusx.managedidentitywallets.service.PresentationService; import org.eclipse.tractusx.managedidentitywallets.service.WalletService; import org.eclipse.tractusx.managedidentitywallets.utils.AuthenticationUtils; +import org.eclipse.tractusx.managedidentitywallets.utils.TestUtils; import org.eclipse.tractusx.ssi.lib.model.did.Did; import org.eclipse.tractusx.ssi.lib.model.did.DidParser; import org.eclipse.tractusx.ssi.lib.model.verifiable.credential.VerifiableCredential; @@ -43,7 +43,10 @@ import org.eclipse.tractusx.ssi.lib.model.verifiable.presentation.VerifiablePresentationBuilder; import org.eclipse.tractusx.ssi.lib.model.verifiable.presentation.VerifiablePresentationType; import org.eclipse.tractusx.ssi.lib.serialization.SerializeUtil; -import org.junit.jupiter.api.*; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -79,8 +82,8 @@ class PresentationValidationTest { @Autowired private MIWSettings miwSettings; - private final String bpnTenant_1 = UUID.randomUUID().toString(); - private final String bpnTenant_2 = UUID.randomUUID().toString(); + private final String bpnTenant_1 = TestUtils.getRandomBpmNumber(); + private final String bpnTenant_2 = TestUtils.getRandomBpmNumber(); private String bpnOperator; private Did tenant_1; private Did tenant_2; @@ -94,13 +97,13 @@ public void setup() { CreateWalletRequest createWalletRequest = new CreateWalletRequest(); createWalletRequest.setBpn(bpnTenant_1); createWalletRequest.setName("My Test Tenant Wallet"); - Wallet tenantWallet = walletService.createWallet(createWalletRequest,bpnOperator); + Wallet tenantWallet = walletService.createWallet(createWalletRequest, bpnOperator); tenant_1 = DidParser.parse(tenantWallet.getDid()); CreateWalletRequest createWalletRequest2 = new CreateWalletRequest(); createWalletRequest2.setBpn(bpnTenant_2); createWalletRequest2.setName("My Test Tenant Wallet"); - Wallet tenantWallet2 = walletService.createWallet(createWalletRequest2,bpnOperator); + Wallet tenantWallet2 = walletService.createWallet(createWalletRequest2, bpnOperator); tenant_2 = DidParser.parse(tenantWallet2.getDid()); IssueMembershipCredentialRequest issueMembershipCredentialRequest = new IssueMembershipCredentialRequest(); @@ -138,9 +141,9 @@ void testSuccessfulValidation() { @Test @SneakyThrows public void testSuccessfulValidationForMultipleVC() { - final Map creationResponse = createPresentationJwt(List.of(membershipCredential_1, membershipCredential_2), tenant_1); + Map creationResponse = createPresentationJwt(List.of(membershipCredential_1, membershipCredential_2), tenant_1); // get the payload of the json web token - final String encodedJwtPayload = ((String) creationResponse.get("vp")).split("\\.")[1]; + String encodedJwtPayload = ((String) creationResponse.get("vp")).split("\\.")[1]; Map decodedJwtPayload = OBJECT_MAPPER.readValue(Base64.getUrlDecoder().decode(encodedJwtPayload), Map.class); VerifiablePresentation presentation = new VerifiablePresentation((Map) decodedJwtPayload.get("vp")); VerifiablePresentationValidationResponse response = validateJwtOfCredential(creationResponse); @@ -167,10 +170,10 @@ public void testValidationFailureOfCredentialWitInvalidExpirationDate() { public void testValidationFailureOfCredentialWitInvalidExpirationDateInSecondCredential() { // test is related to this old issue where the signature check still succeeded // https://github.com/eclipse-tractusx/SSI-agent-lib/issues/4 - final VerifiableCredential copyCredential = new VerifiableCredential(membershipCredential_1); + VerifiableCredential copyCredential = new VerifiableCredential(membershipCredential_1); // e.g. an attacker tries to extend the validity of a verifiable credential copyCredential.put(VerifiableCredential.EXPIRATION_DATE, "2500-09-30T22:00:00Z"); - final Map presentation = createPresentationJwt(List.of(membershipCredential_1, copyCredential), tenant_1); + Map presentation = createPresentationJwt(List.of(membershipCredential_1, copyCredential), tenant_1); VerifiablePresentationValidationResponse response = validateJwtOfCredential(presentation); Assertions.assertFalse(response.valid); } diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vp/PresentationTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vp/PresentationTest.java index c9162bed9..fec437455 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/vp/PresentationTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/vp/PresentationTest.java @@ -37,7 +37,7 @@ import org.eclipse.tractusx.managedidentitywallets.dao.repository.HoldersCredentialRepository; import org.eclipse.tractusx.managedidentitywallets.utils.AuthenticationUtils; import org.eclipse.tractusx.managedidentitywallets.utils.TestUtils; -import org.eclipse.tractusx.ssi.lib.did.resolver.DidDocumentResolverRegistry; +import org.eclipse.tractusx.ssi.lib.did.resolver.DidResolver; import org.eclipse.tractusx.ssi.lib.did.web.DidWebFactory; import org.eclipse.tractusx.ssi.lib.exception.DidDocumentResolverNotRegisteredException; import org.eclipse.tractusx.ssi.lib.exception.JwtException; @@ -85,7 +85,7 @@ class PresentationTest { @Test void validateVPAssJsonLd400() throws JsonProcessingException { //create VP - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String audience = "companyA"; ResponseEntity vpResponse = createBpnVCAsJwt(bpn, audience); Map body = vpResponse.getBody(); @@ -101,7 +101,7 @@ void validateVPAssJsonLd400() throws JsonProcessingException { @Test void validateVPAsJwt() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String audience = "companyA"; ResponseEntity vpResponse = createBpnVCAsJwt(bpn, audience); Map body = vpResponse.getBody(); @@ -119,15 +119,15 @@ void validateVPAsJwt() throws JsonProcessingException { @Test void validateVPAsJwtWithInvalidSignatureAndInValidAudienceAndExpiryDateValidation() throws JsonProcessingException, DidDocumentResolverNotRegisteredException, JwtException, InterruptedException { //create VP - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String audience = "companyA"; ResponseEntity vpResponse = createBpnVCAsJwt(bpn, audience); Map body = vpResponse.getBody(); try (MockedConstruction mocked = Mockito.mockConstruction(SignedJwtVerifier.class)) { - DidDocumentResolverRegistry didDocumentResolverRegistry = Mockito.mock(DidDocumentResolverRegistry.class); - SignedJwtVerifier signedJwtVerifier = new SignedJwtVerifier(didDocumentResolverRegistry); + DidResolver didResolver = Mockito.mock(DidResolver.class); + SignedJwtVerifier signedJwtVerifier = new SignedJwtVerifier(didResolver); Mockito.doThrow(new JwtException("invalid")).when(signedJwtVerifier).verify(Mockito.any(SignedJWT.class)); @@ -148,7 +148,7 @@ void validateVPAsJwtWithInvalidSignatureAndInValidAudienceAndExpiryDateValidatio @Test void validateVPAsJwtWithValidAudienceAndDateValidation() throws JsonProcessingException { //create VP - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String audience = "companyA"; ResponseEntity vpResponse = createBpnVCAsJwt(bpn, audience); Map body = vpResponse.getBody(); @@ -165,7 +165,7 @@ void validateVPAsJwtWithValidAudienceAndDateValidation() throws JsonProcessingEx @Test void validateVPAsJwtWithInValidVCDateValidation() throws JsonProcessingException { //create VP - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String audience = "companyA"; ResponseEntity vpResponse = getIssueVPRequestWithShortExpiry(bpn, audience); @@ -182,7 +182,7 @@ void validateVPAsJwtWithInValidVCDateValidation() throws JsonProcessingException @Test void createPresentationAsJWT201() throws JsonProcessingException, ParseException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String audience = "companyA"; ResponseEntity vpResponse = createBpnVCAsJwt(bpn, audience); @@ -212,7 +212,7 @@ private ResponseEntity createBpnVCAsJwt(String bpn, String audience) throws @Test void createPresentationAsJsonLD201() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String didWeb = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); Map request = getIssueVPRequest(bpn); @@ -229,12 +229,12 @@ void createPresentationAsJsonLD201() throws JsonProcessingException { @Test void createPresentationWithInvalidBPNAccess403() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String didWeb = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); Map request = getIssueVPRequest(bpn); - HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders("invalid bpn"); + HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(TestUtils.getRandomBpmNumber()); headers.put(HttpHeaders.CONTENT_TYPE, List.of(MediaType.APPLICATION_JSON_VALUE)); HttpEntity entity = new HttpEntity<>(objectMapper.writeValueAsString(request), headers); @@ -319,4 +319,4 @@ private ResponseEntity issueVC(String bpn, String holderDid, String issu HttpEntity entity = new HttpEntity<>(map, headers); return restTemplate.exchange(RestURI.ISSUERS_CREDENTIALS + "?holderDid={did}", HttpMethod.POST, entity, String.class, holderDid); } -} \ No newline at end of file +} diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java index 850929748..ae034efee 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java @@ -47,6 +47,7 @@ import org.json.JSONObject; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -56,7 +57,10 @@ import org.springframework.test.context.ContextConfiguration; import java.net.URI; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = {ManagedIdentityWalletsApplication.class}) @@ -109,7 +113,7 @@ void authorityWalletExistTest() { @Test void createWalletTest403() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Wallet"; HttpHeaders headers = AuthenticationUtils.getInvalidUserHttpHeaders(); @@ -123,7 +127,7 @@ void createWalletTest403() { @Test void createWalletTestWithUserToken403() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Wallet"; HttpHeaders headers = AuthenticationUtils.getValidUserHttpHeaders(bpn); @@ -135,11 +139,21 @@ void createWalletTestWithUserToken403() { Assertions.assertEquals(HttpStatus.FORBIDDEN.value(), response.getStatusCode().value()); } + @Test + @DisplayName("Create wallet with invalid BPN, it should return 400 ") + void createWalletWithInvalidBPNTest400() throws JsonProcessingException, JSONException { + String bpn = "invalid bpn"; + String name = "Sample Wallet"; + String baseBpn = miwSettings.authorityWalletBpn(); + + ResponseEntity response = TestUtils.createWallet(bpn, name, restTemplate, baseBpn); + Assertions.assertEquals(HttpStatus.BAD_REQUEST.value(), response.getStatusCode().value()); + } @Test void createWalletTest201() throws JsonProcessingException, JSONException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Wallet"; String baseBpn = miwSettings.authorityWalletBpn(); @@ -199,7 +213,7 @@ void createWalletTest201() throws JsonProcessingException, JSONException { @Test void storeCredentialsTest201() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String baseBpn = miwSettings.authorityWalletBpn(); @@ -277,7 +291,7 @@ void storeCredentialsWithDifferentBPNAccess403() throws JsonProcessingException @Test void storeCredentialsWithDifferentHolder403() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String baseBpn = miwSettings.authorityWalletBpn(); TestUtils.createWallet(bpn, "name", restTemplate, baseBpn); @@ -293,7 +307,7 @@ void storeCredentialsWithDifferentHolder403() throws JsonProcessingException { @Test void createWalletWithDuplicateBpn409() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Wallet"; String baseBpn = miwSettings.authorityWalletBpn(); @@ -309,7 +323,7 @@ void createWalletWithDuplicateBpn409() throws JsonProcessingException { @Test void getWalletByIdentifierTest403() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); HttpHeaders headers = AuthenticationUtils.getInvalidUserHttpHeaders(); HttpEntity entity = new HttpEntity<>(headers); @@ -321,7 +335,7 @@ void getWalletByIdentifierTest403() { @Test void getWalletByIdentifierWithInvalidBPNTest403() { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String baseBpn = miwSettings.authorityWalletBpn(); TestUtils.createWallet(bpn, "sample name", restTemplate, baseBpn); @@ -337,7 +351,7 @@ void getWalletByIdentifierWithInvalidBPNTest403() { @Test void getWalletByIdentifierBPNTest200() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Name"; String baseBpn = miwSettings.authorityWalletBpn(); @@ -360,7 +374,7 @@ void getWalletByIdentifierBPNTest200() throws JsonProcessingException { @Test void getWalletByIdentifierBPNWithCredentialsTest200() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Name"; String did = DidWebFactory.fromHostnameAndPath(miwSettings.host(), bpn).toString(); String baseBpn = miwSettings.authorityWalletBpn(); @@ -390,7 +404,7 @@ void getWalletByIdentifierBPNWithCredentialsTest200() throws JsonProcessingExcep @Disabled("the endpoint has an issue that prevents resolving did with a port number") void getWalletByIdentifierDidTest200() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Name"; String baseBpn = miwSettings.authorityWalletBpn(); @@ -415,7 +429,7 @@ void getWalletInvalidBpn404() { HttpEntity entity = new HttpEntity<>(headers); - ResponseEntity response = restTemplate.exchange(RestURI.API_WALLETS_IDENTIFIER, HttpMethod.GET, entity, Wallet.class, UUID.randomUUID().toString()); + ResponseEntity response = restTemplate.exchange(RestURI.API_WALLETS_IDENTIFIER, HttpMethod.GET, entity, Wallet.class, TestUtils.getRandomBpmNumber()); Assertions.assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode().value()); } @@ -435,7 +449,7 @@ void getWallets403() { @Test void getWallets200() throws JsonProcessingException { - String bpn = UUID.randomUUID().toString(); + String bpn = TestUtils.getRandomBpmNumber(); String name = "Sample Name"; String baseBpn = miwSettings.authorityWalletBpn(); //Create entry