aboutsummaryrefslogtreecommitdiff
path: root/id/server
diff options
context:
space:
mode:
Diffstat (limited to 'id/server')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java69
1 files changed, 37 insertions, 32 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java
index b122ba17e..a2570ed7e 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java
@@ -46,7 +46,6 @@
package at.gv.egovernment.moa.id.auth.builder;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.data.IdentityLink;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.logging.Logger;
@@ -54,7 +53,6 @@ import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.Constants;
import at.gv.egovernment.moa.util.MiscUtil;
-import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@@ -103,14 +101,7 @@ public class BPKBuilder {
else
basisbegriff = identificationValue + "+" + Constants.URN_PREFIX_CDID + "+" + target;
- try {
- MessageDigest md = MessageDigest.getInstance("SHA-1");
- byte[] hash = md.digest(basisbegriff.getBytes("ISO-8859-1"));
- String hashBase64 = Base64Utils.encode(hash);
- return hashBase64;
- } catch (Exception ex) {
- throw new BuildException("builder.00", new Object[]{"bPK", ex.toString()}, ex);
- }
+ return calculatebPKwbPK(basisbegriff);
}
/**
@@ -139,16 +130,24 @@ public class BPKBuilder {
else
basisbegriff = identificationValue + "+" + Constants.URN_PREFIX_WBPK + "+" + registerAndOrdNr;
- try {
- MessageDigest md = MessageDigest.getInstance("SHA-1");
- byte[] hash = md.digest(basisbegriff.getBytes("ISO-8859-1"));
- String hashBase64 = Base64Utils.encode(hash);
- return hashBase64;
- } catch (Exception ex) {
- throw new BuildException("builder.00", new Object[]{"wbPK", ex.toString()}, ex);
- }
+ return calculatebPKwbPK(basisbegriff);
}
+ public String buildbPKorwbPK(String baseID, String bPKorwbPKTarget) throws BuildException {
+ if (MiscUtil.isEmpty(baseID) ||
+ !(bPKorwbPKTarget.startsWith(Constants.URN_PREFIX_CDID + "+") ||
+ bPKorwbPKTarget.startsWith(Constants.URN_PREFIX_WBPK + "+") ||
+ bPKorwbPKTarget.startsWith(Constants.URN_PREFIX_STORK + "+")) ) {
+ throw new BuildException("builder.00",
+ new Object[]{"bPK/wbPK", "bPK or wbPK target " + bPKorwbPKTarget
+ + " has an unkown prefix."});
+
+ }
+
+ return calculatebPKwbPK(baseID + "+" + bPKorwbPKTarget);
+
+ }
+
public static String encryptBPK(String bpk, String target, PublicKey publicKey) throws BuildException {
MiscUtil.assertNotNull(bpk, "BPK");
MiscUtil.assertNotNull(publicKey, "publicKey");
@@ -211,7 +210,8 @@ public class BPKBuilder {
*/
public String buildStorkeIdentifier(IdentityLink identityLink, String destinationCountry)
throws BuildException {
- return buildStorkbPK(identityLink, "AT", destinationCountry);
+ return buildStorkbPK(identityLink.getIdentificationValue(),
+ identityLink.getIdentificationType(), "AT", destinationCountry);
}
/**
@@ -224,10 +224,7 @@ public class BPKBuilder {
*/
public String buildStorkeIdentifier(String identificationType, String identificationValue, String destinationCountry)
throws BuildException {
- IdentityLink tempIdentity = new IdentityLink();
- tempIdentity.setIdentificationType(identificationType);
- tempIdentity.setIdentificationValue(identificationValue);
- return buildStorkbPK(tempIdentity, "AT", destinationCountry);
+ return buildStorkbPK(identificationValue, identificationType, "AT", destinationCountry);
}
/**
@@ -239,16 +236,17 @@ public class BPKBuilder {
* @return storkid in a BASE64 encoding
* @throws BuildException if an error occurs on building the wbPK
*/
- public String buildStorkbPK(IdentityLink identityLink, String sourceCountry, String destinationCountry)
+ public String buildStorkbPK(String baseID, String baseIDType, String sourceCountry, String destinationCountry)
throws BuildException {
String identificationValue = null;
// check if we have been called by public sector application
- if (identityLink.getIdentificationType().startsWith(Constants.URN_PREFIX_BASEID)) {
- identificationValue = calculateStorkeIdentifierBase(identityLink, sourceCountry, destinationCountry);
+ if (baseIDType.startsWith(Constants.URN_PREFIX_BASEID)) {
+ identificationValue = calculateStorkeIdentifierBase(baseID, sourceCountry, destinationCountry);
+
} else { // if not, sector identification value is already calculated by BKU
Logger.info("STORK eIdentifier already provided by BKU");
- identificationValue = identityLink.getIdentificationValue();
+ identificationValue = baseID;
}
if ((identificationValue == null ||
@@ -266,19 +264,26 @@ public class BPKBuilder {
return eIdentifier;
}
-
- private String calculateStorkeIdentifierBase(IdentityLink identityLink, String sourceCountry, String destinationCountry) throws BuildException {
- String basisbegriff = identityLink.getIdentificationValue() + "+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry;
- Logger.info("Building STORK identification from: [identValue]+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry);
- try {
+
+ private String calculateStorkeIdentifierBase(String baseID, String sourceCountry, String destinationCountry) throws BuildException {
+ String basisbegriff = baseID + "+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry;
+ Logger.info("Building STORK identification from: [identValue]+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry);
+ return calculatebPKwbPK(basisbegriff);
+
+ }
+
+ private String calculatebPKwbPK(String basisbegriff) throws BuildException {
+ try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] hash = md.digest(basisbegriff.getBytes("ISO-8859-1"));
String hashBase64 = Base64Utils.encode(hash);
Logger.debug("STORK identification defined as: " + hashBase64);
return hashBase64;
+
} catch (Exception ex) {
throw new BuildException("builder.00", new Object[]{"storkid", ex.toString()}, ex);
}
+
}
private static byte[] encrypt(byte[] inputBytes, PublicKey publicKey) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {