1 package org.eparapher.core.signature;
2
3 import javax.xml.crypto.dsig.CanonicalizationMethod;
4 import javax.xml.crypto.dsig.DigestMethod;
5 import javax.xml.crypto.dsig.SignatureMethod;
6 import javax.xml.crypto.dsig.Transform;
7
8 import org.eparapher.core.EParapherManager;
9 import org.eparapher.core.tools.StringUtils;
10
11
12 public class XMLSignatureParameters extends DefaultSignatureParameters {
13
14 public final static String[][] XMLHashAlgFamilies = { { "SHA 1", DigestMethod.SHA1 },
15 { "SHA 256", DigestMethod.SHA256 },
16 { "SHA 512", DigestMethod.SHA512 },
17 { "RIPEMD160", DigestMethod.RIPEMD160 } };
18
19 public final static String[][] XMLSigAlgFamilies = { { "RSA SHA 1", SignatureMethod.RSA_SHA1 },
20 { "DSA SHA 1", SignatureMethod.DSA_SHA1 },
21 { "HMAC SHA1", SignatureMethod.HMAC_SHA1 } };
22
23 public final static String[][] XMLTransformFamilies = { { "ENVELOPED", Transform.ENVELOPED },
24 { "BASE64", Transform.BASE64 },
25
26 { "XPATH", Transform.XPATH },
27 { "XPATH2", Transform.XPATH2 } };
28
29 public final static String[][] XMLCanonicalFamilies = { { "EXCLUSIVE", CanonicalizationMethod.EXCLUSIVE },
30 { "EXCLUSIVE_WITH_COMMENTS", CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS },
31 { "INCLUSIVE", CanonicalizationMethod.INCLUSIVE },
32 { "INCLUSIVE_WITH_COMMENTS", CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS } };
33
34 public final static String[][] XMLSigFormatFamilies = { { "Detached", "Detached" },
35 { "Enveloped", "Enveloped" },
36
37 };
38
39 public static final String[] XMLExtentions = { "xml","htm","html","xhtml","xst",
40 "xslt","xsl","xbrl","shtml"};
41
42 private String digestAlg;
43 private String signatureAlg;
44
45 private String transform;
46 private String canonical;
47
48 private String ObjectIds ;
49
50 private boolean detached;
51 private boolean enveloped;
52 private boolean enveloping;
53
54 private boolean overwritesignedfile;
55
56 private boolean dtdVerification;
57
58
59 public XMLSignatureParameters() {
60
61 digestAlg = DigestMethod.SHA512;
62 signatureAlg = SignatureMethod.RSA_SHA1;
63 transform = Transform.ENVELOPED;
64 canonical = CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS;
65 detached = false;
66 enveloped = true;
67 enveloping = false;
68 dtdVerification = true;
69 }
70
71 public void setXMLSignatureParamsFromPreferences() {
72
73 loadDefaultSignatureParameters();
74
75 if (EParapherManager.getInstance().getSettings().getXMLSignatureFormat().equals(XMLSigFormatFamilies[0][1]))
76 detached = true;
77 else
78 detached = false;
79 if (EParapherManager.getInstance().getSettings().getXMLSignatureFormat().equals(XMLSigFormatFamilies[1][1]))
80 enveloped = true;
81 else
82 enveloped = false;
83
84
85
86
87 enveloping = false;
88
89 overwritesignedfile = EParapherManager.getInstance().getSettings().isXMLSignatureReplaceFile();
90
91 digestAlg = EParapherManager.getInstance().getSettings().getXMLDigestAlgorithm();
92 signatureAlg = EParapherManager.getInstance().getSettings().getXMLSignatureAlgorithm();
93
94 transform = EParapherManager.getInstance().getSettings().getXMLTransform();
95 canonical = EParapherManager.getInstance().getSettings().getXMLCanonical();
96
97 ObjectIds = EParapherManager.getInstance().getSettings().getXMLObjectID();
98
99 dtdVerification = EParapherManager.getInstance().getSettings().isXMLDTDValidation();
100 }
101
102 public boolean isDetached() {
103 return detached;
104 }
105
106 public void setDetached() {
107 this.detached = true;
108 this.enveloped = false;
109 this.enveloping = false;
110 }
111
112 public boolean isEnveloped() {
113 return enveloped;
114 }
115
116 public void setEnveloped() {
117 this.detached = false;
118 this.enveloped = true;
119 this.enveloping = false;
120 }
121
122 public boolean isEnveloping() {
123 return enveloping;
124 }
125
126 public void setEnveloping() {
127 this.detached = false;
128 this.enveloped = false;
129 this.enveloping = true;
130 }
131
132 public String getDigestAlg() {
133 return digestAlg;
134 }
135
136 public void setDigestAlg(String digestAlg) {
137 this.digestAlg = digestAlg;
138 }
139
140 public String getTransform() {
141 return transform;
142 }
143
144 public void setTransform(String transform) {
145 this.transform = transform;
146 }
147
148 public String getCanonical() {
149 return canonical;
150 }
151
152 public void setCanonical(String canonical) {
153 this.canonical = canonical;
154 }
155
156 public String getObjectIds() {
157 return ObjectIds;
158 }
159
160 public void setObjectIds(String objectIds) {
161 ObjectIds = objectIds;
162 }
163
164 public int getTransformAsInt() {
165 return StringUtils.getPositionFromFamilies(transform,XMLTransformFamilies);
166 }
167
168 public int getCanonicalAsInt() {
169 return StringUtils.getPositionFromFamilies(canonical,XMLCanonicalFamilies);
170 }
171
172 public int getDigestAlgAsInt() {
173 return StringUtils.getPositionFromFamilies(digestAlg,XMLHashAlgFamilies);
174 }
175
176 public int getSignatureAlgAsInt() {
177 return StringUtils.getPositionFromFamilies(this.signatureAlg,XMLSigAlgFamilies);
178 }
179
180 public void setFormat(int format) {
181
182 switch (format) {
183 case 0:
184 this.setDetached();
185 break;
186 case 1:
187 this.setEnveloped();
188 break;
189 case 2:
190 this.setEnveloping();
191 break;
192 default:
193 this.setEnveloped();
194 break;
195 }
196 }
197
198 public int getFormatAsInt() {
199 if (detached)
200 return 0;
201 if (enveloped)
202 return 1;
203 if (enveloping)
204 return 2;
205
206
207
208 return 1;
209 }
210
211 public String getSignatureAlg() {
212 return signatureAlg;
213 }
214
215 public void setSignatureAlg(String signatureAlg) {
216 this.signatureAlg = signatureAlg;
217 }
218
219 public boolean isOverwritesignedfile() {
220 return overwritesignedfile;
221 }
222
223 public void setOverwritesignedfile(boolean overwritesignedfile) {
224 this.overwritesignedfile = overwritesignedfile;
225 }
226
227 public void setDTDValidation(boolean dtdvalidation) {
228 dtdVerification = dtdvalidation;
229 }
230
231 public boolean isDTDValidation() {
232 return dtdVerification;
233 }
234
235 }