Package es.gob.jmulticard.card.icao.bac
Class Bac
- java.lang.Object
-
- es.gob.jmulticard.card.icao.bac.Bac
-
public final class Bac extends java.lang.ObjectImplementación del protocolo BAC (basic Access Control).
-
-
Field Summary
Fields Modifier and Type Field Description private static byteCLAprivate static byte[]KENC_PADDINGprivate static byte[]KMAC_PADDINGprivate static byte[]PARITYConstante para ajustar la paridad de un array de octetos.
-
Constructor Summary
Constructors Modifier Constructor Description privateBac()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static voidadjustParity(byte[] key)Ajusta la paridad de una clave binaria.private static byte[]computeMAC(byte[] key, byte[] pt)Calcula un MAC según ISO/IEC 9797-1 Alg 3 con cifrado 3DES, vector de inicialización a ceros (IV=0 de 8 octetos) y relleno ISO9797-1 (método 2).static voiddoBac(java.lang.String mrz, CryptoHelper ch, ApduConnection conn)Establecimiento de canal BAC.private static byte[]padByteArray(byte[] data)Rellena un array de octetos según ISO9797-1 (método 2).private static byte[]truncateMrzPwd(byte[] mrzInfoPwd)
-
-
-
Field Detail
-
CLA
private static final byte CLA
- See Also:
- Constant Field Values
-
KENC_PADDING
private static final byte[] KENC_PADDING
-
KMAC_PADDING
private static final byte[] KMAC_PADDING
-
PARITY
private static final byte[] PARITY
Constante para ajustar la paridad de un array de octetos.
-
-
Method Detail
-
doBac
public static void doBac(java.lang.String mrz, CryptoHelper ch, ApduConnection conn) throws java.io.IOException, Iso7816FourCardExceptionEstablecimiento de canal BAC.- Parameters:
mrz- MRZ del documento de identidad electrónico (MRTD).ch- Utilidad de operaciones criptográficas.conn- Conexión con el MRTD.- Throws:
java.io.IOException- Si hay problemas en el tratamiento de datos.Iso7816FourCardException- Si hay problemas en el diálogo con el IC del MRTD.
-
truncateMrzPwd
private static byte[] truncateMrzPwd(byte[] mrzInfoPwd)
-
adjustParity
private static void adjustParity(byte[] key)
Ajusta la paridad de una clave binaria. Cada octeto tendrá un número impar de bits a '1' (el útimo bit de cada octeto no se usa).- Parameters:
key- Clave binaria de entrada.
-
computeMAC
private static byte[] computeMAC(byte[] key, byte[] pt) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, java.security.InvalidKeyException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingExceptionCalcula un MAC según ISO/IEC 9797-1 Alg 3 con cifrado 3DES, vector de inicialización a ceros (IV=0 de 8 octetos) y relleno ISO9797-1 (método 2).- Parameters:
key- Clave 3DES.pt- Datos sobre los que calcular el MAC.- Returns:
- MAC de 8 octetos.
- Throws:
javax.crypto.NoSuchPaddingException- Si no se soporta el relleno aplicado al 3DES.java.security.NoSuchAlgorithmException- Si no se soporta el cifrado 'DES/ECB/NoPadding'.java.security.InvalidKeyException- Si la clave 3DES no es válida.javax.crypto.BadPaddingException- Si el relleno aplicado al 3DES no es válido.javax.crypto.IllegalBlockSizeException- Si hay problemas con el ECB.
-
padByteArray
private static byte[] padByteArray(byte[] data)
Rellena un array de octetos según ISO9797-1 (método 2).- Parameters:
data- Datos de entrada a rellenar.- Returns:
- Datos con el relleno aplicado.
-
-