1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.xml.signature.validator;
18
19 import javax.xml.namespace.QName;
20
21 import org.opensaml.xml.XMLObject;
22 import org.opensaml.xml.signature.SPKIData;
23 import org.opensaml.xml.signature.SPKISexp;
24 import org.opensaml.xml.util.XMLConstants;
25 import org.opensaml.xml.validation.ValidationException;
26 import org.opensaml.xml.validation.Validator;
27
28
29
30
31 public class SPKIDataSchemaValidator implements Validator<SPKIData> {
32
33
34 public void validate(SPKIData xmlObject) throws ValidationException {
35 validateChildrenPresence(xmlObject);
36 validateChildrenNamespaces(xmlObject);
37 }
38
39
40
41
42
43
44
45 protected void validateChildrenPresence(SPKIData xmlObject) throws ValidationException {
46 if (xmlObject.getSPKISexps().isEmpty()) {
47 throw new ValidationException("SPKIData does not contain at least one SPKISexp child");
48 }
49 }
50
51
52
53
54
55
56
57
58 protected void validateChildrenNamespaces(SPKIData xmlObject) throws ValidationException {
59
60
61 for (XMLObject child : xmlObject.getXMLObjects()) {
62 QName childName = child.getElementQName();
63 if (! SPKISexp.DEFAULT_ELEMENT_NAME.equals(childName)
64 && XMLConstants.XMLSIG_NS.equals(childName.getNamespaceURI())) {
65 throw new ValidationException("PGPData contains an illegal child extension element: " + childName);
66 }
67 }
68 }
69
70 }