/** * */ package at.knowcenter.wag.egov.egiz.sig.connectors.bku; import java.io.Serializable; import java.security.cert.X509Certificate; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.apache.tools.ant.taskdefs.Length; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil; import at.knowcenter.wag.egov.egiz.sig.SignatureTypes; import at.knowcenter.wag.egov.egiz.sig.signatureobject.AdditionalSignatureInformation; import at.knowcenter.wag.egov.egiz.sig.signatureobject.AlgorithmSignatureInformation; import at.knowcenter.wag.egov.egiz.sig.signatureobject.ConnectorSignatureInformation; import at.knowcenter.wag.egov.egiz.sig.signatureobject.MandatorySignatureInformation; /** * @author wprinz * */ public class SignSignatureObject implements Serializable, MandatorySignatureInformation, ConnectorSignatureInformation, AlgorithmSignatureInformation, AdditionalSignatureInformation { /** * SVUID. */ private static final long serialVersionUID = -2689261480444802213L; public String date = null; public String issuer = null; public String signatureValue = null; public String id = null; public String kz = null; public String sigAlgorithm; /** * This is used to transport the response properties to the Detached signator. */ public Properties response_properties = null; /** * The X509Certificate. * *

* This also provides the serial number and name. *

*/ public X509Certificate x509Certificate = null; /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.MandatorySignatureInformation#getDate() */ public String getDate() { return this.date; } /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.MandatorySignatureInformation#getIssuer() */ public String getIssuer() { return this.issuer; } /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.MandatorySignatureInformation#getSerialNumber() */ public String getSerialNumber() { return this.x509Certificate.getSerialNumber().toString(); } /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.MandatorySignatureInformation#getSignatureValue() */ public String getSignatureValue() { return this.signatureValue; } /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.ConnectorSignatureInformation#getSigID() */ public String getSigID() { return this.id; } /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.AlgorithmSignatureInformation#getSigKZ() */ public String getSigKZ() { return this.kz; } /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.AdditionalSignatureInformation#getName() */ public String getName() { return this.x509Certificate.getSubjectDN().getName(); } /** * @see at.knowcenter.wag.egov.egiz.sig.signatureobject.AdditionalSignatureInformation#getX509Certificate() */ public X509Certificate getX509Certificate() { return this.x509Certificate; } public String getSigAlgorithm() { return this.sigAlgorithm; } public String retrieveStringValue(String sigKey) { // mandatory if (sigKey.equals(SignatureTypes.SIG_DATE)) { return getDate(); } if (sigKey.equals(SignatureTypes.SIG_VALUE)) { return getSignatureValue(); } if (sigKey.equals(SignatureTypes.SIG_ISSUER)) { return getIssuer(); } if (sigKey.equals(SignatureTypes.SIG_NUMBER)) { return getSerialNumber(); } // connector if (sigKey.equals(SignatureTypes.SIG_ID)) { return getSigID(); } // algorithm if (sigKey.equals(SignatureTypes.SIG_KZ)) { return getSigKZ(); } // additional if (sigKey.equals(SignatureTypes.SIG_NAME)) { return getName(); } if (sigKey.equals(SignatureTypes.SIG_ALG)) { return getSigAlgorithm(); } throw new RuntimeException("The key '" + sigKey + "' is not a recognized SignatorObject member."); //$NON-NLS-1$ //$NON-NLS-2$ } // public String certSubjectDNPart(String key) { // String val = null; // if (subjectDNMap == null) { // if (this.getX509Certificate() != null) { // val = extractDNPart(key, this.getX509Certificate().getSubjectX500Principal().getName()); // } // return val; // } // // public String certIssuerDNPart(String key) { // String val = null; // if (this.getX509Certificate() != null) { // val = extractDNPart(key, this.getX509Certificate().getIssuerX500Principal().getName()); // } // return val; // } public String certSubjectDNPart(String key) { if (this.subjectDNMap.size() == 0) { if (this.getX509Certificate() != null) { fillDNMap(this.getX509Certificate().getSubjectX500Principal().getName(), this.subjectDNMap); } } return this.subjectDNMap.get(key).toString(); } public String certIssuerDNPart(String key) { if (this.issuerDNMap.size() == 0) { if (this.getX509Certificate() != null) { fillDNMap(this.getX509Certificate().getIssuerX500Principal().getName(), this.issuerDNMap); } } return this.issuerDNMap.get(key).toString(); } private Map subjectDNMap = new HashMap(); private Map issuerDNMap = new HashMap(); private void fillDNMap(String dn, Map dnMap) { String[] arr = dn.split("\\s*(,|;)\\s*"); for (int i = 0; i < arr.length; i++) { String[] entry = arr[i].split("\\s*(=)\\s*"); dnMap.put(entry[0], entry[1]); } } }