aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EncryptedBPKAttributeBuilder.java
diff options
context:
space:
mode:
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.java55
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) {