From 53ae98cdfa510650c1e015efd0d11a96ad4dc87a Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Mon, 20 Jun 2016 12:45:07 +0200 Subject: ASiC Library added --- .../gv/egiz/asic/impl/verifier/BaseVerifier.java | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java (limited to 'moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java') diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java new file mode 100644 index 0000000..a0bc516 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java @@ -0,0 +1,61 @@ +package at.gv.egiz.asic.impl.verifier; + +import at.gv.egiz.asic.impl.Verifier; +import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; +import org.apache.commons.codec.binary.Hex; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Andreas Fitzek on 6/17/16. + */ +public abstract class BaseVerifier implements Verifier { + + protected static Map hashTranslator = new HashMap(); + + static { + hashTranslator.put("http://www.w3.org/2000/09/xmldsig#sha1", "SHA-1"); + hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha224", "SHA-224"); + hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha256", "SHA-256"); + hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha384", "SHA-384"); + hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha512", "SHA-512"); + hashTranslator.put("http://www.w3.org/2001/04/xmlenc#ripemd160", "RIPEMD-160"); + } + + private static final Logger logger = LoggerFactory.getLogger(BaseVerifier.class); + + protected boolean compareHash(byte[] reference, byte[] calculated, String refName) { + String referenceHex = Hex.encodeHexString(reference); + String calculatedHex = Hex.encodeHexString(calculated); + if(Arrays.equals(reference, calculated)) { + logger.info("Digest from manifest do match for {}", refName); + return true; + } else { + logger.info("Digest from manifest do not match for {}", refName); + logger.info("Digest from manifest for {} : {}", refName, referenceHex); + logger.info("Digest from calculated for {} : {}", refName, calculatedHex); + return false; + } + } + + protected MessageDigest getMessageDigestFromURI(String uri) { + try { + + String algo = hashTranslator.get(uri); + + if(algo == null) { + algo = uri; + } + + return MessageDigest.getInstance(algo); + } catch (NoSuchAlgorithmException e) { + return null; + } + } +} -- cgit v1.2.3