diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-10-24 13:42:40 +0200 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-10-24 13:42:40 +0200 | 
| commit | cf30fab96d66c6beb46f1c69bf8a9d4bed2fb715 (patch) | |
| tree | 820235c716769947420ebc49642f8e71928ba7b3 /id/server | |
| parent | 479f2dc2f37b0bcdc9317e6d740d1e173b34bbb4 (diff) | |
| download | moa-id-spss-cf30fab96d66c6beb46f1c69bf8a9d4bed2fb715.tar.gz moa-id-spss-cf30fab96d66c6beb46f1c69bf8a9d4bed2fb715.tar.bz2 moa-id-spss-cf30fab96d66c6beb46f1c69bf8a9d4bed2fb715.zip | |
refactor bPK/wbPK builder
Diffstat (limited to 'id/server')
| -rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java | 69 | 
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 { | 
