<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ SPDX-FileCopyrightText: 2025 Swiss Confederation
  ~
  ~ SPDX-License-Identifier: MIT
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- CAUTION Until 1.3.0 (GitHub packages), the "groupId" was set to "ch.admin.bj.swiyu".
                 For the sake of Maven Central publishing, it must now match the Maven Central namespace -->
    <!-- CAUTION Until 1.8.0, the "groupId" was set to "io.github.swiyu-admin-ch" -->
    <groupId>ch.admin.swiyu</groupId>

    <artifactId>didtoolbox</artifactId>
    <version>1.9.0</version>
    <packaging>jar</packaging>

    <!-- required by https://central.sonatype.org/publish/requirements/ -->
    <name>${project.groupId}:${project.artifactId}</name>
    <description>DID toolbox built for swiyu, the Swiss e-ID Trust Infrastructure</description>
    <url>https://github.com/swiyu-admin-ch/didtoolbox-java</url>

    <!-- required by https://central.sonatype.org/publish/requirements/ -->
    <licenses>
        <license>
            <name>MIT License</name>
            <url>http://www.opensource.org/licenses/mit</url>
        </license>
    </licenses>

    <!-- required by https://central.sonatype.org/publish/requirements/ -->
    <developers>
        <developer>
            <name>Swiyu Omni Developers</name>
            <organization>Swiyu</organization>
            <organizationUrl>https://github.com/swiyu-admin-ch</organizationUrl>
        </developer>
    </developers>

    <!-- required by https://central.sonatype.org/publish/requirements/ -->
    <scm>
        <connection>scm:git:git://github.com/swiyu-admin-ch/didtoolbox-java.git</connection>
        <developerConnection>scm:git:ssh://github.com:swiyu-admin-ch/didtoolbox-java.git</developerConnection>
        <url>https://github.com/swiyu-admin-ch/didtoolbox-java/tree/main</url>
    </scm>

    <issueManagement>
        <system>github</system>
        <url>https://github.com/swiyu-admin-ch/didtoolbox-java/issues</url>
    </issueManagement>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <maven.compiler.release>21</maven.compiler.release>

        <project.main.class>ch.admin.bj.swiyu.didtoolbox.Main</project.main.class>
        <!--project.dependencies.directory>lib/</project.dependencies.directory-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <didresolver.version>2.6.0</didresolver.version>
        <jna.version>5.18.1</jna.version>
        <gson.version>2.13.2</gson.version>
        <java-multibase.version>1.3.0</java-multibase.version>
        <lombok.version>1.18.42</lombok.version>
        <jcommander.version>3.0</jcommander.version>
        <bouncycastle.version>1.83</bouncycastle.version>
        <nimbus-jose-jwt.version>10.8</nimbus-jose-jwt.version>
        <tink.version>1.20.0</tink.version>
        <junit-jupiter.version>6.0.3</junit-jupiter.version>
        <junit-pioneer.version>2.3.0</junit-pioneer.version>
    </properties>

    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.5.5</version>
                <configuration>
                    <!-- Equiv. to JAVA_TOOL_OPTIONS=-enable-preview mvn ... -->
                    <!-- See also https://junit-pioneer.org/docs/environment-variables/#warnings-for-reflective-access -->
                    <argLine>
                        --enable-preview
                        --add-opens java.base/java.util=ALL-UNNAMED
                        --add-opens java.base/java.lang=ALL-UNNAMED
                    </argLine>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>3.5.5</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>3.6.3</version>
                <configuration>
                    <mainClass>Main</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.15.0</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <release>${maven.compiler.release}</release>
                    <!-- CAUTION preview language features are only supported for release 23 -->
                    <!--enablePreview>true</enablePreview-->
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <!--plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.4.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>${project.dependencies.directory}</classpathPrefix>
                            <mainClass>${project.main.class}</mainClass>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.7.1</version>
                <executions>
                    <execution>
                        <id>copy-all-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/${project.dependencies.directory}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.8.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <!-- See https://maven.apache.org/shared/maven-archiver/index.html#class_manifest -->
                                <manifest>
                                    <mainClass>${project.main.class}</mainClass>
                                    <addDefaultEntries>true</addDefaultEntries>
                                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                    <addBuildEnvironmentEntries>true</addBuildEnvironmentEntries>
                                </manifest>
                                <!-- See https://maven.apache.org/shared/maven-archiver/index.html#class_manifestSection -->
                                <manifestEntries>
                                    <!--
                                    Ensure the Securosys Primus libs are available for a Class.forName() reflection call.
                                    CAUTION (according to https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html#A1100762):
                                            "... class path wild cards are not honored in the Class-Path jar-manifest header."
                                    Alternatively, use "-Xbootclasspath/a:directories|zip|JAR-files" option of the java command
                                    (https://docs.oracle.com/en/java/javase/24/docs/specs/man/java.html#extra-options-for-java)
                                    to supply the Securosys Primus libs (append them to the default bootstrap classpath) e.g.
                                            java -Xbootclasspath/a:lib/primusX-java11.jar:lib/primusX-java8.jar -jar didtoolbox.jar ...
                                    -->
                                    <Class-Path>lib/primusX-java8.jar lib/primusX-java11.jar</Class-Path>
                                    <!-- Enable native access for all code on the classpath (including the code in the executable JAR itself)
                                         to avoid a warning for callers in the module, as required by the latest JDKs - from the JDK 24 onwards (JEP 472) -->
                                    <Enable-Native-Access>ALL-UNNAMED</Enable-Native-Access>
                                    <Build-Time>${maven.build.timestamp}</Build-Time>
                                </manifestEntries>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>package</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.12.0</version>
                <configuration>
                    <show>public</show>
                    <!--nohelp>true</nohelp-->
                    <failOnError>false</failOnError>
                    <failOnWarnings>false</failOnWarnings>
                </configuration>
                <executions>
                    <execution>
                        <id>javadoc-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.4.0</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>license-maven-plugin</artifactId>
                <version>2.7.1</version>
                <executions>
                    <execution>
                        <id>add-third-party</id>
                        <goals>
                            <!-- as described here: https://www.mojohaus.org/license-maven-plugin/add-third-party-mojo.html -->
                            <goal>add-third-party</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.basedir}</outputDirectory>
                            <!-- as specified here: https://confluence.bit.admin.ch/display/EIDTEAM/THIRD-PARTY-LICENSES.md -->
                            <thirdPartyFilename>THIRD-PARTY-LICENSES.md</thirdPartyFilename>
                            <!-- inspired by https://github.com/mojohaus/license-maven-plugin/blob/master/src/main/resources/org/codehaus/mojo/license/third-party-file-groupByLicense.ftl -->
                            <fileTemplate>${project.basedir}/src/main/resources/org/codehaus/mojo/license/third-party-file-groupByLicense.ftl</fileTemplate>
                            <acceptPomPackaging>true</acceptPomPackaging>
                            <licenseMerges>
                                <licenseMerge>Apache License, Version 2.0|The Apache License, Version 2.0|The Apache Software License, Version 2.0|Apache 2.0|Apache-2.0</licenseMerge>
                                <licenseMerge>MIT License|The MIT License</licenseMerge>
                            </licenseMerges>
                            <excludedGroups>^ch\.admin</excludedGroups>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>3.2.8</version>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <gpgArguments>
                        <arg>--pinentry-mode</arg>
                        <arg>loopback</arg>
                    </gpgArguments>
                </configuration>
            </plugin>
            <!-- see https://central.sonatype.org/publish/publish-portal-maven/ -->
            <plugin>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>0.10.0</version>
                <extensions>true</extensions>
                <configuration>
                    <publishingServerId>central</publishingServerId>
                    <autoPublish>true</autoPublish>
                    <waitUntil>published</waitUntil>
                    <checksums>required</checksums>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.28.0</version>
                <configuration>
                    <printFailingErrors>true</printFailingErrors>
                    <linkXRef>false</linkXRef>
                    <failOnViolation>true</failOnViolation>
                    <failurePriority>2</failurePriority>
                    <rulesets>
                        <ruleset>.github/rulesets/java/pmd_omni_ruleset.xml</ruleset>
                    </rulesets>
                    <includeTests>false</includeTests>
                </configuration>
            </plugin>
            <!-- https://devlauer.github.io/plantuml-generator/plantuml-generator-maven-plugin/latest/class-diagram/examples.html -->
            <!-- mvn generate-test-sources -->
            <!-- https://mvnrepository.com/artifact/de.elnarion.maven/plantuml-generator-maven-plugin -->
            <plugin>
                <groupId>de.elnarion.maven</groupId>
                <artifactId>plantuml-generator-maven-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <!-- sequence diagrams -->
                    <execution>
                        <id>generate-sequence-diagram-DidLogCreatorContext-create</id>
                        <goals>
                            <goal>generateSequenceDiagram</goal>
                        </goals>
                        <phase>generate-test-sources</phase>
                        <configuration>
                            <outputDirectory>${basedir}/src/main/plantuml</outputDirectory>
                            <outputFilename>DidLogCreatorContext-create.puml</outputFilename>
                            <startClass>ch.admin.bj.swiyu.didtoolbox.context.DidLogCreatorContext</startClass>
                            <startMethod>create</startMethod>
                            <classBlacklistRegexp>.*Builder*.*|.*Companion*.*|.*Uniffi*.*|.*Ffi*.*|.*Kt*.*|.*google*.*</classBlacklistRegexp>
                            <enableMarkdownWrapper>true</enableMarkdownWrapper>
                            <!--ignoreStandardClasses>true</ignoreStandardClasses-->
                            <showReturnTypes>true</showReturnTypes>
                            <!--hideMethodName>true</hideMethodName>
                            <hideSuperClass>true</hideSuperClass-->
                            <useShortClassNames>false</useShortClassNames>
                        </configuration>
                    </execution>
                    <execution>
                        <id>generate-simple-diagram-DidLogUpdaterContext-update</id>
                        <goals>
                            <goal>generateSequenceDiagram</goal>
                        </goals>
                        <phase>generate-test-sources</phase>
                        <configuration>
                            <outputDirectory>${basedir}/src/main/plantuml</outputDirectory>
                            <outputFilename>DidLogUpdaterContext-update.puml</outputFilename>
                            <startClass>ch.admin.bj.swiyu.didtoolbox.context.DidLogUpdaterContext</startClass>
                            <startMethod>update</startMethod>
                            <classBlacklistRegexp>.*Builder*.*|.*Companion*.*|.*Uniffi*.*|.*Ffi*.*|.*Kt*.*|.*google*.*</classBlacklistRegexp>
                            <enableMarkdownWrapper>true</enableMarkdownWrapper>
                            <!--ignoreStandardClasses>true</ignoreStandardClasses-->
                            <showReturnTypes>true</showReturnTypes>
                            <!--hideMethodName>true</hideMethodName>
                            <hideSuperClass>true</hideSuperClass-->
                            <useShortClassNames>false</useShortClassNames>
                        </configuration>
                    </execution>
                    <execution>
                        <id>generate-simple-diagram-DidLogDeactivatorContext-update</id>
                        <goals>
                            <goal>generateSequenceDiagram</goal>
                        </goals>
                        <phase>generate-test-sources</phase>
                        <configuration>
                            <outputDirectory>${basedir}/src/main/plantuml</outputDirectory>
                            <outputFilename>DidLogDeactivatorContext-deactivate.puml</outputFilename>
                            <startClass>ch.admin.bj.swiyu.didtoolbox.context.DidLogDeactivatorContext</startClass>
                            <startMethod>deactivate</startMethod>
                            <classBlacklistRegexp>.*Builder*.*|.*Companion*.*|.*Uniffi*.*|.*Ffi*.*|.*Kt*.*|.*google*.*</classBlacklistRegexp>
                            <enableMarkdownWrapper>true</enableMarkdownWrapper>
                            <!--ignoreStandardClasses>true</ignoreStandardClasses-->
                            <showReturnTypes>true</showReturnTypes>
                            <!--hideMethodName>true</hideMethodName>
                            <hideSuperClass>true</hideSuperClass-->
                            <useShortClassNames>false</useShortClassNames>
                        </configuration>
                    </execution>
                    <!-- class diagrams -->
                    <execution>
                        <id>generate-diagram-didtoolbox-api-classes-only</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <phase>generate-test-sources</phase>
                        <configuration>
                            <outputDirectory>${basedir}/src/main/plantuml</outputDirectory>
                            <outputFilename>didtoolbox-api-classes-only.puml</outputFilename>
                            <scanPackages>
                                <scanPackage>ch.admin.bj.swiyu.didtoolbox</scanPackage>
                                <!--scanPackage>ch.admin.bj.swiyu.didtoolbox.context</scanPackage-->
                            </scanPackages>
                            <maxVisibilityFields>PROTECTED</maxVisibilityFields>
                            <maxVisibilityMethods>PROTECTED</maxVisibilityMethods>
                            <fieldClassifierListToIgnore>
                                <fieldClassifierListToIgnore>STATIC</fieldClassifierListToIgnore>
                            </fieldClassifierListToIgnore>
                            <!--methodClassifierListToIgnore>STATIC</methodClassifierListToIgnore-->
                            <hideFields>true</hideFields>
                            <hideMethods>true</hideMethods>
                            <!--useShortClassNames>true</useShortClassNames-->
                            <!--useShortClassNamesInFieldsAndMethods>true</useShortClassNamesInFieldsAndMethods-->
                            <blacklistRegexp>.*.jcommander.*|.*Util*.*|.*FilesPrivacy*.*|.*Tdw*.*|.*WebVerifiableHistory*.*|*.*ContextBuilder.*</blacklistRegexp>
                            <whitelistRegexp>.*VerificationMethodKeyProvider.*|.*.vc_data_integrity.*|.*.context.*|.*Enum*.*|.*.model.*DidMethodParameter*.*|.*.model.*Verification*.*</whitelistRegexp>
                            <enableMarkdownWrapper>true</enableMarkdownWrapper>
                            <additionalPlantUmlConfigs>
                                <!-- see https://pdf.plantuml.net/PlantUML_Language_Reference_Guide_en.pdf -->
                                <!--additionalPlantUmlConfig>header some header</additionalPlantUmlConfig>
                                <additionalPlantUmlConfig>footer some footer</additionalPlantUmlConfig>
                                <additionalPlantUmlConfig>title context package</additionalPlantUmlConfig>
                                <additionalPlantUmlConfig>caption some caption</additionalPlantUmlConfig-->
                                <additionalPlantUmlConfig>left to right direction</additionalPlantUmlConfig>
                                <!--additionalPlantUmlConfig>scale 2/3</additionalPlantUmlConfig-->
                            </additionalPlantUmlConfigs>
                        </configuration>
                    </execution>
                    <execution>
                        <id>generate-diagram-didtoolbox-api</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <phase>generate-test-sources</phase>
                        <configuration>
                            <outputDirectory>${basedir}/src/main/plantuml</outputDirectory>
                            <outputFilename>didtoolbox-api.puml</outputFilename>
                            <scanPackages>
                                <scanPackage>ch.admin.bj.swiyu.didtoolbox</scanPackage>
                                <!--scanPackage>ch.admin.bj.swiyu.didtoolbox.context</scanPackage-->
                            </scanPackages>
                            <maxVisibilityFields>PROTECTED</maxVisibilityFields>
                            <maxVisibilityMethods>PROTECTED</maxVisibilityMethods>
                            <fieldClassifierListToIgnore>
                                <fieldClassifierListToIgnore>STATIC</fieldClassifierListToIgnore>
                            </fieldClassifierListToIgnore>
                            <!--methodClassifierListToIgnore>STATIC</methodClassifierListToIgnore-->
                            <!--hideFields>true</hideFields>
                            <hideMethods>true</hideMethods-->
                            <!--useShortClassNames>true</useShortClassNames-->
                            <!--useShortClassNamesInFieldsAndMethods>true</useShortClassNamesInFieldsAndMethods-->
                            <blacklistRegexp>.*.jcommander.*|.*Util*.*|.*FilesPrivacy*.*|.*Tdw*.*|.*WebVerifiableHistory*.*|*.*ContextBuilder.*</blacklistRegexp>
                            <whitelistRegexp>.*VerificationMethodKeyProvider.*|.*.vc_data_integrity.*|.*.context.*|.*Enum*.*|.*.model.*DidMethodParameter*.*|.*.model.*Verification*.*</whitelistRegexp>
                            <enableMarkdownWrapper>true</enableMarkdownWrapper>
                            <additionalPlantUmlConfigs>
                                <!-- see https://pdf.plantuml.net/PlantUML_Language_Reference_Guide_en.pdf -->
                                <!--additionalPlantUmlConfig>header some header</additionalPlantUmlConfig>
                                <additionalPlantUmlConfig>footer some footer</additionalPlantUmlConfig>
                                <additionalPlantUmlConfig>title context package</additionalPlantUmlConfig>
                                <additionalPlantUmlConfig>caption some caption</additionalPlantUmlConfig-->
                                <additionalPlantUmlConfig>left to right direction</additionalPlantUmlConfig>
                                <!--additionalPlantUmlConfig>scale 2/3</additionalPlantUmlConfig-->
                            </additionalPlantUmlConfigs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>github-didtoolbox-java</id>
            <repositories>
                <repository>
                    <id>github-didtoolbox-java</id>
                    <url>https://maven.pkg.github.com/swiyu-admin-ch/didtoolbox-java</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>

    <!--distributionManagement>
        <repository>
            <id>github-didtoolbox-java</id>
            <name>Github</name>
            <url>https://maven.pkg.github.com/swiyu-admin-ch/didtoolbox-java</url>
        </repository>
        <snapshotRepository>
            <id>github-didtoolbox-java</id>
            <url>https://maven.pkg.github.com/swiyu-admin-ch/didtoolbox-java</url>
        </snapshotRepository>
    </distributionManagement-->

    <repositories>
        <!-- required for https://github.com/multiformats/java-multibase
             as described by https://jitpack.io/#multiformats/java-multibase/ -->
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <!-- CAUTION Until 2.0.1 (GitHub packages), the "groupId" was set to "ch.admin.eid".
                         For the sake of Maven Central publishing, it must now match the Maven Central namespace. -->
            <!-- https://mvnrepository.com/artifact/io.github.swiyu-admin-ch/didresolver -->
            <groupId>io.github.swiyu-admin-ch</groupId>
            <artifactId>didresolver</artifactId>
            <version>${didresolver.version}</version>
        </dependency>
        <!-- MANDATORY (required by didresolver) -->
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>${jna.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>${gson.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.multiformats/java-multibase -->
        <dependency>
            <groupId>com.github.multiformats</groupId>
            <artifactId>java-multibase</artifactId>
            <version>${java-multibase.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on -->
        <!-- https://www.bouncycastle.org/download/bouncy-castle-java/?filter=java%3Drelease-1-81 -->
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk18on</artifactId>
            <version>${bouncycastle.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on -->
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-jdk18on</artifactId>
            <version>${bouncycastle.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcutil-jdk18on -->
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcutil-jdk18on</artifactId>
            <version>${bouncycastle.version}</version>
            <optional>true</optional>
        </dependency>
        <!-- Securosys Primus HSM (JCE security provider) -->
        <!-- https://nexus.bit.admin.ch/#browse/browse:bit-pki-raw-hosted:securosys%2Fjce-provider -->
        <!-- CAUTION using local Maven repo instead, so it becomes integral part of the "fat" jar
            mvn install:install-file -Dfile=lib/primusX-java11.jar -DgroupId=com.securosys.primus -DartifactId=jce -Dversion=2.4.4 -Dpackaging=jar -DlocalRepositoryPath=$HOME/.m2/repository
            -->
        <!-- CAUTION Otherwise, to prevent com.securosys.primus packages to end up in the "fat" JAR (didtoolbox-x.y.z-jar-with-dependencies.jar) set:
             <scope>test</scope>
            -->
        <!--dependency>
            <groupId>com.securosys.primus</groupId>
            <artifactId>jce</artifactId>
            <version>2.4.4</version>
            <scope>test</scope>
        </dependency-->
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.jcommander/jcommander -->
        <dependency>
            <groupId>org.jcommander</groupId>
            <artifactId>jcommander</artifactId>
            <version>${jcommander.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.nimbusds/nimbus-jose-jwt -->
        <dependency>
            <groupId>com.nimbusds</groupId>
            <artifactId>nimbus-jose-jwt</artifactId>
            <version>${nimbus-jose-jwt.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.crypto.tink/tink
            Required by com.nimbusds.jose.crypto.Ed25519Signer -->
        <dependency>
            <groupId>com.google.crypto.tink</groupId>
            <artifactId>tink</artifactId>
            <version>${tink.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>${junit-jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit-pioneer/junit-pioneer -->
        <dependency>
            <groupId>org.junit-pioneer</groupId>
            <artifactId>junit-pioneer</artifactId>
            <version>${junit-pioneer.version}</version>
            <scope>test</scope>
            <exclusions>
                <!-- includes a junit-platform-launcher that's too old for junit6 -->
                <exclusion>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-launcher</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.19.2</version>
        </dependency>
    </dependencies>
</project>