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

Ejemplo de generación, comprobación y resincronización de una mancha HOTP OATH mediante el HSM. Con semilla generada fuera 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 IssueHOTPBlob2 {
private static String strAddr = "127.0.0.1";
private static String strUsrId = "maestro";
private static String strPwd = "12345678" ;
private static String masterKeyName = "llave_maestra";
public static void main(String[] args) throws TacException {
Dinamo api = new Dinamo();
System.out.println("--> Inicio de sesión HSM");
api.openSession(strAddr, strUsrId, strPwd);
System.out.println("--> Crear una clave maestra");
api.createKey(masterKeyName, TacNDJavaLib.ALG_AES_256, TacNDJavaLib.NONEXPORTABLE_KEY);
// The seed is a binary that can be generated by hsm or by soft/hard token.
byte[] hotpSeed = { (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 };
System.out.println("--> Generar BLOB para la semilla");
byte[] hotpImpBlob = api.importOATHHotpBlob( masterKeyName,
hotpSeed); // Debe almacenar el valor binario del blob
//This call simulates the client application
String nextOtp = api.getNextOATHOTP(masterKeyName,
TacNDJavaLib.ISSUE_OATH_MIN_OTP_LEN,
hotpImpBlob);
System.out.println("--> comprobar valor OTP para conocer semilla y secuencia");
hotpImpBlob = api.checkOATHBlobOTP( masterKeyName,
nextOtp,
hotpImpBlob);
System.out.println("--> Se pasan dos OTP consecutivos para que HSM ajuste la ventana de eventos en caso de necesidad de sincronización (token de evento)");
hotpImpBlob = api.resyncOATHBlobOTP( masterKeyName,
"758993",
"864532",
hotpImpBlob);
System.out.println("--> Borrar la llave maestra");
api.deleteKey(nombreClavePatrón);
api.closeSession();
System.out.println("El proceso finalizó correctamente");
}
}