22
33declare (strict_types=1 );
44
5- namespace SimpleSAML \XML ;
5+ namespace SimpleSAML \XMLSecurity \ XML ;
66
77use DOMElement ;
8- use SimpleSAML \XML \DOMDocumentFactory ;
9- use SimpleSAML \XML \Exception \MissingAttributeException ;
10- use Serializable ;
11- use SimpleSAML \Assert \Assert ;
8+ use SimpleSAML \XMLSecurity \XML \ds \Signature ;
129
1310/**
1411 * Abstract class to be implemented by all signed classes
@@ -19,12 +16,6 @@ abstract class AbstractSignedXMLElement implements SignedElementInterface
1916{
2017 use SignedElementTrait;
2118
22- /**
23- * Create a document structure for this element
24- *
25- * @param \DOMElement|null $parent The element we should append to.
26- * @return \DOMElement
27- */
2819 /**
2920 * The signed DOM structure.
3021 *
@@ -35,7 +26,87 @@ abstract class AbstractSignedXMLElement implements SignedElementInterface
3526 /**
3627 * The unsigned elelement.
3728 *
38- * @var \SimpleSAML\XML\AbstractXMLElement
29+ * @var \SimpleSAML\XMLSecurity\XML\SignableElementInterface
30+ */
31+ protected SignableElementInterface $ element ;
32+
33+
34+ /**
35+ * Create/parse an alg:SigningMethod element.
36+ *
37+ * @param \DOMElement $xml
38+ * @param \SimpleSAML\XMLSecurity\XML\SignableElementInterface $elt
39+ * @param \SimpleSAML\XMLSecurity\XML\ds\Signature $signature
40+ */
41+ private function __construct (DOMElement $ xml , SignableElementInterface $ elt , Signature $ signature )
42+ {
43+ $ this ->setStructure ($ xml );
44+ $ this ->setElement ($ elt );
45+ $ this ->setSignature ($ signature );
46+ }
47+
48+
49+ /**
50+ * Collect the value of the unsigned element
51+ *
52+ * @return \SimpleSAML\XMLSecurity\XML\SignableElementInterface
53+ */
54+ public function getElement (): SignableElementInterface
55+ {
56+ return $ this ->element ;
57+ }
58+
59+
60+ /**
61+ * Set the value of the elment-property
62+ *
63+ * @param \SimpleSAML\XMLSecurity\XML\SignableElementInterface $elt
64+ */
65+ private function setElement (SignableElementInterface $ elt ): void
66+ {
67+ $ this ->element = $ elt ;
68+ }
69+
70+
71+ /**
72+ * Collect the value of the structure-property
73+ *
74+ * @return \DOMElement
75+ */
76+ public function getStructure (): DOMElement
77+ {
78+ return $ this ->structure ;
79+ }
80+
81+
82+ /**
83+ * Set the value of the structure-property
84+ *
85+ * @param \DOMElement $structure
86+ */
87+ private function setStructure (DOMElement $ structure ): void
88+ {
89+ $ this ->structure = $ structure ;
90+ }
91+
92+
93+ /**
94+ * Create XML from this class
95+ *
96+ * @param \DOMElement|null $parent
97+ * @return \DOMElement
98+ */
99+ public function toXML (DOMElement $ parent = null ): DOMElement
100+ {
101+ return $ this ->structure ;
102+ }
103+
104+
105+ /**
106+ * Create a class from XML
107+ *
108+ * @param \DOMElement $xml
109+ * @return self
39110 */
40- protected AbstractXMLElement $ elt ;
111+ abstract public static function fromXML ( DOMElement $ xml ): object ;
41112}
0 commit comments