<div class="page">
<div class="cover text-center">
<img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo">
# Certificats
<div class="text-end fit-content ms-auto my-3 mt-auto pt-3">
<p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p>
<p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p>
<p><strong>Curs:</strong> 2024/2025</p>
</div>
<div>
<p class="fw-bold mb-0">Llicència: BY-NC-SA</p>
<p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p>
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank">
<img class="mx-auto" src="/itb/images/license.png" alt="Licence"/>
</a>
</div><!--license-->
</div><!--cover-->
</div><!--page-->
{:toc}
# Objectius
Conèixer els certificats i la seua utilització per encriptar o signar missatges.
# Estructura del projecte
Tots els exercicis han d'estar situats en el package corresponent.
- __Package:__ `ud4.exericises.certificate`
- Cada exercici ha d'anar dins del subpackage corresponent.
- El nom de la classe de cada exercici és el nom.
- El format de la eixida del programa ha de ser consistent
amb el format demanat.
## ShowCertificate
Genera un certificat amb l'eina `keytool` amb els següents paràmetres:
- __CN__: NomCognom Exercicis
- __O__: CIPFP Mislata
- __OU__: DAM2S-PSP
- __L__: Mislata
- __ST__: València
- __C__: ES
Genera aquest certificat en una _keystore_ emmagatzemada en la ruta `files/ud4/exercises_certificate.jks`.
Importa el següent certificat a la _keystore_ creada:
- <a href="/itb/DAM-PSP/files/files/ud4/jpuigcerver_certificate.crt" download="jpuigcerver_certificate.crt">jpuigcerver_certificate.crt</a>
Implementa el programa `ShowCertificate`, que carregara la _keystyore_ amb el certificat creat.
Per cada certificat existent en la _keystore_, el programa mostrarà el àlias i la informació del certificat.
- Mostrara un missatge d'error si la _keystore_ no existeix.
- Cal utilitzar els mètodes proporcionats en els exemples.
- Cal emmagatzemar les dades sensibles en el fitxer de configuració `application.properties`.
## EncryptMessageCertificate
Implementa un programa que encripte un missatge amb una clau pública.
El programa mostrarà els àlias presents en la _keystore_ `files/ud4/exercises_certificate.jks` i
li demanarà a l'usuari l'àlias del certificat per recuperar la clau pública.
- Si el certificat no existeix, mostrarà un missatge d'error.
Després, l'usuari introduirà el text que vol encriptar.
Per últim, mostrarà el text encriptat.
## DecryptMessageCertificate
Implementa un programa que desencripte un missatge amb una clau privada.
El programa mostrarà els àlias presents en la _keystore_ `files/ud4/exercises_certificate.jks` i
li demanarà a l'usuari l'àlias del certificat per recuperar la clau privada.
- Si el certificat no existeix, mostrarà un missatge d'error.
- Si el certificat no conté una clau privada, mostrarà un missatge d'error.
Després, l'usuari introduirà el text que vol desencriptar.
Per últim, mostrarà el text desencriptat.
## SignMessageCertificate
Implementa un programa que signe un missatge amb una clau privada.
El programa mostrarà els àlias presents en la _keystore_ `files/ud4/exercises_certificate.jks` i
li demanarà a l'usuari l'àlias del certificat per recuperar la clau privada.
- Si el certificat no existeix, mostrarà un missatge d'error.
- Si el certificat no conté una clau privada, mostrarà un missatge d'error.
Després, l'usuari introduirà el text que vol signar.
Per últim, mostrarà la signatura generada.
## VerifySignatureMessageCertificate
Implementa un programa que verifique si la signatura d'un missatge és vàlida amb una clau pública.
El programa mostrarà els àlias presents en la _keystore_ `files/ud4/exercises_certificate.jks` i
li demanarà a l'usuari l'àlias del certificat per recuperar la clau pública.
- Si el certificat no existeix, mostrarà un missatge d'error.
Després, l'usuari introduirà el text i la signatura que vol comprovar.
Per últim, el programa mostrarà si la signatura és correcta.
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari