aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/sig
diff options
context:
space:
mode:
authortknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c>2006-12-13 16:00:50 +0000
committertknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c>2006-12-13 16:00:50 +0000
commitf1db00ea7fce12a186a3c5070d7f46298224c57a (patch)
tree57580548de8b9841aa4f4008f6b08b54f2789659 /src/main/java/at/knowcenter/wag/egov/egiz/sig
parentaf0a15de2b1228e65872cb74935d933735133e5f (diff)
downloadpdf-as-3-f1db00ea7fce12a186a3c5070d7f46298224c57a.tar.gz
pdf-as-3-f1db00ea7fce12a186a3c5070d7f46298224c57a.tar.bz2
pdf-as-3-f1db00ea7fce12a186a3c5070d7f46298224c57a.zip
ldap support improved
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@20 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/sig')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/sig/DummyLDAPAPI.java6
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/sig/LDAPAPI.java9
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java32
3 files changed, 42 insertions, 5 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/DummyLDAPAPI.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/DummyLDAPAPI.java
index a8bc461..47d1d20 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/DummyLDAPAPI.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/DummyLDAPAPI.java
@@ -21,6 +21,8 @@ import java.io.File;
import java.io.FileInputStream;
import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
+import at.knowcenter.wag.egov.egiz.ldap.api.LDAPAPIException;
+import at.knowcenter.wag.egov.egiz.ldap.client.LDAPIssuerNameFilter;
/**
* This is just a dummy implementation until the real Egiz LDAP API is
@@ -75,4 +77,8 @@ public byte[] loadBase64CertificateFromLDAP(String serial_number, String issuer)
return data;
}
+
+ public void setIssuerNameFilter(LDAPIssuerNameFilter filter) throws LDAPAPIException {
+ }
+
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/LDAPAPI.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/LDAPAPI.java
index 143c34b..f61c7e6 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/LDAPAPI.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/LDAPAPI.java
@@ -1,5 +1,8 @@
package at.knowcenter.wag.egov.egiz.sig;
+import at.knowcenter.wag.egov.egiz.ldap.api.LDAPAPIException;
+import at.knowcenter.wag.egov.egiz.ldap.client.LDAPIssuerNameFilter;
+
/**
* @author <a href="mailto:thomas.knall@iaik.tugraz.at">Thomas Knall</a>
*/
@@ -21,5 +24,11 @@ public interface LDAPAPI {
* @return BASE64 encoded certificate
*/
public byte[] loadBase64CertificateFromLDAP(String serialNumber, String issuer);
+
+ /**
+ * Sets the filter that has to be applied before trying to match the issuer name.
+ * @param filter The filter.
+ */
+ public void setIssuerNameFilter(LDAPIssuerNameFilter filter) throws LDAPAPIException;
} \ No newline at end of file
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java
index b00a3cb..9a7a036 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java
@@ -17,6 +17,10 @@
*/
package at.knowcenter.wag.egov.egiz.sig;
+import iaik.asn1.structures.Name;
+import iaik.utils.RFC2253NameParser;
+import iaik.utils.RFC2253NameParserException;
+
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -43,6 +47,7 @@ import at.knowcenter.wag.egov.egiz.exceptions.SignatureTypesException;
import at.knowcenter.wag.egov.egiz.framework.SignatorFactory;
import at.knowcenter.wag.egov.egiz.ldap.api.LDAPAPIException;
import at.knowcenter.wag.egov.egiz.ldap.api.LDAPAPIFactory;
+import at.knowcenter.wag.egov.egiz.ldap.client.LDAPIssuerNameFilter;
import at.knowcenter.wag.egov.egiz.table.Entry;
import at.knowcenter.wag.egov.egiz.table.Style;
import at.knowcenter.wag.egov.egiz.table.Table;
@@ -176,6 +181,25 @@ public class SignatureObject implements Serializable
* </p>
*/
protected String raw_signature_response = null;
+
+ /**
+ * Filters the issuer name in order to find matches.
+ * @author tknall
+ * @see {@link normalizeIssuer}
+ */
+ private LDAPIssuerNameFilter issuerNameFilter = new LDAPIssuerNameFilter() {
+ public Name applyFilter(Name name) {
+ RFC2253NameParser parser = new RFC2253NameParser(normalizeIssuer(name.getName()));
+ try {
+ name = parser.parse();
+ } catch (RFC2253NameParserException e) {
+ logger_.error(e);
+ }
+ return name;
+ }
+ };
+
+
/**
* The empty constructor. It initilize the normlizer, load the settings and
@@ -889,13 +913,12 @@ public class SignatureObject implements Serializable
* comparison with registered ldap mappings.)
* @param issuer The issuer.
* @return normalized issuer
+ * @see {@link issuerNameFilter}
* @author tknall
*/
private String normalizeIssuer(String issuer) {
issuer = normalizer_.normalize(issuer);
issuer = removeAllWhiteSpaces(issuer);
- // important note: if method is changed don't forget to adjust LDAPAPIImpl otherwise
- // ldap mappings will not match
return issuer;
}
@@ -1085,12 +1108,11 @@ public class SignatureObject implements Serializable
try {
// note: in case of implClassURI==null the default implementation
// at.knowcenter.wag.egov.egiz.ldap.api.LDAPAPIImpl is used
- ldapAPIImpl = LDAPAPIFactory.getInstance().createLDAPAPI(implClassURI);
+ ldapAPIImpl = LDAPAPIFactory.getInstance(issuerNameFilter).createLDAPAPI(implClassURI);
} catch (LDAPAPIException e) {
throw new RuntimeException(e);
}
- String normalized_issuer = normalizeIssuer(issuer);
- return ldapAPIImpl.loadBase64CertificateFromLDAP(serialNumber, normalized_issuer);
+ return ldapAPIImpl.loadBase64CertificateFromLDAP(serialNumber, issuer);
// STOP modification by TK
}