<!-- DTD for XML Signatures -->
<!-- http://www.w3.org/2000/01/xmldsig# -->
<!-- Note this DTD is NOT the normative structures DTD - - the -->
<!-- prose copy in the structures REC is the normative version (which -->
<!-- shouldn't differ from this one except for this comment and entity -->
<!-- expansions, but just in case -->

<!ELEMENT Signature (SignedInfo, SignatureValue, KeyInfo?, Object*)  >
<!ATTLIST Signature  
	xmlns	CDATA	#FIXED 'http://www.w3.org/2000/01/xmldsig#'
	Id  	ID	#IMPLIED >

<!ELEMENT SignatureValue (#PCDATA)  >

<!ELEMENT SignedInfo (CanonicalizationMethod?, 
	SignatureMethod,  Reference+)  >
<!ATTLIST SignedInfo  
	Id	 ID 	 #IMPLIED 
 >

<!ELEMENT CanonicalizationMethod ANY > 
<!ATTLIST CanonicalizationMethod 
          Algorithm CDATA #REQUIRED > 

<!ELEMENT SignatureMethod ANY > 
<!ATTLIST SignatureMethod 
          Algorithm CDATA #REQUIRED > 

<!ELEMENT Reference (Transforms?, DigestMethod, DigestValue)  >
<!ATTLIST Reference  
	Id	ID	#IMPLIED
	URI	CDATA	#IMPLIED
	IDREF	IDREF	#IMPLIED
        Type	CDATA	#IMPLIED>


<!ELEMENT Transforms (Transform+)>

<!ELEMENT Transform ANY >
<!ATTLIST Transform 
          Algorithm    CDATA    #REQUIRED
          Type         CDATA    #IMPLIED 
          Charset      CDATA    #IMPLIED >


<!ELEMENT DigestMethod ANY >
<!ATTLIST DigestMethod  
	Algorithm		CDATA	#REQUIRED >

<!ELEMENT DigestValue  (#PCDATA)  >

<!ELEMENT Object (#PCDATA) >
<!ATTLIST Object  
	Id	ID	#IMPLIED 
	Type	CDATA	#IMPLIED 
	Encoding	CDATA	#IMPLIED >

<!ELEMENT Manifest ((Reference | Object)+)  >
<!ATTLIST Manifest  
	Id	ID	#IMPLIED >

<!ELEMENT SignatureProperties (SignatureProperty+)  >
<!ATTLIST SignatureProperties  
	Id	ID	 #IMPLIED  >

<!ELEMENT SignatureProperty (#PCDATA) >
<!ATTLIST SignatureProperty  
	Target 	IDREF	 #REQUIRED  >

<!ELEMENT KeyInfo ((KeyName | KeyValue | SubjectName | 
          RetrievalMethod | X509Data | PGPData  | MgmtData)*)  >
<!ATTLIST KeyInfo  
	Id	ID	 #IMPLIED
        Type	CDATA	 #IMPLIED >

<!ELEMENT KeyName  (#PCDATA) >
<!ELEMENT KeyValue  (#PCDATA)  >
<!ELEMENT SubjectName  (#PCDATA)  >
<!ELEMENT RetrievalMethod  (#PCDATA)  >
<!ELEMENT MgmtData  (#PCDATA)  >

<!ELEMENT PGPData (PGPKeyID, PGPKeyPacket?)  >
<!ELEMENT PGPKeyPacket  (#PCDATA)  >
<!ELEMENT PGPKeyID  (#PCDATA)  >

<!ELEMENT X509Data ((X509IssuerSerial | X509SKI | X509SubjectName), 
          X509Certificate*, X509CRL*)>
<!ELEMENT X509IssuerSerial (X509IssuerName, X509SerialNumber)  >
<!ELEMENT X509IssuerName (#PCDATA)  >
<!ELEMENT X509SubjectName (#PCDATA)  >
<!ELEMENT X509SerialNumber (#PCDATA)  >
<!ELEMENT X509SKI (#PCDATA)  >
<!ELEMENT X509Certificate (#PCDATA)  >
<!ELEMENT X509CRL (#PCDATA)  >

<!ELEMENT DSAKeyValue (P, Q, G, Y, J?, (Seed, PgenCounter)?) > 
<!ELEMENT P (#PCDATA)  >
<!ELEMENT Q (#PCDATA)  >
<!ELEMENT G (#PCDATA)  >
<!ELEMENT Y (#PCDATA)  >
<!ELEMENT J (#PCDATA)  >
<!ELEMENT Seed (#PCDATA) >
<!ELEMENT PgenCounter (#PCDATA) >

<!ELEMENT RSAKeyValue (Modulus, Exponent) > 
<!ELEMENT Modulus (#PCDATA)  >
<!ELEMENT Exponent (#PCDATA)  >
