use of es.gob.jmulticard.apdu.CommandApdu in project jmulticard by ctt-gob-es.
the class Iso7816FourCard method selectFileByName.
/**
* Selecciona un fichero por nombre.
* @param name Nombre del fichero en hexadecimal
* @throws FileNotFoundException Si el fichero no existe
* @throws ApduConnectionException Si ocurre algún problema durante la selección
* @throws Iso7816FourCardException Si el fichero no se puede seleccionar por cualquier otra causa
*/
public void selectFileByName(final byte[] name) throws ApduConnectionException, FileNotFoundException, Iso7816FourCardException {
final CommandApdu selectCommand = new SelectDfByNameApduCommand(getCla(), name);
final ResponseApdu response = sendArbitraryApdu(selectCommand);
if (response.isOk()) {
return;
}
final StatusWord sw = response.getStatusWord();
if (sw.equals(new StatusWord((byte) 0x6A, (byte) 0x82))) {
throw new FileNotFoundException(name);
}
throw new Iso7816FourCardException(sw, selectCommand);
}
use of es.gob.jmulticard.apdu.CommandApdu in project jmulticard by ctt-gob-es.
the class TestApduEncrypter method testPinEncryptionDes.
/**
* Prueba de cifrado 3DES de APDU de verificación de PIN.
* @throws Exception En cualquier error.
*/
@SuppressWarnings("static-method")
@Test
public void testPinEncryptionDes() throws Exception {
final CommandApdu verifyCommandApdu = new VerifyApduCommand((byte) 0x00, // $NON-NLS-1$
new CachePasswordCallback("CRYPTOKI".toCharArray()));
final ApduEncrypter apduEncrypterDes = new ApduEncrypterDes();
final byte[] res = apduEncrypterDes.protectAPDU(verifyCommandApdu, KENC, KMAC, SSC_PIN, new JseCryptoHelper()).getBytes();
Assert.assertEquals(// $NON-NLS-1$
"0c20000019871101ce1ab937c332f3faee43336d4311ef338e046908df4e", HexUtils.hexify(res, false).toLowerCase());
}
use of es.gob.jmulticard.apdu.CommandApdu in project jmulticard by ctt-gob-es.
the class TestApduEncrypter method testEncryptionAes.
/**
* Prueba de cifrado AES de una APDU.
* @throws Exception En cualquier error.
*/
@Test
// Necesita el proveedor BC/SC firmado
@Ignore
public void testEncryptionAes() throws Exception {
this.paddingLength = 16;
final CommandApdu apdu = new CommandApdu((byte) 0x00, (byte) 0xa4, (byte) 0x04, (byte) 0x00, new byte[] { (byte) 0x4d, (byte) 0x61, (byte) 0x73, (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x2e, (byte) 0x46, (byte) 0x69, (byte) 0x6c, (byte) 0x65 }, null);
System.out.println(HexUtils.hexify(protectAPDU(apdu, KENC2, KMAC2, SSC2, new JseCryptoHelper()).getBytes(), false).toLowerCase());
System.out.println(HexUtils.hexify(new ApduEncrypterAes().protectAPDU(apdu, KENC2, KMAC2, SSC2, new JseCryptoHelper()).getBytes(), false).toLowerCase());
// $NON-NLS-1$
System.out.println("0ca404001d871101f5124ee2f53962e86e66a6d234827f0f8e0870e6de5f679aee64");
}
use of es.gob.jmulticard.apdu.CommandApdu in project jmulticard by ctt-gob-es.
the class SmartCafePkcs15Applet method getPinRetriesLeft.
private int getPinRetriesLeft() throws PinException {
final CommandApdu verifyCommandApdu = new RetriesLeftApduCommand();
final ResponseApdu verifyResponse;
try {
verifyResponse = getConnection().transmit(verifyCommandApdu);
} catch (final ApduConnectionException e) {
throw new PinException(// $NON-NLS-1$
"Error obteniendo el PIN del CallbackHandler: " + e, // $NON-NLS-1$
e);
}
if (verifyResponse.isOk() || verifyResponse.getBytes().length > 2) {
return verifyResponse.getBytes()[1];
}
throw new PinException(// $NON-NLS-1$
"Error comprobando los intentos restantes de PIN con respuesta: " + HexUtils.hexify(verifyResponse.getBytes(), true));
}
Aggregations