jdk/src/share/classes/com/sun/org/apache/xml/internal/security/resource/schema/xmldsig-core-schema.rng
changeset 24633 342927a97039
parent 24620 b94e447ecd9b
parent 24632 bb22b643c35c
child 24634 68a979478ffb
equal deleted inserted replaced
24620:b94e447ecd9b 24633:342927a97039
     1 <?xml version='1.0' encoding='UTF-8'?>
       
     2 <!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html -->
       
     3 <!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html -->
       
     4 <!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html -->
       
     5 <!-- http://lists.oasis-open.org/archives/relax-ng-comment/200206/maillist.html -->
       
     6 
       
     7 <grammar xmlns='http://relaxng.org/ns/structure/1.0'
       
     8         xmlns:ds='http://www.w3.org/2000/09/xmldsig#'
       
     9         xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
       
    10         ns='http://www.w3.org/2000/09/xmldsig#'
       
    11         datatypeLibrary='http://www.w3.org/2001/XMLSchema-datatypes'>
       
    12 
       
    13     <start>
       
    14             <element name='Signature'><ref name='SignatureType'/></element>
       
    15     </start>   
       
    16     
       
    17     <define name='CryptoBinary'>
       
    18         <data type='base64Binary'/>
       
    19     </define>
       
    20     
       
    21     <define name='SignatureType'>
       
    22         <element name='SignedInfo'><ref name='SignedInfoType'/></element>
       
    23         <element name='SignatureValue'><ref name='SignatureValueType'/></element>
       
    24         <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional>
       
    25         <zeroOrMore><element name='Object'><ref name='ObjectType'/></element></zeroOrMore>
       
    26         <optional><attribute name='Id'><data type='ID'/></attribute></optional>
       
    27         <optional><attribute name='xsi:schemaLocation'/></optional>
       
    28     </define>
       
    29 
       
    30     <define name='SignatureValueType'>
       
    31         <data type='base64Binary'/>
       
    32         <optional><attribute name='Id'><data type='ID'/></attribute></optional>
       
    33     </define>
       
    34     
       
    35 <!-- Start SignedInfo -->
       
    36     
       
    37     <define name='SignedInfoType'>
       
    38         <element name='CanonicalizationMethod'><ref name='CanonicalizationMethodType'/></element>
       
    39         <element name='SignatureMethod'><ref name='SignatureMethodType'/></element>
       
    40         <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional>
       
    41         <oneOrMore><element name='Reference'><ref name='ReferenceType'/></element></oneOrMore>
       
    42         <optional><attribute name='Id'><data type='ID'/></attribute></optional>
       
    43     </define>    
       
    44 
       
    45     <define name='CanonicalizationMethodType'>
       
    46         <zeroOrMore><ref name='anyThing'/></zeroOrMore>
       
    47         <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional>
       
    48     </define>    
       
    49 
       
    50 
       
    51     <define name='SignatureMethodType'>
       
    52         <optional><element name='HMACOutputLength'><data type='integer'/></element></optional>
       
    53         <zeroOrMore><ref name='anyThing'/></zeroOrMore>
       
    54         <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional>
       
    55     </define>    
       
    56         
       
    57 <!-- Start Reference -->
       
    58     
       
    59     <define name='ReferenceType'>
       
    60         <optional><element name='Transforms'><ref name='TransformsType'/></element></optional>
       
    61         <element name='DigestMethod'><ref name='DigestMethodType'/></element>
       
    62         <element name='DigestValue'><ref name='DigestValueType'/></element>
       
    63         <optional><attribute name='Type'><data type='anyURI'/></attribute></optional>
       
    64         <optional><attribute name='URI'><data type='anyURI'/></attribute></optional>
       
    65         <optional><attribute name='Id'><data type='ID'/></attribute></optional>
       
    66      </define>
       
    67 
       
    68     <define name='TransformsType'>
       
    69         <oneOrMore><element name='Transform'><ref name='TransformType'/></element></oneOrMore>
       
    70     </define>
       
    71 
       
    72     <define name='TransformType'>
       
    73         <optional><element name='XPath'><data type='string'/></element></optional>
       
    74         <zeroOrMore><ref name='anyThing'/></zeroOrMore>
       
    75         <attribute name='Algorithm'><data type='anyURI'/></attribute>
       
    76     </define>    
       
    77 
       
    78 <!-- End Reference -->
       
    79 
       
    80     <define name='DigestMethodType'>
       
    81         <zeroOrMore><ref name='anyThing'/></zeroOrMore>
       
    82         <attribute name='Algorithm'><data type='anyURI'/></attribute>
       
    83     </define>   
       
    84 
       
    85     <define name='DigestValueType'>
       
    86         <data type='base64Binary'/>
       
    87     </define>  
       
    88     
       
    89 <!-- End SignedInfo -->
       
    90 
       
    91 <!-- Start KeyInfo -->
       
    92     
       
    93     <define name='KeyInfoType'>
       
    94         <oneOrMore>
       
    95             <choice>
       
    96                 <element name='KeyName'><data type='string'/></element>
       
    97                 <element name='KeyValue'><ref name='KeyValueType'/></element>
       
    98                 <element name='RetrievalMethod'><ref name='RetrievalMethodType'/></element>
       
    99                 <element name='X509Data'><ref name='X509DataType'/></element>
       
   100                 <element name='PGPData'><ref name='PGPDataType'/></element>
       
   101                 <element name='SPKIData'><ref name='SPKIDataType'/></element>
       
   102                 <element name='MgmtData'><data type='string'/></element>
       
   103                 <ref name='anyThing'/>
       
   104             </choice>
       
   105         </oneOrMore>
       
   106         <optional><attribute name='Id'><data type='ID'/></attribute></optional>
       
   107 </define>
       
   108 
       
   109     <define name='KeyValueType'>
       
   110             <choice>
       
   111                 <text/>
       
   112                 <element name='DSAKeyValue'><ref name='DSAKeyValueType'/></element>
       
   113                 <element name='RSAKeyValue'><ref name='RSAKeyValueType'/></element>
       
   114                 <ref name='anyThing'/>
       
   115             </choice>
       
   116     </define>
       
   117 
       
   118     <define name='RetrievalMethodType'>
       
   119         <optional><element name='Transforms'><ref name='TransformsType'/></element></optional>
       
   120         <optional><attribute name='Type'><data type='anyURI'/></attribute></optional>
       
   121         <optional><attribute name='URI'><data type='anyURI'/></attribute></optional>
       
   122     </define>
       
   123 
       
   124 <!-- Start X509Data -->
       
   125 
       
   126     <define name='X509DataType'>
       
   127         <oneOrMore>
       
   128             <choice>
       
   129                 <element name='X509IssuerSerial'>
       
   130                     <element name='X509IssuerName'>
       
   131                         <data type='string'/>
       
   132                     </element>
       
   133                     <element name='X509SerialNumber'>
       
   134                         <data type='integer'/>
       
   135                     </element>
       
   136                 </element>
       
   137                 <element name='X509SKI'>
       
   138                     <data type='base64Binary'/>
       
   139                 </element>
       
   140                 <element name='X509SubjectName'>
       
   141                     <data type='string'/>
       
   142                 </element>
       
   143                 <element name='X509Certificate'>
       
   144                     <data type='base64Binary'/>
       
   145                 </element>
       
   146                 <element name='X509CRL'>
       
   147                     <data type='base64Binary'/>
       
   148                 </element>
       
   149                 <ref name='anyThing'/>
       
   150             </choice>
       
   151         </oneOrMore>
       
   152     </define>
       
   153 
       
   154 <!-- End X509Data -->
       
   155 
       
   156 <!-- Begin PGPData -->
       
   157 
       
   158     <define name='PGPDataType'>
       
   159         <choice>
       
   160             <group>
       
   161                 <element name='PGPKeyID'>
       
   162                     <data type='base64Binary'/>
       
   163                 </element>
       
   164                 <optional>
       
   165                     <element name='PGPKeyPacket'>
       
   166                         <data type='base64Binary'/>
       
   167                     </element>
       
   168                 </optional>
       
   169                 <zeroOrMore>
       
   170                     <ref name='anyThing'/>
       
   171                 </zeroOrMore>
       
   172             </group>
       
   173             <group>
       
   174                 <element name='PGPKeyPacket'>
       
   175                     <data type='base64Binary'/>
       
   176                 </element>
       
   177                 <zeroOrMore>
       
   178                     <ref name='anyThing'/>
       
   179                 </zeroOrMore>
       
   180             </group>
       
   181         </choice>
       
   182     </define>
       
   183 
       
   184 <!-- End PGPData -->
       
   185 
       
   186 <!-- Begin SPKIData -->
       
   187 
       
   188     <define name='SPKIDataType'>
       
   189         <oneOrMore>
       
   190             <element name='SPKISexp'>
       
   191                 <data type='base64Binary'/>
       
   192             </element>
       
   193             <optional>
       
   194                 <ref name='anyThing'/>
       
   195             </optional>
       
   196         </oneOrMore>
       
   197     </define>
       
   198     
       
   199 <!-- End SPKIData -->
       
   200 
       
   201 <!-- End KeyInfo -->
       
   202 
       
   203 
       
   204 <!-- Start Object (Manifest, SignatureProperty) -->
       
   205 
       
   206     <define name='ObjectType'>
       
   207         <zeroOrMore>
       
   208             <choice>
       
   209                 <element name='Manifest'><ref name='ManifestType'/></element>
       
   210                 <element name='SignatureProperties'><ref name='SignaturePropertiesType'/></element>                
       
   211                 <ref name='anyThing'/>
       
   212             </choice>
       
   213         </zeroOrMore>
       
   214         <optional>
       
   215             <attribute name='Encoding'>
       
   216                 <data type='anyURI'/>
       
   217             </attribute>
       
   218         </optional>
       
   219         <optional>
       
   220             <attribute name='MimeType'>
       
   221                 <data type='string'/>
       
   222             </attribute>
       
   223         </optional>
       
   224         <optional>
       
   225             <attribute name='Id'>
       
   226                 <data type='ID'/>
       
   227             </attribute>
       
   228         </optional>
       
   229     </define>
       
   230 
       
   231     <define name='ManifestType'>
       
   232         <oneOrMore>
       
   233             <element name='Reference'><ref name='ReferenceType'/></element>
       
   234         </oneOrMore>
       
   235         <optional><attribute name='Id'><data type='ID'/></attribute></optional>
       
   236     </define>
       
   237 
       
   238     <define name='SignaturePropertiesType'>
       
   239         <oneOrMore>
       
   240             <element name='SignatureProperty'><ref name='SignaturePropertyType'/></element>
       
   241         </oneOrMore>
       
   242         <optional>
       
   243             <attribute name='Id'>
       
   244                 <data type='ID'/>
       
   245             </attribute>
       
   246         </optional>
       
   247     </define>
       
   248 
       
   249     <define name='SignaturePropertyType'>
       
   250         <oneOrMore><ref name='anyThing'/></oneOrMore>
       
   251         <optional>
       
   252             <attribute name='Id'>
       
   253                 <data type='ID'/>
       
   254             </attribute>
       
   255         </optional>
       
   256         <attribute name='Target'>
       
   257             <data type='anyURI'/>
       
   258         </attribute>
       
   259     </define>
       
   260 
       
   261 <!-- End Object (Manifest, SignatureProperty) -->
       
   262 
       
   263 
       
   264 <!-- Start KeyValue Element-types -->
       
   265 
       
   266     <define name='DSAKeyValueType'>
       
   267         <optional>
       
   268             <element name='P'>
       
   269                 <ref name='CryptoBinary'/>
       
   270             </element>
       
   271             <element name='Q'>
       
   272                 <ref name='CryptoBinary'/>
       
   273             </element>
       
   274         </optional>
       
   275         <optional>
       
   276             <element name='G'>
       
   277                 <ref name='CryptoBinary'/>
       
   278             </element>
       
   279         </optional>
       
   280         <element name='Y'>
       
   281             <ref name='CryptoBinary'/>
       
   282         </element>
       
   283         <optional>
       
   284             <element name='J'>
       
   285                 <ref name='CryptoBinary'/>
       
   286             </element>
       
   287         </optional>
       
   288         <optional>
       
   289             <element name='Seed'>
       
   290                 <ref name='CryptoBinary'/>
       
   291             </element>
       
   292             <element name='PgenCounter'>
       
   293                 <ref name='CryptoBinary'/>
       
   294             </element>
       
   295         </optional>
       
   296     </define>
       
   297 
       
   298     <define name='RSAKeyValueType'>
       
   299         <element name='Modulus'>
       
   300             <ref name='CryptoBinary'/>
       
   301         </element>
       
   302         <element name='Exponent'>
       
   303             <ref name='CryptoBinary'/>
       
   304         </element>
       
   305     </define>
       
   306 
       
   307 
       
   308 <!-- End KeyValue Element-types -->
       
   309 
       
   310 <!-- End Signature -->
       
   311 
       
   312 
       
   313         <!-- This should emulate the ANY content model under lax validation -->
       
   314         <define name='anyThing'>
       
   315             <zeroOrMore>
       
   316                 <choice>
       
   317                     <text/>
       
   318                     <element>
       
   319                         <!-- "except" provided for DTD compatibility -->
       
   320                         <!-- [1] ns='http://www.oasis-open.org/committees/relax-ng/compatibility.html#id' -->
       
   321                         <anyName>
       
   322                             <except>
       
   323                                 <nsName/>
       
   324                                 <!--  <nsName ns='http://www.w3.org/2001/04/xmlenc#'/>  -->
       
   325                             </except>
       
   326                         </anyName>
       
   327                         <ref name='anyThing'/>
       
   328                         <zeroOrMore>
       
   329                             <attribute>
       
   330                               <anyName/>
       
   331                             </attribute>
       
   332                         </zeroOrMore>
       
   333                     </element>
       
   334                 </choice>
       
   335             </zeroOrMore>
       
   336             </define>
       
   337             
       
   338 
       
   339 </grammar>