package at.gv.egovernment.moa.id.auth.builder; import java.security.MessageDigest; import at.gv.egovernment.moa.id.BuildException; import at.gv.egovernment.moa.util.Base64Utils; /** * Builder for the VPK, as defined in * "Ableitung f¨r die verfahrensspezifische Personenkennzeichnung" * version 1.0.1 from "reference.e-government.gv.at". * * @author Paul Ivancsics * @version $Id$ */ public class VPKBuilder { /** * Builds the VPK from given parameters. * @param identificationValue "ZMR-Zahl" * @param dateOfBirth "Geburtsdatum" * @param target "Verfahrensname"; will be transformed to lower case * @return VPK in a BASE64 encoding * @throws BuildException while building the VPK */ public String buildVPK(String identificationValue, String dateOfBirth, String target) throws BuildException { if (identificationValue == null || identificationValue.length() == 0 || dateOfBirth == null || dateOfBirth.length() == 0 || target == null || target.length() == 0) throw new BuildException( "builder.00", new Object[] {"VPK", "Unvollständige Parameterangaben: identificationValue=" + identificationValue + ",dateOfBirth=" + dateOfBirth + ",target=" + target}); String basisbegriff = identificationValue + "+" + dateOfBirth + "+" + target.toLowerCase(); try { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] hash = md.digest(basisbegriff.getBytes()); String hashBase64 = Base64Utils.encode(hash); return hashBase64; } catch (Exception ex) { throw new BuildException( "builder.00", new Object[] {"VPK", ex.toString()}, ex); } } }