## KeyMaster
A Simple Gradle plugin to help you sign your jars.
***
### Getting Started
To get started, you will a GPG key. If you already have this, you can skip it.
In a terminal, or in command line, run the following commands:
```bash
# generate the keys
gpg --gen-key
#export the private key with the specified id to a file
gpg --output {private key file name and path} --armor --export-secret-keys {key-id}
#export the public key with the specified id to a file
gpg --output {public key file name and path} --armor --export {key-id}
```
Answer the required questions, and your file will be generated once completed.
Copy this file to a safe directory, somewhere you can access it easily. KEEP IT OUT OF YOUR GIT REPO
### Installing the plugin
Groovy DSL
To use this plugin inside your project, first you have to add our maven.
To do this, open up `settings.gradle` and add the following:
```groovy
pluginManagement {
repositories {
gradlePluginPortal()
maven {
url "https://maven.firstdark.dev/releases"
}
}
}
```
Next, in your `build.gradle` add:

```groovy
plugins {
id "dev.firstdark.keymaster" version "VERSION"
}
```
Replace VERSION with the version above.
Finally, add the following to `build.gradle` file:
```groovy
import dev.firstdark.keymaster.tasks.SignJarTask
// This is optional. These values can be configured on the task
keymaster {
// GPG Password
gpgPassword = "123456"
// GPG Key file, or String.
gpgKey = System.getenv("GPG_KEY")
// Generate a .sig file for signed jars, to be used for verification
generateSignature = true
}
// Register a custom task to sign your jar
tasks.register('signJar', SignJarTask) {
// Depend on the task used to build your project
dependsOn jar
// The input artifact. This can be a Task, File or File Name
artifactInput = jar
// Optional. Set the output name of the signed jar. This defaults to the artifactInput file name, and will overwrite it
outputFileName = "testsign"
// GPG Private key file or string. Not required when the extension is used
gpgKey = System.getenv("GPG_KEY")
// GPG Private Key password. Not required when extension is used
gpgPassword = "123456"
// Should the task generate a .sig file. Defaults to true, and not required when extension is used
generateSignature = false
}
```
That's all there is to it. You can use this custom task as an input for maven publishing, [modpublisher](https://github.com/firstdarkdev/modpublisher) or any other task that takes in a file
Kotlin DSL
To use this plugin inside your project, first you have to add our maven.
To do this, open up `settings.gradle.kts` and add the following:
```kotlin
pluginManagement {
repositories {
gradlePluginPortal()
maven {
url = uri("https://maven.firstdark.dev/releases")
}
}
}
```
Next, in your `build.gradle.kts` add:

```kotlin
plugins {
id("com.hypherionmc.modutils.modpublisher") version "VERSION"
}
```
Replace VERSION with the version above.
Finally, add the following to `build.gradle.kts` file:
```kotlin
import dev.firstdark.keymaster.tasks.SignJarTask
import org.gradle.kotlin.dsl.register
// This is optional. These values can be configured on the task
extensions.configure("keymaster") {
// GPG Password
gpgPassword = "123456"
// GPG Key file, or String.
gpgKey = System.getenv("GPG_KEY")
// Generate a .sig file for signed jars, to be used for verification
generateSignature = true
}
// Register a custom task to sign your jar
tasks.register("signJar", SignJarTask::class) {
// Depend on the task used to build your project
dependsOn(tasks.jar)
// The input artifact. This can be a Task, File or File Name
artifactInput = tasks.jar
// Optional. Set the output name of the signed jar. This defaults to the artifactInput file name, and will overwrite it
outputFileName = "testsign"
// GPG Private key file or string. Not required when the extension is used
gpgKey = System.getenv("GPG_KEY")
// GPG Private Key password. Not required when extension is used
gpgPassword = "123456"
// Should the task generate a .sig file. Defaults to true, and not required when extension is used
generateSignature = false
}
```
That's all there is to it. You can use this custom task as an input for maven publishing, [modpublisher](https://github.com/firstdarkdev/modpublisher) or any other task that takes in a file
***
If you need any other help, open an issue, or visit us on [Discord](https://discord.firstdark.dev)