Clover Coverage Report
Coverage timestamp: Sun Mar 23 2008 08:24:39 GMT
20   111   6   5
6   39   0.45   4
4     2.25  
1    
 
 
  XMLSignatureVerifier       Line # 65 20 6 0% 0.0
 
No Tests
 
1    /*
2    * Copyright (c) 2006-7, University of Kent
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    *
8    * Redistributions of source code must retain the above copyright notice, this
9    * list of conditions and the following disclaimer.
10    *
11    * Redistributions in binary form must reproduce the above copyright notice,
12    * this list of conditions and the following disclaimer in the documentation
13    * and/or other materials provided with the distribution.
14    *
15    * 1. Neither the name of the University of Kent nor the names of its
16    * contributors may be used to endorse or promote products derived from this
17    * software without specific prior written permission.
18    *
19    * 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20    * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21    * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22    * PURPOSE ARE DISCLAIMED.
23    *
24    * 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31    * POSSIBILITY OF SUCH DAMAGE.
32    *
33    * 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
34    * IN THE CIRCUMSTANCES. IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
35    * SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
36    * SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
37    * GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
38    * TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
39    * IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
40    * SERIOUS FAULTS, IN THIS SOFTWARE.
41    *
42    * 5. This license is governed, except to the extent that local laws
43    * necessarily apply, by the laws of England and Wales.
44    */
45    /*
46    * XMLSignatureVerifier.java
47    *
48    * Created on 18 December 2007, 00:37
49    *
50    * To change this template, choose Tools | Template Manager
51    * and open the template in the editor.
52    */
53   
54    package issrg.pba.rbac;
55   
56    import java.security.MessageDigest;
57    import java.security.DigestException;
58    import java.security.NoSuchAlgorithmException;
59   
60    import org.apache.log4j.*;
61    /**
62    *
63    * @author Linying Su
64    */
 
65    public class XMLSignatureVerifier extends SimpleSignatureVerifier {
66   
67    private static Logger logger = Logger.getLogger(XMLSignatureVerifier.class.getName());
68   
69    /** Creates a new instance of XMLSignatureVerifier */
 
70  0 toggle public XMLSignatureVerifier() {
71  0 super();
72    }
73   
 
74  0 toggle public XMLSignatureVerifier(issrg.security.Verifier verifier){
75  0 super(verifier);
76    }
77   
78    /**
79    * @param data is the to be digested data.
80    * @param digestVal is the digest value.
81    * @param digestMethod is the digest method.
82    */
83   
 
84  0 toggle public boolean referenceValidation(byte[] data, byte[] digestVal, String digestMethod) {
85  0 byte[] digested = null;
86  0 try {
87  0 digested = this.digest(data,digestMethod);
88    } catch (DigestException de) {
89  0 logger.debug("error: "+de);
90  0 return false;
91    }
92  0 if (digested.length != digestVal.length) return false;
93  0 for (int i=0; i<digested.length; i++) {
94  0 if (digested[i] == digestVal[i]) continue;
95  0 else return false;
96    }
97  0 return true;
98    }
99   
 
100  0 toggle private byte[] digest(byte[] data, String method) throws DigestException {
101   
102  0 try {
103  0 MessageDigest md = MessageDigest.getInstance(method);
104  0 md.update(data);
105  0 byte[] toDigest = md.digest();
106  0 return toDigest;
107    } catch (NoSuchAlgorithmException ne) {
108  0 throw new DigestException("couldn't make digest due to the wrong digest method");
109    }
110    }
111    }