diff options
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EncryptedBPKAttributeBuilder.java')
-rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EncryptedBPKAttributeBuilder.java | 55 |
1 files changed, 34 insertions, 21 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EncryptedBPKAttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EncryptedBPKAttributeBuilder.java index bf7187e51..bd9d5b953 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EncryptedBPKAttributeBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EncryptedBPKAttributeBuilder.java @@ -22,6 +22,8 @@ *******************************************************************************/ package at.gv.egovernment.moa.id.protocols.builder.attributes; +import org.apache.commons.lang3.StringUtils; + import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.api.idp.IPVPAttributeBuilder; @@ -45,33 +47,44 @@ public class EncryptedBPKAttributeBuilder implements IPVPAttributeBuilder { public <ATT> ATT build(ISPConfiguration oaParam, IAuthData authData, IAttributeGenerator<ATT> g) throws AttributeBuilderException { - if (authData instanceof IMOAAuthData) { - if (((IMOAAuthData)authData).getEncbPKList() != null && - ((IMOAAuthData)authData).getEncbPKList().size() > 0) { - Pair<String, String> value = ((IMOAAuthData)authData).getEncbPKList().get(0); - String result = BPKListAttributeBuilder.LIST_ELEMENT_START - + value.getSecond() + DELIMITER_ENCBPK_TARGET + value.getFirst() - + BPKListAttributeBuilder.LIST_ELEMENT_END; - - for (int i=1; i<((IMOAAuthData)authData).getEncbPKList().size(); i++) { - Pair<String, String> el = ((IMOAAuthData)authData).getEncbPKList().get(i); - result += BPKListAttributeBuilder.DELIMITER_BPK_LIST - + BPKListAttributeBuilder.LIST_ELEMENT_START - + el.getSecond() + DELIMITER_ENCBPK_TARGET + el.getFirst() - + BPKListAttributeBuilder.LIST_ELEMENT_END; + String encBpkListAttribute = authData.getGenericData(ENC_BPK_LIST_NAME, String.class); + if (StringUtils.isEmpty(encBpkListAttribute)) { + if (authData instanceof IMOAAuthData) { + if (((IMOAAuthData)authData).getEncbPKList() != null && + ((IMOAAuthData)authData).getEncbPKList().size() > 0) { + Pair<String, String> value = ((IMOAAuthData)authData).getEncbPKList().get(0); + String result = BPKListAttributeBuilder.LIST_ELEMENT_START + + value.getSecond() + DELIMITER_ENCBPK_TARGET + value.getFirst() + + BPKListAttributeBuilder.LIST_ELEMENT_END; + for (int i=1; i<((IMOAAuthData)authData).getEncbPKList().size(); i++) { + Pair<String, String> el = ((IMOAAuthData)authData).getEncbPKList().get(i); + result += BPKListAttributeBuilder.DELIMITER_BPK_LIST + + BPKListAttributeBuilder.LIST_ELEMENT_START + + el.getSecond() + DELIMITER_ENCBPK_TARGET + el.getFirst() + + BPKListAttributeBuilder.LIST_ELEMENT_END; + + } + + return g.buildStringAttribute(ENC_BPK_LIST_FRIENDLY_NAME, ENC_BPK_LIST_NAME, + result); + } - - return g.buildStringAttribute(ENC_BPK_LIST_FRIENDLY_NAME, ENC_BPK_LIST_NAME, - result); - + + } else { + Logger.info(ENC_BPK_LIST_FRIENDLY_NAME + " is only available in MOA-ID context"); + } - } else - Logger.info(ENC_BPK_LIST_FRIENDLY_NAME + " is only available in MOA-ID context"); + } else { + return g.buildStringAttribute(ENC_BPK_LIST_FRIENDLY_NAME, ENC_BPK_LIST_NAME, + encBpkListAttribute); + + } throw new UnavailableAttributeException(ENC_BPK_LIST_NAME); - + + } public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) { |