From 2b0a6ece58f1d4e378a146e28421301d97f65fbc Mon Sep 17 00:00:00 2001 From: Francesco Mancuso Date: Thu, 26 Mar 2026 17:26:55 +0100 Subject: [PATCH] [1.0.0] New extractCertificateId method, New verification --- cryptea-1.0.0.jar | Bin 0 -> 13492 bytes cryptea-tools-1.0.0.jar | Bin 13663 -> 0 bytes {source => cryptea}/pom.xml | 2 +- .../main/java/tools/cryptea/Certificate.java | 62 ++++++++++-------- .../src/main/java/tools/cryptea/Digest.java | 0 .../src/main/java/tools/cryptea/Keys.java | 0 .../src/main/java/tools/cryptea/RSA.java | 0 .../tools/cryptea/utils/Base64Helper.java | 0 .../main/java/tools/cryptea/utils/EspMod.java | 0 .../java/tools/cryptea/utils/HexHelper.java | 0 .../java/tools/cryptea/utils/JsonHelper.java | 0 11 files changed, 37 insertions(+), 27 deletions(-) create mode 100644 cryptea-1.0.0.jar delete mode 100644 cryptea-tools-1.0.0.jar rename {source => cryptea}/pom.xml (97%) rename {source => cryptea}/src/main/java/tools/cryptea/Certificate.java (87%) rename {source => cryptea}/src/main/java/tools/cryptea/Digest.java (100%) rename {source => cryptea}/src/main/java/tools/cryptea/Keys.java (100%) rename {source => cryptea}/src/main/java/tools/cryptea/RSA.java (100%) rename {source => cryptea}/src/main/java/tools/cryptea/utils/Base64Helper.java (100%) rename {source => cryptea}/src/main/java/tools/cryptea/utils/EspMod.java (100%) rename {source => cryptea}/src/main/java/tools/cryptea/utils/HexHelper.java (100%) rename {source => cryptea}/src/main/java/tools/cryptea/utils/JsonHelper.java (100%) diff --git a/cryptea-1.0.0.jar b/cryptea-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b6cc860d55586e08eacb14f9982ce9f6789a1911 GIT binary patch literal 13492 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 EA7a57Pyhe` literal 0 HcmV?d00001 diff --git a/cryptea-tools-1.0.0.jar b/cryptea-tools-1.0.0.jar deleted file mode 100644 index 62c264bfa0f7fca95442b1da9e2b8f4c52124dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13663 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.0.0 tools.cryptea - cryptea-tools + cryptea 1.0.0 jar diff --git a/source/src/main/java/tools/cryptea/Certificate.java b/cryptea/src/main/java/tools/cryptea/Certificate.java similarity index 87% rename from source/src/main/java/tools/cryptea/Certificate.java rename to cryptea/src/main/java/tools/cryptea/Certificate.java index c4c7de5..983b360 100644 --- a/source/src/main/java/tools/cryptea/Certificate.java +++ b/cryptea/src/main/java/tools/cryptea/Certificate.java @@ -53,11 +53,11 @@ public class Certificate { /** * Verifica la validità di un certificato offline * - * @param content Il certificato in formato CRYPTEA + * @param certificate Il certificato in formato CRYPTEA * @return Un array, r[0] indica true/false, r[1] l'eventuale motivo di errore * @throws Exception Nella gestione dei metadata e delle date */ - public static String[] verify(String content) throws Exception { + public static String[] verify(String certificate) throws Exception { String[] ret = new String[2]; String publicKey = "-----BEGIN CRYPTEA PUBLIC KEY-----\r\n" + // "AQAB.AMAh44IisBLbYPRAfer5SUp91wCl+9WuLsnRQ56HcXG//OKaMNSfv3mzCBu\r\n" + // @@ -67,7 +67,7 @@ public class Certificate { "Oe4b0G48q5OxZoMEpcohwCkIDep0BtqNt1OJqAY/Md334lKAxlJGCMR0rxp3mD7k\r\n" + // "5h5+fC8pFFjGanHyFsDj+tQDMrBs=\r\n" + // "-----END CRYPTEA PUBLIC KEY-----"; - String cleaned = content + String cleaned = certificate .replace("-----BEGIN CRYPTEA CERTIFICATE-----", "") .replace("-----END CRYPTEA CERTIFICATE-----", "") .replaceAll("\\s", ""); @@ -176,12 +176,12 @@ public class Certificate { /** * Estrae i metadata (se validi) da un certificato * - * @param content Il certificato in formato CRYPTEA + * @param certificate Il certificato in formato CRYPTEA * @return I metadati in formato String[] * @throws Exception Se si verificano problemi nel formato */ - public static String[] extractMetadata(String content) throws Exception { - String cleaned = content + public static String[] extractMetadata(String certificate) throws Exception { + String cleaned = certificate .replace("-----BEGIN CRYPTEA CERTIFICATE-----", "") .replace("-----END CRYPTEA CERTIFICATE-----", "") .replaceAll("\\s", ""); @@ -195,15 +195,16 @@ public class Certificate { throw new Exception("Formato certificato incompleto"); return Base64Helper.toString(parts[0]).split("\\|"); } - + /** * Estrae la firma digitale (fingerprint) del certificato - * @param content Il certificato in formato CRYPTEA + * + * @param certificate Il certificato in formato CRYPTEA * @return Una stringa, la firma in formato HEX * @throws Exception Nella gestione del formato del certificato */ - public static String extractSignature(String content) throws Exception { - String cleaned = content + public static String extractSignature(String certificate) throws Exception { + String cleaned = certificate .replace("-----BEGIN CRYPTEA CERTIFICATE-----", "") .replace("-----END CRYPTEA CERTIFICATE-----", "") .replaceAll("\\s", ""); @@ -217,6 +218,27 @@ public class Certificate { return HexHelper.fromBigInteger(new BigInteger(1, Base64Helper.toBytes(parts[3]))); } + /** + * Estrae l'ID del certificato registrato nella nostra CA + * @param certificate Il certificato in formato Cryptea + * @return Stringa contenente l'ID + */ + public static String extractCertificateId(String certificate) { + String cleaned = certificate + .replace("-----BEGIN CRYPTEA CERTIFICATE-----", "") + .replace("-----END CRYPTEA CERTIFICATE-----", "") + .replaceAll("\\s", ""); + + cleaned = cleaned.trim(); + if (cleaned.contains("CRYPTEA") || cleaned.contains("CERTIFICATE")) { + throw new IllegalArgumentException("Formato certificato non corretto!"); + } + String[] parts = cleaned.split("\\."); + if (parts.length < 4) + throw new IllegalArgumentException("Formato certificato incompleto"); + return Base64Helper.toString(parts[0]).split("\\|")[1]; + } + /** * Controlla se il certificato è stato revocato, attraverso una verifica remota * OCSP (Online Certificate Status Protocol) @@ -225,27 +247,14 @@ public class Certificate { * @return Un array, r[0] indica true/false, r[1] l'eventuale motivo di errore * @throws Exception Nella gestione della richiesta HTTP */ - public static String[] certificateIsActive(String[] metadataExtracted) throws Exception { + public static String[] certificateIsActive(String certId) throws Exception { String[] ret = new String[2]; ObjectNode json = mapper.createObjectNode(); json.put("action", "verify_cert"); + json.put("certId", certId); - ObjectNode metadata = mapper.createObjectNode(); - String finalJson = null; - - try { - for (String meta : metadataExtracted) { - // Split del "=" - String[] data = meta.split("\\="); - metadata.put(data[0], data[1]); - } - - json.set("metadata", metadata); - finalJson = JsonHelper.nodeToJson(json); - } catch (Exception e) { - throw new Exception("Formato metadati errato."); - } + String finalJson = JsonHelper.nodeToJson(json); HttpRequest request = HttpRequest.newBuilder() .uri(new URI(BASE_URL + "/api/v2/verify")) @@ -278,6 +287,7 @@ public class Certificate { /** * Effettua il ping al server CrypteaCA per verificare lo stato dei servizi + * * @return TRUE/FALSE * @throws HttpTimeoutException Nella gestione della richiesta */ diff --git a/source/src/main/java/tools/cryptea/Digest.java b/cryptea/src/main/java/tools/cryptea/Digest.java similarity index 100% rename from source/src/main/java/tools/cryptea/Digest.java rename to cryptea/src/main/java/tools/cryptea/Digest.java diff --git a/source/src/main/java/tools/cryptea/Keys.java b/cryptea/src/main/java/tools/cryptea/Keys.java similarity index 100% rename from source/src/main/java/tools/cryptea/Keys.java rename to cryptea/src/main/java/tools/cryptea/Keys.java diff --git a/source/src/main/java/tools/cryptea/RSA.java b/cryptea/src/main/java/tools/cryptea/RSA.java similarity index 100% rename from source/src/main/java/tools/cryptea/RSA.java rename to cryptea/src/main/java/tools/cryptea/RSA.java diff --git a/source/src/main/java/tools/cryptea/utils/Base64Helper.java b/cryptea/src/main/java/tools/cryptea/utils/Base64Helper.java similarity index 100% rename from source/src/main/java/tools/cryptea/utils/Base64Helper.java rename to cryptea/src/main/java/tools/cryptea/utils/Base64Helper.java diff --git a/source/src/main/java/tools/cryptea/utils/EspMod.java b/cryptea/src/main/java/tools/cryptea/utils/EspMod.java similarity index 100% rename from source/src/main/java/tools/cryptea/utils/EspMod.java rename to cryptea/src/main/java/tools/cryptea/utils/EspMod.java diff --git a/source/src/main/java/tools/cryptea/utils/HexHelper.java b/cryptea/src/main/java/tools/cryptea/utils/HexHelper.java similarity index 100% rename from source/src/main/java/tools/cryptea/utils/HexHelper.java rename to cryptea/src/main/java/tools/cryptea/utils/HexHelper.java diff --git a/source/src/main/java/tools/cryptea/utils/JsonHelper.java b/cryptea/src/main/java/tools/cryptea/utils/JsonHelper.java similarity index 100% rename from source/src/main/java/tools/cryptea/utils/JsonHelper.java rename to cryptea/src/main/java/tools/cryptea/utils/JsonHelper.java