4
import javax.xml.parsers.DocumentBuilderFactory;
5
import javax.xml.parsers.DocumentBuilder;
6
import javax.crypto.SecretKey;
7
import javax.crypto.KeyGenerator;
10
import java.security.*;
11
import java.security.cert.*;
13
import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
14
import org.apache.xml.security.c14n.*;
15
import org.apache.xml.security.exceptions.XMLSecurityException;
16
import org.apache.xml.security.signature.*;
17
import org.apache.xml.security.keys.*;
18
import org.apache.xml.security.keys.content.*;
19
import org.apache.xml.security.keys.content.x509.*;
20
import org.apache.xml.security.keys.keyresolver.*;
21
import org.apache.xml.security.keys.storage.*;
22
import org.apache.xml.security.keys.storage.implementations.*;
23
import org.apache.xml.security.utils.*;
24
import org.apache.xml.security.transforms.*;
25
import org.apache.xml.security.transforms.params.XPathContainer;
26
import org.apache.xml.security.Init;
27
import org.apache.xml.serialize.*;
29
//import org.apache.xml.security.algorithms.encryption.*;
30
import org.apache.xml.security.encryption.EncryptedData;
31
import org.apache.xml.security.encryption.CipherData;
32
import org.apache.xml.security.encryption.EncryptionProperties;
34
import org.apache.xpath.XPathAPI;
36
import org.apache.xml.security.keys.KeyInfo;
37
import org.apache.xml.security.encryption.XMLCipher;
38
import org.apache.xml.security.encryption.EncryptedData;
39
import org.apache.xml.security.encryption.EncryptedKey;
40
import org.apache.xml.security.utils.Constants;
42
public class sun_dom2 extends bench {
43
DocumentBuilderFactory factory;
44
DocumentBuilder parser;
52
XMLCipher xmlDecipher;
54
public void InitXML() {
56
factory = DocumentBuilderFactory.newInstance();
57
factory.setNamespaceAware(true);
58
factory.setValidating(false);
60
parser = factory.newDocumentBuilder();
61
kpg = KeyPairGenerator.getInstance("RSA");
62
key = kpg.genKeyPair();
65
catch (Throwable err) {
66
err.printStackTrace ();
71
public void InitXML_Security() {
73
org.apache.xml.security.Init.init();
77
KeyGenerator deskg = KeyGenerator.getInstance("TRIPLEDES");
78
symmetricKey = deskg.generateKey();
80
keyCipher = XMLCipher.getInstance(XMLCipher.RSA_v1dot5);
81
keyCipher.init(XMLCipher.WRAP_MODE, key.getPrivate());
83
xmlCipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
84
xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey);
86
xmlDecipher = XMLCipher.getInstance();
87
xmlDecipher.init(XMLCipher.DECRYPT_MODE, null);
88
xmlDecipher.setKEK(key.getPublic());
91
catch (Throwable err) {
92
err.printStackTrace ();
96
// Constants.setSignatureSpecNSprefix("");
99
System.err.println(e.toString());
104
public void ParseXML(FileInputStream is, int iters, int iter) {
106
doc=parser.parse(is);
110
System.out.println(e.toString());
114
public void SignXML(FileInputStream is, int iters, int iter) {
118
sig = new XMLSignature(doc,"", XMLSignature.ALGO_ID_SIGNATURE_RSA);
119
root=doc.getDocumentElement();
120
root.appendChild(sig.getElement());
121
Transforms transforms = new Transforms(doc);
122
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
123
// transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
124
sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
125
sig.sign(key.getPrivate());
127
catch (Exception e) {
128
System.err.println(e.toString());
132
java.io.StringWriter sw = new StringWriter();
133
org.apache.xml.serialize.XMLSerializer dw = new org.apache.xml.serialize.XMLSerializer(sw,null);
135
dw.asDOMSerializer();
136
String mem = sw.toString();
137
System.out.println(mem);
139
catch (Exception e) {
140
System.err.println(e.toString());
144
public void VerifyXML(FileInputStream is, int iters, int iter) {
146
doc.getDocumentElement().appendChild(doc.createElement("test"));
149
Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
150
Element root=(Element) XPathAPI.selectSingleNode(doc,"//ds:Signature[1]", nscontext);
151
sig = new XMLSignature(root,"");
152
if (!sig.checkSignatureValue(key.getPublic())) {
153
System.err.println("Error verifying signature");
156
catch (Exception e) {
157
System.err.println(e.toString());
162
public void EncryptXML(FileInputStream is, int iters, int iter) {
163
Element rootElement = doc.getDocumentElement();
166
EncryptedKey encryptedKey = keyCipher.encryptKey(doc, symmetricKey);
168
KeyInfo keyInfo = new KeyInfo(doc);
169
keyInfo.add(encryptedKey);
172
EncryptedData encryptedData = xmlCipher.getEncryptedData();
173
encryptedData.setKeyInfo(keyInfo);
175
xmlCipher.doFinal(doc, rootElement, true);
177
catch (Exception e) {
178
System.err.println(e.toString());
182
java.io.StringWriter sw = new StringWriter();
183
org.apache.xml.serialize.XMLSerializer dw = new org.apache.xml.serialize.XMLSerializer(sw,null);
185
dw.asDOMSerializer();
186
String mem = sw.toString();
187
System.out.println(mem);
189
catch (Exception e) {
190
System.err.println(e.toString());
195
public void DecryptXML(FileInputStream is, int iters, int iter) {
197
Element encryptedDataElement =
198
(Element) doc.getElementsByTagNameNS(
199
EncryptionConstants.EncryptionSpecNS,
200
EncryptionConstants._TAG_ENCRYPTEDDATA).item(0);
202
xmlDecipher.doFinal(doc, encryptedDataElement);
205
catch (Exception e) {
206
System.err.println(e.toString());
211
java.io.StringWriter sw = new StringWriter();
212
org.apache.xml.serialize.XMLSerializer dw = new org.apache.xml.serialize.XMLSerializer(sw,null);
214
dw.asDOMSerializer();
215
String mem = sw.toString();
216
System.out.println(mem);
218
catch (Exception e) {
219
System.err.println(e.toString());
224
static public void main(String argv[]) throws IOException {
225
bench mybench = new sun_dom2();
b'\\ No newline at end of file'