diff options
Diffstat (limited to 'spss.test/src/testgenerator/TestGeneratorFeature41.java')
-rw-r--r-- | spss.test/src/testgenerator/TestGeneratorFeature41.java | 1167 |
1 files changed, 0 insertions, 1167 deletions
diff --git a/spss.test/src/testgenerator/TestGeneratorFeature41.java b/spss.test/src/testgenerator/TestGeneratorFeature41.java deleted file mode 100644 index 7ecb28449..000000000 --- a/spss.test/src/testgenerator/TestGeneratorFeature41.java +++ /dev/null @@ -1,1167 +0,0 @@ -package testgenerator; - -import iaik.ixsil.algorithms.CanonicalizationAlgorithmImplCanonicalXML; -import iaik.ixsil.algorithms.DigestAlgorithmImplSHA1; -import iaik.ixsil.algorithms.SignatureAlgorithmImplRSA; -import iaik.ixsil.algorithms.Transform; -import iaik.ixsil.algorithms.TransformImplBase64Decode; -import iaik.ixsil.algorithms.TransformImplEnvelopedSignature; -import iaik.ixsil.algorithms.TransformImplXSLT; -import iaik.ixsil.core.Position; -import iaik.ixsil.core.Signer; -import iaik.ixsil.core.SignerManifest; -import iaik.ixsil.core.SignerReference; -import iaik.ixsil.core.SignerSignature; -import iaik.ixsil.core.SignerSignedInfo; -import iaik.ixsil.init.IXSILConstants; -import iaik.ixsil.keyinfo.KeyManagerImpl; -import iaik.ixsil.keyinfo.x509.KeyProviderImplX509Data; -import iaik.ixsil.keyinfo.x509.X509Data; -import iaik.ixsil.util.URI; - -import iaik.pkcs.pkcs12.PKCS12; -import iaik.utils.Base64OutputStream; - -import java.io.BufferedWriter; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.InputStream; -import java.net.URL; -import java.net.URLConnection; -import java.security.cert.X509Certificate; -import java.security.interfaces.RSAPrivateKey; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -import org.w3c.dom.Document; -import org.w3c.dom.DocumentFragment; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.Text; - -import at.gv.egovernment.moa.util.Base64Utils; -import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.EntityResolverChain; -import at.gv.egovernment.moa.util.MOAEntityResolver; -import at.gv.egovernment.moa.util.MOAErrorHandler; -import at.gv.egovernment.moa.util.StreamEntityResolver; - -/** - * @author Gregor Karlinger - */ -public class TestGeneratorFeature41 extends TestCases -{ - - String datadirectory = "data/feature41/"; - - public static void main(String[] args) throws Exception - { - TestGeneratorFeature41 testcase = new TestGeneratorFeature41(); - - testcase.create001(); - testcase.create002(); - testcase.create003(); - testcase.create004(); - testcase.create005(); - } - - /* ==================================================================================================== */ - - public TestGeneratorFeature41() throws Exception - { - - super(); - - // Set config properties - configuration_.setProperty("TestClass", "TestGeneratorFeature41"); - - iaik.security.provider.IAIK.addAsJDK14Provider(); - iaik.security.ecc.provider.ECCProvider.addAsProvider(); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public Document createPKCS12Sig( - String TestNumber, - String data, - boolean env, - boolean mani, - String data2, - boolean env2) - throws Exception - { - String resFile = - configuration_.getProperty("baseDir") - + datadirectory - + configuration_.getProperty("TestClass") - + "." - + TestNumber - + ".Res.xml"; - - PKCS12 pkcs12 = - decryptPKCS12(configuration_.getProperty("PKCS12file"), configuration_.getProperty("PKCS12password")); - - // Create signature generator - URI baseURI = new URI(IXSILConstants.DUMMY_ABSURI_); - Signer signer = new Signer(baseURI); - - // Configure signed information - - // Get interface for signed information - SignerSignature signature = signer.getSignature(); - SignerSignedInfo signedInfo = signer.getSignature().getSignerSignedInfo(); - - // Set canonicalization algorithm - CanonicalizationAlgorithmImplCanonicalXML c14nAlg = new CanonicalizationAlgorithmImplCanonicalXML(); - signedInfo.setCanonicalizationAlgorithm(c14nAlg); - - // Set signature algorithm - SignatureAlgorithmImplRSA signatureAlg = new SignatureAlgorithmImplRSA(); - RSAPrivateKey privateKey = getPrivateKey(pkcs12); - signatureAlg.setSignerKey(privateKey); - signedInfo.setSignatureAlgorithm(signatureAlg); - - if (!mani) - { - SignerReference reference = signedInfo.createReference(); - if (env) - { - iaik.ixsil.core.Object object = null; - //object = signature.createObject(data); - if (data.startsWith("<xml")) - { - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = db.parse(new ByteArrayInputStream(data.getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else if (data.startsWith("<Testdaten")) - { - - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = - db.parse( - new ByteArrayInputStream(("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + data).getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else if (data.startsWith("b64:")) - { - data = data.substring(4); - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = db.newDocument(); - Element root = doc.createElement("root"); - doc.appendChild(root); - //String encoded = Base64Utils.encode(data.getBytes()); - String encoded = Base64Utils.encode(data.getBytes()); - /*encoded = replaceStringAll(encoded,"\n",""); - encoded = replaceStringAll(encoded,"\r","");*/ - Text textnode = doc.createTextNode(encoded); - - System.out.println("Encoded:" + encoded); - //root.appendChild(textnode); - - DocumentFragment df = doc.createDocumentFragment(); - - df.appendChild(textnode); - - object = signature.createObject(df); - - TransformImplBase64Decode trans = new TransformImplBase64Decode(); - InputStream s = new ByteArrayInputStream(encoded.getBytes()); - trans.setInput(s, null); - - reference.insertTransformAt(trans, 0); - } - else - { - object = signature.createObject(data); - } - - object.setId("signed-data-1-1-1"); - signature.addObject(object); - - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - - reference.setURI(new URI("#xpointer(id('signed-data-1-1-1')/node())")); - - } - else - { - // Create and configure reference - URI refURI = null; - String baseDir = configuration_.getProperty("baseDir"); - refURI = new URI(data); - - reference.setURI(refURI); - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - } - reference.setId("reference-1-1"); - signedInfo.addReference(reference); - } - - if (data2 != null) - { - SignerReference reference = signedInfo.createReference(); - reference = signedInfo.createReference(); - if (env2) - { - iaik.ixsil.core.Object object = null; - if (data2.startsWith("<xml")) - { - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = db.parse(new ByteArrayInputStream(data.getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else if (data2.startsWith("<Testdaten")) - { - - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = - db.parse( - new ByteArrayInputStream(("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + data).getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else - object = signature.createObject(data2); - - if (!env) - object.setId("signed-data-1-2-1"); - else - object.setId("signed-data-1-2-1"); - signature.addObject(object); - - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - - if (!env) - reference.setURI(new URI("#xpointer(id('signed-data-1-2-1')/node())")); - else - reference.setURI(new URI("#xpointer(id('signed-data-1-2-1')/node())")); - } - else - { - // Create and configure reference - URI refURI = null; - String baseDir = configuration_.getProperty("baseDir"); - refURI = new URI(data2); - - reference.setURI(refURI); - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - } - reference.setId("reference-1-2"); - signedInfo.addReference(reference); - } - - // Add reference to signature - - if (mani) - { - - /*iaik.ixsil.core.Object object = null; - if(env) - object = signature.createObject(readFile(data)); - else - object = signature.createObject(data); - - object.setId("envelopedData"); - signature.addObject(object);*/ - SignerReference reference = signedInfo.createReference(); - SignerManifest manifest = signer.createManifest(); - SignerReference manifestRef = manifest.createReference(); - - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - manifestRef.setDigestAlgorithm(digestAlg); - - manifestRef.setURI(new URI(data)); - manifestRef.setId("reference-1-1"); - - manifest.addReference(manifestRef); - manifest.setId("dsig-manifest-1-1"); - iaik.ixsil.core.Object manifestObject = signature.createObject(manifest); - signature.addObject(manifestObject); - manifest.computeDigestValues(); - - reference = signedInfo.createReference(); - reference.setURI(new URI("#dsig-manifest-1-1")); - reference.setType(new URI(IXSILConstants.REFERENCETYPE_ATTR_VALUE_MANIFEST_)); - reference.setDigestAlgorithm(new DigestAlgorithmImplSHA1()); - - // Add reference to signature - signedInfo.addReference(reference); - - /*Element envelopedDataElem = - signer.toDocument().createElement("EnvelopedDataElement"); - - if(env) - { - envelopedDataElem.appendChild( - signer.toDocument().createTextNode(readFile(data))); - } - else - { - envelopedDataElem.appendChild( - signer.toDocument().createTextNode(data)); - } - - iaik.ixsil.core.Object object = signature.createObject(envelopedDataElem); - signature.addObject(object); - - // Create Manifest with a single reference pointing to the enveloped data - SignerManifest manifest = signer.createManifest(); - SignerReference manifestRef = manifest.createReference(); - manifestRef.setURI( - new URI( - null, - null, - null, - null, - "xmlns(dsig=" - + IXSILConstants.NAMESPACE_URI_XMLSIGNATURE_ELEM_ - + ") " - + "xpointer(here()/ancestor::dsig:Signature[1]/dsig:Object[1]/descendant::node())")); - manifestRef.setDigestAlgorithm(new DigestAlgorithmImplSHA1()); - manifest.addReference(manifestRef); - - // Add Manifest to signature structure (use an Object) and compute digest values for manifest reference - iaik.ixsil.core.Object manifestObject = signature.createObject(manifest); - signature.addObject(manifestObject); - manifest.computeDigestValues(); - - // Create and configure reference to manifest - reference = signedInfo.createReference(); - reference.setURI( - new URI( - null, - null, - null, - null, - "xmlns(dsig=" - + IXSILConstants.NAMESPACE_URI_XMLSIGNATURE_ELEM_ - + ") " - + "xpointer(here()/ancestor::dsig:Signature[1]/dsig:Object[2]/dsig:Manifest)")); - reference.setType(new URI(IXSILConstants.REFERENCETYPE_ATTR_VALUE_MANIFEST_)); - reference.setDigestAlgorithm(new DigestAlgorithmImplSHA1()); - - // Add reference to signature - signedInfo.addReference(reference);*/ - } - - // Create key information - KeyManagerImpl keyManager = new KeyManagerImpl(signer.toDocument()); - - X509Certificate[] certs = getCertificates(pkcs12); - X509Data x509Data = new X509Data(); - x509Data.insertHintAt(certs[1], 0); - /*for (int i = 0; i < certs.length; i++) - { - - }*/ - - KeyProviderImplX509Data x509DataKeyProvider = new KeyProviderImplX509Data(signer.toDocument()); - x509DataKeyProvider.insertX509DataAt(x509Data, 0); - - // X509Data key information (certificate chain) - keyManager.addKeyProvider(x509DataKeyProvider); - - signer.getSignature().setKeyManager(keyManager); - signer.getSignature().setId("signature-1-1"); - // Compute signature value - signer.getSignature().sign(); - - return signer.toDocument(); - } - - public Document createPKCS12Sig( - String TestNumber, - String data, - boolean env, - boolean mani, - String data2, - boolean env2, - String id1, - String id2) - throws Exception - { - String resFile = - configuration_.getProperty("baseDir") - + datadirectory - + configuration_.getProperty("TestClass") - + "." - + TestNumber - + ".Res.xml"; - - PKCS12 pkcs12 = - decryptPKCS12(configuration_.getProperty("PKCS12file"), configuration_.getProperty("PKCS12password")); - - // Create signature generator - URI baseURI = new URI(IXSILConstants.DUMMY_ABSURI_); - Signer signer = new Signer(baseURI); - - // Configure signed information - - // Get interface for signed information - SignerSignature signature = signer.getSignature(); - SignerSignedInfo signedInfo = signer.getSignature().getSignerSignedInfo(); - - // Set canonicalization algorithm - CanonicalizationAlgorithmImplCanonicalXML c14nAlg = new CanonicalizationAlgorithmImplCanonicalXML(); - signedInfo.setCanonicalizationAlgorithm(c14nAlg); - - // Set signature algorithm - SignatureAlgorithmImplRSA signatureAlg = new SignatureAlgorithmImplRSA(); - RSAPrivateKey privateKey = getPrivateKey(pkcs12); - signatureAlg.setSignerKey(privateKey); - signedInfo.setSignatureAlgorithm(signatureAlg); - - if (!mani) - { - SignerReference reference = signedInfo.createReference(); - if (env) - { - iaik.ixsil.core.Object object = null; - //object = signature.createObject(data); - if (data.startsWith("<xml")) - { - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = db.parse(new ByteArrayInputStream(data.getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else if (data.startsWith("<Testdaten")) - { - - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = - db.parse( - new ByteArrayInputStream(("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + data).getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else if (data.startsWith("b64:")) - { - data = data.substring(4); - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = db.newDocument(); - Element root = doc.createElement("root"); - doc.appendChild(root); - //String encoded = Base64Utils.encode(data.getBytes()); - String encoded = Base64Utils.encode(data.getBytes()); - /*encoded = replaceStringAll(encoded,"\n",""); - encoded = replaceStringAll(encoded,"\r","");*/ - Text textnode = doc.createTextNode(encoded); - - System.out.println("Encoded:" + encoded); - //root.appendChild(textnode); - - DocumentFragment df = doc.createDocumentFragment(); - - df.appendChild(textnode); - - object = signature.createObject(df); - - TransformImplBase64Decode trans = new TransformImplBase64Decode(); - InputStream s = new ByteArrayInputStream(encoded.getBytes()); - trans.setInput(s, null); - - reference.insertTransformAt(trans, 0); - } - else - { - object = signature.createObject(data); - } - - object.setId("signed-data-1-1-1"); - signature.addObject(object); - - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - - reference.setURI(new URI("#xpointer(id('signed-data-1-1-1')/node())")); - - } - else - { - // Create and configure reference - URI refURI = null; - String baseDir = configuration_.getProperty("baseDir"); - refURI = new URI(data); - - reference.setURI(refURI); - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - } - reference.setId("reference-2-1"); - signedInfo.addReference(reference); - } - - if (data2 != null) - { - SignerReference reference = signedInfo.createReference(); - reference = signedInfo.createReference(); - if (env2) - { - iaik.ixsil.core.Object object = null; - if (data2.startsWith("<xml")) - { - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = db.parse(new ByteArrayInputStream(data.getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else if (data2.startsWith("<Testdaten")) - { - - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = - db.parse( - new ByteArrayInputStream(("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + data).getBytes())); - - object = signature.createObject(doc.getDocumentElement()); - } - else - object = signature.createObject(data2); - - if (!env) - object.setId("signed-data-1-2-1"); - else - object.setId("signed-data-1-2-1"); - signature.addObject(object); - - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - - if (!env) - reference.setURI(new URI("#xpointer(id('signed-data-1-2-1')/node())")); - else - reference.setURI(new URI("#xpointer(id('signed-data-1-2-1')/node())")); - } - else - { - // Create and configure reference - URI refURI = null; - String baseDir = configuration_.getProperty("baseDir"); - refURI = new URI(data2); - - reference.setURI(refURI); - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - } - reference.setId("reference-1-2"); - signedInfo.addReference(reference); - } - - // Add reference to signature - - if (mani) - { - - /*iaik.ixsil.core.Object object = null; - if(env) - object = signature.createObject(readFile(data)); - else - object = signature.createObject(data); - - object.setId("envelopedData"); - signature.addObject(object);*/ - SignerReference reference = signedInfo.createReference(); - SignerManifest manifest = signer.createManifest(); - SignerReference manifestRef = manifest.createReference(); - - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - manifestRef.setDigestAlgorithm(digestAlg); - - manifestRef.setURI(new URI(data)); - manifestRef.setId("reference-1-1"); - - manifest.addReference(manifestRef); - manifest.setId("dsig-manifest-1-1"); - iaik.ixsil.core.Object manifestObject = signature.createObject(manifest); - signature.addObject(manifestObject); - manifest.computeDigestValues(); - - reference = signedInfo.createReference(); - reference.setURI(new URI("#dsig-manifest-1-1")); - reference.setType(new URI(IXSILConstants.REFERENCETYPE_ATTR_VALUE_MANIFEST_)); - reference.setDigestAlgorithm(new DigestAlgorithmImplSHA1()); - - // Add reference to signature - signedInfo.addReference(reference); - - /*Element envelopedDataElem = - signer.toDocument().createElement("EnvelopedDataElement"); - - if(env) - { - envelopedDataElem.appendChild( - signer.toDocument().createTextNode(readFile(data))); - } - else - { - envelopedDataElem.appendChild( - signer.toDocument().createTextNode(data)); - } - - iaik.ixsil.core.Object object = signature.createObject(envelopedDataElem); - signature.addObject(object); - - // Create Manifest with a single reference pointing to the enveloped data - SignerManifest manifest = signer.createManifest(); - SignerReference manifestRef = manifest.createReference(); - manifestRef.setURI( - new URI( - null, - null, - null, - null, - "xmlns(dsig=" - + IXSILConstants.NAMESPACE_URI_XMLSIGNATURE_ELEM_ - + ") " - + "xpointer(here()/ancestor::dsig:Signature[1]/dsig:Object[1]/descendant::node())")); - manifestRef.setDigestAlgorithm(new DigestAlgorithmImplSHA1()); - manifest.addReference(manifestRef); - - // Add Manifest to signature structure (use an Object) and compute digest values for manifest reference - iaik.ixsil.core.Object manifestObject = signature.createObject(manifest); - signature.addObject(manifestObject); - manifest.computeDigestValues(); - - // Create and configure reference to manifest - reference = signedInfo.createReference(); - reference.setURI( - new URI( - null, - null, - null, - null, - "xmlns(dsig=" - + IXSILConstants.NAMESPACE_URI_XMLSIGNATURE_ELEM_ - + ") " - + "xpointer(here()/ancestor::dsig:Signature[1]/dsig:Object[2]/dsig:Manifest)")); - reference.setType(new URI(IXSILConstants.REFERENCETYPE_ATTR_VALUE_MANIFEST_)); - reference.setDigestAlgorithm(new DigestAlgorithmImplSHA1()); - - // Add reference to signature - signedInfo.addReference(reference);*/ - } - - // Create key information - KeyManagerImpl keyManager = new KeyManagerImpl(signer.toDocument()); - - X509Certificate[] certs = getCertificates(pkcs12); - X509Data x509Data = new X509Data(); - x509Data.insertHintAt(certs[1], 0); - /*for (int i = 0; i < certs.length; i++) - { - - }*/ - - KeyProviderImplX509Data x509DataKeyProvider = new KeyProviderImplX509Data(signer.toDocument()); - x509DataKeyProvider.insertX509DataAt(x509Data, 0); - - // X509Data key information (certificate chain) - keyManager.addKeyProvider(x509DataKeyProvider); - - signer.getSignature().setKeyManager(keyManager); - signer.getSignature().setId("signature-2-1"); - // Compute signature value - signer.getSignature().sign(); - - return signer.toDocument(); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public Element getElement(String data) throws Exception - { - String etsinamespace = "http://uri.etsi.org/01903/v1.1.1#"; - - getX509Content(); - - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - //dbf.setNamespaceAware(true); - //dbf.setValidating(true); - - Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - - Element qualprop = doc.createElementNS(etsinamespace, "etsi:QualifyingProperties"); - qualprop.setAttributeNS(null, "Target", "#signature-1-1"); - qualprop.setAttributeNS(IXSILConstants.NAMESPACE_URI_NAMESPACES_, "xmlns:etsi", etsinamespace); - //qualprop.setPrefix("etsi");*/ - //qualprop.setAttributeNodeNS(doc.createAttributeNS(etsinamespace,"etsi")); - Element signprop = doc.createElementNS(etsinamespace, "etsi:SignedProperties"); - Element signsigprop = doc.createElementNS(etsinamespace, "etsi:SignedSignatureProperties"); - Element signdataobjectprop = doc.createElementNS(etsinamespace, "etsi:SignedDataObjectProperties"); - Element signdate = doc.createElementNS(etsinamespace, "etsi:SigningTime"); - Text datevalue = doc.createTextNode("2003-05-10T00:01:01"); - Element signcert = doc.createElementNS(etsinamespace, "etsi:SigningCertificate"); - Element cert = doc.createElementNS(etsinamespace, "etsi:Cert"); - Element signpolyident = doc.createElementNS(etsinamespace, "etsi:SignaturePolicyIdentifier"); - Element signpolyimp = doc.createElementNS(etsinamespace, "etsi:SignaturePolicyImplied"); - Element certdig = doc.createElementNS(etsinamespace, "etsi:CertDigest"); - Element digmeth = doc.createElementNS(etsinamespace, "etsi:DigestMethod"); - digmeth.setAttribute("Algorithm", "http://www.w3.org/2000/09/xmldsig#sha1"); - Element digvalue = doc.createElementNS(etsinamespace, "etsi:DigestValue"); - - ByteArrayOutputStream fos = new ByteArrayOutputStream(); - Base64OutputStream base64os = new Base64OutputStream(fos); - base64os.write(this.X509hash.getBytes()); - base64os.flush(); - - Text dig_value = doc.createTextNode(fos.toString()); - Element is = doc.createElementNS(etsinamespace, "etsi:IssuerSerial"); - Element i = doc.createElement("dsig:X509IssuerName"); - Text i_value = doc.createTextNode(this.X509name); - Element s = doc.createElement("dsig:X509SerialNumber"); - Text s_value = doc.createTextNode(this.X509number.toString()); - Element dataobjformat = doc.createElementNS(etsinamespace, "etsi:DataObjectFormat"); - dataobjformat.setAttribute("ObjectReference", "#reference-1-1"); - Element mimetype = doc.createElementNS(etsinamespace, "etsi:MimeType"); - //mimetype.setNodeValue("text/plain"); - Text mimevalue = doc.createTextNode("text/plain"); - - qualprop.appendChild(signprop); - signprop.appendChild(signsigprop); - signsigprop.appendChild(signdate); - signdate.appendChild(datevalue); - signsigprop.appendChild(signcert); - signcert.appendChild(cert); - cert.appendChild(certdig); - certdig.appendChild(digmeth); - certdig.appendChild(digvalue); - digvalue.appendChild(dig_value); - cert.appendChild(is); - is.appendChild(i); - i.appendChild(i_value); - is.appendChild(s); - s.appendChild(s_value); - signsigprop.appendChild(signpolyident); - signpolyident.appendChild(signpolyimp); - signprop.appendChild(signdataobjectprop); - signdataobjectprop.appendChild(dataobjformat); - dataobjformat.appendChild(mimetype); - mimetype.appendChild(mimevalue); - - return qualprop; - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public void create001() throws Exception - { - - String testNumber = "001"; - - String resFile = - configuration_.getProperty("baseDir") - + datadirectory - + configuration_.getProperty("TestClass") - + "." - + testNumber - + ".Res.xml"; - - PKCS12 pkcs12 = - decryptPKCS12(configuration_.getProperty("PKCS12file"), configuration_.getProperty("PKCS12password")); - - // Create signature generator - URI baseURI = new URI(IXSILConstants.DUMMY_ABSURI_); - Signer signer = new Signer(baseURI); - - // Configure signed information - - // Get interface for signed information - SignerSignature signature = signer.getSignature(); - SignerSignedInfo signedInfo = signer.getSignature().getSignerSignedInfo(); - - // Set canonicalization algorithm - CanonicalizationAlgorithmImplCanonicalXML c14nAlg = new CanonicalizationAlgorithmImplCanonicalXML(); - signedInfo.setCanonicalizationAlgorithm(c14nAlg); - - // Set signature algorithm - SignatureAlgorithmImplRSA signatureAlg = new SignatureAlgorithmImplRSA(); - RSAPrivateKey privateKey = getPrivateKey(pkcs12); - signatureAlg.setSignerKey(privateKey); - signedInfo.setSignatureAlgorithm(signatureAlg); - - // Create and configure reference - String baseDir = configuration_.getProperty("baseDir"); - InputStream dataIS = new FileInputStream(baseDir + "resources/documents/testDaten.txt"); - - SignerReference reference = signedInfo.createReference(); - reference.setURI(new URI("testDaten.txt")); - reference.setExplicitData(dataIS, SignerReference.EXPLICITDATATYPE_RAW_); - DigestAlgorithmImplSHA1 digestAlg = new DigestAlgorithmImplSHA1(); - reference.setDigestAlgorithm(digestAlg); - reference.setId("reference-1-1"); - signedInfo.addReference(reference); - - // Create key information - KeyManagerImpl keyManager = new KeyManagerImpl(signer.toDocument()); - - X509Certificate[] certs = getCertificates(pkcs12); - X509Data x509Data = new X509Data(); - x509Data.insertHintAt(certs[1], 0); - KeyProviderImplX509Data x509DataKeyProvider = new KeyProviderImplX509Data(signer.toDocument()); - x509DataKeyProvider.insertX509DataAt(x509Data, 0); - - // X509Data key information (certificate chain) - keyManager.addKeyProvider(x509DataKeyProvider); - - signer.getSignature().setKeyManager(keyManager); - signer.getSignature().setId("signature-1-1"); - // Compute signature value - signer.getSignature().sign(); - - String erg = makeOutputFile(signer.toDocument()); - writeFile(resFile, erg); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public void create002() throws Exception - { - - String testNumber = "002"; - - String resFile = - configuration_.getProperty("baseDir") - + datadirectory - + configuration_.getProperty("TestClass") - + "." - + testNumber - + ".Res.xml"; - - Document signatureDoc = createPKCS12Sig(testNumber, "b64:Dies sind Testdaten", true, false, null, false); - String erg = makeOutputFile(signatureDoc); - writeFile(resFile, erg); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public void create003() throws Exception - { - - String testNumber = "003"; - - String resFile = - configuration_.getProperty("baseDir") - + datadirectory - + configuration_.getProperty("TestClass") - + "." - + testNumber - + ".Res.xml"; - - InputStream bis = - new ByteArrayInputStream( - ("<data:Document xmlns:data=\"http://uri.data.org\">" - + readFile(configuration_.getProperty("baseDir") + "resources/documents/testSimple.txt") - + "</data:Document>") - .getBytes()); - - //Document-Builder holen - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - DocumentBuilder builder = factory.newDocumentBuilder(); - //Dokument Parsen - Document reqDoc = builder.parse(bis); - - System.out.println(DOMUtils.serializeNode(reqDoc.getDocumentElement())); - //Position für die Signatur angeben - String xPath_Pos = "/node()"; - //XPAth-Präfixe deklarieren - String xPath_Prefix = "data xmlns:data=\"http://uri.data.org\""; - Position pos = new Position(xPath_Pos, xPath_Prefix, 0); - - CreatePKCSSignature cpkcs = new CreatePKCSSignature(); - //Signer erzeugen, der das obige Doc als Basis nimmt, und die Signatur an der besagten stelle einfügt - cpkcs.init(reqDoc, pos, "signature-1-1"); - cpkcs.setCanoncialization(1); - cpkcs.createReference( - false, - configuration_.getProperty("webbaseDir") + "resources/documents/testSimple.txt", - "reference-1-1"); - cpkcs.setKeyInformation(1); - - Document doc = cpkcs.returnSig(); - - String output = - makeOutputFile( - doc, - "<data:Document xmlns:data=\"http://uri.data.org\">", - cutXML(readFile(configuration_.getProperty("baseDir") + "resources/documents/testSimple.txt")) - + "</data:Document>"); - - writeFile(resFile, output); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public void create004() throws Exception - { - - String testNumber = "004"; - - String resFile = - configuration_.getProperty("baseDir") - + datadirectory - + configuration_.getProperty("TestClass") - + "." - + testNumber - + ".Res.xml"; - - InputStream bis = - new ByteArrayInputStream( - ("<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://anywhere.org/testDocument.schema.xsd\">Dies sind Testdaten</data:Document>") - .getBytes()); - - //Document-Builder holen - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - factory.setValidating(true); - DocumentBuilder builder = factory.newDocumentBuilder(); - - Map m = new HashMap(); - m.put( - "http://anywhere.org/testDocument.schema.xsd", - new ByteArrayInputStream( - ("<xsd:schema targetNamespace=\"http://uri.data.org\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://uri.data.org\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" id=\"tollesSchema\">" - + "<xsd:element name=\"Document\">" - + "<xsd:complexType mixed=\"true\">" - + "<xsd:sequence maxOccurs=\"unbounded\" minOccurs=\"0\">" - + "<xsd:any namespace=\"##any\" processContents=\"lax\"/>" - + "</xsd:sequence>" - + "<xsd:attribute name=\"attr\" type=\"xsd:ID\" use=\"required\"/>" - + "</xsd:complexType>" - + "</xsd:element></xsd:schema>") - .getBytes())); - - EntityResolverChain chain = new EntityResolverChain(); - chain.addEntityResolver(new StreamEntityResolver(m)); - chain.addEntityResolver(new MOAEntityResolver()); - builder.setEntityResolver(chain); - - //Dokument Parsen - Document reqDoc = - DOMUtils.parseDocument(bis, true, Constants.ALL_SCHEMA_LOCATIONS, null, chain, new MOAErrorHandler()); - - System.out.println(DOMUtils.serializeNode(reqDoc.getDocumentElement())); - - //Position für die Signatur angeben - String xPath_Pos = "//data:Document"; - - //XPAth-Prefixe deklarieren - String xPath_Prefix = "data http://uri.data.org"; - - Position pos = new Position(xPath_Pos, xPath_Prefix, 0); - - CreatePKCSSignature cpkcs = new CreatePKCSSignature(); - //Signer erzeugen, der das obige Doc als Basis nimmt, und die Signatur an der besagten stelle einfügt - cpkcs.init(reqDoc, pos, "signature-1-1"); - cpkcs.setCanoncialization(1); - - //Enveloped Transformation - Transform[] tr = new Transform[1]; - TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature(); - tr[0] = trans; - cpkcs.createReferenceWithTransforms(new URI("#document"), tr, "reference-1-1"); - - cpkcs.setKeyInformation(1); - - Document doc = cpkcs.returnSig(); - - String output = - makeOutputFile( - doc, - "<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://anywhere.org/testDocument.schema.xsd\">", - readFile(configuration_.getProperty("baseDir") + "resources/documents/testSimple.txt") - + "</data:Document>"); - - writeFile(resFile, output); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public void create005() throws Exception - { - - String testNumber = "005"; - String resFile = - configuration_.getProperty("baseDir") - + datadirectory - + configuration_.getProperty("TestClass") - + "." - + testNumber - + ".Res.xml"; - - CreatePKCSSignature cpkcs = new CreatePKCSSignature(); - cpkcs.init("signature-1-1"); - cpkcs.setCanoncialization(1); - - Transform[] tr = new Transform[1]; - TransformImplXSLT trans = new TransformImplXSLT(); - URL u = new URL(configuration_.getProperty("webbaseDir") + "resources/stylesheets/ref.book.notavailable.xsl"); - URLConnection hu = u.openConnection(); - - trans.setStyleSheet( - hu.getInputStream(), - new URI(configuration_.getProperty("webbaseDir") + "resources/stylesheets/ref.book.notavailable.xsl")); - tr[0] = trans; - - cpkcs.createReferenceWithTransforms( - new URI(configuration_.getProperty("webbaseDir") + "resources/documents/bookData.xml"), - tr, - "reference-1-1"); - - cpkcs.setKeyInformation(1); - - Document doc = cpkcs.returnSig(); - String output = makeOutputFile(doc); - writeFile(resFile, output); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public void writeFile(String filename, String data) throws Exception - { - BufferedWriter bw = new BufferedWriter(new FileWriter(filename)); - bw.write(data); - bw.close(); - } - - /* ---------------------------------------------------------------------------------------------------- */ - - private String makeOutputFile(Document signatureDoc) throws Exception - { - ArrayList foundNodes = new ArrayList(); - findNode(signatureDoc.getDocumentElement(), "dsig:Signature", foundNodes); - - Node outputNode = null; - - if (foundNodes.size() > 0) - { - outputNode = (Node) foundNodes.get(0); - } - - String erg = Node2String(outputNode); - - // remove the <?xml ?> Prologue - int pos = erg.indexOf("<dsig"); - erg = erg.substring(pos); - - // insert the dsig:signature element in a MOA Response Message - erg = - "<?xml version=\"1.0\" encoding=\"utf-8\"?>" - + "<CreateXMLSignatureResponse\n" - + " xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\"\n" - + " >" - + - //" xmlns:etsi=\"http://uri.etsi.org/01903/v1.1.1#\">\n"+ - "<SignatureEnvironment>" + erg + "</SignatureEnvironment></CreateXMLSignatureResponse>"; - - return erg; - } - - /* ---------------------------------------------------------------------------------------------------- */ - - private String makeOutputFile(Document signatureDoc, Document signatureDoc2) throws Exception - { - ArrayList foundNodes = new ArrayList(); - findNode(signatureDoc.getDocumentElement(), "dsig:Signature", foundNodes); - - Node outputNode = null; - - if (foundNodes.size() > 0) - { - outputNode = (Node) foundNodes.get(0); - } - - String erg = Node2String(outputNode); - - // remove the <?xml ?> Prologue - int pos = erg.indexOf("<dsig"); - erg = erg.substring(pos); - - foundNodes.clear(); - findNode(signatureDoc2.getDocumentElement(), "dsig:Signature", foundNodes); - - outputNode = null; - - if (foundNodes.size() > 0) - { - outputNode = (Node) foundNodes.get(0); - } - - String erg2 = Node2String(outputNode); - - // remove the <?xml ?> Prologue - pos = erg2.indexOf("<dsig"); - erg2 = erg2.substring(pos); - - // insert the dsig:signature element in a MOA Response Message - erg = - "<?xml version=\"1.0\" encoding=\"utf-8\"?>" - + "<CreateXMLSignatureResponse\n" - + " xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\"\n" - + " >" - + "<SignatureEnvironment>" - + erg - + "</SignatureEnvironment><SignatureEnvironment>" - + erg2 - + "</SignatureEnvironment> </CreateXMLSignatureResponse>"; - - //erg = replaceString(erg,"Id=\"signature-1-1\"","Id=\"signature-2-1\""); - //erg = replaceString(erg,"Id=\"reference-1-1\"","Id=\"reference-2-1\""); - - return erg; - } - - /* ---------------------------------------------------------------------------------------------------- */ - - public String makeOutputFile(Document signatureDoc, String prefix, String suffix) throws Exception - { - ArrayList foundNodes = new ArrayList(); - findNode(signatureDoc.getDocumentElement(), "dsig:Signature", foundNodes); - - Node outputNode = null; - - if (foundNodes.size() > 0) - { - outputNode = (Node) foundNodes.get(0); - } - - String erg = Node2String(outputNode); - - // remove the <?xml ?> Prologue - int pos = erg.indexOf("<dsig"); - erg = erg.substring(pos); - - // insert the dsig:signature element in a MOA Response Message - erg = - "<?xml version=\"1.0\" encoding=\"utf-8\"?>" - + "<CreateXMLSignatureResponse" - + " xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\"" - + " >" - + - //" xmlns:etsi=\"http://uri.etsi.org/01903/v1.1.1#\">"+ - "<SignatureEnvironment>" - + prefix - + erg - + suffix - + "</SignatureEnvironment> </CreateXMLSignatureResponse>"; - - return erg; - } - -} |