summaryrefslogtreecommitdiff
path: root/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink
diff options
context:
space:
mode:
Diffstat (limited to 'mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink')
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java416
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java428
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java188
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java315
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java91
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java143
7 files changed, 0 insertions, 1673 deletions
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java
deleted file mode 100644
index 31e5163a..00000000
--- a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java
+++ /dev/null
@@ -1,416 +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.idlink;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.security.PublicKey;
-import java.security.cert.X509Certificate;
-import java.util.List;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.PropertyException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.Source;
-import javax.xml.transform.dom.DOMResult;
-
-import org.w3._2000._09.xmldsig_.KeyValueType;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import at.buergerkarte.namespaces.personenbindung._20020506_.CompressedIdentityLinkType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.AbstractPersonType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType.Value;
-import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType.FamilyName;
-import at.gv.egiz.idlink.ans1.CitizenPublicKey;
-import at.gv.egiz.idlink.ans1.IdentityLink;
-import at.gv.egiz.idlink.ans1.PersonData;
-import at.gv.egiz.idlink.ans1.PhysicalPersonData;
-import at.gv.egiz.marshal.MarshallerFactory;
-import at.gv.egiz.marshal.NamespacePrefixMapperImpl;
-import at.gv.egiz.xmldsig.KeyTypeNotSupportedException;
-import at.gv.egiz.xmldsig.KeyValueFactory;
-
-public class CompressedIdentityLinkFactory {
-
- /**
- * The instance returned by {@link #getInstance()}.
- */
- private static CompressedIdentityLinkFactory instance;
-
- /**
- * The <code>JAXBContext</code>.
- */
- private static JAXBContext jaxbContext;
-
- /**
- * The <code>KeyValueFactory</code>.
- */
- private static KeyValueFactory keyValueFactory;
-
- /**
- * Get an instance of this <code>CompressedIdentityLinkFactory</code>.
- *
- * @return an instance of this <code>CompressedIdentityLinkFactory</code>
- */
- public synchronized static CompressedIdentityLinkFactory getInstance() {
- if (instance == null) {
- instance = new CompressedIdentityLinkFactory();
- }
- return instance;
- }
-
- /**
- * Private constructor.
- */
- private CompressedIdentityLinkFactory() {
-
- keyValueFactory = new KeyValueFactory();
-
- StringBuffer packageNames = new StringBuffer();
- packageNames.append(at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory.class.getPackage().getName());
- packageNames.append(":");
- packageNames.append(org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName());
- packageNames.append(":");
- packageNames.append(org.w3._2001._04.xmldsig_more_.ObjectFactory.class.getPackage().getName());
- packageNames.append(":");
- packageNames.append(at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory.class.getPackage().getName());
-
- try {
- jaxbContext = JAXBContext.newInstance(packageNames.toString());
- } catch (JAXBException e) {
- // we should not get an JAXBException initializing the JAXBContext
- throw new RuntimeException(e);
- }
-
- }
-
- public IdentityLink createIdLink(CompressedIdentityLinkType compressedIdentityLinkType) {
-
- // IssuerTemplate
- String issuerTemplate = compressedIdentityLinkType.getIssuerTemplate();
-
- // AssertionId
- String assertionID = compressedIdentityLinkType.getAssertionID();
-
- // IssueInstant
- String issueInstant = compressedIdentityLinkType.getIssueInstant();
-
- AbstractPersonType personDataType = compressedIdentityLinkType.getPersonData();
-
- String baseId = null;
-
- List<IdentificationType> identifications = personDataType.getIdentification();
- for (IdentificationType identificationType : identifications) {
- String type = identificationType.getType();
- if ("urn:publicid:gv.at:baseid".equals(type)) {
- baseId = identificationType.getValue().getValue();
- }
- }
-
- String givenName = null;
- String familyName = null;
- String dateOfBirth = null;
-
- if (personDataType instanceof PhysicalPersonType) {
- PhysicalPersonType physicalPersonType = (PhysicalPersonType) personDataType;
- PersonNameType name = physicalPersonType.getName();
- List<String> givenNames = name.getGivenName();
- if (!givenNames.isEmpty()) {
- givenName = givenNames.get(0);
- }
- List<FamilyName> familyNames = name.getFamilyName();
- if (!familyNames.isEmpty()) {
- familyName = familyNames.get(0).getValue();
- }
- dateOfBirth = physicalPersonType.getDateOfBirth();
- }
-
- PhysicalPersonData physicalPersonData = new PhysicalPersonData(baseId, givenName, familyName, dateOfBirth);
- PersonData personData = new PersonData(physicalPersonData);
-
- int numKeys = compressedIdentityLinkType.getCitizenPublicKey().size();
- CitizenPublicKey[] citizenPublicKeys = new CitizenPublicKey[numKeys];
- for (int i = 0; i < numKeys;) {
- citizenPublicKeys[i] = new CitizenPublicKey(++i);
- }
-
- byte[] signatureValue = compressedIdentityLinkType.getSignatureValue();
- byte[] referenceDigest = compressedIdentityLinkType.getReferenceDigest();
- byte[] referenceManifestDigest = compressedIdentityLinkType.getReferenceManifestDigest();
- byte[] manifestReferenceDigest = compressedIdentityLinkType.getManifestReferenceDigest();
-
- IdentityLink idLink = new IdentityLink(issuerTemplate, assertionID, issueInstant, personData, citizenPublicKeys, signatureValue);
- idLink.setReferenceDigest(referenceDigest);
- idLink.setReferenceManifestDigest(referenceManifestDigest);
- idLink.setManifestReferenceDigest(manifestReferenceDigest);
-
- return idLink;
-
- }
-
- /**
- * Creates a new <code>CompressedIdentityLink</code> element from the given
- * ASN.1 representation of an <code>idLink</code>.
- *
- * @param idLink
- * the ASN.1 representation of an <code>IdentityLink</code>
- * @param certificates
- * a list of {@link X509Certificate}s containing the corresponding
- * public keys
- * @param domainId TODO
- * @return a new <code>CompressedIdentityLink</code> element
- *
- * @throws NullPointerException
- * if <code>idLink</code> or <code>certificates</code> is
- * <code>null</code>
- * @throws IllegalArgumentException
- * if <code>idLink</code> references certificates not in the range
- * of the <code>certificates</code> list
- */
- public JAXBElement<CompressedIdentityLinkType> createCompressedIdentityLink(
- at.gv.egiz.idlink.ans1.IdentityLink idLink,
- List<X509Certificate> certificates, String domainId) {
-
- at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory prFactory =
- new at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory();
-
- at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory pbFactory =
- new at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory();
-
- org.w3._2000._09.xmldsig_.ObjectFactory dsFactory = new org.w3._2000._09.xmldsig_.ObjectFactory();
-
- // PersonData
- PhysicalPersonData __physicalPersonData = idLink.getPersonData()
- .getPhysicalPerson();
-
- Value identificationTypeValue = prFactory.createIdentificationTypeValue();
- identificationTypeValue.setValue(__physicalPersonData.getBaseId());
- IdentificationType identificationType = prFactory
- .createIdentificationType();
- identificationType.setValue(identificationTypeValue);
- if (domainId != null) {
- identificationType.setType(domainId);
- } else {
- identificationType.setType("urn:publicid:gv.at:baseid");
- }
-
- PersonNameType personNameType = prFactory.createPersonNameType();
- FamilyName personNameTypeFamilyName = prFactory
- .createPersonNameTypeFamilyName();
- personNameTypeFamilyName.setValue(__physicalPersonData.getFamilyName());
- personNameType.getFamilyName().add(personNameTypeFamilyName);
- personNameType.getGivenName().add(__physicalPersonData.getGivenName());
-
- PhysicalPersonType physicalPersonType = prFactory
- .createPhysicalPersonType();
- physicalPersonType.getIdentification().add(identificationType);
- physicalPersonType.setName(personNameType);
- physicalPersonType.setDateOfBirth(__physicalPersonData.getDateOfBirth());
-
- // CompressedIdentityLink
- CompressedIdentityLinkType compressedIdentityLinkType = pbFactory
- .createCompressedIdentityLinkType();
- compressedIdentityLinkType.setIssuerTemplate(idLink.getIssuerTemplate());
- compressedIdentityLinkType.setAssertionID(idLink.getAssertionID());
- compressedIdentityLinkType.setIssueInstant(idLink.getIssueInstant());
- compressedIdentityLinkType.setPersonData(physicalPersonType);
-
- // CitizenPublicKey
- CitizenPublicKey[] __citizenPublicKeys = idLink.getCitizenPublicKeys();
- for (CitizenPublicKey __citizenPublicKey : __citizenPublicKeys) {
-
- X509Certificate certificate = certificates.get(__citizenPublicKey.getOnToken());
- PublicKey publicKey = certificate.getPublicKey();
-
- JAXBElement<?> keyValue;
- try {
- keyValue = keyValueFactory.createKeyValue(publicKey);
- } catch (KeyTypeNotSupportedException e) {
- // TODO: handle exception properly
- throw new RuntimeException(e);
- }
-
- KeyValueType keyValueType = dsFactory.createKeyValueType();
- keyValueType.getContent().add(keyValue);
-
- compressedIdentityLinkType.getCitizenPublicKey().add(keyValueType);
- }
-
- compressedIdentityLinkType.setSignatureValue(idLink.getSignatureValue());
- compressedIdentityLinkType.setReferenceDigest(idLink.getReferenceDigest());
- compressedIdentityLinkType.setReferenceManifestDigest(idLink
- .getReferenceManifestDigest());
- compressedIdentityLinkType.setManifestReferenceDigest(idLink
- .getManifestReferenceDigest());
- JAXBElement<CompressedIdentityLinkType> compressedIdentityLink = pbFactory
- .createCompressedIdentityLink(compressedIdentityLinkType);
-
- return compressedIdentityLink;
-
- }
-
- /**
- * Marshall the given <code>compressedIdentityLink</code> into a DOM document
- * with the given Nodes as <code>parent</code> and <code>nextSibling</code>
- * nodes.
- *
- * @param compressedIdentityLink
- * the <code>CompressedIdentityLink</code> element
- * @param parent
- * the parent node
- * @param nextSibling
- * the next sibling node (may be <code>null</code>)
- * @param applyWorkarounds
- * apply workarounds as spefiyed by
- * {@link #applyWorkarounds(Element, int)}
- *
- * @throws JAXBException
- * if an unexpected error occurs while marshalling
- * @throws NullPointerException
- * if <code>compressdIdentityLink</code> or <code>parent</code> is
- * <code>null</code>
- */
- public void marshallCompressedIdentityLink(
- JAXBElement<CompressedIdentityLinkType> compressedIdentityLink,
- Node parent, Node nextSibling, boolean applyWorkarounds) throws JAXBException {
-
- DOMResult result = new DOMResult(parent, nextSibling);
-
-
- try {
- Marshaller marshaller = MarshallerFactory.createMarshaller(jaxbContext);
-
- marshaller.marshal(compressedIdentityLink, result);
- } catch (PropertyException e) {
- throw new RuntimeException(e);
- }
-
- if (applyWorkarounds) {
- Element element = (Element) ((nextSibling != null)
- ? nextSibling.getPreviousSibling()
- : parent.getFirstChild());
- applyWorkarounds(element, 76);
- }
-
- }
-
- @SuppressWarnings("unchecked")
- public CompressedIdentityLinkType unmarshallCompressedIdentityLink(Source source) throws JAXBException {
-
- Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-
- return ((JAXBElement<CompressedIdentityLinkType>) unmarshaller.unmarshal(source)).getValue();
-
- }
-
- /**
- * Apply some workarounds to the given CompressedIdentityLink
- * <code>element</code> to achieve compatibility with IdentityLink
- * transformation stylesheets that have been designed for a (buggy) form of
- * the CompressedIdentityLink as produced by a well-known citizen card
- * environment implementation.
- *
- * <ol>
- * <li>Replace the attribute node <code>URN</code> of the
- * <code>NamedCurve</code> element of an <code>ECDSAKeyValue</code> element by
- * a child text-node with the same content.</li>
- * <li>Replace the attribute nodes <code>Value</code> of the <code>X</code>
- * and <code>Y</code> elements of an <code>ECDSAKeyValue</code> element by a
- * child text-node with the same content.</li>
- * <li>Insert &quot;\n&quot; at <code>base64LineLength</code> into the Base64
- * content of the <code>Modulus</code> element of an <code>RSAKeyValue</code>
- * element.
- * </ol>
- *
- * @param element
- * the <code>CompressedIdentityLink</code> element
- * @param base64LineLength
- * the line length of Base64 content
- */
- public void applyWorkarounds(Element element, int base64LineLength) {
-
- Document document = element.getOwnerDocument();
-
- NodeList nodeList = element.getElementsByTagNameNS(
- "http://www.w3.org/2001/04/xmldsig-more#", "NamedCurve");
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node ecdsaNameCurve = nodeList.item(i);
- Attr attrNode = ((Element) ecdsaNameCurve).getAttributeNodeNS(null,
- "URN");
- ecdsaNameCurve
- .appendChild(document.createTextNode(attrNode.getValue()));
- ((Element) ecdsaNameCurve).removeAttributeNode(attrNode);
- }
- nodeList = document.getElementsByTagNameNS(
- "http://www.w3.org/2001/04/xmldsig-more#", "X");
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node x = nodeList.item(i);
- Attr attrNode = ((Element) x).getAttributeNodeNS(null, "Value");
- x.appendChild(document.createTextNode(attrNode.getValue()));
- ((Element) x).removeAttributeNode(attrNode);
- }
- nodeList = document.getElementsByTagNameNS(
- "http://www.w3.org/2001/04/xmldsig-more#", "Y");
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node y = nodeList.item(i);
- Attr attrNode = ((Element) y).getAttributeNodeNS(null, "Value");
- y.appendChild(document.createTextNode(attrNode.getValue()));
- ((Element) y).removeAttributeNode(attrNode);
- }
-
- if (base64LineLength > 0) {
- nodeList = document.getElementsByTagNameNS(
- "http://www.w3.org/2000/09/xmldsig#", "Modulus");
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node modulus = nodeList.item(i);
- String value = ((Element) modulus).getTextContent();
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- new ByteArrayInputStream(value.getBytes())));
- char[] buff = new char[base64LineLength];
- StringBuffer newValue = new StringBuffer();
- int found = 0;
- try {
- while ((found = reader.read(buff)) > 0) {
- newValue.append(buff, 0, found);
- if (found == base64LineLength)
- newValue.append('\n');
- }
- } catch (IOException e) {
- // this should never happen, as we are reading from a ByteArrayInputStream
- throw new RuntimeException(e);
- }
- ((Element) modulus).setTextContent(newValue.toString());
- }
-
- }
-
-
- }
-
-}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java
deleted file mode 100644
index 38597446..00000000
--- a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java
+++ /dev/null
@@ -1,428 +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.idlink;
-
-import iaik.xml.crypto.XmldsigMore;
-
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.math.BigInteger;
-import java.nio.charset.Charset;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.PropertyException;
-import javax.xml.crypto.MarshalException;
-import javax.xml.crypto.dsig.CanonicalizationMethod;
-import javax.xml.crypto.dsig.DigestMethod;
-import javax.xml.crypto.dsig.Manifest;
-import javax.xml.crypto.dsig.Reference;
-import javax.xml.crypto.dsig.SignatureMethod;
-import javax.xml.crypto.dsig.SignedInfo;
-import javax.xml.crypto.dsig.Transform;
-import javax.xml.crypto.dsig.XMLObject;
-import javax.xml.crypto.dsig.XMLSignature;
-import javax.xml.crypto.dsig.XMLSignatureException;
-import javax.xml.crypto.dsig.XMLSignatureFactory;
-import javax.xml.crypto.dsig.dom.DOMSignContext;
-import javax.xml.crypto.dsig.keyinfo.KeyInfo;
-import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
-import javax.xml.crypto.dsig.keyinfo.X509Data;
-import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
-import javax.xml.crypto.dsig.spec.TransformParameterSpec;
-import javax.xml.crypto.dsig.spec.XPathFilterParameterSpec;
-import javax.xml.datatype.DatatypeConfigurationException;
-import javax.xml.datatype.DatatypeFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import oasis.names.tc.saml._1_0.assertion.AssertionType;
-import oasis.names.tc.saml._1_0.assertion.AttributeStatementType;
-import oasis.names.tc.saml._1_0.assertion.AttributeType;
-import oasis.names.tc.saml._1_0.assertion.SubjectConfirmationType;
-import oasis.names.tc.saml._1_0.assertion.SubjectType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import at.gv.e_government.reference.namespace.persondata._20020228_.AbstractPersonType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType;
-import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType.Value;
-import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType.FamilyName;
-import at.gv.egiz.marshal.MarshallerFactory;
-import at.gv.egiz.marshal.NamespacePrefixMapperImpl;
-import at.gv.egiz.xmldsig.KeyTypeNotSupportedException;
-import at.gv.egiz.xmldsig.KeyValueFactory;
-import oasis.names.tc.saml._1_0.assertion.AnyType;
-
-public class IdentityLinkFactory {
-
- private static Log log = LogFactory.getLog(IdentityLinkFactory.class);
-
- /**
- * The instance returned by {@link #getInstance()}.
- */
- private static IdentityLinkFactory instance;
-
- /**
- * The <code>JAXBContext</code>.
- */
- private static JAXBContext jaxbContext;
-
- /**
- * The <code>KeyValueFactory</code>.
- */
- private static KeyValueFactory keyValueFactory;
-
- /**
- * Get an instance of this <code>CompressedIdentityLinkFactory</code>.
- *
- * @return an instance of this <code>CompressedIdentityLinkFactory</code>
- */
- public synchronized static IdentityLinkFactory getInstance() {
- if (instance == null) {
- instance = new IdentityLinkFactory();
- }
- return instance;
- }
-
- /**
- * Private constructor.
- */
- private IdentityLinkFactory() {
-
- keyValueFactory = new KeyValueFactory();
-
- StringBuffer packageNames = new StringBuffer();
- packageNames.append(at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory.class.getPackage().getName());
- packageNames.append(":");
- packageNames.append(org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName());
- packageNames.append(":");
- packageNames.append(org.w3._2001._04.xmldsig_more_.ObjectFactory.class.getPackage().getName());
- packageNames.append(":");
- packageNames.append(at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory.class.getPackage().getName());
- packageNames.append(":");
- packageNames.append(oasis.names.tc.saml._1_0.assertion.ObjectFactory.class.getPackage().getName());
-
- try {
- jaxbContext = JAXBContext.newInstance(packageNames.toString());
- } catch (JAXBException e) {
- // we should not get an JAXBException initializing the JAXBContext
- throw new RuntimeException(e);
- }
-
- }
-
- public JAXBElement<AssertionType> createAssertion(String assertionId,
- Date issueInstant, String issuer, long majorVersion, long minorVersion, AttributeStatementType attributeStatement) {
-
- oasis.names.tc.saml._1_0.assertion.ObjectFactory asFactory =
- new oasis.names.tc.saml._1_0.assertion.ObjectFactory();
-
- AssertionType assertionType = asFactory.createAssertionType();
-
- assertionType.setAssertionID(assertionId);
-
- GregorianCalendar gregorianCalendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
- gregorianCalendar.setTime(issueInstant);
- try {
- DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
- assertionType.setIssueInstant(datatypeFactory.newXMLGregorianCalendar(gregorianCalendar));
- } catch (DatatypeConfigurationException e) {
- throw new RuntimeException(e);
- }
-
- assertionType.setIssuer(issuer);
-
- assertionType.setMajorVersion(BigInteger.valueOf(majorVersion));
- assertionType.setMinorVersion(BigInteger.valueOf(minorVersion));
-
- assertionType.getStatementOrSubjectStatementOrAuthenticationStatement().add(attributeStatement);
-
- return asFactory.createAssertion(assertionType);
-
- }
-
- public AttributeStatementType createAttributeStatement(String idValue, String idType,
- String givenName, String familyName, String dateOfBirth,
- PublicKey[] publicKeys) throws KeyTypeNotSupportedException {
-
- oasis.names.tc.saml._1_0.assertion.ObjectFactory asFactory =
- new oasis.names.tc.saml._1_0.assertion.ObjectFactory();
-
- at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory prFactory =
- new at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory();
-
- AttributeStatementType attributeStatementType = asFactory.createAttributeStatementType();
-
- // saml:Subject
- SubjectConfirmationType subjectConfirmationType = asFactory.createSubjectConfirmationType();
-
- subjectConfirmationType.getConfirmationMethod().add("urn:oasis:names:tc:SAML:1.0:cm:sender-vouches");
-
- // pr:Person
- Value identificationTypeValue = prFactory.createIdentificationTypeValue();
- identificationTypeValue.setValue(idValue);
- IdentificationType identificationType = prFactory
- .createIdentificationType();
- identificationType.setValue(identificationTypeValue);
- identificationType.setType(idType);
-
- PersonNameType personNameType = prFactory.createPersonNameType();
- FamilyName personNameTypeFamilyName = prFactory
- .createPersonNameTypeFamilyName();
- personNameTypeFamilyName.setValue(familyName);
- personNameTypeFamilyName.setPrimary("undefined");
- personNameType.getFamilyName().add(personNameTypeFamilyName);
- personNameType.getGivenName().add(givenName);
-
- PhysicalPersonType physicalPersonType = prFactory
- .createPhysicalPersonType();
- physicalPersonType.getIdentification().add(identificationType);
- physicalPersonType.setName(personNameType);
- physicalPersonType.setDateOfBirth(dateOfBirth);
- JAXBElement<AbstractPersonType> physicalPerson = prFactory.createPerson(physicalPersonType);
-
- AnyType personType = asFactory.createAnyType();
- personType.getContent().add(physicalPerson);
- subjectConfirmationType.setSubjectConfirmationData(personType);
-
- JAXBElement<SubjectConfirmationType> subjectConfirmation = asFactory.createSubjectConfirmation(subjectConfirmationType);
-
- SubjectType subjectType = asFactory.createSubjectType();
- subjectType.getContent().add(subjectConfirmation);
-
- attributeStatementType.setSubject(subjectType);
-
- // saml:Attribute CitizenPublicKey
- for (int i = 0; i < publicKeys.length; i++) {
-
- JAXBElement<?> createKeyValue = keyValueFactory.createKeyValue(publicKeys[i]);
- AttributeType attributeType = asFactory.createAttributeType();
- attributeType.setAttributeName("CitizenPublicKey");
- attributeType.setAttributeNamespace("urn:publicid:gv.at:namespaces:identitylink:1.2");
- AnyType attributeValueType = asFactory.createAnyType();
- attributeValueType.getContent().add(createKeyValue);
- attributeType.getAttributeValue().add(attributeValueType);
-
- attributeStatementType.getAttribute().add(attributeType);
-
- }
-
- return attributeStatementType;
- }
-
- /**
- * Marshall the given <code>compressedIdentityLink</code> into a DOM document
- * with the given Nodes as <code>parent</code> and <code>nextSibling</code>
- * nodes.
- *
- * @param identityLink
- * the <code>CompressedIdentityLink</code> element
- * @param parent
- * the parent node
- * @param nextSibling
- * the next sibling node (may be <code>null</code>)
- * @param applyWorkarounds
- * apply workarounds as spefiyed by
- * {@link #applyWorkarounds(Element, int)}
- *
- * @throws JAXBException
- * if an unexpected error occurs while marshalling
- * @throws NullPointerException
- * if <code>compressdIdentityLink</code> or <code>parent</code> is
- * <code>null</code>
- */
- public void marshallIdentityLink(
- JAXBElement<AssertionType> identityLink,
- Node parent, Node nextSibling) throws JAXBException {
-
- DOMResult result = new DOMResult(parent, nextSibling);
-
- try {
- Marshaller marshaller = MarshallerFactory.createMarshaller(jaxbContext, true);
-
- marshaller.marshal(identityLink, result);
- } catch (PropertyException e) {
- throw new RuntimeException(e);
- }
-
- }
-
- public void signIdentityLink(Element assertion, X509Certificate certificate,
- PrivateKey key) throws NoSuchAlgorithmException,
- InvalidAlgorithmParameterException, XMLSignatureException,
- MarshalException {
-
- XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance();
-
- KeyInfoFactory keyInfoFactory = KeyInfoFactory.getInstance();
-
- List<Reference> references = new ArrayList<Reference>();
-
- // Reference #1
-
- Map<String, String> prefixMap = new HashMap<String, String>();
- prefixMap.put("pr", "http://reference.e-government.gv.at/namespace/persondata/20020228#");
- List<Transform> transforms1 = new ArrayList<Transform>();
- transforms1.add(signatureFactory.newTransform(Transform.XPATH,
- new XPathFilterParameterSpec(
- "not(ancestor-or-self::pr:Identification)", prefixMap)));
- transforms1.add(signatureFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null));
- DigestMethod digestMethod1 = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
- references.add(signatureFactory.newReference("", digestMethod1, transforms1, null, null));
-
- // Reference (Manifest)
-
- DigestMethod digestMethod2 = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
- references.add(signatureFactory.newReference("#manifest", digestMethod2, null, Manifest.TYPE, null));
-
- CanonicalizationMethod canonicalizationMethod = signatureFactory
- .newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,
- (C14NMethodParameterSpec) null);
-
- SignatureMethod signatureMethod;
- String algorithm = key.getAlgorithm();
- if ("RSA".equalsIgnoreCase(algorithm)) {
- signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
- } else if ("ECDSA".equalsIgnoreCase(algorithm) || "EC".equalsIgnoreCase(algorithm)) {
- signatureMethod = signatureFactory.newSignatureMethod(XmldsigMore.SIGNATURE_ECDSA_SHA1, null);
- } else if ("DSA".equalsIgnoreCase(algorithm)) {
- signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.DSA_SHA1, null);
- } else {
- throw new NoSuchAlgorithmException("Algorithm '" + algorithm + "' not supported.");
- }
-
- SignedInfo signedInfo = signatureFactory.newSignedInfo(canonicalizationMethod, signatureMethod, references);
-
-
- X509Data x509Data = keyInfoFactory.newX509Data(Collections.singletonList(certificate));
- KeyInfo keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(x509Data));
-
- // Manifest
-
- Map<String, String> manifestPrefixMap = new HashMap<String, String>();
- manifestPrefixMap.put("dsig", XMLSignature.XMLNS);
- List<Transform> manifestTransforms = Collections
- .singletonList(signatureFactory.newTransform(Transform.XPATH,
- new XPathFilterParameterSpec(
- "not(ancestor-or-self::dsig:Signature)", manifestPrefixMap)));
- Reference manifestReference = signatureFactory.newReference("",
- signatureFactory.newDigestMethod(DigestMethod.SHA1, null),
- manifestTransforms, null, null);
-
- Manifest manifest = signatureFactory.newManifest(Collections
- .singletonList(manifestReference), "manifest");
-
- XMLObject xmlObject = signatureFactory.newXMLObject(Collections
- .singletonList(manifest), null, null, null);
-
- XMLSignature xmlSignature = signatureFactory.newXMLSignature(signedInfo,
- keyInfo, Collections.singletonList(xmlObject), null, null);
-
- DOMSignContext signContext = new DOMSignContext(key, assertion);
-
- if (log.isTraceEnabled()) {
- signContext.setProperty("javax.xml.crypto.dsig.cacheReference", Boolean.TRUE);
- }
-
- xmlSignature.sign(signContext);
-
- if (log.isDebugEnabled()) {
-
- try {
-
- TransformerFactory tf = TransformerFactory.newInstance();
- Transformer transformer = tf.newTransformer();
-
- StringWriter writer = new StringWriter();
-
- transformer.transform(new DOMSource(assertion), new StreamResult(writer));
-
- log.debug(writer.toString());
-
- } catch (Exception e) {
- log.debug(e);
- }
-
- }
-
- if (log.isTraceEnabled()) {
-
- StringBuilder sb = new StringBuilder();
-
- sb.append("Digest input data:\n\n");
-
- try {
-
- Iterator<Reference> refs = references.iterator();
- for (int i = 0; refs.hasNext(); i++) {
- Reference reference = (Reference) refs.next();
- sb.append("Reference " + i + "\n");
-
- Reader reader = new InputStreamReader(reference
- .getDigestInputStream(), Charset.forName("UTF-8"));
- char c[] = new char[512];
- for (int l; (l = reader.read(c)) != -1;) {
- sb.append(c, 0, l);
- }
- sb.append("\n");
- }
-
- sb.append("Manifest Reference\n");
-
- Reader reader = new InputStreamReader(manifestReference
- .getDigestInputStream(), Charset.forName("UTF-8"));
- char c[] = new char[512];
- for (int l; (l = reader.read(c)) != -1;) {
- sb.append(c, 0, l);
- }
-
- } catch (Exception e) {
- sb.append(e.getMessage());
- }
-
- log.trace(sb.toString());
- }
-
- }
-
-}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java
deleted file mode 100644
index 8bee5fa4..00000000
--- a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java
+++ /dev/null
@@ -1,188 +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.idlink;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Templates;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-import at.gv.egiz.bku.utils.urldereferencer.StreamData;
-import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
-
-public class IdentityLinkTransformer {
-
- protected static Log log = LogFactory.getLog(IdentityLinkTransformer.class);
-
- /**
- * The transformer factory.
- */
- private static SAXTransformerFactory factory;
-
- /**
- * The instance to be returned by {@link #getInstance()}.
- */
- private static IdentityLinkTransformer instance;
-
- /**
- * Returns an instance of this <code>IdentityLinkTransfomer</code>.
- *
- * @return an instance of this <code>IdentityLinkTransformer</code>
- */
- public static IdentityLinkTransformer getInstance() {
- if (instance == null) {
- instance = new IdentityLinkTransformer();
- factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
- }
- return instance;
- }
-
- /**
- * Sets the given <code>domainIdentifier</code> on the corresponding
- * node of the given <code>idLink</code>.
- * <p>This method may be used to cope with a flaw in the IssuerTemplate-Stylesheets
- * used to transform a <code>CompressedIdentitiyLink</code> into an
- * <code>IdentityLink</code>. Some IssuerTemplate-Stylesheets do not
- * consider the <code>pr:Type</code> element value of the
- * <code>CompressedIdentityLink</code> and render a <code>pr:Type</code>
- * element value of <code>urn:publicid:gv.at:baseid</code>
- * into the <code>IdentityLink</code> structure. This method allows to
- * set the <code>pr:Type</code> element value on the given <code>idLink</code>
- * after the transformation.
- * </p>
- *
- * @param idLink the <code>IdentityLink</code> element or one of it's ancestors.
- * Must not be <code>null</code>.
- *
- * @param domainIdentifier the value to be set for the <code>pr:Type</code> element
- *
- * @throws NullPointerException if <code>idLink</code> is <code>null</code>.
- */
- public static void setDomainIdentifier(Node idLink, String domainIdentifier) {
-
- Element element;
- if (idLink instanceof Element) {
- element = (Element) idLink;
- } else if (idLink instanceof Document) {
- element = ((Document) idLink).getDocumentElement();
- } else if (idLink != null) {
- Document document = idLink.getOwnerDocument();
- element = document.getDocumentElement();
- } else {
- throw new NullPointerException("Parameter 'idLink' must no be null.");
- }
-
- NodeList nodeList = element.getElementsByTagNameNS(
- "http://reference.e-government.gv.at/namespace/persondata/20020228#",
- "Type");
-
- for (int i = 0; i < nodeList.getLength(); i++) {
- if (nodeList.item(i) instanceof Element) {
- Element typeElement = (Element) nodeList.item(i);
- NodeList children = typeElement.getChildNodes();
- for (int j = 0; j < children.getLength(); j++) {
- if (children.item(j) instanceof Text) {
- ((Text) children.item(j)).setNodeValue(domainIdentifier);
- }
- }
- }
- }
-
- }
-
- /**
- * Mapping of issuer template URIs to transformation templates.
- */
- private Map<String, Templates> templates = new HashMap<String, Templates>();
-
- /**
- * Private constructor.
- */
- private IdentityLinkTransformer() {
- }
-
- /**
- * Transforms an identity link <code>source</code> to <code>result</code> with
- * the given issuer template from the <code>stylesheetURL</code>.
- *
- * @param stylesheetURL
- * the URL of the issuer template to be used for transformation
- * @param source
- * the compressed identity link source
- * @param result
- * the transformed identity link result
- *
- * @throws MalformedURLException
- * if the given <code>stylesheetURL</code> is not a valid
- * <code>http</code> or <code>https</code> URL.
- * @throws IOException
- * if dereferencing the <code>stylesheetURL</code> fails.
- * @throws TransformerConfigurationException
- * if creating a transformation template from the dereferenced
- * stylesheet fails.
- * @throws TransformerException
- * if transforming the identity link fails.
- */
- public void transformIdLink(String stylesheetURL, Source source, Result result) throws IOException, TransformerException {
-
- Templates templ = templates.get(stylesheetURL);
-
- if (templ == null) {
-
- // TODO: implement stylesheet cache
- URL url = new URL(stylesheetURL);
-
- if (!"http".equalsIgnoreCase(url.getProtocol()) && !"https".equalsIgnoreCase(url.getProtocol())) {
- throw new MalformedURLException("Protocol " + url.getProtocol() + " not supported for IssuerTemplate URL.");
- }
-
- URLDereferencer dereferencer = URLDereferencer.getInstance();
- StreamData data = dereferencer.dereference(url.toExternalForm(), null);
-
- log.trace("Trying to create issuer template.");
- templ = factory.newTemplates(new StreamSource(data.getStream()));
- log.trace("Successfully created issuer template");
-
- templates.put(stylesheetURL, templ);
-
- }
-
- Transformer transformer = templ.newTransformer();
-
- transformer.transform(source, result);
-
- }
-
-}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java
deleted file mode 100644
index c32cf2b9..00000000
--- a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java
+++ /dev/null
@@ -1,92 +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.idlink.ans1;
-
-import java.math.BigInteger;
-
-import iaik.asn1.*;
-
-/**
- * This class implements the ASN.1 representation of the
- * <code>CitizenPublicKey</code> of a compressed identity link.
- *
- * <pre>CitizenPublicKey ::= CHOICE {
- onToken [0] INTEGER,
- referenceURL [1] UTF8String,
- x509Data [2] SubjectPublicKeyInfo
-}
-</pre>
- *
- * @author mivkovic@egiz.gv.at, mcentner@egiz.gv.at
- */
-public class CitizenPublicKey implements ASN1Type {
-
- /**
- * <code>onToken</code>
- */
- private int onToken; // INTEGER
-
- /**
- * Creates a new <code>CitizenPublicKey</code> with the given
- * <code>onToken</code> value.
- *
- * @param onToken
- */
- public CitizenPublicKey(int onToken) {
- this.onToken = onToken;
- }
-
- /**
- * Creates a new <code>CitizenPublicKey</code> from the given ASN.1 representation.
- *
- * @param obj
- * @throws CodingException
- */
- public CitizenPublicKey(ASN1Object obj) throws CodingException {
- decode(obj);
- }
-
- @Override
- public void decode(ASN1Object obj) throws CodingException {
- try {
- BigInteger Value = (BigInteger)(obj.getValue());
- onToken = Value.intValue();
- } catch (Exception ex) {
- throw new CodingException(ex.toString());
- }
- }
-
- @Override
- public ASN1Object toASN1Object() {
- INTEGER ot = new INTEGER(onToken);
- return ot;
- }
-
- /**
- * Returns the DER encoding of this <code>CitizenPublicKey</code>.
- *
- * @return the DER encoding of this <code>CitizenPublicKey</code>
- */
- public byte[] getEncoded() {
- return DerCoder.encode(toASN1Object());
- }
-
- public int getOnToken() {
- return onToken;
- }
-
-} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java
deleted file mode 100644
index 37e4b240..00000000
--- a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java
+++ /dev/null
@@ -1,315 +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.idlink.ans1;
-
-import iaik.asn1.ASN1Object;
-import iaik.asn1.ASN1Type;
-import iaik.asn1.BIT_STRING;
-import iaik.asn1.CON_SPEC;
-import iaik.asn1.CodingException;
-import iaik.asn1.DerCoder;
-import iaik.asn1.INTEGER;
-import iaik.asn1.SEQUENCE;
-import iaik.asn1.UTF8String;
-
-/**
- * This class impelments an ASN.1 representation of the compressed <code>IdentiyLink</code>.
- * <pre>
-PersonenBindung ::= SEQUENCE {
- version INTEGER,
- issuerTemplate UTF8String,
- assertionID UTF8String,
- issueInstant UTF8String,
- personData PersonData,
- citizenPublicKey SEQUENCE SIZE (1..MAX) OF CitizenPublicKey,
- signatureValue BIT STRING,
- referenceDigest [0] BIT STRING OPTIONAL,
- referenceManifestDigest [1] BIT STRING OPTIONAL,
- manifestReferenceDigest [2] BIT STRING OPTIONAL
-}
-</pre>
- *
- * @author mivkovic@egiz.gv.at, mcentner@egiz.gv.at
- */
-public class IdentityLink implements ASN1Type {
-
- private int version = 1; // INTEGER
- private String issuerTemplate; // UTF8String
- private String assertionID; // UTF8String
- private String issueInstant; // UTF8String
- private PersonData personData; // PersonData
- private CitizenPublicKey[] citizenPublicKeys; // SEQUENCE SIZE (1..MAX) OF
- private byte[] signatureValue; // BIT STRING
- private byte[] referenceDigest; // BIT STRING OPTIONAL
- private byte[] referenceManifestDigest; // BIT STRING OPTIONAL
- private byte[] manifestReferenceDigest; // BIT STRING OPTIONAL
-
- /**
- * Creates a new <code>IdentityLink</code> with the given
- * <code>issuerTemplate</code>, <code>assertionID</code>,
- * <code>issueInstant</code>, <code>personData</code>,
- * <code>citizenPublicKeys</code> and <code>signatureValue</code>.
- *
- * @param issuerTemplate
- * @param assertionID
- * @param issueInstant
- * @param personData
- * @param citizenPublicKeys
- * @param signatureValue
- */
- public IdentityLink(String issuerTemplate, String assertionID,
- String issueInstant, PersonData personData,
- CitizenPublicKey[] citizenPublicKeys, byte[] signatureValue) {
- this.issuerTemplate = issuerTemplate;
- this.assertionID = assertionID;
- this.issueInstant = issueInstant;
- this.personData = personData;
- this.citizenPublicKeys = citizenPublicKeys;
- this.signatureValue = signatureValue;
- }
-
- /**
- * Create a new IdentityLink from an ASN1Object.
- *
- * @param identiyLink
- * @throws CodingException
- */
- public IdentityLink(ASN1Object identiyLink) throws CodingException {
- decode(identiyLink);
- }
-
- @Override
- public void decode(ASN1Object obj) throws CodingException {
- issuerTemplate = (String) ((ASN1Object) obj.getComponentAt(1)).getValue();
- assertionID = (String) ((ASN1Object) obj.getComponentAt(2)).getValue();
- issueInstant = (String) ((ASN1Object) obj.getComponentAt(3)).getValue();
-
- if (((CON_SPEC) obj.getComponentAt(4)).getAsnType().getTag() == 0)
- personData = new PersonData((ASN1Object) obj.getComponentAt(4).getValue());
- else {
- throw new CodingException("CorporateBodyData currently not supported.");
- }
-
- SEQUENCE publicKeySequence = (SEQUENCE) obj.getComponentAt(5);
- int anz = publicKeySequence.countComponents();
- citizenPublicKeys = new CitizenPublicKey[anz];
- for (int i = 0; i < citizenPublicKeys.length; i++) {
- CON_SPEC tmp = (CON_SPEC) publicKeySequence.getComponentAt(i);
- if (tmp.getAsnType().getTag() == 0) {
- citizenPublicKeys[i] = new CitizenPublicKey((ASN1Object) tmp.getValue());
- } else {
- throw new CodingException(
- "Currently only PublicKeys on token are supported.");
- }
- }
-
- signatureValue = (byte[]) ((ASN1Object) obj.getComponentAt(6)).getValue();
-
- for (int i = 7; i < obj.countComponents(); i++) {
- CON_SPEC tmp = (CON_SPEC) obj.getComponentAt(i);
- switch (tmp.getAsnType().getTag()) {
- case 0:
- referenceDigest = (byte[]) ((BIT_STRING) tmp.getValue()).getValue();
- break;
- case 1:
- referenceManifestDigest = (byte[]) ((BIT_STRING) tmp.getValue())
- .getValue();
- break;
- case 2:
- manifestReferenceDigest = (byte[]) ((BIT_STRING) tmp.getValue())
- .getValue();
- break;
- }
-
- }
-
- }
-
- @Override
- public ASN1Object toASN1Object() {
- SEQUENCE pb = new SEQUENCE();
- pb.addComponent(new INTEGER(version));
- pb.addComponent(new UTF8String(issuerTemplate));
- pb.addComponent(new UTF8String(assertionID));
- pb.addComponent(new UTF8String(issueInstant));
-
- pb.addComponent(new CON_SPEC(0, personData.toASN1Object()));
- SEQUENCE seq = new SEQUENCE();
- for (int i = 0; i < citizenPublicKeys.length; i++) {
- seq.addComponent(new CON_SPEC(0, citizenPublicKeys[i].toASN1Object()));
- }
- pb.addComponent(seq);
- pb.addComponent(new BIT_STRING(signatureValue));
- if (referenceDigest != null)
- pb.addComponent(new CON_SPEC(0, new BIT_STRING(referenceDigest)));
- if (referenceManifestDigest != null)
- pb.addComponent(new CON_SPEC(1, new BIT_STRING(referenceManifestDigest)));
- if (manifestReferenceDigest != null)
- pb.addComponent(new CON_SPEC(2, new BIT_STRING(manifestReferenceDigest)));
- return pb;
- }
-
- /**
- * Returns the DER encoding of this <code>IdentityLink</code>.
- *
- * @return the DER encoding of this <code>IdentityLink</code>
- */
- public byte[] toByteArray() {
- return DerCoder.encode(toASN1Object());
- }
-
- /**
- * @return the version
- */
- public int getVersion() {
- return version;
- }
-
- /**
- * @param version the version to set
- */
- public void setVersion(int version) {
- this.version = version;
- }
-
- /**
- * @return the issuerTemplate
- */
- public String getIssuerTemplate() {
- return issuerTemplate;
- }
-
- /**
- * @param issuerTemplate the issuerTemplate to set
- */
- public void setIssuerTemplate(String issuerTemplate) {
- this.issuerTemplate = issuerTemplate;
- }
-
- /**
- * @return the assertionID
- */
- public String getAssertionID() {
- return assertionID;
- }
-
- /**
- * @param assertionID the assertionID to set
- */
- public void setAssertionID(String assertionID) {
- this.assertionID = assertionID;
- }
-
- /**
- * @return the issueInstant
- */
- public String getIssueInstant() {
- return issueInstant;
- }
-
- /**
- * @param issueInstant the issueInstant to set
- */
- public void setIssueInstant(String issueInstant) {
- this.issueInstant = issueInstant;
- }
-
- /**
- * @return the personData
- */
- public PersonData getPersonData() {
- return personData;
- }
-
- /**
- * @param personData the personData to set
- */
- public void setPersonData(PersonData personData) {
- this.personData = personData;
- }
-
- /**
- * @return the citizenPublicKeys
- */
- public CitizenPublicKey[] getCitizenPublicKeys() {
- return citizenPublicKeys;
- }
-
- /**
- * @param citizenPublicKeys the citizenPublicKeys to set
- */
- public void setCitizenPublicKeys(CitizenPublicKey[] citizenPublicKeys) {
- this.citizenPublicKeys = citizenPublicKeys;
- }
-
- /**
- * @return the signatureValue
- */
- public byte[] getSignatureValue() {
- return signatureValue;
- }
-
- /**
- * @param signatureValue the signatureValue to set
- */
- public void setSignatureValue(byte[] signatureValue) {
- this.signatureValue = signatureValue;
- }
-
- /**
- * @return the referenceDigest
- */
- public byte[] getReferenceDigest() {
- return referenceDigest;
- }
-
- /**
- * @param referenceDigest the referenceDigest to set
- */
- public void setReferenceDigest(byte[] referenceDigest) {
- this.referenceDigest = referenceDigest;
- }
-
- /**
- * @return the referenceManifestDigest
- */
- public byte[] getReferenceManifestDigest() {
- return referenceManifestDigest;
- }
-
- /**
- * @param referenceManifestDigest the referenceManifestDigest to set
- */
- public void setReferenceManifestDigest(byte[] referenceManifestDigest) {
- this.referenceManifestDigest = referenceManifestDigest;
- }
-
- /**
- * @return the manifestReferenceDigest
- */
- public byte[] getManifestReferenceDigest() {
- return manifestReferenceDigest;
- }
-
- /**
- * @param manifestReferenceDigest the manifestReferenceDigest to set
- */
- public void setManifestReferenceDigest(byte[] manifestReferenceDigest) {
- this.manifestReferenceDigest = manifestReferenceDigest;
- }
-
-}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java
deleted file mode 100644
index 2a537eb3..00000000
--- a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java
+++ /dev/null
@@ -1,91 +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.idlink.ans1;
-
-import iaik.asn1.*;
-
-/**
- * This class represents the ASN.1 version of the <code>PersonData</code>
- * of a compressed identity link.
- *
- * <pre>
-PersonData ::= CHOICE {
- physcialPerson [0] PhysicalPersonData,
- corporateBody [1] CorporateBodyData
-} </pre>
- *
- * @author mivkovic@egiz.gv.at, mcentner@egiz.gv.at
- *
- */
-public class PersonData implements ASN1Type {
-
- /**
- * <code>physicalPerson</code>
- */
- private PhysicalPersonData physicalPerson; // PhysicalPersonData
-
- /**
- * Creates a new <code>PersonData</code> with the given
- * <code>physicalPersonData</code>.
- *
- * @param physicalPersonData
- */
- public PersonData(PhysicalPersonData physicalPersonData) {
- physicalPerson = physicalPersonData;
- }
-
- /**
- * Creates a new <code>PersonData</code> from its ASN.1 representation.
- *
- * @param obj
- * @throws CodingException
- */
- public PersonData(ASN1Object obj) throws CodingException {
- decode(obj);
- }
-
- @Override
- public void decode(ASN1Object obj) throws CodingException {
- try {
- physicalPerson = new PhysicalPersonData(obj);
- } catch (Exception ex) {
- throw new CodingException(ex.toString());
- }
- }
-
- @Override
- public ASN1Object toASN1Object() {
- return physicalPerson.toASN1Object();
- }
-
- /**
- * Returns the DER encoded representation of this <code>PersonData</code>.
- *
- * @return the DER encoded representation of this <code>PersonData</code>
- */
- public byte[] getEncoded() {
- return DerCoder.encode(toASN1Object());
- }
-
- /**
- * @return the physicalPerson
- */
- public PhysicalPersonData getPhysicalPerson() {
- return physicalPerson;
- }
-
-} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java
deleted file mode 100644
index a6aea97e..00000000
--- a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java
+++ /dev/null
@@ -1,143 +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.idlink.ans1;
-
-import iaik.asn1.*;
-
-/**
- * This class represents the ASN.1 version of the <code>PhysicalPersonData</code>
- * of an compressed identity link.
- *
- * <pre>PhysicalPersonData ::= SEQUENCE {
- baseId UTF8String,
- givenName UTF8String,
- familyName UTF8String,
- dateOfBirth UTF8String
-}</pre>
- *
- * @author mivkovic@egiz.gv.at, mcentner@eigz.gv.at
- */
-public class PhysicalPersonData implements ASN1Type {
-
- /**
- * <code>baseId</code>
- */
- private String baseId; // UTF8String
-
- /**
- * <code>givenName</code>
- */
- private String givenName; // UTF8String
-
- /**
- * <code>familyName</code>
- */
- private String familyName; // UTF8String
-
- /**
- * <code>dataOfBirth</code>
- */
- private String dateOfBirth; // UTF8String
-
- /**
- * Creates a new <code>PhysicalPersonData</code> with the
- * given <code>baseId</code>, <code>givenName</code>, <code>familyName</code>
- * and <code>dataOfBirth</code>.
- *
- * @param baseId
- * @param givenName
- * @param familyName
- * @param dateOfBirth
- */
- public PhysicalPersonData(String baseId, String givenName, String familyName, String dateOfBirth) {
- this.baseId = baseId;
- this.givenName = givenName;
- this.familyName = familyName;
- this.dateOfBirth = dateOfBirth;
- }
-
- /**
- * Creates a new <code>PhysicalPersonData</code> from its ASN.1 representation.
- *
- * @param obj
- *
- * @throws CodingException
- */
- public PhysicalPersonData(ASN1Object obj) throws CodingException {
- decode(obj);
- }
-
- @Override
- public void decode(ASN1Object obj) throws CodingException {
- try {
- baseId = (String) ((ASN1Object) obj.getComponentAt(0)).getValue();
- givenName = (String) ((ASN1Object) obj.getComponentAt(1)).getValue();
- familyName = (String) ((ASN1Object) obj.getComponentAt(2)).getValue();
- dateOfBirth = (String) ((ASN1Object) obj.getComponentAt(3)).getValue();
- } catch (Exception ex) {
- throw new CodingException(ex.toString());
- }
- }
-
- @Override
- public ASN1Object toASN1Object() {
- SEQUENCE ppd = new SEQUENCE();
- ppd.addComponent(new UTF8String(baseId));
- ppd.addComponent(new UTF8String(givenName));
- ppd.addComponent(new UTF8String(familyName));
- ppd.addComponent(new UTF8String(dateOfBirth));
- return ppd;
- }
-
- /**
- * Returns the DER encoding of this <code>PhysicalPersonData</code>.
- *
- * @return the DER encoding of this <code>PhysicalPersonData</code>
- */
- public byte[] toByteArray() {
- return DerCoder.encode(toASN1Object());
- }
-
- /**
- * @return the baseId
- */
- public String getBaseId() {
- return baseId;
- }
-
- /**
- * @return the givenName
- */
- public String getGivenName() {
- return givenName;
- }
-
- /**
- * @return the familyName
- */
- public String getFamilyName() {
- return familyName;
- }
-
- /**
- * @return the dateOfBirth
- */
- public String getDateOfBirth() {
- return dateOfBirth;
- }
-
-} \ No newline at end of file