diff options
| author | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2009-02-26 19:39:00 +0000 | 
|---|---|---|
| committer | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2009-02-26 19:39:00 +0000 | 
| commit | 6576428966f1e3d688269a407b072fb01f9f7647 (patch) | |
| tree | f79a9c3c70c27477133c9283dd4b0440b7559d05 /bkucommon/src/test/java/at/gv | |
| parent | bd18d9084fd139aaae40ad8d525c1d0e626f2e5e (diff) | |
| download | mocca-6576428966f1e3d688269a407b072fb01f9f7647.tar.gz mocca-6576428966f1e3d688269a407b072fb01f9f7647.tar.bz2 mocca-6576428966f1e3d688269a407b072fb01f9f7647.zip | |
1.1 candidate (activation)
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@309 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'bkucommon/src/test/java/at/gv')
| -rw-r--r-- | bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java | 1505 | 
1 files changed, 774 insertions, 731 deletions
| diff --git a/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java b/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java index 78172dcb..7ce7b42d 100644 --- a/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java +++ b/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java @@ -14,185 +14,186 @@  * See the License for the specific language governing permissions and  * limitations under the License.  */ -package at.gv.egiz.bku.slcommands.impl.xsect;
 -
 -import static org.junit.Assert.assertNotNull;
 -import static org.junit.Assert.assertNull;
 -import static org.junit.Assert.assertTrue;
 -
 -import iaik.xml.crypto.XSecProvider;
 -
 -import java.io.IOException;
 -import java.io.InputStream;
 -import java.security.KeyStore;
 -import java.security.KeyStoreException;
 -import java.security.NoSuchAlgorithmException;
 -import java.security.PrivateKey;
 -import java.security.UnrecoverableKeyException;
 -import java.security.cert.CertificateException;
 -import java.security.cert.X509Certificate;
 -import java.util.List;
 -
 +package at.gv.egiz.bku.slcommands.impl.xsect; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import iaik.xml.crypto.XSecProvider; + +import java.io.IOException; +import java.io.InputStream; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.List; +  import javax.net.ssl.HostnameVerifier;  import javax.net.ssl.SSLSocketFactory; -import javax.xml.bind.JAXBContext;
 -import javax.xml.bind.JAXBElement;
 -import javax.xml.bind.JAXBException;
 -import javax.xml.bind.Unmarshaller;
 -import javax.xml.crypto.MarshalException;
 -import javax.xml.crypto.dsig.CanonicalizationMethod;
 -import javax.xml.crypto.dsig.DigestMethod;
 -import javax.xml.crypto.dsig.Reference;
 -import javax.xml.crypto.dsig.SignatureMethod;
 -import javax.xml.crypto.dsig.Transform;
 -import javax.xml.crypto.dsig.XMLObject;
 -import javax.xml.crypto.dsig.XMLSignatureException;
 -import javax.xml.crypto.dsig.XMLSignatureFactory;
 -import javax.xml.crypto.dsig.dom.DOMSignContext;
 -import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
 -import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
 -import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
 -import javax.xml.stream.XMLEventReader;
 -import javax.xml.stream.XMLInputFactory;
 -import javax.xml.stream.XMLStreamException;
 -
 -import org.junit.BeforeClass;
 -import org.junit.Test;
 -import org.w3c.dom.Document;
 -import org.w3c.dom.Node;
 -import org.w3c.dom.ls.DOMImplementationLS;
 -import org.w3c.dom.ls.LSOutput;
 -import org.w3c.dom.ls.LSSerializer;
 -
 -import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureRequestType;
 -import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType;
 -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
 -import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType;
 -import at.gv.egiz.bku.slexceptions.SLCommandException;
 -import at.gv.egiz.bku.slexceptions.SLRequestException;
 +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import javax.xml.crypto.MarshalException; +import javax.xml.crypto.dsig.CanonicalizationMethod; +import javax.xml.crypto.dsig.DigestMethod; +import javax.xml.crypto.dsig.Reference; +import javax.xml.crypto.dsig.SignatureMethod; +import javax.xml.crypto.dsig.Transform; +import javax.xml.crypto.dsig.XMLObject; +import javax.xml.crypto.dsig.XMLSignatureException; +import javax.xml.crypto.dsig.XMLSignatureFactory; +import javax.xml.crypto.dsig.dom.DOMSignContext; +import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec; +import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec; +import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec; +import javax.xml.stream.XMLEventReader; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.ls.DOMImplementationLS; +import org.w3c.dom.ls.LSOutput; +import org.w3c.dom.ls.LSSerializer; + +import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureRequestType; +import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType; +import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; +import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType; +import at.gv.egiz.bku.slexceptions.SLCommandException; +import at.gv.egiz.bku.slexceptions.SLRequestException;  import at.gv.egiz.bku.slexceptions.SLViewerException; -import at.gv.egiz.bku.utils.urldereferencer.StreamData;
 -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
 -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
 -import at.gv.egiz.bku.utils.urldereferencer.URLProtocolHandler;
 -import at.gv.egiz.dom.DOMUtils;
 -import at.gv.egiz.slbinding.RedirectEventFilter;
 -import at.gv.egiz.slbinding.RedirectUnmarshallerListener;
 -
 -public class SignatureTest {
 -
 -  private class AlgorithmMethodFactoryImpl implements AlgorithmMethodFactory {
 -  
 -    @Override
 -    public CanonicalizationMethod createCanonicalizationMethod(
 -        SignatureContext signatureContext) {
 -      
 -      XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory();
 -      
 -      try {
 -        return signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null);
 -      } catch (Exception e) {
 -        throw new RuntimeException(e);
 -      } 
 -    }
 -  
 -    @Override
 -    public DigestMethod createDigestMethod(SignatureContext signatureContext) {
 -  
 -      XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory();
 -  
 -      try {
 -        return signatureFactory.newDigestMethod(DigestMethod.SHA1, (DigestMethodParameterSpec) null);
 -      } catch (Exception e) {
 -        throw new RuntimeException(e);
 -      } 
 -    }
 -  
 -    @Override
 -    public SignatureMethod createSignatureMethod(
 -        SignatureContext signatureContext) {
 -  
 -      XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory();
 -  
 -      try {
 -        return signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, (SignatureMethodParameterSpec) null);
 -      } catch (Exception e) {
 -        throw new RuntimeException(e);
 -      } 
 -  
 -    }
 -    
 -  }
 -
 -  private static final String RESOURCE_PREFIX = "at/gv/egiz/bku/slcommands/impl/";
 -  
 -  private static Unmarshaller unmarshaller;
 -  
 -  private static PrivateKey privateKey;
 -
 -  private static X509Certificate certificate;
 -  
 -  @BeforeClass
 -  public static void setUpClass() throws JAXBException, NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException, UnrecoverableKeyException {
 -    
 -    XSecProvider.addAsProvider(true);
 -    
 -    String packageName = ObjectFactory.class.getPackage().getName();
 -    packageName += ":"
 -        + org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName();
 -    JAXBContext jaxbContext = JAXBContext.newInstance(packageName);
 -
 -    unmarshaller = jaxbContext.createUnmarshaller();
 -    
 -    initURLDereferencer();
 -    
 -    ClassLoader classLoader = SignatureTest.class.getClassLoader();
 -    InputStream certStream = classLoader.getResourceAsStream(RESOURCE_PREFIX + "Cert.p12");
 -    assertNotNull("Certificate not found.", certStream);
 -        
 -    char[] passwd = "1622".toCharArray();
 -    
 -    KeyStore keystore = KeyStore.getInstance("PKCS12");
 -    keystore.load(certStream, passwd);
 -    String firstAlias = keystore.aliases().nextElement();
 -    certificate = (X509Certificate) keystore.getCertificate(firstAlias);
 -    privateKey = (PrivateKey) keystore.getKey(firstAlias, passwd);
 -    
 -  }
 -
 -  private static void initURLDereferencer() {
 -    
 -    URLDereferencer.getInstance().registerHandler("testlocal", new URLProtocolHandler() {
 -      
 -      @Override
 -      public StreamData dereference(String url, URLDereferencerContext context)
 -          throws IOException {
 -
 -        ClassLoader classLoader = SignatureTest.class.getClassLoader();
 -        
 -        String filename = url.split(":", 2)[1];
 -
 -        InputStream stream = classLoader.getResourceAsStream(RESOURCE_PREFIX + filename);
 -        
 -        if (stream == null) {
 -
 -          throw new IOException("Failed to resolve resource '" + url + "'.");
 -
 -        } else {
 -
 -          String contentType;
 -          if (filename.endsWith(".xml")) {
 -            contentType = "text/xml";
 -          } else if (filename.endsWith(".txt")) {
 -            contentType = "text/plain";
 -          } else {
 -            contentType = "";
 -          }
 -          
 -          return new StreamData(url, contentType, stream);
 -          
 -        }
 -        
 +import at.gv.egiz.bku.utils.urldereferencer.StreamData; +import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer; +import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext; +import at.gv.egiz.bku.utils.urldereferencer.URLProtocolHandler; +import at.gv.egiz.dom.DOMUtils; +import at.gv.egiz.slbinding.RedirectEventFilter; +import at.gv.egiz.slbinding.RedirectUnmarshallerListener; +import org.junit.Ignore; + +public class SignatureTest { + +  private class AlgorithmMethodFactoryImpl implements AlgorithmMethodFactory { +   +    @Override +    public CanonicalizationMethod createCanonicalizationMethod( +        SignatureContext signatureContext) { +       +      XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory(); +       +      try { +        return signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null); +      } catch (Exception e) { +        throw new RuntimeException(e); +      }  +    } +   +    @Override +    public DigestMethod createDigestMethod(SignatureContext signatureContext) { +   +      XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory(); +   +      try { +        return signatureFactory.newDigestMethod(DigestMethod.SHA1, (DigestMethodParameterSpec) null); +      } catch (Exception e) { +        throw new RuntimeException(e); +      }  +    } +   +    @Override +    public SignatureMethod createSignatureMethod( +        SignatureContext signatureContext) { +   +      XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory(); +   +      try { +        return signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, (SignatureMethodParameterSpec) null); +      } catch (Exception e) { +        throw new RuntimeException(e); +      }  +   +    } +     +  } + +  private static final String RESOURCE_PREFIX = "at/gv/egiz/bku/slcommands/impl/"; +   +  private static Unmarshaller unmarshaller; +   +  private static PrivateKey privateKey; + +  private static X509Certificate certificate; +   +  @BeforeClass +  public static void setUpClass() throws JAXBException, NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException, UnrecoverableKeyException { +     +    XSecProvider.addAsProvider(true); +     +    String packageName = ObjectFactory.class.getPackage().getName(); +    packageName += ":" +        + org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName(); +    JAXBContext jaxbContext = JAXBContext.newInstance(packageName); + +    unmarshaller = jaxbContext.createUnmarshaller(); +     +    initURLDereferencer(); +     +    ClassLoader classLoader = SignatureTest.class.getClassLoader(); +    InputStream certStream = classLoader.getResourceAsStream(RESOURCE_PREFIX + "Cert.p12"); +    assertNotNull("Certificate not found.", certStream); +         +    char[] passwd = "1622".toCharArray(); +     +    KeyStore keystore = KeyStore.getInstance("PKCS12"); +    keystore.load(certStream, passwd); +    String firstAlias = keystore.aliases().nextElement(); +    certificate = (X509Certificate) keystore.getCertificate(firstAlias); +    privateKey = (PrivateKey) keystore.getKey(firstAlias, passwd); +     +  } + +  private static void initURLDereferencer() { +     +    URLDereferencer.getInstance().registerHandler("testlocal", new URLProtocolHandler() { +       +      @Override +      public StreamData dereference(String url, URLDereferencerContext context) +          throws IOException { + +        ClassLoader classLoader = SignatureTest.class.getClassLoader(); +         +        String filename = url.split(":", 2)[1]; + +        InputStream stream = classLoader.getResourceAsStream(RESOURCE_PREFIX + filename); +         +        if (stream == null) { + +          throw new IOException("Failed to resolve resource '" + url + "'."); + +        } else { + +          String contentType; +          if (filename.endsWith(".xml")) { +            contentType = "text/xml"; +          } else if (filename.endsWith(".txt")) { +            contentType = "text/plain"; +          } else { +            contentType = ""; +          } +           +          return new StreamData(url, contentType, stream); +           +        } +                }        @Override @@ -205,558 +206,600 @@ public class SignatureTest {        public void setSSLSocketFactory(SSLSocketFactory socketFactory) {          // TODO Auto-generated method stub -      }
 -      
 -    });
 -    
 -  }
 -  
 -  private Object unmarshal(String file) throws XMLStreamException, JAXBException {
 -
 -    ClassLoader classLoader = SignatureTest.class.getClassLoader();
 -    InputStream resourceStream = classLoader.getResourceAsStream(RESOURCE_PREFIX + file);
 -    assertNotNull(resourceStream);
 -
 -    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
 -    XMLEventReader eventReader = inputFactory.createXMLEventReader(resourceStream);
 -    RedirectEventFilter redirectEventFilter = new RedirectEventFilter();
 -    XMLEventReader filteredReader = inputFactory.createFilteredReader(eventReader, redirectEventFilter);
 -
 -    unmarshaller.setListener(new RedirectUnmarshallerListener(redirectEventFilter));
 -
 -    return unmarshaller.unmarshal(filteredReader);
 -    
 -  }
 -  
 -  //
 -  //
 -  // SignatureInfo
 -  //
 -  //
 -  
 -  @SuppressWarnings("unchecked")
 -  private SignatureInfoCreationType unmarshalSignatureInfo(String file) throws JAXBException, XMLStreamException {
 -
 -    Object object = unmarshal(file);
 -
 -    Object requestType = ((JAXBElement) object).getValue();
 -    
 -    assertTrue(requestType instanceof CreateXMLSignatureRequestType);
 -    
 -    SignatureInfoCreationType signatureInfo = ((CreateXMLSignatureRequestType) requestType).getSignatureInfo(); 
 -    
 -    assertNotNull(signatureInfo);
 -    
 -    return signatureInfo;
 -    
 -  }
 -
 -  @Test
 -  public void testSetSignatureInfo_Base64_1() throws JAXBException, SLCommandException, XMLStreamException {
 -
 -    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
 -    
 -    signature.setSignatureInfo(signatureInfo);
 -    
 -    Node parent = signature.getParent();
 -    Node nextSibling = signature.getNextSibling();
 -
 -    assertNotNull(parent);
 -    assertTrue("urn:document".equals(parent.getNamespaceURI()));
 -    assertTrue("XMLDocument".equals(parent.getLocalName()));
 -    
 -    assertNotNull(nextSibling);
 -    assertTrue("urn:document".equals(nextSibling.getNamespaceURI()));
 -    assertTrue("Paragraph".equals(nextSibling.getLocalName()));
 -    
 -  }
 -
 -  @Test
 -  public void testSetSignature_Base64_2() throws JAXBException, SLCommandException, XMLStreamException {
 -
 -    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_2.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
 -    
 -    signature.setSignatureInfo(signatureInfo);
 -    
 -    Node parent = signature.getParent();
 -    Node nextSibling = signature.getNextSibling();
 -
 -    assertNotNull(parent);
 -    assertTrue("XMLDocument".equals(parent.getLocalName()));
 -    
 -    assertNotNull(nextSibling);
 -    assertTrue("Paragraph".equals(nextSibling.getLocalName()));
 -    
 -  }
 -
 -  @Test
 -  public void testSetSignature_Base64_3() throws JAXBException, SLCommandException, XMLStreamException {
 -
 -    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_3.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
 -    
 -    signature.setSignatureInfo(signatureInfo);
 -    
 -    Node parent = signature.getParent();
 -    Node nextSibling = signature.getNextSibling();
 -
 -    assertNotNull(parent);
 -    assertTrue("XMLDocument".equals(parent.getLocalName()));
 -    
 -    assertNotNull(nextSibling);
 -    assertTrue("Paragraph".equals(nextSibling.getLocalName()));
 -    
 -  }
 -
 -  @Test
 -  public void testSetSignatureInfo_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException {
 -
 -    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_XMLContent_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
 -    
 -    signature.setSignatureInfo(signatureInfo);
 -    
 -    Node parent = signature.getParent();
 -    Node nextSibling = signature.getNextSibling();
 -    
 -    assertNotNull(parent);
 -    assertTrue("urn:document".equals(parent.getNamespaceURI()));
 -    assertTrue("Whole".equals(parent.getLocalName()));
 -    
 -    assertNull(nextSibling);
 -    
 -  }
 -
 -  @Test
 -  public void testSetSignature_Reference_1() throws JAXBException, SLCommandException, XMLStreamException {
 -
 -    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Reference_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
 -    
 -    signature.setSignatureInfo(signatureInfo);
 -    
 -    Node parent = signature.getParent();
 -    Node nextSibling = signature.getNextSibling();
 -    
 -    assertNotNull(parent);
 -    assertTrue("urn:document".equals(parent.getNamespaceURI()));
 -    assertTrue("Paragraph".equals(parent.getLocalName()));
 -    
 -    assertNull(nextSibling);
 -    
 -  }
 -
 -  //
 -  //
 -  // DataObject
 -  //
 -  //
 -
 -  @SuppressWarnings("unchecked")
 -  private List<DataObjectInfoType> unmarshalDataObjectInfo(String file) throws JAXBException, XMLStreamException {
 -
 -    Object object = unmarshal(file);
 -
 -    Object requestType = ((JAXBElement) object).getValue();
 -    
 -    assertTrue(requestType instanceof CreateXMLSignatureRequestType);
 -    
 -    List<DataObjectInfoType> dataObjectInfos = ((CreateXMLSignatureRequestType) requestType).getDataObjectInfo();
 -    
 -    assertNotNull(dataObjectInfos);
 -    
 -    return dataObjectInfos;
 -    
 -  }
 -
 -  private void signAndMarshalSignature(Signature signature) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException {
 -
 -    Node parent = signature.getParent();
 -    Node nextSibling = signature.getNextSibling();
 -    
 -    DOMSignContext signContext = (nextSibling == null) 
 -      ? new DOMSignContext(privateKey, parent)
 -      : new DOMSignContext(privateKey, parent, nextSibling);
 -      
 -    signature.sign(signContext);
 -    
 -    Document document = signature.getDocument();
 -    
 -    DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS();
 -    LSOutput output = domImplLS.createLSOutput();
 -    output.setByteStream(System.out);
 -    
 -    LSSerializer serializer = domImplLS.createLSSerializer();
 -//    serializer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE);
 -    serializer.getDomConfig().setParameter("namespaces", Boolean.FALSE);
 -    serializer.write(document, output);
 -    
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_Base64Content_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Base64Content_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.setSignerCeritifcate(certificate);
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -    
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 1);
 -    
 -    Transform transform = transforms.get(0);
 -    assertTrue(Transform.BASE64.equals(transform.getAlgorithm()));
 -  
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
 -    
 -    XMLObject object = objects.get(0);
 -    
 -    assertTrue(("#" + object.getId()).equals(reference.getURI()));
 -    
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.setSignerCeritifcate(certificate);
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 2);
 -    
 -    Transform transform = transforms.get(0);
 -    assertTrue(Transform.XPATH2.equals(transform.getAlgorithm()));
 -  
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
 -    
 -    XMLObject object = objects.get(0);
 -    
 -    assertTrue(("#" + object.getId()).equals(reference.getURI()));
 -    
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_XMLContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_2.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.setSignerCeritifcate(certificate);
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 2);
 -    
 -    Transform transform = transforms.get(0);
 -    assertTrue(Transform.XPATH2.equals(transform.getAlgorithm()));
 -  
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
 -    
 -    XMLObject object = objects.get(0);
 -    
 -    assertTrue(("#" + object.getId()).equals(reference.getURI()));
 -    
 -  }
 -
 -  
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_LocRefContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 2);
 -    
 -    Transform transform = transforms.get(0);
 -    assertTrue(Transform.XPATH2.equals(transform.getAlgorithm()));
 -  
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
 -    
 -    XMLObject object = objects.get(0);
 -    
 -    assertTrue(("#" + object.getId()).equals(reference.getURI()));
 -    
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_LocRefContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_2.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -    
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 1);
 -    
 -    Transform transform = transforms.get(0);
 -    assertTrue(Transform.BASE64.equals(transform.getAlgorithm()));
 -  
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
 -    
 -    XMLObject object = objects.get(0);
 -    
 -    assertTrue(("#" + object.getId()).equals(reference.getURI()));
 -    
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_Reference_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Reference_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -    
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 1);
 -    
 -    Transform transform = transforms.get(0);
 -    assertTrue(Transform.BASE64.equals(transform.getAlgorithm()));
 -  
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
 -    
 -    XMLObject object = objects.get(0);
 -    
 -    assertTrue(("#" + object.getId()).equals(reference.getURI()));
 -    
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_Detached_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -    
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 0);
 -    
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue(objects.size() == 1);
 -    
 -  }
 -  
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testDataObject_Detached_Base64Content() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_Base64Content.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -    
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue(transforms.size() == 0);
 -    
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue(objects.size() == 1);
 -    
 -  }
 -  
 -  //
 -  //
 -  // TransformsInfo
 -  //
 -  //
 -  
 -  @SuppressWarnings("unchecked")
 -  private CreateXMLSignatureRequestType unmarshalCreateXMLSignatureRequest(String file) throws JAXBException, XMLStreamException {
 -
 -    Object object = unmarshal(file);
 -
 -    Object requestType = ((JAXBElement) object).getValue();
 -    
 -    assertTrue(requestType instanceof CreateXMLSignatureRequestType);
 -    
 -    return (CreateXMLSignatureRequestType) requestType;
 -    
 -  }
 -
 -  
 -  @SuppressWarnings("unchecked")
 -  @Test
 -  public void testTransformsInfo_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
 -
 -    CreateXMLSignatureRequestType requestType = unmarshalCreateXMLSignatureRequest("TransformsInfo_1.xml");
 -    
 -    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
 -
 -
 -    signature.setSignatureInfo(requestType.getSignatureInfo());
 -    
 -    List<DataObjectInfoType> dataObjectInfos = requestType.getDataObjectInfo();
 -    
 -    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
 -      signature.addDataObject(dataObjectInfo);
 -    }
 -    
 -    signature.setSignerCeritifcate(certificate);
 -    
 -    signature.buildXMLSignature();
 -    
 -    signAndMarshalSignature(signature);
 -    
 -    List<Reference> references = signature.getReferences();
 -    assertTrue(references.size() == 2);
 -
 -    Reference reference = references.get(0);
 -    assertNotNull(reference.getId());
 -    
 -    List<Transform> transforms = reference.getTransforms();
 -    assertTrue("Size " + transforms.size() + "", transforms.size() == 3);
 -    
 -    Transform transform = transforms.get(0);
 -    assertTrue(Transform.ENVELOPED.equals(transform.getAlgorithm()));
 -  
 -    List<XMLObject> objects = signature.getXMLObjects();
 -    assertNotNull(objects);
 -    assertTrue("Size " + objects.size() + " but should be 1.", objects.size() == 1);
 -    
 -  }
 -
 -  
 -}
 +      } +       +    }); +     +  } +   +  private Object unmarshal(String file) throws XMLStreamException, JAXBException { + +    ClassLoader classLoader = SignatureTest.class.getClassLoader(); +    InputStream resourceStream = classLoader.getResourceAsStream(RESOURCE_PREFIX + file); +    assertNotNull(resourceStream); + +    XMLInputFactory inputFactory = XMLInputFactory.newInstance(); +    XMLEventReader eventReader = inputFactory.createXMLEventReader(resourceStream); +    RedirectEventFilter redirectEventFilter = new RedirectEventFilter(); +    XMLEventReader filteredReader = inputFactory.createFilteredReader(eventReader, redirectEventFilter); + +    unmarshaller.setListener(new RedirectUnmarshallerListener(redirectEventFilter)); + +    return unmarshaller.unmarshal(filteredReader); +     +  } +   +  // +  // +  // SignatureInfo +  // +  // +   +  @SuppressWarnings("unchecked") +  private SignatureInfoCreationType unmarshalSignatureInfo(String file) throws JAXBException, XMLStreamException { + +    Object object = unmarshal(file); + +    Object requestType = ((JAXBElement) object).getValue(); +     +    assertTrue(requestType instanceof CreateXMLSignatureRequestType); +     +    SignatureInfoCreationType signatureInfo = ((CreateXMLSignatureRequestType) requestType).getSignatureInfo();  +     +    assertNotNull(signatureInfo); +     +    return signatureInfo; +     +  } + +  @Test +  public void testSetSignatureInfo_Base64_1() throws JAXBException, SLCommandException, XMLStreamException { + +    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), null); +     +    signature.setSignatureInfo(signatureInfo); +     +    Node parent = signature.getParent(); +    Node nextSibling = signature.getNextSibling(); + +    assertNotNull(parent); +    assertTrue("urn:document".equals(parent.getNamespaceURI())); +    assertTrue("XMLDocument".equals(parent.getLocalName())); +     +    assertNotNull(nextSibling); +    assertTrue("urn:document".equals(nextSibling.getNamespaceURI())); +    assertTrue("Paragraph".equals(nextSibling.getLocalName())); +     +  } + +  @Test +  public void testSetSignature_Base64_2() throws JAXBException, SLCommandException, XMLStreamException { + +    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_2.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), null); +     +    signature.setSignatureInfo(signatureInfo); +     +    Node parent = signature.getParent(); +    Node nextSibling = signature.getNextSibling(); + +    assertNotNull(parent); +    assertTrue("XMLDocument".equals(parent.getLocalName())); +     +    assertNotNull(nextSibling); +    assertTrue("Paragraph".equals(nextSibling.getLocalName())); +     +  } + +  @Test +  public void testSetSignature_Base64_3() throws JAXBException, SLCommandException, XMLStreamException { + +    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_3.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), null); +     +    signature.setSignatureInfo(signatureInfo); +     +    Node parent = signature.getParent(); +    Node nextSibling = signature.getNextSibling(); + +    assertNotNull(parent); +    assertTrue("XMLDocument".equals(parent.getLocalName())); +     +    assertNotNull(nextSibling); +    assertTrue("Paragraph".equals(nextSibling.getLocalName())); +     +  } + +  @Test +  public void testSetSignatureInfo_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException { + +    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_XMLContent_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), null); +     +    signature.setSignatureInfo(signatureInfo); +     +    Node parent = signature.getParent(); +    Node nextSibling = signature.getNextSibling(); +     +    assertNotNull(parent); +    assertTrue("urn:document".equals(parent.getNamespaceURI())); +    assertTrue("Whole".equals(parent.getLocalName())); +     +    assertNull(nextSibling); +     +  } + +  @Test +  public void testSetSignature_Reference_1() throws JAXBException, SLCommandException, XMLStreamException { + +    SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Reference_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), null); +     +    signature.setSignatureInfo(signatureInfo); +     +    Node parent = signature.getParent(); +    Node nextSibling = signature.getNextSibling(); +     +    assertNotNull(parent); +    assertTrue("urn:document".equals(parent.getNamespaceURI())); +    assertTrue("Paragraph".equals(parent.getLocalName())); +     +    assertNull(nextSibling); +     +  } + +  // +  // +  // DataObject +  // +  // + +  @SuppressWarnings("unchecked") +  private List<DataObjectInfoType> unmarshalDataObjectInfo(String file) throws JAXBException, XMLStreamException { + +    Object object = unmarshal(file); + +    Object requestType = ((JAXBElement) object).getValue(); +     +    assertTrue(requestType instanceof CreateXMLSignatureRequestType); +     +    List<DataObjectInfoType> dataObjectInfos = ((CreateXMLSignatureRequestType) requestType).getDataObjectInfo(); +     +    assertNotNull(dataObjectInfos); +     +    return dataObjectInfos; +     +  } + +  private void signAndMarshalSignature(Signature signature) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException { + +    Node parent = signature.getParent(); +    Node nextSibling = signature.getNextSibling(); +     +    DOMSignContext signContext = (nextSibling == null)  +      ? new DOMSignContext(privateKey, parent) +      : new DOMSignContext(privateKey, parent, nextSibling); +       +    signature.sign(signContext); +     +    Document document = signature.getDocument(); +     +    DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS(); +    LSOutput output = domImplLS.createLSOutput(); +    output.setByteStream(System.out); +     +    LSSerializer serializer = domImplLS.createLSSerializer(); +//    serializer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE); +    serializer.getDomConfig().setParameter("namespaces", Boolean.FALSE); +    serializer.write(document, output); +     +  } + +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_Base64Content_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Base64Content_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.setSignerCeritifcate(certificate); +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); +     +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 1); +     +    Transform transform = transforms.get(0); +    assertTrue(Transform.BASE64.equals(transform.getAlgorithm())); +   +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2); +     +    XMLObject object = objects.get(0); +     +    assertTrue(("#" + object.getId()).equals(reference.getURI())); +     +  } + +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.setSignerCeritifcate(certificate); +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); + +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 2); +     +    Transform transform = transforms.get(0); +    assertTrue(Transform.XPATH2.equals(transform.getAlgorithm())); +   +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2); +     +    XMLObject object = objects.get(0); +     +    assertTrue(("#" + object.getId()).equals(reference.getURI())); +     +  } + +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_XMLContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_2.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.setSignerCeritifcate(certificate); +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); + +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 2); +     +    Transform transform = transforms.get(0); +    assertTrue(Transform.XPATH2.equals(transform.getAlgorithm())); +   +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2); +     +    XMLObject object = objects.get(0); +     +    assertTrue(("#" + object.getId()).equals(reference.getURI())); +     +  } + +   +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_LocRefContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); + +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 2); +     +    Transform transform = transforms.get(0); +    assertTrue(Transform.XPATH2.equals(transform.getAlgorithm())); +   +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2); +     +    XMLObject object = objects.get(0); +     +    assertTrue(("#" + object.getId()).equals(reference.getURI())); +     +  } + +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_LocRefContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_2.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); +     +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 1); +     +    Transform transform = transforms.get(0); +    assertTrue(Transform.BASE64.equals(transform.getAlgorithm())); +   +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2); +     +    XMLObject object = objects.get(0); +     +    assertTrue(("#" + object.getId()).equals(reference.getURI())); +     +  } + +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_Reference_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Reference_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); +     +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 1); +     +    Transform transform = transforms.get(0); +    assertTrue(Transform.BASE64.equals(transform.getAlgorithm())); +   +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2); +     +    XMLObject object = objects.get(0); +     +    assertTrue(("#" + object.getId()).equals(reference.getURI())); +     +  } + +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_Detached_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); +     +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 0); +     +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue(objects.size() == 1); +     +  } +   +  @SuppressWarnings("unchecked") +  @Test +  public void testDataObject_Detached_Base64Content() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_Base64Content.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); +     +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue(transforms.size() == 0); +     +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue(objects.size() == 1); +     +  } +   +  // +  // +  // TransformsInfo +  // +  // +   +  @SuppressWarnings("unchecked") +  private CreateXMLSignatureRequestType unmarshalCreateXMLSignatureRequest(String file) throws JAXBException, XMLStreamException { + +    Object object = unmarshal(file); + +    Object requestType = ((JAXBElement) object).getValue(); +     +    assertTrue(requestType instanceof CreateXMLSignatureRequestType); +     +    return (CreateXMLSignatureRequestType) requestType; +     +  } + +   +  @SuppressWarnings("unchecked") +  @Test +  public void testTransformsInfo_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    CreateXMLSignatureRequestType requestType = unmarshalCreateXMLSignatureRequest("TransformsInfo_1.xml"); +     +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); + + +    signature.setSignatureInfo(requestType.getSignatureInfo()); +     +    List<DataObjectInfoType> dataObjectInfos = requestType.getDataObjectInfo(); +     +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } +     +    signature.setSignerCeritifcate(certificate); +     +    signature.buildXMLSignature(); +     +    signAndMarshalSignature(signature); +     +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); +     +    List<Transform> transforms = reference.getTransforms(); +    assertTrue("Size " + transforms.size() + "", transforms.size() == 3); +     +    Transform transform = transforms.get(0); +    assertTrue(Transform.ENVELOPED.equals(transform.getAlgorithm())); +   +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 1.", objects.size() == 1); +     +  } + +  @SuppressWarnings("unchecked") +  @Test +  @Ignore +  public void testTransformsInfo_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException { + +    CreateXMLSignatureRequestType requestType = unmarshalCreateXMLSignatureRequest("TransformsInfo_2.xml"); + +    Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl()); + + +    signature.setSignatureInfo(requestType.getSignatureInfo()); + +    List<DataObjectInfoType> dataObjectInfos = requestType.getDataObjectInfo(); + +    for (DataObjectInfoType dataObjectInfo : dataObjectInfos) { +      signature.addDataObject(dataObjectInfo); +    } + +    signature.setSignerCeritifcate(certificate); + +    signature.buildXMLSignature(); + +    signAndMarshalSignature(signature); + +    List<Reference> references = signature.getReferences(); +    assertTrue(references.size() == 2); + +    Reference reference = references.get(0); +    assertNotNull(reference.getId()); + +    List<Transform> transforms = reference.getTransforms(); +    assertTrue("Size " + transforms.size() + "", transforms.size() == 2); + +    Transform transform = transforms.get(0); +    assertTrue(Transform.XSLT.equals(transform.getAlgorithm())); + +    List<XMLObject> objects = signature.getXMLObjects(); +    assertNotNull(objects); +    assertTrue("Size " + objects.size() + " but should be 1.", objects.size() == 1); + +  } + +   +} | 
