API Java
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
SignVerifyPss.java

Ejemplo de firma y verificación mediante relleno PSS.

Véase la nota sobre ejemplos.
paquete doxy.examples;
import com.dinamonetworks.Dinamo;
import br.com.trueaccess.TacException;
import br.com.trueaccess.TacNDJavaLib;
public clase SignVerifyPss {
public static void main(String[] args) throws TacException {
/*
* Se conecta al HSM.
*/
Dinamo api = new Dinamo();
api.openSession("127.0.0.1", "master", "12345678", false);
byte[] mensaje = { (byte)0xD5,(byte)0x17, (byte)0xED, (byte)0x40,(byte)0x1D,
(byte)0xF3, (byte)0x03,(byte)0x38, (byte)0x37,(byte)0xE0,
(byte)0x8B,(byte)0x62, (byte)0x55,(byte)0xBE, (byte)0xDB,
(byte)0xF9, (byte)0x52,(byte)0x0E, (byte)0xF8,(byte)0x8E };
/*
* Crea una clave privada de prueba.
*/
String keyId = "rsa";
api.createKey(keyId, TacNDJavaLib.ALG_RSA_2048);
/*
* Firma el mensaje.
*/
byte[] signature = api.sign(keyId, TacNDJavaLib.ALG_SHA2_256, TacNDJavaLib.D_PSS_PADDING, message);
System.out.println("Firma: ok");
/*
* Exporta la clave pública e impórtala en un handle.
* Normalmente en la verificación, la clave pública se importa de un fichero en formato DER.
*
*/
byte[] pubKeyDer = api.exportKey(keyId, TacNDJavaLib.PUBLICKEY_BLOB);
byte[] pubKeyHandle = api.importKey(keyId, TacNDJavaLib.PUBLICKEY_BLOB, TacNDJavaLib.ALG_RSA_2048_PUB,
0, pubKeyDer);
/*
* Establece el relleno para PSS y comprueba la firma.
*/
api.setPadding(pubKeyHandle, TacNDJavaLib.D_PSS_PADDING);
api.verifySignature(pubKeyHandle, TacNDJavaLib.ALG_SHA2_256, firma, mensaje);
System.out.println("Verificar: ok");
api.deleteKey(keyId);
api.closeSession();
}
}