diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
deleted file mode 100644
index b7fd1c3..0000000
--- a/dependency-reduced-pom.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
- 4.0.0
- eu.m724
- realweather
- 0.9-SNAPSHOT
-
-
-
- true
- src/main/resources
-
-
-
-
- maven-shade-plugin
- 3.6.0
-
-
- package
-
- shade
-
-
-
-
- eu.m724:wtapi
- org.java-websocket:Java-WebSocket
-
-
-
-
- eu.m724:*
-
- META-INF/MANIFEST.MF
-
-
-
- true
-
-
-
-
-
-
-
-
- spigot-repo
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/
-
-
- 724rocks
- https://git.724.rocks/api/packages/Minecon724/maven
-
-
-
-
- org.spigotmc
- spigot-api
- 1.20.6-R0.1-SNAPSHOT
- provided
-
-
-
- 17
- 17
-
-
diff --git a/pom.xml b/pom.xml
index cd79c05..3b42290 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,9 @@
17
17
+ ${project.basedir}/testkeystore
+ testkey
+ 123456
@@ -68,10 +71,35 @@
true
+ false
+
+ org.apache.maven.plugins
+ maven-jarsigner-plugin
+ 3.0.0
+
+
+ sign
+
+ sign
+
+
+
+ verify
+
+ verify
+
+
+
+
+ ${jarsigner.keystore}
+ ${jarsigner.alias}
+ ${jarsigner.storepass}
+
+
diff --git a/src/main/java/eu/m724/realweather/RealWeatherPlugin.java b/src/main/java/eu/m724/realweather/RealWeatherPlugin.java
index a77b301..0b5f6e5 100644
--- a/src/main/java/eu/m724/realweather/RealWeatherPlugin.java
+++ b/src/main/java/eu/m724/realweather/RealWeatherPlugin.java
@@ -17,6 +17,7 @@ import eu.m724.realweather.commands.LocalTimeCommand;
import eu.m724.realweather.mapper.Mapper;
import eu.m724.realweather.mapper.MapperConfig;
import eu.m724.realweather.object.UserException;
+import eu.m724.realweather.sign.SignatureValidator;
import eu.m724.realweather.thunder.ThunderConfig;
import eu.m724.realweather.thunder.ThunderMaster;
import eu.m724.realweather.time.TimeConfig;
@@ -36,6 +37,17 @@ public class RealWeatherPlugin extends JavaPlugin {
public void onEnable() {
logger = getLogger();
+ // TODO remove these lines
+ SignatureValidator signatureValidator = new SignatureValidator(this);
+ logger.info("Signature of this JAR: " + signatureValidator.getCertificate().getSubjectX500Principal().getName());
+
+ if (!signatureValidator.isValid()) {
+ logger.severe("Key is not valid");
+ getServer().getPluginManager().disablePlugin(this);
+ return;
+ }
+ // TODO remove those lines
+
File dataFolder = getDataFolder();
File modulesFolder = new File("modules");
modulesFolder.mkdir();
diff --git a/src/main/java/eu/m724/realweather/sign/SignatureValidator.java b/src/main/java/eu/m724/realweather/sign/SignatureValidator.java
new file mode 100644
index 0000000..3572c1c
--- /dev/null
+++ b/src/main/java/eu/m724/realweather/sign/SignatureValidator.java
@@ -0,0 +1,40 @@
+package eu.m724.realweather.sign;
+
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Base64;
+
+import eu.m724.realweather.RealWeatherPlugin;
+
+// TODO rework this for updater
+public class SignatureValidator {
+ public RealWeatherPlugin plugin;
+ public static final String encodedPublicKey = "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAptv/9qIJXrs/4T1MOkY1QPU/TuLsyCsJdoA2PIO1qdS3nRJBPgkRf2sK6nG1VhOaUHLXoj8lZtQQLcY76CNLqFGFmimo7RDnJjHpxHUzI9pKZJOQ9sEVCDFtoLQiit23t6MAO7GBjJXMNFLonxyay6pTABJo3VYyjg2bE4kd1wjg73RPMQY+zykaRQBUE167PAVkmuYxJK680EYmZph9kQTS12autU2qGFTvsPbmmdhtF7Xy8u84CtEucgRT9HSh0y8MuC0esMGhZtB9gsWcGET763DHtArEMekBnjByb3k+gGiG0Y1K9ygBn+nNVKP66KJGCWFuno8xy+LNiZKX4pUnrJcTyLvZg7PvjdZTye54PKkAAOACAbcFBiat38Zes5ZOKZIBEjC2IXbhfySoOn5WAk+XPsm3gVlgO9d51iOVDDBx5MCqq802lOyIGog1BlbhnGZ2+cSvFo7ZWpF0f93uG5UKBqRF+Q9cPA36SMUAoQ2DWFEZOYXwFgCXxVvFAgMBAAE=";
+
+ public SignatureValidator(RealWeatherPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ public X509Certificate getCertificate() {
+ return (X509Certificate) plugin.getClass().getProtectionDomain().getCodeSource().getCertificates()[0];
+ }
+
+ public boolean isValid() {
+ PublicKey currentPublicKey = getCertificate().getPublicKey();
+ PublicKey expectedPublicKey = null;
+
+ try {
+ X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.getDecoder().decode(encodedPublicKey));
+ expectedPublicKey = KeyFactory.getInstance("RSA").generatePublic(spec);
+ } catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return expectedPublicKey.equals(currentPublicKey);
+ }
+}
diff --git a/testkeystore b/testkeystore
new file mode 100644
index 0000000..a831c45
Binary files /dev/null and b/testkeystore differ