Package es.gob.jmulticard.card.icao.bac
Class Bac
java.lang.Object
es.gob.jmulticard.card.icao.bac.Bac
Implementación del protocolo BAC (basic Access Control).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final byte
private static final byte[]
private static final byte[]
private static final byte[]
Constante para ajustar la paridad de un array de octetos. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
adjustParity
(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 void
doBac
(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 Details
-
CLA
private static final byte CLA- See Also:
-
KENC_PADDING
private static final byte[] KENC_PADDING -
KMAC_PADDING
private static final byte[] KMAC_PADDING -
PARITY
private static final byte[] PARITYConstante para ajustar la paridad de un array de octetos.
-
-
Constructor Details
-
Bac
private Bac()
-
-
Method Details
-
doBac
public static void doBac(String mrz, CryptoHelper ch, ApduConnection conn) throws IOException, Iso7816FourCardException Establecimiento 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:
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 NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException 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).- Parameters:
key
- Clave 3DES.pt
- Datos sobre los que calcular el MAC.- Returns:
- MAC de 8 octetos.
- Throws:
NoSuchPaddingException
- Si no se soporta el relleno aplicado al 3DES.NoSuchAlgorithmException
- Si no se soporta el cifrado 'DES/ECB/NoPadding'.InvalidKeyException
- Si la clave 3DES no es válida.BadPaddingException
- Si el relleno aplicado al 3DES no es válido.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.
-