diff options
Diffstat (limited to 'mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java')
-rw-r--r-- | mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java | 323 |
1 files changed, 0 insertions, 323 deletions
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java deleted file mode 100644 index 7e204632..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java +++ /dev/null @@ -1,323 +0,0 @@ -/* -* Copyright 2008 Federal Chancellery Austria and -* Graz University of Technology -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import iaik.asn1.ASN; -import iaik.asn1.ASN1Object; -import iaik.asn1.CodingException; -import iaik.asn1.DerCoder; -import iaik.asn1.NumericString; -import iaik.asn1.OCTET_STRING; -import iaik.asn1.ObjectID; -import iaik.asn1.SEQUENCE; -import iaik.asn1.SET; -import iaik.asn1.UNKNOWN; -import iaik.asn1.structures.ChoiceOfTime; - -import java.io.IOException; -import java.math.BigInteger; -import java.nio.charset.Charset; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.TimeZone; - -import javax.xml.datatype.DatatypeFactory; -import javax.xml.datatype.XMLGregorianCalendar; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.buergerkarte.namespaces.cardchannel.AttributeList; -import at.buergerkarte.namespaces.cardchannel.AttributeType; -import at.buergerkarte.namespaces.cardchannel.ObjectFactory; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLExceptionMessages; -import at.gv.egiz.stal.InfoboxReadRequest; -import at.gv.egiz.stal.InfoboxReadResponse; -import at.gv.egiz.stal.STALRequest; - -/** - * An implementation of the {@link Infobox} <em>Certificates</em> as - * specified in Security Layer 1.2. - * - * @author mcentner - */ -public class SVPersonendatenInfoboxImpl extends AbstractAssocArrayInfobox { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(SVPersonendatenInfoboxImpl.class); - - public static final String EHIC = "EHIC"; - - public static final String GRUNDDATEN = "Grunddaten"; - - public static final String STATUS = "Status"; - - public static final String SV_PERSONENBINDUNG = "SV-Personenbindung"; - - /** - * The valid keys. - */ - public static final String[] KEYS = new String[] { - GRUNDDATEN, EHIC, STATUS, SV_PERSONENBINDUNG - }; - - @Override - public String getIdentifier() { - return "SV-Personendaten"; - } - - @Override - public String[] getKeys() { - return KEYS; - } - - @Override - public boolean isValuesAreXMLEntities() { - return true; - } - - @Override - public Map<String, Object> getValues(List<String> keys, SLCommandContext cmdCtx) throws SLCommandException { - - STALHelper stalHelper = new STALHelper(cmdCtx.getSTAL()); - - if (keys != null && !keys.isEmpty()) { - - List<STALRequest> stalRequests = new ArrayList<STALRequest>(); - - // get values - InfoboxReadRequest infoboxReadRequest; - for (int i = 0; i < keys.size(); i++) { - infoboxReadRequest = new InfoboxReadRequest(); - infoboxReadRequest.setInfoboxIdentifier(keys.get(i)); - stalRequests.add(infoboxReadRequest); - } - - stalHelper.transmitSTALRequest(stalRequests); - - Map<String, Object> values = new HashMap<String, Object>(); - - try { - for (int i = 0; i < keys.size(); i++) { - - String key = keys.get(i); - InfoboxReadResponse nextResponse = (InfoboxReadResponse) stalHelper.nextResponse(InfoboxReadResponse.class); - - - ObjectFactory objectFactory = new ObjectFactory(); - - if (EHIC.equals(key)) { - AttributeList attributeList = createAttributeList(nextResponse.getInfoboxValue()); - values.put(key, objectFactory.createEHIC(attributeList)); - } else if (GRUNDDATEN.equals(key)) { - AttributeList attributeList = createAttributeList(nextResponse.getInfoboxValue()); - values.put(key, objectFactory.createGrunddaten(attributeList)); - } else if (SV_PERSONENBINDUNG.equals(key)) { - values.put(key, objectFactory.createSVPersonenbindung(nextResponse.getInfoboxValue())); - } else if (STATUS.equals(key)) { - AttributeList attributeList = createAttributeListFromRecords(nextResponse.getInfoboxValue()); - values.put(key, objectFactory.createStatus(attributeList)); - } - - } - } catch (CodingException e) { - log.info("Failed to decode '" + getIdentifier() + "' infobox.", e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID, - new Object[] { "IdentityLink" }); - - } - - return values; - - } else { - - return new HashMap<String, Object>(); - - } - - - } - - public static AttributeList createAttributeList(byte[] infoboxValue) throws CodingException { - - ObjectFactory objectFactory = new ObjectFactory(); - - ASN1Object asn1 = DerCoder.decode(infoboxValue); - - AttributeList attributeList = objectFactory.createAttributeList(); - List<AttributeType> attributes = attributeList.getAttribute(); - - if (asn1.isA(ASN.SEQUENCE)) { - for (int i = 0; i < ((SEQUENCE) asn1).countComponents(); i++) { - - AttributeType attributeType = objectFactory.createAttributeType(); - - if (asn1.getComponentAt(i).isA(ASN.SEQUENCE)) { - SEQUENCE attribute = (SEQUENCE) asn1.getComponentAt(i); - if (attribute.getComponentAt(0).isA(ASN.ObjectID)) { - ObjectID objectId = (ObjectID) attribute.getComponentAt(0); - attributeType.setOid("urn:oid:" + objectId.getID()); - } - if (attribute.getComponentAt(1).isA(ASN.SET)) { - SET values = (SET) attribute.getComponentAt(1); - for (int j = 0; j < values.countComponents(); j++) { - setAttributeValue(attributeType, values.getComponentAt(j)); - } - } - } - - attributes.add(attributeType); - - } - - } - - return attributeList; - - } - - public static AttributeList createAttributeListFromRecords(byte[] infoboxValue) throws CodingException { - - ObjectFactory objectFactory = new ObjectFactory(); - - AttributeList attributeList = objectFactory.createAttributeList(); - List<AttributeType> attributes = attributeList.getAttribute(); - - byte[] records = infoboxValue; - - while (records != null && records.length > 0) { - - int length; - - if (records[0] != 0x00) { - - ASN1Object asn1 = DerCoder.decode(records); - - AttributeType attributeType = objectFactory.createAttributeType(); - - if (asn1.isA(ASN.SEQUENCE)) { - SEQUENCE attribute = (SEQUENCE) asn1; - if (attribute.getComponentAt(0).isA(ASN.ObjectID)) { - ObjectID objectId = (ObjectID) attribute.getComponentAt(0); - attributeType.setOid("urn:oid:" + objectId.getID()); - } - if (attribute.getComponentAt(1).isA(ASN.SET)) { - SET values = (SET) attribute.getComponentAt(1); - for (int j = 0; j < values.countComponents(); j++) { - setAttributeValue(attributeType, values.getComponentAt(j)); - } - } - } - - attributes.add(attributeType); - - length = DerCoder.encode(asn1).length; - - } else { - length = 1; - } - - if (length < records.length) { - records = Arrays.copyOfRange(records, length + 1, records.length); - } else { - records = null; - } - - } - - return attributeList; - - } - - private static void setAttributeValue(AttributeType attributeType, ASN1Object value) { - - if (value.isA(ASN.OCTET_STRING)) { - - try { - byte[] octets = ((OCTET_STRING) value).getWholeValue(); - attributeType.setLatin1String(new String(octets, Charset.forName("ISO-8859-1"))); - } catch (IOException e) { - log.info("Failed to set Latin1String.", e); - } - - } else if (value.isA(ASN.NumericString)) { - - attributeType.setNumericString((String) ((NumericString) value).getValue()); - - } else if (value.isA(ASN.GeneralizedTime)) { - - try { - ChoiceOfTime choiceOfTime = new ChoiceOfTime(value); - - GregorianCalendar gregorianCalendar = new GregorianCalendar(); - gregorianCalendar.setTimeZone(TimeZone.getTimeZone("UTC")); - gregorianCalendar.setTime(choiceOfTime.getDate()); - - DatatypeFactory datatypeFactory = DatatypeFactory.newInstance(); - XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar(gregorianCalendar); - xmlGregorianCalendar.setTimezone(0); - - attributeType.setGeneralizedTime(xmlGregorianCalendar); - } catch (Exception e) { - log.info("Failed to set GeneralizedTime.", e); - } - - } else if (value.isA(ASN.INTEGER)) { - - attributeType.setInteger((BigInteger) value.getValue()); - - } else if (value.isA(ASN.UTF8String)) { - - attributeType.setUTF8String((String) value.getValue()); - - } else if (value.isA(ASN.PrintableString)) { - - attributeType.setPrintableString((String) value.getValue()); - - } else if (value.isA(ASN.UNKNOWN)) { - - byte[] bytes = (byte[]) ((UNKNOWN) value).getValue(); - - try { - BigInteger bigInteger = new BigInteger(bytes); - String string = bigInteger.toString(16); - - Date date = new SimpleDateFormat("yyyyMMdd").parse(string); - attributeType.setDate(new SimpleDateFormat("yyyy-MM-dd").format(date)); - } catch (Exception e) { - log.info("Failed to set Date.", e); - } - } - - } - - - - - -} |