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

Ejemplo de generación, comprobación y resincronización de un HOTP Blob OATH mediante HSM. Con semilla generada dentro del HSM.

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 IssueHOTPBlobGenerate {
static String ip = "127.0.0.1";
static String usuario = "maestro";
static String password = "12345678";
public static void main(String[] args) throws TacException {
Dinamo api = new Dinamo();
api.openSession(ip, usuario, contraseña);
String masterKeyName = "llave_maestra";
/*
* Crear una llave maestra.
* */
System.out.println("--> Crear clave maestra");
api.createKey(masterKeyName, TacNDJavaLib.ALG_AES_256, true);
/*
* Genera el Blog HOTP con la semilla generada en HSM.
* */
System.out.println("--> Generar BLOB HOTP");
byte[] hotpGenBlob = api.generateOATHHotpBlob(masterKeyName);
/*
* Recuperar la semilla del Blog OATH generada por HSM.
*
* Esta semilla se puede transformar de binario a Base32
* e importado en el cliente (Google Authenticator, por ejemplo).
*
* */
System.out.println("--> Recupera la semilla del BLOB HOTP");
byte[] hotpGenBlobSeed = api.getOATHSeed(masterKeyName, hotpGenBlob);
/*
* Esta llamada simula el cliente OTP. Genera el siguiente OTP, sin cambiar
* el contenido de la mancha OATH .
* */
System.out.println("--> Generar siguiente OTP");
String nextOtp = api.getNextOATHOTP(masterKeyName,
TacNDJavaLib.ISSUE_OATH_MIN_OTP_LEN,
hotpGenBlob);
/*
* Comprueba la OTP y actualiza el Blob.
* El Blob anterior puede y debe ser descartado.
*
* */
System.out.println("--> Comprobar OTP");
hotpGenBlob = api.checkOATHBlobOTP(masterKeyName, nextOtp, hotpGenBlob);
/*
* Vuelve a sincronizar la blob HOTP y actualiza la blob.
* Usar cuando el blob OATH está desincronizado.
* El Blob anterior puede y debe ser descartado.
*
* Se pasan 2 OTPs consecutivos para que el HSM ajuste la ventana de eventos.
*
* */
System.out.println("--> Resincronizar BLOB HOTP");
hotpGenBlob = api.resyncOATHBlobOTP(masterKeyName, "457762", "251104", hotpGenBlob);
/*
* Borra la llave maestra.
* */
System.out.println("--> Elimina la clave maestra");
api.deleteKey(nombreClavePatrón);
api.closeSession();
}
}