Hacked By AnonymousFox

Current Path : C:/Windows/schemas/CodeIntegrity/
Upload File :
Current File : C:/Windows/schemas/CodeIntegrity/cipolicy.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema
    targetNamespace="urn:schemas-microsoft-com:sipolicy"
    elementFormDefault="qualified"
    xmlns="urn:schemas-microsoft-com:sipolicy"
    xmlns:ps="urn:schemas-microsoft-com:sipolicy"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <!-- A {00000000-0000-0000-0000-000000000000} GUID type -->
  <xs:simpleType name="GuidType">
    <xs:restriction base="xs:string">
      <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DWordType">
    <xs:restriction base="xs:unsignedInt"/>
  </xs:simpleType>
  
  <xs:simpleType name="BooleanType">
    <xs:restriction base="xs:boolean"/>
  </xs:simpleType>

  <xs:simpleType name="QWordType">
    <xs:restriction base="xs:unsignedLong"/>
  </xs:simpleType>

  <!-- Macros -->
  <xs:element name="Macros">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Macro" minOccurs="1" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>
              A Macro element defines a text substitution macro that can be used in other elements.
              Macros are referenced using NMAKE syntax, i.e. $(runtime.windows).
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:attribute name="Id" type="MacroIdType" use="required">
              <xs:annotation>
                <xs:documentation>
                  Required. The Id for this macro, used in macro references. For example, if the
                  Id for this macro is "runtime.windows", the macro would be referenced as $(runtime.windows).
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="Value" type="MacroValueStringType" use="required">
              <xs:annotation>
                <xs:documentation>
                  Required. The value that will be substituted for macro references in macro- enabled XML attributes.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:unique name="UniqueMacroId">
      <xs:selector xpath="ps:Macro" />
      <xs:field xpath="@Id" />
    </xs:unique>
  </xs:element>

  <!--File Path -->
  <xs:simpleType name="FilePathType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="32767"/>
    </xs:restriction>
  </xs:simpleType>
  
  <!-- Sid Type -->
  <xs:simpleType name="SidType">
    <xs:restriction base="xs:string">
      <xs:minLength value="3"/>
      <!-- Accepts Macros only-->
      <xs:pattern value="(\$\([a-zA-Z_][a-zA-Z_0-9.]*\))+" />
    </xs:restriction>
  </xs:simpleType>

  <!-- SignTime Type -->
  <xs:simpleType name="SignTimeType">
    <xs:restriction base="xs:dateTime">
    </xs:restriction>
  </xs:simpleType>

  <!-- Macro Type -->
  <xs:simpleType name="MacroIdType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z_][a-zA-Z_0-9.]*" />
    </xs:restriction>
  </xs:simpleType>

  <!-- Macro Value String Type -->
  <xs:simpleType name="MacroValueStringType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z0-9\-_!@#%\^\.,;:=\+~`'\{\}\(\)\[\]\$ \\]*" />
    </xs:restriction>
  </xs:simpleType>

  <!-- AppIDs Type -->
  <xs:simpleType name="AppIdType">
    <xs:annotation>
      <xs:documentation>
        AppIDs may use either macros only (and be multi-valued). For example $(Adobe65)$(TestApp)
        ((\$\([a-zA-Z_][a-zA-Z_0-9.]*\))+)
        or they may be a string that does not begin with a $ and be single valued
        (^[^\$]([a-zA-Z0-9\-_!@#%\^\.,;:=\+~`'\{\}\(\)\[\]\$ \\])*)
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:pattern value="(^[^\$]([a-zA-Z0-9\-_!@#%\^\.,;:=\+~`'\{\}\(\)\[\]\$ \\])*)|((\$\([a-zA-Z_][a-zA-Z_0-9.]*\))+)" />
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="OptionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Allowed:Prerelease Signers"/>
      <xs:enumeration value="Allowed:Kits Signers"/>
      <xs:enumeration value="Enabled:UMCI"/>
      <xs:enumeration value="Enabled:Boot Menu Protection"/>
      <xs:enumeration value="Enabled:Intelligent Security Graph Authorization"/>
      <xs:enumeration value="Enabled:Invalidate EAs on Reboot"/>
      <xs:enumeration value="Enabled:Windows Lockdown Trial Mode"/>
      <xs:enumeration value="Required:WHQL"/>
      <xs:enumeration value="Enabled:Developer Mode Dynamic Code Trust"/>
      <xs:enumeration value="Disabled:UMCI USN 0 Protection"/>
      <xs:enumeration value="Disabled:Winload Debugging Mode Menu"/>
      <xs:enumeration value="Enabled:Strong Crypto For Code Integrity"/>
      <xs:enumeration value="Allowed:Non-Microsoft UEFI Applications For BitLocker"/>
      <xs:enumeration value="Enabled:Revoked Expired As Unsigned"/>
      <xs:enumeration value="Enabled:UMCI Trust USN 0"/>
      <xs:enumeration value="Disabled:UMCI Debug Options TCB Lowering"/>
      <xs:enumeration value="Enabled:Audit Mode"/>
      <xs:enumeration value="Disabled:Flight Signing"/>
      <xs:enumeration value="Enabled:Inherit Default Policy"/>
      <xs:enumeration value="Enabled:Unsigned System Integrity Policy"/>
      <xs:enumeration value="Enabled:Dynamic Code Security"/>
      <xs:enumeration value="Required:EV Signers"/>
      <xs:enumeration value="Enabled:Boot Audit On Failure"/>
      <xs:enumeration value="Enabled:Advanced Boot Options Menu"/>
      <xs:enumeration value="Disabled:Script Enforcement"/>
      <xs:enumeration value="Required:Enforce Store Applications"/>
      <xs:enumeration value="Enabled:Secure Setting Policy"/>
      <xs:enumeration value="Enabled:Managed Installer"/>
      <xs:enumeration value="Enabled:Update Policy No Reboot"/>
      <xs:enumeration value="Enabled:Conditional Windows Lockdown Policy"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Secure Setting Value Type -->
  <xs:complexType name="SettingValueType">
    <xs:choice>
      <xs:element name="Boolean" type="BooleanType" />
      <xs:element name="DWord" type="DWordType" />
      <xs:element name="Binary" type="xs:hexBinary" />
      <xs:element name="String" type="xs:string" />
    </xs:choice>
  </xs:complexType>
  
  <!-- Secure Setting <Provider,Key,Value> -->
  <xs:element name="Setting">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Value" type="SettingValueType"/>
      </xs:sequence>
      <xs:attribute name="Provider" type="xs:string" use="required" />
      <xs:attribute name="Key" type="xs:string" use="required" />
      <xs:attribute name="ValueName" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <!-- Collection of Setting-->
  <xs:element name="Settings">
    <xs:annotation>
      <xs:documentation>
        Collection of setting elements.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:choice minOccurs="1" maxOccurs="65535">
        <xs:element ref="Setting"  minOccurs="0" maxOccurs="65535" />
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RuleType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="Option" type="OptionType"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="UShortType">
      <xs:restriction base="xs:unsignedShort"/>
  </xs:simpleType>
  
  <!-- System Integrity Policy Version-->
  <xs:simpleType name="VersionExType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]*.[0-9]*.[0-9]*.[0-9]*" />
     </xs:restriction>
  </xs:simpleType>

    <!-- SignerNameType-->
    <xs:simpleType name="SignerNameType">
        <xs:restriction base="xs:string">
        </xs:restriction>
    </xs:simpleType>
    
    <!-- Type of CertificateToChainTo-->
    <xs:simpleType name="CertEnumType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="TBS"/>
            <xs:enumeration value="Wellknown"/>
        </xs:restriction>
    </xs:simpleType>

    <!-- Certificate EKU -->
    <xs:element name="CertEKU">
        <xs:complexType>
               <xs:attribute name="ID" type="EKUType" use="required"/>
        </xs:complexType>
    </xs:element>
    
    <!-- Certificate OEM ID-->
    <xs:element name="CertOemID">
        <xs:complexType>
            <xs:attribute name="Value" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>

    <!-- Certificate Publisher -->
    <xs:element name="CertPublisher">
        <xs:complexType>
            <xs:attribute name="Value" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    
    <!-- Certificate Issuer-->
    <xs:element name="CertIssuer">
        <xs:complexType>
            <xs:attribute name="Value" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    
    <!-- certificate to chain to-->
    <xs:element name="CertRoot">
        <xs:complexType>
            <xs:attribute name="Type" type="CertEnumType" use="required" />
            <!-- Value is either wellknow Root ID or TBS hash, both in hexBinary form-->
            <xs:attribute name="Value" type="xs:hexBinary" use="required" />
        </xs:complexType>
    </xs:element>

    <!-- Product Signers-->
    <xs:element name="ProductSigners">
        <xs:complexType>
            <xs:all minOccurs="1" maxOccurs="1">
                 <xs:element ref="AllowedSigners" minOccurs="0" maxOccurs="1"/>
                 <xs:element ref="DeniedSigners" minOccurs="0" maxOccurs="1"/>
                 <xs:element ref="FileRulesRef" minOccurs="0" maxOccurs="1"/>
            </xs:all>
        </xs:complexType>
    </xs:element>
    
    <!-- Test Signers-->
    <xs:element name="TestSigners">
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="1">
                   <xs:element ref="AllowedSigners" minOccurs="0" maxOccurs="1"/>
                   <xs:element ref="DeniedSigners" minOccurs="0" maxOccurs="1"/>
                   <xs:element ref="FileRulesRef" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- TestSiging Signers-->
    <xs:element name="TestSigningSigners">
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="1">
                <xs:element ref="AllowedSigners" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="DeniedSigners" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="FileRulesRef" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Signer Type-->
    <xs:complexType name="SignerType">
        <xs:annotation>
            <xs:documentation>
                Define a Signer
            </xs:documentation>
        </xs:annotation>
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="CertRoot" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="CertEKU" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="CertPublisher" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="CertOemID" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="Name" type="SignerNameType" use="required" />
        <xs:attribute name="ID" type="SignerIdType" use="required" />
    </xs:complexType>
    
    <!-- Signing Scenario Type-->
    <xs:complexType name="SigningScenarioType">
        <xs:annotation>
            <xs:documentation>
                Define a Signing Scenario type
            </xs:documentation>
        </xs:annotation>
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="ProductSigners" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="TestSigners" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="TestSigningSigners" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="Name" type="SignerNameType" use="required" />
        <xs:attribute name="ID" type="SignerIdType" use="required" />
    </xs:complexType>

    <!-- EKU Type-->
    <xs:simpleType name="EKUType">
        <xs:annotation>
            <xs:documentation>
                EKU ID type starts with ID_EKU_
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="ID_EKU_[A-Z][_A-Z0-9]*" />
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType>
    
    <!-- Signing Scenario ID Type -->
    <xs:simpleType name="SigningScenarioIDType">
        <xs:annotation>
            <xs:documentation>
                Signing Scenario ID type starts with ID_SIGNGINGSCENARIO_
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="ID_SIGNINGSCENARIO_[A-Z][_A-Z0-9]*" />
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType>
  
    <!-- Signing Scenario IDs Type-->
    <xs:simpleType name="SigningScenarioIDsType">
        <xs:annotation>
            <xs:documentation>
                Multiple ID_SIGNINGSCENARIO_ seperated by ','
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="((ID_SIGNINGSCENARIO_[A-Z][_A-Z0-9]*)[,]?)*" />
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType>

    <!-- Allow File Rule ID Type-->
    <xs:simpleType name="AllowType">
        <xs:annotation>
            <xs:documentation>
                Allow Rule ID should start with ID_ALLOW_
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="ID_ALLOW_[A-Z][_A-Z0-9]*" />
        </xs:restriction>
    </xs:simpleType>

    <!-- Generic file attribute type that can be used directly inside a signer-->
    <xs:simpleType name="FileAttribType">
        <xs:annotation>
            <xs:documentation>
                Generic file rule ID should start with ID_FILEATTRIB_
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="ID_FILEATTRIB_[A-Z][_A-Z0-9]*" />
            <xs:minLength value="10"/>
        </xs:restriction>
    </xs:simpleType>
  
    <!-- Deny File RUle ID Type-->
    <xs:simpleType name="DenyType">
        <xs:annotation>
            <xs:documentation>
                Deny Rule ID should start with ID_DENY_
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="ID_DENY_[A-Z][_A-Z0-9]*" />
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType>
    

    <!-- Signer ID Type -->
    <xs:simpleType name="SignerIdType">
        <xs:annotation>
            <xs:documentation>
                Signer ID should start with ID_SIGNER_
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="ID_SIGNER_[A-Z][_A-Z0-9]*" />
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType>
    
    <!-- FileRulesRef Element-->
    <xs:element name="FileRulesRef">
        <xs:annotation>
            <xs:documentation>
                FileRulesRef is a collection of FileRuleRef
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="FileRuleRef" minOccurs="1" maxOccurs="10000000" />
            </xs:sequence>
            <!-- Work around with XSD.exe http://connect.microsoft.com/VisualStudio/feedback/details/471297 -->
            <xs:attribute name="Workaround" type="xs:string" />
        </xs:complexType>
    </xs:element>


    <!-- File Rule ID Type -->
    <xs:simpleType name="RuleIdType">
        <xs:annotation>
            <xs:documentation>
                Multiple ID_ALLOW_ or ID_DENY_ separated by ','
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="((ID_ALLOW_[A-Z][_A-Z0-9]*))*((ID_DENY_[A-Z][_A-Z0-9]*))*" />
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType>
    
    <!-- FileRuleRef Element -->
    <xs:element name="FileRuleRef">
        <xs:annotation>
            <xs:documentation>
                Used to reference an file rule through rule ID
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="RuleID" type="RuleIdType" use="optional" />
        </xs:complexType>
    </xs:element>

    <xs:element name="FileAttribRef">
        <xs:annotation>
            <xs:documentation>
                A FileAttribRef is used to reference a FILE_ATTRIB rule through ID
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="RuleID" type="FileAttribType" use="required" />
        </xs:complexType>
    </xs:element>
    
    <!-- ExceptDenyRule element-->
    <xs:element name="ExceptDenyRule">
        <xs:annotation>
            <xs:documentation>
                ExceptDenyRule rule is a deny rule type. It makes specific allow Signer conditional.
                If the allow Signer rule allows, but the exception condition met, then the result is deny.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="DenyRuleID" type="DenyType" use="required" />
        </xs:complexType>
    </xs:element>

    <!-- ExceptAllowRule element-->
    <xs:element name="ExceptAllowRule">
        <xs:annotation>
            <xs:documentation>
                ExceptAllowRule rule is an allow rule type. It makes specific deny Signer conditional.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="AllowRuleID" type="AllowType" use="required" />
        </xs:complexType>
    </xs:element>

    
  
    <!-- EKUs Element-->
    <xs:element name="EKUs">
        <xs:annotation>
            <xs:documentation>
                Collection of EKUs.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="1" maxOccurs="255">
                <xs:element ref="EKU"  minOccurs="0" maxOccurs="255" />
            </xs:choice>
        </xs:complexType>
    </xs:element>
  
    <!-- Define one EKU -->
    <xs:element name="EKU">
        <xs:annotation>
            <xs:documentation>
                Define an EKU
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="ID" type="EKUType" use="required" />
            <xs:attribute name="Value" type="xs:hexBinary" use="required" />
            <xs:attribute name="FriendlyName" type="xs:string" use="optional" />
        </xs:complexType>
    </xs:element>
    
    <!-- Define File Rule Collection-->
    <xs:element name="FileRules">
        <xs:annotation>
            <xs:documentation>
                Collection of File Rules.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="1" maxOccurs="10000000">
                <xs:element ref="Allow"  minOccurs="0" maxOccurs="10000000" />
                <xs:element ref="Deny"  minOccurs="0" maxOccurs="10000000" />
                <xs:element ref="FileAttrib"  minOccurs="0" maxOccurs="10000000" />
            </xs:choice>
        </xs:complexType>
    </xs:element>
  
    <!-- Allow element -->
    <xs:element name="Allow">
        <xs:annotation>
            <xs:documentation>
                Define a file allow rule
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="ID" type="AllowType" use="required" />
            <xs:attribute name="FriendlyName" type="xs:string" use="optional" />
            <xs:attribute name="FileName" type="xs:string" use="optional" />
            <xs:attribute name="InternalName" type="xs:string" use="optional" />
            <xs:attribute name="FileDescription" type="xs:string" use="optional" />
            <xs:attribute name="ProductName" type="xs:string" use="optional" />
            <xs:attribute name="PackageFamilyName" type="xs:string" use="optional" />
            <xs:attribute name="PackageVersion" type="VersionExType" use="optional" />
            <xs:attribute name="MinimumFileVersion" type="VersionExType" use="optional" />
            <xs:attribute name="MaximumFileVersion" type="VersionExType" use="optional" />
            <xs:attribute name="Hash" type="xs:hexBinary" use="optional" />
            <xs:attribute name="AppIDs" type="AppIdType" use="optional" />
        </xs:complexType>
    </xs:element>
  
    <!-- Deny File Rule element-->
    <xs:element name="Deny">
        <xs:annotation>
            <xs:documentation>
                Define a File deny rule
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="ID" type="DenyType" use="required" />
            <xs:attribute name="FriendlyName" type="xs:string" use="optional" />
            <xs:attribute name="FileName" type="xs:string" use="optional" />
            <xs:attribute name="InternalName" type="xs:string" use="optional" />
            <xs:attribute name="FileDescription" type="xs:string" use="optional" />
            <xs:attribute name="ProductName" type="xs:string" use="optional" />
            <xs:attribute name="PackageFamilyName" type="xs:string" use="optional" />
            <xs:attribute name="PackageVersion" type="VersionExType" use="optional" />
            <xs:attribute name="MinimumFileVersion" type="VersionExType" use="optional" />
            <xs:attribute name="MaximumFileVersion" type="VersionExType" use="optional" />
            <xs:attribute name="Hash" type="xs:hexBinary" use="optional" />
            <xs:attribute name="AppIDs" type="AppIdType" use="optional" />
        </xs:complexType>
    </xs:element>
  
    <xs:element name="FileAttrib">
        <xs:annotation>
            <xs:documentation>
                Define a generic file attribute rule than can be combined with Signers
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="ID" type="FileAttribType" use="required" />
            <xs:attribute name="FriendlyName" type="xs:string" use="optional" />
            <xs:attribute name="FileName" type="xs:string" use="optional" />
            <xs:attribute name="InternalName" type="xs:string" use="optional" />
            <xs:attribute name="FileDescription" type="xs:string" use="optional" />
            <xs:attribute name="ProductName" type="xs:string" use="optional" />
            <xs:attribute name="PackageFamilyName" type="xs:string" use="optional" />
            <xs:attribute name="PackageVersion" type="VersionExType" use="optional" />
            <xs:attribute name="MinimumFileVersion" type="VersionExType" use="optional" />
            <xs:attribute name="MaximumFileVersion" type="VersionExType" use="optional" />
            <xs:attribute name="Hash" type="xs:hexBinary" use="optional" />
            <xs:attribute name="AppIDs" type="AppIdType" use="optional" />
        </xs:complexType>
    </xs:element>

    <!-- Allowed Signers element-->
    <xs:element name="AllowedSigners">
        <xs:annotation>
            <xs:documentation>
                Colletion of AllowedSigner
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="AllowedSigner" minOccurs="1" maxOccurs="10000000" />
            </xs:sequence>
            <!-- Work around with XSD.exe http://connect.microsoft.com/VisualStudio/feedback/details/471297 -->
            <xs:attribute name="Workaround" type="xs:string" />
        </xs:complexType>
    </xs:element>
  
    <!-- Denied Signers element-->
    <xs:element name="DeniedSigners">
        <xs:annotation>
            <xs:documentation>
                Colletion of DeniedSigner
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="DeniedSigner" minOccurs="1" maxOccurs="10000000" />
            </xs:sequence>
            <!-- Work around with XSD.exe http://connect.microsoft.com/VisualStudio/feedback/details/471297 -->
            <xs:attribute name="Workaround" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Allowed Signer element-->
    <xs:element name="AllowedSigner">
        <xs:annotation>
            <xs:documentation>
                An AllowedSigner defines a signer with condition (with exceptions)
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="1">
                <xs:element ref="ExceptDenyRule" minOccurs="0" maxOccurs="10000000"/>
            </xs:sequence>
            <xs:attribute name="SignerId" type="SignerIdType" use ="required" />
        </xs:complexType>
    </xs:element>
  
    <!-- Denied Signer element-->
    <xs:element name="DeniedSigner">
        <xs:annotation>
            <xs:documentation>
                An DeniedSgner defines a deny rule
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="1">
                <xs:element ref="ExceptAllowRule" minOccurs="0" maxOccurs="10000000"/>
            </xs:sequence>
            <xs:attribute name="SignerId" type="SignerIdType" use ="required" />
        </xs:complexType>
    </xs:element>
    
    <!-- Update Policy Signer-->
    <xs:element name="UpdatePolicySigner">
        <xs:annotation>
            <xs:documentation>
                defines a signer for System Integrity Policy Updating
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="SignerId" type="SignerIdType" use ="required" />
        </xs:complexType>
    </xs:element>

    <xs:element name="UpdatePolicySigners">
        <xs:annotation>
            <xs:documentation>
              Collection of UpdatePolicySigner.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="1" maxOccurs="10000000">
                <xs:element ref="UpdatePolicySigner"  minOccurs="0" maxOccurs="10000000" />
            </xs:choice>
        </xs:complexType>
    </xs:element>

  <!-- Signers for CI -->
  <xs:element name="CiSigner">
    <xs:annotation>
      <xs:documentation>
        defines a signer that CI will trust for CI signing levels.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:attribute name="SignerId" type="SignerIdType" use ="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="CiSigners">
    <xs:annotation>
      <xs:documentation>
        Collection of CiSigner.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:choice minOccurs="1" maxOccurs="10000000">
        <xs:element ref="CiSigner"  minOccurs="0" maxOccurs="10000000" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
    
   
    <xs:element name="Signers">
        <xs:annotation>
            <xs:documentation>
                Collection of signers.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="1" maxOccurs="10000000">
                <xs:element ref="Signer"  minOccurs="0" maxOccurs="10000000" />
            </xs:choice>
        </xs:complexType>
    </xs:element>

  <xs:element name="Signer">
        <xs:annotation>
            <xs:documentation>
                A Signer
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="1">
                <xs:element ref="CertRoot" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="CertEKU" minOccurs="0" maxOccurs="255"/>
                <xs:element ref="CertIssuer" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="CertPublisher" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="CertOemID" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="FileAttribRef" minOccurs="0" maxOccurs="10000000"/>
              </xs:sequence>
            <xs:attribute name="Name" type="SignerNameType" use="required" />
            <xs:attribute name="ID" type="SignerIdType" use="required" />
            <xs:attribute name="SignTimeAfter" type="SignTimeType" use="optional" />
         </xs:complexType>
  </xs:element>


    <xs:element name="SigningScenarios">
        <xs:annotation>
            <xs:documentation>
                Collection of SigningScenarios
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="1" maxOccurs="255">
                <xs:element ref="SigningScenario"  minOccurs="0" maxOccurs="255" />
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="SigningScenario">
        <xs:annotation>
            <xs:documentation>
                Define a Signing Scenario
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence minOccurs="1"  maxOccurs="1">
                <xs:element ref="ProductSigners" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="TestSigners" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="TestSigningSigners" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute name="ID" type="SigningScenarioIDType" use="required" />
            <xs:attribute name="FriendlyName" type="SignerNameType" use="optional" />
            <xs:attribute name="Value" type="xs:unsignedByte" use="required" />
            <xs:attribute name="InheritedScenarios" type="SigningScenarioIDsType" use="optional" />
            <xs:attribute name="MinimumHashAlgorithm" type="UShortType" use="optional" />
        </xs:complexType>
    </xs:element>
  
  <!-- The SI Policy definition-->
  <xs:element name="SiPolicy">
    <xs:complexType>
      <xs:all>
        <xs:element name="VersionEx" type="VersionExType" minOccurs="1" maxOccurs="1"/>
        <xs:element name="PolicyTypeID" type="GuidType" minOccurs="1" maxOccurs="1"/>
        <xs:element name="PlatformID" type="GuidType" minOccurs="1" maxOccurs="1"/>
        <xs:element name="Rules">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Rule" type="RuleType" minOccurs="0" maxOccurs="65535"/>            
            </xs:sequence>
          </xs:complexType>
        </xs:element>
         <xs:element ref="EKUs" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="FileRules" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="Signers" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="SigningScenarios" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="UpdatePolicySigners" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="CiSigners" minOccurs="0" maxOccurs="1"/>
         <xs:element name="HvciOptions" type="DWordType" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="Settings" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="Macros" minOccurs="0" maxOccurs="1"/>
      </xs:all>
      <xs:attribute name="FriendlyName" type="xs:string" use="optional" />
    </xs:complexType>
  </xs:element>
</xs:schema>

Hacked By AnonymousFox1.0, Coded By AnonymousFox