Search in sources :

Example 1 with CryptoHelper

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&oacute;n ICAO 9303:<br>
 * <code>KDF&pi;(&pi;) = KDF(f(&pi;),3)</code><br>
 * <code>K= f(&pi;) = SHA-1(Serial Number || Date of Birth || Date of Expiry)</code><br>
 * En este m&eacute;todo se genera el valor de K que deber&aacute; posteriormente ser
 * pasado como par&aacute;metro de la funci&oacute;n KDF(K,3) para generar la contrase&ntilde;a.
 * @param mrz MRZ completa.
 * @return K Valor de inicializaci&oacute;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);
}
Also used : JseCryptoHelper(es.gob.jmulticard.JseCryptoHelper) CryptoHelper(es.gob.jmulticard.CryptoHelper) JseCryptoHelper(es.gob.jmulticard.JseCryptoHelper)

Aggregations

CryptoHelper (es.gob.jmulticard.CryptoHelper)1 JseCryptoHelper (es.gob.jmulticard.JseCryptoHelper)1