glassless-provider
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>net.glassless</groupId>
<artifactId>glassless-provider</artifactId>
<version>0.13.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.glassless</groupId>
<artifactId>glassless-provider</artifactId>
<version>0.13.0</version>
<packaging>jar</packaging>
<name>GlaSSLess Provider</name>
<description>A JCA security provider that delegates cryptographic operations to OpenSSL via the Foreign Function and Memory API</description>
<url>https://github.com/glassless-security/glassless</url>
<inceptionYear>2026</inceptionYear>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>tristantarrant</id>
<name>Tristan Tarrant</name>
<email>tristan@infinispan.org</email>
</developer>
</developers>
<scm>
<connection>scm:git:git://github.com/tristantarrant/glassless.git</connection>
<developerConnection>scm:git:ssh://github.com:tristantarrant/glassless.git</developerConnection>
<url>https://github.com/tristantarrant/glassless/tree/main</url>
</scm>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/tristantarrant/glassless/issues</url>
</issueManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.outputTimestamp>2026-04-20T11:24:28Z</project.build.outputTimestamp>
<maven.compiler.release>25</maven.compiler.release>
<!-- Dependency versions -->
<bc-fips.version>2.1.2</bc-fips.version>
<bcprov.version>1.84</bcprov.version>
<jmh.include>.*Benchmark.*</jmh.include>
<jmh.version>1.37</jmh.version>
<junit.version>6.0.3</junit.version>
<!-- Plugin versions -->
<version.central-publishing-maven-plugin>0.10.0</version.central-publishing-maven-plugin>
<version.docker-maven-plugin>0.48.1</version.docker-maven-plugin>
<version.exec-maven-plugin>3.5.0</version.exec-maven-plugin>
<version.git-commit-id-maven-plugin>9.1.0</version.git-commit-id-maven-plugin>
<version.maven-compiler-plugin>3.15.0</version.maven-compiler-plugin>
<version.maven-gpg-plugin>3.2.8</version.maven-gpg-plugin>
<version.maven-jar-plugin>3.5.0</version.maven-jar-plugin>
<version.maven-javadoc-plugin>3.12.0</version.maven-javadoc-plugin>
<version.maven-source-plugin>3.4.0</version.maven-source-plugin>
<version.maven-surefire-plugin>3.5.5</version.maven-surefire-plugin>
<version.pmd>7.23.0</version.pmd>
<version.maven-pmd-plugin>3.28.0</version.maven-pmd-plugin>
<version.error-prone>2.48.0</version.error-prone>
<version.spotless-maven-plugin>3.4.0</version.spotless-maven-plugin>
<version.asciidoctor-maven-plugin>3.2.0</version.asciidoctor-maven-plugin>
<version.maven-assembly-plugin>3.8.0</version.maven-assembly-plugin>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
<version>${version.error-prone}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bc-fips</artifactId>
<version>${bc-fips.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>${bcprov.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Git commit info for reproducible builds -->
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<version>${version.git-commit-id-maven-plugin}</version>
<configuration>
<generateGitPropertiesFile>false</generateGitPropertiesFile>
<dateFormat>yyyy-MM-dd'T'HH:mm:ssXXX</dateFormat>
<includeOnlyProperties>
<includeOnlyProperty>git.commit.time</includeOnlyProperty>
<includeOnlyProperty>git.commit.id.abbrev</includeOnlyProperty>
</includeOnlyProperties>
</configuration>
<executions>
<execution>
<id>get-git-info</id>
<goals>
<goal>revision</goal>
</goals>
<phase>initialize</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${version.maven-compiler-plugin}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${version.error-prone}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-XDcompilePolicy=simple</arg>
<arg>--should-stop=ifError=FLOW</arg>
<arg>-Xplugin:ErrorProne -Xep:InconsistentCapitalization:OFF -Xep:ThreadPriorityCheck:OFF</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
</compilerArgs>
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.maven-surefire-plugin}</version>
<configuration>
<argLine>--enable-native-access=ALL-UNNAMED --add-opens java.base/sun.security.x509=ALL-UNNAMED --add-opens java.base/sun.security.tools.keytool=ALL-UNNAMED --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${version.maven-jar-plugin}</version>
<configuration>
<archive>
<manifest>
<mainClass>net.glassless.provider.GlaSSLessProvider</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Automatic-Module-Name>net.glassless.provider</Automatic-Module-Name>
<Enable-Native-Access>ALL-UNNAMED</Enable-Native-Access>
<Build-Revision>${git.commit.id.abbrev}</Build-Revision>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${version.spotless-maven-plugin}</version>
<configuration>
<!-- Use .editorconfig for common settings -->
<java>
<endWithNewline/>
<trimTrailingWhitespace/>
<indent>
<spaces>true</spaces>
<spacesPerTab>3</spacesPerTab>
</indent>
<importOrder>
<order>java,javax,org,com,net</order>
</importOrder>
<removeUnusedImports/>
</java>
<pom>
<includes>
<include>pom.xml</include>
</includes>
<sortPom>
<expandEmptyElements>false</expandEmptyElements>
<indentAttribute>schemaLocation</indentAttribute>
<nrOfIndentSpace>3</nrOfIndentSpace>
</sortPom>
</pom>
<formats>
<format>
<includes>
<include>*.xml</include>
<include>*.properties</include>
<include>*.yml</include>
<include>*.yaml</include>
</includes>
<excludes>
<exclude>pom.xml</exclude>
<exclude>target/**</exclude>
</excludes>
<endWithNewline/>
<trimTrailingWhitespace/>
</format>
</formats>
</configuration>
<executions>
<execution>
<id>spotless-check</id>
<goals>
<goal>check</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<!-- PMD static analysis -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${version.maven-pmd-plugin}</version>
<configuration>
<targetJdk>25</targetJdk>
<linkXRef>false</linkXRef>
<failOnViolation>false</failOnViolation>
</configuration>
<dependencies>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-core</artifactId>
<version>${version.pmd}</version>
</dependency>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-java</artifactId>
<version>${version.pmd}</version>
</dependency>
</dependencies>
</plugin>
<!-- AsciiDoc documentation -->
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<version>${version.asciidoctor-maven-plugin}</version>
<executions>
<execution>
<id>generate-docs</id>
<goals>
<goal>process-asciidoc</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<sourceDirectory>src/main/asciidoc</sourceDirectory>
<outputDirectory>${project.build.directory}/generated-docs</outputDirectory>
<backend>html5</backend>
<attributes>
<toc>left</toc>
<toclevels>3</toclevels>
<icons>font</icons>
<source-highlighter>highlight.js</source-highlighter>
<sectanchors>true</sectanchors>
<sectlinks>true</sectlinks>
<idprefix/>
<idseparator>-</idseparator>
<project-version>${project.version}</project-version>
</attributes>
</configuration>
</execution>
</executions>
</plugin>
<!-- Package documentation as JAR with classifier -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${version.maven-assembly-plugin}</version>
<executions>
<execution>
<id>docs-jar</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptors>
<descriptor>src/assembly/docs.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>asciidoc-sources-jar</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptors>
<descriptor>src/assembly/asciidoc-sources.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<!-- Generate source JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${version.maven-source-plugin}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Generate Javadoc JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${version.maven-javadoc-plugin}</version>
<configuration>
<doclint>none</doclint>
<quiet>true</quiet>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Sign artifacts with GPG -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${version.maven-gpg-plugin}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<goals>
<goal>sign</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<!-- Publish to Sonatype Central -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${version.central-publishing-maven-plugin}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
<waitUntil>published</waitUntil>
<waitMaxTime>60</waitMaxTime>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>fips</id>
<build>
<plugins>
<!-- Skip local tests — they run inside the FIPS container -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.maven-surefire-plugin}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${version.docker-maven-plugin}</version>
<configuration>
<images>
<image>
<name>glassless-fips:${project.version}</name>
<build>
<dockerFile>Containerfile.fips</dockerFile>
<contextDir>${project.basedir}</contextDir>
</build>
<run>
<wait>
<exit>0</exit>
<time>900000</time>
</wait>
<log>
<enabled>true</enabled>
<prefix>FIPS</prefix>
<color>cyan</color>
</log>
</run>
</image>
</images>
</configuration>
<executions>
<execution>
<id>build-fips-image</id>
<goals>
<goal>build</goal>
</goals>
<phase>pre-integration-test</phase>
</execution>
<execution>
<id>start-fips-container</id>
<goals>
<goal>start</goal>
</goals>
<phase>integration-test</phase>
</execution>
<execution>
<id>stop-fips-container</id>
<goals>
<goal>stop</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>benchmarks</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${version.exec-maven-plugin}</version>
<configuration>
<executable>java</executable>
<classpathScope>test</classpathScope>
<arguments>
<argument>--enable-native-access=ALL-UNNAMED</argument>
<argument>-classpath</argument>
<classpath/>
<argument>org.openjdk.jmh.Main</argument>
<argument>-rf</argument>
<argument>json</argument>
<argument>-rff</argument>
<argument>${project.build.directory}/jmh-results.json</argument>
<argument>${jmh.include}</argument>
</arguments>
</configuration>
<executions>
<execution>
<id>run-benchmarks</id>
<goals>
<goal>exec</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.maven-surefire-plugin}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- KDF benchmarks: uses bcprov (non-FIPS) instead of bc-fips to avoid signer conflict -->
<profile>
<id>benchmarks-kdf</id>
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>${bcprov.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Build classpath excluding bc-fips (signer conflict with bcprov) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>build-kdf-classpath</id>
<goals>
<goal>build-classpath</goal>
</goals>
<phase>process-test-classes</phase>
<configuration>
<outputProperty>kdf.classpath</outputProperty>
<excludeArtifactIds>bc-fips</excludeArtifactIds>
<includeScope>test</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${version.exec-maven-plugin}</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>--enable-native-access=ALL-UNNAMED</argument>
<argument>-classpath</argument>
<argument>${kdf.classpath}:${project.build.outputDirectory}:${project.build.testOutputDirectory}</argument>
<argument>org.openjdk.jmh.Main</argument>
<argument>-rf</argument>
<argument>json</argument>
<argument>-rff</argument>
<argument>${project.build.directory}/jmh-results.json</argument>
<argument>Argon2Benchmark</argument>
</arguments>
</configuration>
<executions>
<execution>
<id>run-kdf-benchmarks</id>
<goals>
<goal>exec</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.maven-surefire-plugin}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>