use of es.gob.jmulticard.CryptoHelper in project jmulticard by ctt-gob-es.
the class PaceInitializerMrz method getMrzPswd.
/**
* Calcula el valor de inicialización partiendo de una MRZ.
* Siguiendo la especificación ICAO 9303:<br>
* <code>KDFπ(π) = KDF(f(π),3)</code><br>
* <code>K= f(π) = SHA-1(Serial Number || Date of Birth || Date of Expiry)</code><br>
* En este método se genera el valor de K que deberá posteriormente ser
* pasado como parámetro de la función KDF(K,3) para generar la contraseña.
* @param mrz MRZ completa.
* @return K Valor de inicialización.
* @throws IOException Si no se puede obtener el valor.
*/
private static byte[] getMrzPswd(final String mrz) throws IOException {
final MrzInfoData mrzData = parseMrzInfo(mrz);
final byte[] numberBytes = mrzData.getNumber().getBytes();
final byte[] birthBytes = mrzData.getBirth().getBytes();
final byte[] expiryBytes = mrzData.getExpiry().getBytes();
final byte[] concatenation = HexUtils.concatenateByteArrays(numberBytes, mrzData.getNumberCheck(), birthBytes, mrzData.getBirthCheck(), expiryBytes, mrzData.getExpiryCheck());
final CryptoHelper cryptoHelper = new JseCryptoHelper();
return cryptoHelper.digest(CryptoHelper.DigestAlgorithm.SHA1, concatenation);
}
Aggregations