package at.knowcenter.wag.egov.egiz.ldap.api; import iaik.asn1.ObjectID; import iaik.security.ecc.provider.ECCProvider; import iaik.security.provider.IAIK; import iaik.utils.RFC2253NameParser; import org.apache.log4j.Logger; import at.knowcenter.wag.egov.egiz.ldap.client.LDAPIssuerNameFilter; import at.knowcenter.wag.egov.egiz.sig.LDAPAPI; /** * @author Thomas Knall */ public abstract class LDAPAPIFactory { private static LDAPAPIFactory ldapAPIfactoryInstance; private final Logger log = Logger.getLogger(LDAPAPIFactory.class); protected LDAPAPIFactory() { IAIK.addAsProvider(); ECCProvider.addAsProvider(); // Does not conform with PKIX, but is used by belgium citizen card // log.info("Registering RDN \"SERIALNUMBER\" as " + ObjectID.serialNumber + "."); RFC2253NameParser.register("SERIALNUMBER", ObjectID.serialNumber); } public static synchronized LDAPAPIFactory getInstance(LDAPIssuerNameFilter ldapIssuerNameFilter) { if (ldapAPIfactoryInstance == null) { ldapAPIfactoryInstance = new LDAPAPIFactoryImpl(ldapIssuerNameFilter); } return ldapAPIfactoryInstance; } public static LDAPAPIFactory getInstance() { return getInstance(null); } public abstract LDAPAPI createLDAPAPI(String implClassURI) throws LDAPAPIException; }