<!-- DTD for XML Signatures
     http://www.w3.org/2000/02/xmldsig# -->


<!-- These entity declarations permit the flexible parts of Signature
     content model to be easily expanded -->

<!ENTITY % Object.ANY '(#PCDATA|SignatureProperties|Manifest)*'>
<!ENTITY % Method.ANY '(#PCDATA|HMACOutputLength)*'>
<!ENTITY % Transform.ANY '(#PCDATA|XPath|XSLT)*'>
<!ENTITY % Key.ANY '(#PCDATA|DSAKeyValue|RSAKeyValue)*'>

<!-- Start Core Signature declarations, these should NOT be altered -->

<!ELEMENT Signature (SignedInfo, SignatureValue, KeyInfo?, Object*)  >
<!ATTLIST Signature  
	xmlns	CDATA	#FIXED 'http://www.w3.org/2000/02/xmldsig#'
	Id  	ID	#IMPLIED >

<!ELEMENT SignatureValue (#PCDATA)  >

<!ELEMENT SignedInfo (CanonicalizationMethod?, 
	SignatureMethod,  Reference+)  >
<!ATTLIST SignedInfo  
	Id	 ID 	 #IMPLIED 
 >

<!ELEMENT CanonicalizationMethod %Method.ANY; > 
<!ATTLIST CanonicalizationMethod 
          Algorithm CDATA #REQUIRED > 

<!ELEMENT SignatureMethod %Method.ANY; >
<!ATTLIST SignatureMethod 
          Algorithm CDATA #REQUIRED > 

<!ELEMENT HMACOutputLength (#PCDATA) >

<!ELEMENT Reference (Transforms?, DigestMethod, DigestValue)  >
<!ATTLIST Reference  
	Id	ID	#IMPLIED
	URI	CDATA	#IMPLIED
        Type	CDATA	#IMPLIED>


<!ELEMENT Transforms (Transform+)>

<!ELEMENT Transform %Transform.ANY; >
<!ATTLIST Transform 
          Algorithm    CDATA    #REQUIRED >

<!ELEMENT XPath (#PCDATA) >
<!ELEMENT XSLT (#PCDATA) >

<!ELEMENT DigestMethod %Method.ANY; >
<!ATTLIST DigestMethod  
	Algorithm		CDATA	#REQUIRED >

<!ELEMENT DigestValue  (#PCDATA)  >

<!ELEMENT Object %Object.ANY; >
<!ATTLIST Object  
	Id	ID	#IMPLIED 
	MimeType	CDATA	#IMPLIED 
	Encoding	CDATA	#IMPLIED >

<!ELEMENT Manifest (Reference*)  >
<!ATTLIST Manifest  
	Id	ID	#IMPLIED >

<!ELEMENT SignatureProperties (SignatureProperty+)  >
<!ATTLIST SignatureProperties  
	Id	ID	 #IMPLIED  >

<!ELEMENT SignatureProperty %Object.ANY; >
<!ATTLIST SignatureProperty  
	Target 	CDATA	 #REQUIRED  >

<!ELEMENT KeyInfo ((KeyName | KeyValue | RetrievalMethod | 
          X509Data | PGPData  | MgmtData)+)  >
<!ATTLIST KeyInfo  
	Id	ID	 #IMPLIED >

<!ELEMENT KeyName  %Key.ANY; >
<!ELEMENT KeyValue  %Key.ANY; >
<!ELEMENT RetrievalMethod  %Key.ANY; >
<!ELEMENT MgmtData  %Key.ANY; >

<!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) >
