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);
}
}
}