gurkeJavaImpl implements a Key Encapsulation Mechanism (KEM) called GURKE (Group Unidirectional Ratcheted Key Exchange) published by Daniel Collins and Paul Rösler.
Project is configured to use Java 21 for source and target compilation. Development environment is setup with Java version 23.0.2 running on Windows 11
Apache Maven 3.9.9 is used for project building, dependency resolution, and running tests. The project follows Maven conventions with a pom.xml file.
The project structure follows standard Maven conventions, with source code organized in a Java package structure. Build output in target directory.
Here is the sample structure of the project:
pom.xml
README.md
src/
├── main/
│ └── java/
│ └── com/
│ └── gurkePrj/
│ ├── signatureScheme/
│ │ └── SignatureScheme.java
│ └── s_MSMR/
│ └── S_MSMR.java
└── test/
└── java/
└── com/
└── gurkePrj/
└── TestSignature/
└── TestSignatureScheme.java
└── TestS_MSMR/
└── TestS_MSMR_init.java
Testing uses JUnit Jupiter 5.8.2 (modern) and for deprecated format it seems to use JUnit 3.8.1 (legacy).
Jacoco Maven Plugin provides a code coverage automatically if the build is executed successfully. Coverage reports will be generated in \target\site\jacoco
-
Clone the Repository
git clone https://github.com/pmvdsaibaba/gurkeJavaImpl.git
-
Install Dependencies
- Make sure you have Maven and Java installed.
- The project uses BouncyCastle for cryptography (see
pom.xml).
-
Build the Project To build this project execute the following command in the repository root folder.
mvn clean install -U
-
Run Tests
mvn testRun Specific Test
mvn -Dtest=TestClassName testExample: mvn -Dtest=TestTreeAddEk test
- Java JDK 21+
- Maven
- BouncyCastle (for cryptographic operations)
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
For questions, contact [saibaba.pothula@gmail.com].