xades4j.providers.impl.DefaultAlgorithmsProviderEx Maven / Gradle / Ivy
/*
* XAdES4j - A Java library for generation and verification of XAdES signatures.
* Copyright (C) 2012 Luis Goncalves.
*
* XAdES4j is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 3 of the License, or any later version.
*
* XAdES4j is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with XAdES4j. If not, see .
*/
package xades4j.providers.impl;
import java.util.HashMap;
import java.util.Map;
import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
import org.apache.xml.security.signature.XMLSignature;
import xades4j.algorithms.Algorithm;
import xades4j.algorithms.GenericAlgorithm;
import xades4j.UnsupportedAlgorithmException;
import xades4j.algorithms.CanonicalXMLWithoutComments;
import xades4j.providers.AlgorithmsProviderEx;
/**
* The default implementation of {@link AlgorithmsProviderEx}. The defaults
* are:
*
* - Signature: RSA(RSA_SHA256), DSA(DSA_SHA1)
* - Canonicalization: Canonical XML 1.0 without comments
* - Digest: SHA256 (data objs and refs properties); SHA1 (time-stamps)
*
* @author Luís
*/
public class DefaultAlgorithmsProviderEx implements AlgorithmsProviderEx
{
private static final Map signatureAlgsMaps;
static
{
signatureAlgsMaps = new HashMap(2);
signatureAlgsMaps.put("DSA", new GenericAlgorithm(XMLSignature.ALGO_ID_SIGNATURE_DSA));
signatureAlgsMaps.put("RSA", new GenericAlgorithm(XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256));
}
@Override
public Algorithm getSignatureAlgorithm(String keyAlgorithmName) throws UnsupportedAlgorithmException
{
Algorithm sigAlg = signatureAlgsMaps.get(keyAlgorithmName);
if (null == sigAlg)
{
throw new UnsupportedAlgorithmException("Signature algorithm not supported by the provider", keyAlgorithmName);
}
return sigAlg;
}
@Override
public Algorithm getCanonicalizationAlgorithmForSignature()
{
return new CanonicalXMLWithoutComments();
}
@Override
public Algorithm getCanonicalizationAlgorithmForTimeStampProperties()
{
return new CanonicalXMLWithoutComments();
}
@Override
public String getDigestAlgorithmForDataObjsReferences()
{
return MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256;
}
@Override
public String getDigestAlgorithmForReferenceProperties()
{
return MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256;
}
@Override
public String getDigestAlgorithmForTimeStampProperties()
{
return MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy