diff options
Diffstat (limited to 'pdf-as-lib/src')
3 files changed, 33 insertions, 8 deletions
| diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IVerifier.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IVerifier.java index 7badb9be..ab39f060 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IVerifier.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IVerifier.java @@ -5,6 +5,7 @@ import java.util.List;  import at.gv.egiz.pdfas.common.exceptions.PdfAsException;  import at.gv.egiz.pdfas.lib.api.Configuration; +import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter.SignatureVerificationLevel;  import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;  public interface IVerifier { @@ -12,4 +13,6 @@ public interface IVerifier {  			byte[] signatureContent, Date verificationTime) throws PdfAsException;  	public void setConfiguration(Configuration config); +	 +	public SignatureVerificationLevel getLevel();  } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IntegrityVerifier.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IntegrityVerifier.java index 01604a6b..bb0f3268 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IntegrityVerifier.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/IntegrityVerifier.java @@ -19,12 +19,13 @@ import org.slf4j.LoggerFactory;  import at.gv.egiz.pdfas.common.exceptions.PdfAsException;  import at.gv.egiz.pdfas.common.exceptions.PdfAsSignatureException;  import at.gv.egiz.pdfas.lib.api.Configuration; +import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter.SignatureVerificationLevel;  import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;  public class IntegrityVerifier implements IVerifier {  	private static final Logger logger = LoggerFactory -			.getLogger(FullVerifier.class); +			.getLogger(IntegrityVerifier.class);  	public List<VerifyResult> verify(byte[] signature, byte[] signatureContent,  			Date verificationTime) throws PdfAsException { @@ -92,4 +93,9 @@ public class IntegrityVerifier implements IVerifier {  	public void setConfiguration(Configuration config) {  	} + +	@Override +	public SignatureVerificationLevel getLevel() { +		return SignatureVerificationLevel.INTEGRITY_ONLY_VERIFICATION; +	}  } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/VerifierDispatcher.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/VerifierDispatcher.java index 6851865b..56ac41a6 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/VerifierDispatcher.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/verify/VerifierDispatcher.java @@ -28,6 +28,7 @@ import java.util.HashMap;  import java.util.Iterator;  import java.util.List;  import java.util.Map; +import java.util.ServiceLoader;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -53,6 +54,21 @@ public class VerifierDispatcher {  	public Map<String, HashMap<String, IVerifyFilter>> filterMap = new HashMap<String, HashMap<String, IVerifyFilter>>(); +	private static List<IVerifier> verifiers = new ArrayList<IVerifier>(); + +	private static ServiceLoader<IVerifier> verfierLoader = ServiceLoader +			.load(IVerifier.class); + +	static { +		for (IVerifier verfier : verfierLoader) { +			verifiers.add(verfier); +		} +		 +		for (IVerifier verfier : verifiers) { +			logger.info("Registered Verifier: " + verfier.getClass().getName()); +		} +	} +  	private String[] getClasses(ISettings settings) {  		String confVerifiers = settings.getValue(CONF_VERIFIER_LIST);  		String[] classes; @@ -140,7 +156,7 @@ public class VerifierDispatcher {  				}  			}  		} catch (Throwable e) { -			e.printStackTrace(); +			logger.error("Failed to create Verifing dispatcher", e);  		}  	} @@ -154,12 +170,12 @@ public class VerifierDispatcher {  		return filters.get(subfilter);  	} -	public IVerifier getVerifierByLevel(SignatureVerificationLevel level) { -		switch (level) { -		case INTEGRITY_ONLY_VERIFICATION: -			return new IntegrityVerifier(); -		default: -			return new FullVerifier(); +	public IVerifier getVerifierByLevel(SignatureVerificationLevel level) throws PdfAsException { +		for (IVerifier verifier : verifiers) { +			if(verifier.getLevel().equals(level)) { +				return verifier; +			}  		} +		throw new PdfAsException("No Verifier with level " + level.toString() + " available!");  	}  } | 
