Struttura classi e metodi.

DocumentazioneCryptea Tools

All'interno di ogni classe sono presenti commenti della tipologia Javadoc che illustrano i parametri e l'output di ogni metodo. In breve, verranno presentati di seguito le classi e i metodi esposti.

Per tutti i dettagli, fai riferimento alla repository pubblicata qui.

Certificate.java

Classe che contiene tutti i metodi legati alla verifica del Certificato Cryptea.

Posizione nel progetto: tools.cryptea.Certificate

Parametri esposti:

  • BASE_URL: L'url di base degli Endpoint API per contattare il server Cryptea.

Metodi esposti:

  • .verify(String certificate): Metodo di tipo statico. Effettua la verifica offline del certificato inserito. Controlla i metadati e la validità della firma digitale.

  • .extractMetadata(String certificate): Metodo di tipo statico. Estrae i metadati da un certificato Cryptea valido, e li restituisce con un array di stringhe.

  • .extractSignature(String certificate): Metodo di tipo statico. Estrae la firma digitale, mostrandola in formato HEX.

  • .extractCertificateId(String certificate): Metodo di tipo statico. Estrae l'ID del certificato dai metadati, utilizzato per la verifica remota.

  • .certificateIsActive(String certId): Metodo di tipo statico. Utilizzando l'ID del certificato estratto, esegue la verifica remota di tipo OCSP.

  • .ping(): Metodo di tipo statico. Controlla se i servizi Cryptea sono online.

Digest.java

Classe che contiene metodi statici per calcolare il digest SHA-512.

Posizione nel progetto: tools.cryptea.Digest

Metodi esposti:

  • .getStringDigest(byte[] bytes): Metodo di tipo statico. Calcola il digest restituendolo in formato HEX.

  • .getByteDigest(byte[] bytes): Metodo di tipo statico. Calcola il digest restituendolo in formato byte[].

Keys.java

Classe che contiene tutti i metodi legati alla conversione del formato CRYPTEA per le Chiavi RSA.

Posizione nel progetto: tools.cryptea.Keys

Metodi esposti:

  • .wrapLines(String input): Metodo di tipo statico. Partendo dalla chiave generata, stampa e allinea il contenuto interno dividendolo in righe lunghe ciascuna 64 caratteri.

  • .publicToFile(BigInteger e, BigInteger n): Metodo di tipo statico. Genera la chiave pubblica nel formato Cryptea partendo dai parametri RSA.

  • .publicFromFile(String content): Metodo di tipo statico. Estrae i parametri RSA e ed n partendo da una chiave pubblica nel formato Cryptea.

  • .privateToFile(BigInteger k, BigInteger n, BigInteger p, BigInteger q): Metodo di tipo statico. Genera la chiave privata nel formato Cryptea partendo dai parametri RSA.

  • .privateFromFile(String content): Metodo di tipo statico. Estrae i parametri RSA k, n, p e q partendo da una chiave privata nel formato Cryptea.

RSA.java

Classe che contiene tutti i metodi legati alla cifratura e decifratura con RSA.

Posizione nel progetto: tools.cryptea.RSA

Metodi esposti:

  • .encryptWithPublic(BigInteger input, BigInteger e, BigInteger n): Metodo di tipo statico. Cifra l'input con i parametri di Chiave pubblica.

  • .encryptWithPrivate(BigInteger input, BigInteger k, BigInteger n): Metodo di tipo statico. Cifra l'input con i parametri di Chiave privata.

  • decryptWithPublic(BigInteger input, BigInteger e, BigInteger n): Metodo di tipo statico. Decifra l'input con i parametri di Chiave pubblica. Utilizzato nella verifica del certificato locale.

  • .decryptWithPrivate(BigInteger input, BigInteger k, BigInteger n): Metodo di tipo statico. Decifra l'input con i parametri di Chiave privata.

Tutti i metodi implementano l'Esponenziazione Modulare. Maggiori info qui

Base64Helper.java

Classe che contiene tutti i metodi legati alla conversione nella codifica Base64.

Posizione nel progetto: tools.cryptea.utils.Base64Helper

Metodi esposti:

  • .fromBigInteger(BigInteger n): Metodo di tipo statico. Restituisce la codifica Base64 dell'input.

  • .toBigInteger(String base64): Metodo di tipo statico. Restituisce il numero BigInt dall'input Base64.

  • .fromBytes(byte[] bytes): Metodo di tipo statico. Restituisce la codifica Base64 dell'input.

  • .toBytes(String base64): Metodo di tipo statico. Restituisce l'array di byte[] dall'input Base64.

  • .fromString(String content): Metodo di tipo statico. Restituisce la codifica Base64 dell'input.

  • .toString(String content): Metodo di tipo statico. Restituisce la stringa dall'input Base64.

EspMod.java

Classe che contiene l'algoritmo di Esponenziazione Modulare. Maggiori info qui.

Posizione nel progetto: tools.cryptea.utils.EspMod

Metodi esposti:

  • .doIt(BigInteger a, BigInteger b, BigInteger n): Metodo di tipo statico. Effettua il calcolo matematico modulare di RSA attraverso l'algoritmo. Utilizza solo numeri BigInt.

HexHelper.java

Classe che contiene tutti i metodi legati alla conversione nella codifica HEX.

Posizione nel progetto: tools.cryptea.utils.HexHelper

Metodi esposti:

  • .fromBigInteger(BigInteger n): Metodo di tipo statico. Trasforma un numero BigInt in una stringa HEX.

  • .toBigInteger(String hex): Metodo di tipo statico. Trasforma una stringa HEX in un numero BigInt.

Utilizzata per rappresentare la firma digitale del certificato o dei file.

JsonHelper.java

Classe che contiene tutti i metodi legati alla creazione e lettura di Oggetti di tipo JSON. Utilizza la libreria jackson-3.0.3.

Posizione nel progetto: tools.cryptea.utils.JsonHelper

Metodi esposti:

  • .objectToJson(Object obj): Metodo di tipo statico. Converte un Oggetto generico in formato JSON. L'equivalente in JavaScript di JSON.stringify().

  • .objectFromJson(String json, Class<T> clazz): Metodo di tipo statico. Importato da Jackson, converte una stringa JSON in un Oggetto Jackson.

  • .nodeToJson(ObjectNode jsonNode): Metodo di tipo statico. Converte un Oggetto di tipo node in formato JSON. L'equivalente in JavaScript di JSON.stringify().

  • .jsonToNode(String json): Metodo di tipo statico. Converte una stringa JSON in un Oggetto di tipo node.

Utilizzata per comunicare con le API del server.