<PP xmlns="https://niap-ccevs.org/cc/v1" xmlns:sec="https://niap-ccevs.org/cc/v1/section" xmlns:h="http://www.w3.org/1999/xhtml" target-product="General Purpose Operating Systems" boilerplate="yes">
	

  <PPReference>
    <ReferenceTable>
      <PPTitle>Protection Profile for General Purpose Operating Systems</PPTitle>
      <PPVersion>5.0</PPVersion>
      <PPAuthor>National Information Assurance Partnership</PPAuthor>
      <PPPubDate>2026-03-20</PPPubDate>
      <Keywords>OS; operating system</Keywords>
    </ReferenceTable>
  </PPReference>

  <RevisionHistory>
    <entry>
      <version>4.0</version>
      <date>2015-08-14</date>
      <subject>Release - significant revision</subject>
    </entry> 
    
    <entry>
      <version>4.1</version>
      <date>2016-03-09</date>
      <subject>Minor updates - cryptographic modes</subject>
    </entry>
    
    <entry>
      <version>4.2</version>
      <date>2018-05-22</date>
      <subject>Multiple Technical Decisions applied</subject>
    </entry>
    
    <entry>
      <version>4.2.1</version>
      <date>2019-04-22</date>
      <subject>Formatting changes as a result of PP evaluation</subject>
    </entry>
    
    <entry>
      <version>4.3</version>
      <date>2022-09-27</date>
      <subject>
	     <h:ul>
	     <h:li>Added compatibility with MDM Agent, Bluetooth, and TLS Modules.</h:li>
	     <h:li>Two factor authentication.</h:li>
	     <h:li>Aligned with CNSA.</h:li>
	     </h:ul>
      </subject>
    </entry>
    
    <entry>
      <version>5.0</version>
      <date>2026-03-20</date>
      <subject>
        <h:ul>
          <h:li>Updated to conform to CC:2022.</h:li>
          <h:li>Incorporated X.509 package.</h:li>
          <h:li>Incorporated applicable technical decisions.</h:li>
        </h:ul>
      </subject>
    </entry>
     </RevisionHistory>

  <release-notes><h:h3>TDs Applied</h:h3></release-notes><include-pkg id="ssh">
    <git>
      <url>https://github.com/commoncriteria/ssh</url>
      <branch>release-2.0</branch>
    </git>
    <url>https://www.niap-ccevs.org/static_html/protection-profile/459/459/pkg_ssh_v1.0.htm</url>
    <depends on="s-ftp_ssh" also="s-uau-ssh"/>
  </include-pkg>
  <include-pkg id="tls">
    <git>
      <url>https://github.com/commoncriteria/tls</url>
      <branch>master</branch>
    </git>
    <url>https://www.niap-ccevs.org/static_html/protection-profile/439/-439-/index.html</url>
  </include-pkg>
  <include-pkg id="X509">
    <git>
      <url>https://github.com/commoncriteria/X509</url>
      <branch>master</branch>
    </git>
    <url>https://www.niap-ccevs.org/protectionprofiles/511</url>
  </include-pkg>
  <modules>
    <module id="mod-vpnclient">
      <git>
	<url>https://github.com/commoncriteria/vpnclient</url>
        <branch>master</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/487</url>
      <depends on="s-provides-vpnclient"/>
    </module>
    <module id="mod-bluetooth">
      <git>
	<url>https://github.com/commoncriteria/bluetooth</url>
	<branch>master</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/425</url>
    </module>
    <module id="mod-mdmagent">
      <git>
	<url>https://github.com/commoncriteria/mdm-agent</url>
	<branch>master</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/441</url>
    </module>
    <module id="mod-wlanclient">
      <git>
	<url>https://github.com/commoncriteria/wlanclient</url>
	<branch>master</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/463</url>
    </module>
    
     <module id="mod-biometric" version="2.0" name="Biometric Enrollment and Verification" product="Biometric Devices" short="BMcPP">
       <url>https://biometricitc.github.io/v2.0/release/MOD-BIO-v2.0.pdf</url>
     </module>
</modules> 
  
  <pp-preferences>
     <audit-events-in-sfrs/>    
  </pp-preferences>
	  
  <sec:Introduction>
    <sec:Overview> 
The scope of this Protection Profile (PP) is to
describe the security functionality of operating systems in terms of <xref g="CC"/>
and to define functional and assurance requirements for such products.
An operating system is software that manages computer hardware and software
resources, and provides common services for application programs. The hardware
it manages may be physical or virtual.
    </sec:Overview>
    <tech-terms>
      <suppress>Distributed TOE,Extended Package</suppress>
      <term abbr="AES" full="Advanced Encryption Standard"/>
      <term full="Address Space Layout Randomization" abbr="ASLR">
	An anti-exploitation feature which loads memory mappings into unpredictable
	locations. ASLR makes it more difficult for an attacker to redirect control to code
	that they have introduced into the address space of a process.
      </term>
      <term full="Administrator">
	An administrator is responsible for management activities, including setting policies that are 
	applied by the enterprise on the operating system.
	This administrator could be acting remotely through a management server, from which the system
	receives configuration policies.
	An administrator can enforce settings on the system which cannot be overridden by non-administrator users.
      </term>
      <term full="Application" abbr="app">
	Software that runs on a platform and performs tasks on behalf of the user
	or owner of the platform, as well as its supporting documentation. 
      </term>
      <term full="Application Programming Interface" abbr="API">
	A specification of routines, data structures, object classes, and variables
	that allows an application to make use of services provided by another software
	component, such as a library. APIs are often provided for a set of libraries included
	with the platform.
      </term>
      <!-- <term full="Biometric Authentication Factor" abbr="BAF" plural="BAFs"> Authentication factor, which uses -->
      <!--   biometric sample, matched to a biometric authentication template to help establish -->
      <!--   identity.</term> -->
      <term abbr="BYOD" full="Bring Your Own Device"/>
      <term abbr="CMC" full="Certificate Management over CMS"/>
      <term abbr="CMS" full="Cryptographic Message Syntax"/>
      <term abbr="CNSA" full="Commercial National Security Algorithm Suite"/>
      <term full="Credential">
	Data that establishes the identity of a user, e.g., a cryptographic key or
	password.
      </term>
      <term abbr="CRL" full="Certificate Revocation List"/>
      

      <term full="Data At Rest Protection">
	Countermeasures that prevent attackers, even those with physical access,
	from extracting data from non-volatile storage.
	Common techniques include data encryption and wiping.
      </term>
      <term full="Data Encryption Key" abbr="DEK" plural="DEKs">A key used to encrypt sensitive data.</term>
      <term full="Data Execution Prevention" abbr="DEP">
	An anti-exploitation feature of modern operating systems executing on
	modern computer hardware, which enforces a non-execute permission on pages of memory.
	DEP prevents pages of memory from containing both data and instructions, which makes
	it more difficult for an attacker to introduce and execute code.
      </term>
      <term abbr="DES" full="Data Encryption Standard"/>
      <term full="Developer">
	An entity that writes OS software. For the purposes of this document,
	vendors and developers are the same.
      </term>
      <term abbr="DHE" full="Diffie-Hellman Ephemeral"/>
      <term abbr="DNS" full="Domain Name System"/>
      <term abbr="DRBG" full="Deterministic Random Bit Generator"/>
      
      <term abbr="DT" full="Date/Time Vector"/>
      <term abbr="DTLS" full="Datagram Transport Layer Security"/>
      
      <term abbr="ECDSA" full="Elliptic Curve Digital Signature Algorithm"/>
      <term abbr="EST" full="Enrollment over Secure Transport"/>
      <term abbr="FIPS" full="Federal Information Processing Standards"/>
      <term full="General Purpose Operating System">
	A class of OSes designed to support a wide-variety of workloads consisting of many concurrent applications or services.
	Typical characteristics for OSes in this class include support for third-party applications,
	support for multiple users, and security separation between users and their respective resources.
	General Purpose Operating Systems also lack the real-time constraint that defines Real Time Operating Systems
	which are typically used in routers, switches, and embedded devices.
      </term>
      <term full="Hybrid Authentication">
	A hybrid authentication factor is one where a user has to
	submit a combination of authentication factors and both must pass.
	If either factor fails, the entire attempt fails. Examples can include a combination of a cryptographic token and a PIN or password, or a biometric factor and a PIN or password.
      </term>
      <term abbr="HMAC" full="Hash-based Message Authentication Code"/>
      <term full="Host-based Firewall">
	A software-based firewall implementation running on the OS for filtering inbound and
	outbound network traffic to and from processes running on the OS.
      </term>
      <term abbr="HTTP" full="Hypertext Transfer Protocol"/>
      <term abbr="HTTPS" full="Hypertext Transfer Protocol Secure"/>
     
      <term abbr="IP" full="Internet Protocol"/>
      <term abbr="ISO" full="International Organization for Standardization"/>
      <term abbr="IT" full="Information Technology"/>
      <term abbr="ITSEF" full="Information Technology Security Evaluation Facility"/>
      <term full="Key Encryption Key" abbr="KEK"> A key used to encrypt other keys, such as DEKs or
        storage that contains keys.</term>
      <term full="Locked State"> Powered on but most functionality is unavailable for use. User
        authentication is required to access functionality.</term>
      <term full="Mobile Device Management" abbr="MDM"> Mobile device management (MDM) products
        allow enterprises to apply security policies to managed devices. This system consists of two
        primary components: the MDM Server and the MDM Agent. </term>
      <term full="MDM Agent"> The MDM Agent is installed on a managed device as an application or is
        part of the managed device’s OS. The MDM Agent establishes a secure connection back to the
        MDM Server controlled by the administrator.</term>
      <term abbr="NIAP" full="National Information Assurance Partnership"/>
      <term abbr="NIST" full="National Institute of Standards and Technology"/>
      <term abbr="OCSP" full="Online Certificate Status Protocol"/>
   
      <term abbr="OMB" full="Office of Management and Budget"/>
      <term abbr="OS" full="Operating System">
	Software that manages physical and logical resources and provides services
	for applications. The terms <h:i>TOE</h:i> and <h:i>OS</h:i> are interchangeable in this
	document. 
      </term>
      <term abbr="PIN" full="Personal Identification Number">
	An authentication factor that is comprised of a set of numeric or alphabetic characters
	that may be used  in addition to a cryptographic token to provide a hybrid authentication factor.
	At this time it  is not considered as a stand-alone authentication mechanism.
	A PIN is distinct from a password in that the allowed character set and required length of a PIN
	is typically smaller than that of a password as it is designed to be input quickly.
      </term>

      <term abbr="PKI" full="Public Key Infrastructure"/>
      <term abbr="RBG" full="Random Bit Generator"/>
      <term abbr="RFC" full="Request for Comment"/>
      <term full="Root Encryption Key" abbr="REK" plural="REKs"> A key tied to the device used to encrypt other
        keys. </term>
      <term full="Personally Identifiable Information" abbr="PII">
	Any information about an individual maintained by an agency, including, but
	not limited to, education, financial transactions, medical history, and criminal or
	employment history and information which can be used to distinguish or trace an
	individual's identity, such as their name, social security number, date and place of
	birth, mother's maiden name, biometric records, etc., including any other personal
	information which is linked or linkable to an individual.<xref to="bibOMB"/>
      </term>
      <term abbr="SAN" full="Subject Alternative Name"/>
      <term abbr="SHA" full="Secure Hash Algorithm"/>
      <term abbr="S/MIME" full="Secure/Multi-purpose Internet Mail Extensions"/>
      <term full="Sensitive Data">
	Sensitive data may include all user or enterprise data or may be specific
	application data such as PII, emails, messaging, documents, calendar items, and contacts.
	Sensitive data must minimally include credentials and keys. Sensitive data shall
	be identified in the OS's TSS by the ST author. 
      </term>
    
      <term abbr="SWID" full="Software Identification"/>
      <term abbr="TLS" full="Transport Layer Security"/>
      <term abbr="URI" full="Uniform Resource Identifier"/>
      <term abbr="URL" full="Uniform Resource Locator"/>
      <term abbr="USB" full="Universal Serial Bus"/>     
      <term full="User">
	A user is subject to configuration policies applied
	to the operating system by administrators.  On some systems under certain
	configurations, a normal user can temporarily elevate privileges to that of an administrator.
	At that time, such a user should be considered an administrator.
      </term>
      <term abbr="VPN" full="Virtual Private Network"/>
      <term abbr="XCCDF" full="eXtensible Configuration Checklist Description Format"/>
      <term abbr="XOR" full="Exclusive Or"/>
    </tech-terms>    
    <sec:Compliant_Targets_of_Evaluation>
      
      Compliant TOEs will implement security functionality in the following general areas:
      <h:ul>
        <h:li>Accountability: ensuring that information exists to discover unintentional issues with the configuration and operation of the TOE so that the root cause can be determined.</h:li>
        <h:li>Integrity: ensuring the integrity of updates to the TOE and enforcing mechanisms that control the deployment and execution of applications running on it.</h:li>
        <h:li>Management: providing mechanisms for configuration of the TSF and deployment of applications running on the TOE.</h:li>
        <h:li>Protected Storage: ensuring that credentials and file system data are not subject to unauthorized disclosure.</h:li>
        <h:li>Protected Communications: ensuring that sensitive data in transit to and from the TOE is adequately protected from unauthorized modification and disclosure.</h:li>
      </h:ul>
      <sec:TOE_Boundary>
        The TOE boundary encompasses the OS kernel and its drivers, shared
        software libraries, and some application software included with the OS. The applications considered within the TOE
        are those that provide essential security services, many of which run with elevated
        privileges.  Applications which are covered by more-specific Protection Profiles cannot
        claim evaluation as part of the OS evaluation, even when it is necessary to evaluate
        some of their functionality as it relates to their role as part of the OS.
        <figure entity="images/Toe.png" title="General TOE " id="toe"/>
      </sec:TOE_Boundary>
      <sec:TOE_Platform>
	The TOE platform, which consists of the physical or virtual hardware on which the TOE executes,
        is outside the scope of evaluation.  At the same time, the security of the TOE relies upon it.
        Other hardware components which independently run their own software and are
        relevant to overall system security are also outside the scope of evaluation.
      </sec:TOE_Platform>
    </sec:Compliant_Targets_of_Evaluation>
    <sec:Use_Cases>Requirements in this Protection Profile are designed to
      address the security problems in at least the following use cases. These use cases are intentionally
      very broad, as many specific use cases exist for an operating system. These use cases may also
      overlap with one another.  An operating system's functionality may even be effectively extended by
      privileged applications installed onto it.  However, these are out of scope of this PP.
      <usecases>
        <usecase title="End User Devices" id="enduserdevices">
          <description>
	    <h:p>
	    The OS provides a platform for end user devices such as desktops,
	    laptops, convertibles, and tablets.
	    These devices may optionally be bound to a directory server or management server.
	    </h:p>
	    <h:p>
            As this Protection Profile does not address threats against data at rest,
            enterprises deploying operating systems in mobile scenarios should ensure that these systems
            include data at rest protection spelled out in other
	    Protection Profiles. Specifically, this includes the Protection Profiles for
	    <h:i>Full Drive Encryption - Encryption Engine</h:i>,
	    <h:i>Full Drive Encryption - Authorization Acquisition</h:i>,
	    and <h:i>Software File Encryption</h:i>.  The <h:i>Protection Profile for Mobile
		Device Fundamentals</h:i> includes requirements for data at rest protection and is appropriate
		for many mobile devices.
	    </h:p>
          </description>
        </usecase>
        <usecase title="Server Systems" id="serversystems">
          <description>The OS provides a platform for server-side services, either on
            physical or virtual hardware.  Many specific examples exist in which the OS acts
            as a platform for such services, including file servers, mail servers, and web servers.
          </description>
        </usecase>
        <usecase title="Cloud Systems" id="cloudsystems">
          <description>
	    <h:p>
	      The OS runs on physical or virtual hardware infrastructure in a cloud environment. It may be accessible in the cloud for general purpose use as a Platform as a Service (PaaS). It may also (along with its underlying infrastructure) comprise a "trusted platform" for cloud Software as a Service (SaaS) applications. In the latter scenario, the operating system itself is not accessed or administered directly by end users, but the TOE would still support all required security functions because of the potential for the same OS to be used as a cloud platform. 
	    </h:p><h:p>Guidance for the general approach for cloud evaluations can be found at <xref to="bibCCitC"/>.
	    </h:p>
	    <h:p>
			This use case typically involves the use
			of virtualization technology to run the TOE on virtualized hardware rather than a particular machine. The virtualization system on which the TOE runs in this scenario should be evaluated against the
			<h:i>Protection Profile for Virtualization</h:i>.
	    </h:p>
	  </description>
        </usecase>
      </usecases>
    </sec:Use_Cases>

    <section title="Package Usage">
      This section contains selections and assignments that are required when the listed Functional Packages are claimed by this PP. 
      <package-usage-list>
        <package-usage ref="X509">
          <usage id="usage-x509-notca" title="No CA Claims Permitted">
            <description>
              The TOE will not be a certificate authority because the PP does not provide for the operation of an operating system as a CA. Thus, the ST author shall select the option to request a certificate from an external CA in FIA_XCU_EXT.2.1 and shall not select any options elsewhere in the package that involve claiming the ability to be a CA. 
            </description>
            <config>
              <ref-id>dummy-ref-id</ref-id>
            </config>
          </usage>
          <usage id="usage-x509-noplatform" title="No Platform-Provided Functionality Claims Permitted">
            <description>The ST author shall not claim platform-provided functionality for any of the functions specified in the Functional Package. In other words, any applicable SFRs 
              shall include the claim to implement or provide the functionality, rather than rely on a platform. These may include one or more of the following examples, depending on the TOE, but apply to any requirements where such a selection exists:
              <h:ul>
                <h:li>FIA_CMCC_EXT.1</h:li>
                <h:li>FIA_CMPC_EXT.1</h:li>
                <h:li>FIA_ESTC_EXT.1</h:li>
                <h:li>FIA_X509_EXT.1</h:li>
                <h:li>FIA_X509_EXT.2</h:li>
                <h:li>FIA_X509_EXT.3</h:li>
              </h:ul>
            </description>
            <config>
              <ref-id>dummy-ref-id</ref-id>   
            </config>
          </usage>
           <usage id="usage-x509-revocation-sigalgs" title="Limitations on Signature Algorithms in FIA_X509_EXT.1.1">
            <description>
              The TOE must utilize appropriate cryptographic algorithms that conform to CNSA standards. Thus, the TOE shall utilize no other algorithms outside of those specified in RFC 8603 for certificate validation and CRL signature validation (if claimed). If OCSP is claimed, the ST author shall only claim support for algorithms that use SHA-384 and either 3072-bit RSA or greater, or NIST P-384. In all cases, the assignment that allows the ST author to specify additional algorithms shall not be selected.
            </description>
            <config>
            <ref-id>dummy-ref-id</ref-id>
          </config>
          </usage>
          <usage id="usage-x509-extensions" title="Required Extension Processing for FIA_X509_EXT.1.2">
            <description>
              The ST author shall select the options to process the basicConstraints and extendedKeyUsage extensions. Other extensions may be selected as appropriate without restriction.
            </description>
            <config>
              <ref-id>dummy-ref-id</ref-id>
            </config>
          </usage>
          <usage id="usage-x509-revocation-methods" title="CRL or OCSP-based Revocation Required for FIA_X509_EXT.1.3 ">
            <description>
              The TOE must support revocation that only involves CRL or OCSP. Accordingly, the TOE shall select only from options involving CRL or OCSP in FIA_X509_EXT.1.3 (e.g., the selection to treat all certificates older than a given short timeframe is not an acceptable substitute or alternative for supporting CRL or OCSP).
            </description> 
            <config>
              <ref-id>dummy-ref-id</ref-id>
            </config>
          </usage>
          <usage id="usage-x509-revocation-connections" title="Connections to CRL or OCSP Servers Required for FIA_X509_EXT.1.4">
            <description>
              Because the TOE is required to support CRL or OCSP, the TSF shall support an appropriate mechanism for obtaining revocation status information. In the case of CRL, the ST author shall claim that revocation status information is obtained via network connection to a CRL distribution point. In the case of OCSP, the ST author shall claim that revocation status information is obtained via network connection to an OCSP responder, via OCSP stapling, or via OCSP multi-stapling.
            </description>
            <config>
              <ref-id>dummy-ref-id</ref-id>
            </config>
          </usage>
          <usage id="usage-x509-eku-values" title="Restrictions on Acceptable Key Usage Values for FIA_X509_EXT.1.5">
            <description>
              The TOE will always support the use of extendedKeyUsage values to verify that X.509 certificates are used in accordance with their intended purpose. Accordingly, the ST author shall claim that the TOE supports the processing of extendedKeyUsage fields in the leaf certificate (as opposed to application of trust store context rules or passing the certification path or other supported context information to an external function) and shall select all values that are relevant to the claimed uses of X.509 in the ST. In particular, since the PP does not define any functions that require the use of S/MIME, the ST author shall not select this as an extendedKeyUsage value to be validated.
            </description>
            <config>
              <ref-id>dummy-ref-id</ref-id>
            </config>
          </usage>
          <usage id="usage-x509-functions" title="Restrictions on Acceptable Functions for FIA_X509_EXT.2.1">
            <description>
              The PP does not define SMIME functionality, therefore the ST shall not select this as a function for which X.509 validation functionality is used.
            </description>
            <config>
              <ref-id>dummy-ref-id</ref-id>
            </config>
          </usage>
          <usage id="usage-x509-acquisition-purposes" title="Restrictions on Acceptable Purposes for Certificate Acquisition for FIA_XCU_EXT.2.1">
            <description>
              The PP does not define SMIME functionality, therefore the ST shall not select this as a function for which X.509 validation functionality is used.
            </description>
            <config>
              <ref-id>dummy-ref-id</ref-id>
            </config>
          </usage>
        </package-usage>
      </package-usage-list>
    </section>
    <section title="Product Features Mapped to Implementation-dependent Requirements" id="sec-features">
      The features enumerated below, if implemented by the TOE, require that additional SFRs be claimed in the ST.<h:br/>
      <implements>
        <feature id="bluetooth-support" title="Bluetooth Support">
          <description>A conformant TOE may implement Bluetooth functionality. If so, it is necessary for the TOE to support specific cryptographic algorithms and key sizes to support Bluetooth communications. The TOE will also claim a PP-Configuration that includes the <xref to="mod-bluetooth"/>.<h:br/></description>
        </feature>
        <feature id="key-encap-support" title="Key Encapsulation Support">
          <description>A conformant TOE is required to implement trusted communications. Depending on the specific protocols used and the supported connection parameters for these protocols, it may be necessary to implement a key encapsulation algorithm as part of key establishment.<h:br/></description>
        </feature>
          <feature id="key-agreement-support" title="Key Agreement Support">
            <description>A conformant TOE is required to implement trusted communications. Depending on the specific protocols used and the supported connection parameters for these protocols, it may be necessary to implement one or more key agreement algorithms as part of key establishment.<h:br/></description>
          </feature>
        <feature id="wlan-support" title="WLAN Support">
          <description>A conformant TOE may implement WLAN client functionality. If so, it is necessary to implement authenticated encryption and key wrapping in support of secure wireless communications. The TOE will also claim a PP-Configuration that includes the <xref to="mod-wlanclient"/>.<h:br/></description>
        </feature>
        <feature id="mdm-management" title="Mobile Device Management Support">
          <description>A conformant TOE may interface with a Mobile Device Management server for remote administration and security policies. This is either through an MDM Agent built into the TOE or a 3rd party MDM Agent application installed onto the TOE. If the TOE includes a built-in MDM Agent, the TOE will claim a PP-Configuration that includes the <xref to="mod-mdmagent"/>.<h:br/></description>
        </feature>
      </implements>			
    </section>
  </sec:Introduction>
  
  
    
    
    <sec:Conformance_Claims boilerplate="no">
      
      
      <!-- The new CClaimsInfo construct -->
      <CClaimsInfo cc-version="cc-2022r1" cc-approach="direct-rationale">
        <cc-st-conf>exact</cc-st-conf>       
        <cc-pt2-conf>extended</cc-pt2-conf>
        <cc-pt3-conf>extended</cc-pt3-conf>
        <cc-pp-conf/>
        <cc-pp-config-with>       
          <Mod-cc-ref>PP-Module for Virtual Private Network (VPN) Client, version 3.0</Mod-cc-ref>
          <Mod-cc-ref>PP-Module for Bluetooth, version 2.0</Mod-cc-ref>
          <Mod-cc-ref>PP-Module for MDM Agent, version 2.0</Mod-cc-ref>
          <Mod-cc-ref>PP-Module for Wireless LAN Client, version 2.0</Mod-cc-ref>
          <Mod-cc-ref>cPP-Module for Biometric Enrolment and Verification, version 2.0</Mod-cc-ref>  
        </cc-pp-config-with>
        <cc-pkg-claim>
          <FP-cc-ref conf="conformant">Functional Package for Transport Layer Security Version 2.1</FP-cc-ref>
          <FP-cc-ref conf="conformant">Functional Package for Secure Shell Version 2.0</FP-cc-ref>
          <FP-cc-ref conf="conformant">Functional Package for X.509 Version 1.0</FP-cc-ref>
           <!-- <AP-cc-ref conf="conformant">Assurance Package for Flaw Remediation Version 1.0</AP-cc-ref> -->
        </cc-pkg-claim>
      </CClaimsInfo>	
      <!-- 
      <cclaims>  
        <cclaim name="Conformance Statement">  
          <description>  
            <h:p>
      	  An ST must claim exact conformance to this PP.
            </h:p><h:p>
            The evaluation methods used for evaluating the TOE are a combination of the workunits defined in <xref to="bibCEM"/> as well as the
            Evaluation Activities for ensuring that individual SFRs have sufficient supporting evidence in the Security Target and 
            guidance documentation and have been sufficiently tested by the laboratory as part of completing ATE_IND.1. Any functional packages 
            this PP-Module claims similarly contain their own Evaluation Activities that are used in this same manner.
            </h:p><h:p>  
              <comment>These need to be updated for CC:2022 versions when available. When CC:2022 versions are available, make sure the module tags up top are updated with correct URLs.</comment>
            The following PP-Modules are allowed to be specified in a PP-Configuration with this PP.  
            <h:ul>  
                  <h:li>PP-Module for Virtual Private Network (VPN) Clients, version 2.4</h:li>  
                  <h:li>PP-Module for Bluetooth, version 1.0</h:li>  
                  <h:li>PP-Module for Mobile Device Management Agent, version 1.0</h:li>
                  <h:li>PP-Module for Wireless LAN Clients, version 1.0</h:li>
                  <h:li>cPP-Module for Biometric Enrolment and Verification, version 1.1</h:li>  
                </h:ul>  
      	  </h:p>  
          </description>  
        </cclaim>  
        <cclaim name="CC Conformance Claims">  
          <description>This PP is conformant to Parts 2 (extended) and 3 (extended) of Common  
            Criteria Version CC:2022, Revision 1.</description>  
        </cclaim>  
        <cclaim name="PP Claim">  
          <description>This PP does not claim conformance to any Protection Profile.</description>  
        </cclaim>  
        <cclaim name="Package Claim">  
          <description>
            <comment>Placeholder versions referenced for CC:2022 purposes. When CC:2022 versions are available, make sure the include-pkg tags up top are updated with correct URLs.</comment>
            This PP is Functional Package for Transport Layer Security Version 2.1 Conformant.<h:br/>  
            This PP is Functional Package for Secure Shell Version 1.1 Conformant.<h:br/>
            This PP is Functional Package for X.509 Version 1.0 Conformant.<h:br/>
          This PP is Assurance Package for Flaw Remediation Version 1.0 Conformant.</description>  
        </cclaim>  
      </cclaims>  
      -->
      
    </sec:Conformance_Claims>  
  
  
  <sec:Security_Problem_Definition>The security problem is described in terms
    of the threats that the OS is expected to address, assumptions about the
    operational environment, and any organizational security policies that the OS
    is expected to enforce.
    <sec:Threats>
      <threats>
        <threat name="T.NETWORK_ATTACK">
          <description> An attacker is positioned on a communications channel or elsewhere on the
            network infrastructure. Attackers may engage in communications with applications and
            services running on or part of the OS with the intent of compromise. Engagement may
            consist of altering existing legitimate communications.</description>
          <addressed-by>FAU_GEN.1</addressed-by>
          <rationale>FAU_GEN.1 helps mitigate the threat of a network attack by logging evidence of potential malicious activity.</rationale>
          
          <addressed-by>FCS_CKM.1/AKG</addressed-by>
          <rationale>FCS_CKM.1/AKG helps mitigate the threat of a network attack by ensuring the generation of strong keys used for trusted communications.</rationale>
          <addressed-by>FCS_CKM.1/SKG</addressed-by>
          <rationale>FCS_CKM.1/SKG helps mitigate the threat of a network attack by ensuring the generation of strong keys used for trusted communications.</rationale>
          <addressed-by>FCS_CKM.6</addressed-by>
          <rationale>FCS_CKM.6 helps mitigate the threat of a network attack by ensuring that keys used for trusted communications are destroyed in a secure manner.</rationale>
        
          <addressed-by>FCS_COP.1/AEAD</addressed-by>
          <rationale>FCS_COP.1/AEAD helps mitigate the threat of a network attack by ensuring the use of authenticated encryption algorithms in trusted communications.</rationale>
          <addressed-by>FCS_COP.1/Hash</addressed-by>
          <rationale>FCS_COP.1/Hash helps mitigate the threat of a network attack by ensuring that secure hash algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/KeyedHash</addressed-by>
          <rationale>FCS_COP.1/KeyedHash helps mitigate the threat of a network attack by ensuring that secure HMAC algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/SigGen</addressed-by>
          <rationale>FCS_COP.1/SigGen helps mitigate the threat of a network attack by ensuring that secure digital signature algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/SigVer</addressed-by>
          <rationale>FCS_COP.1/SigVer helps mitigate the threat of a network attack by implementing signature verification functions used for protected storage.</rationale>
          <addressed-by>FCS_COP.1/SKC</addressed-by>
          <rationale>FCS_COP.1/SKC helps mitigate the threat of a network attack by ensuring that secure symmetric algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_RBG.1</addressed-by>
          <rationale>FCS_RBG.1 helps mitigate the threat of a network attack by ensuring that keys used for trusted communications are generated using a secure DRBG.</rationale>
          <addressed-by>FIA_AFL.1</addressed-by>
          <rationale>FIA_AFL.1 helps mitigate the threat of a network attack by preventing an unprivileged user from logging into a network interface by brute force guessing the credential.</rationale>
          <addressed-by>FIA_UAU.5</addressed-by>
          <rationale>FIA_UAU.5 helps mitigate the threat of a network attack by providing specified authentication mechanisms for network user authentication.</rationale>
          <addressed-by>FMT_MOF.1</addressed-by>
          <rationale>FMT_MOF.1 helps mitigate the threat of a network attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FMT_SMF_EXT.1</addressed-by>
          <rationale>FMT_SMF_EXT.1 helps mitigate the threat of a network attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FPT_ACF_EXT.1</addressed-by>
          <rationale>FPT_ACF_EXT.1 helps mitigate the threat of a network attack by limiting the ability of an unprivileged user to modify the behavior of the TSF.</rationale>
          <addressed-by>FPT_ASLR_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a network attack by limiting the ability to modify the behavior of the TSF via memory overflow.</rationale>
          <addressed-by>FPT_FLS.1</addressed-by>
          <rationale>FPT_FLS.1 helps mitigate the threat of a network attack by ensuring that a malfunctioning DRBG function cannot be used to generate potentially insecure keys.</rationale>
          <addressed-by>FPT_SBOP_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a network attack by limiting the ability to modify the behavior of the TSF via stack overflow.</rationale>
          <addressed-by>FPT_STM.1</addressed-by>
          <rationale>FPT_STM.1 helps mitigate the threat of malicious activity by providing reliable time stamps for the audit trail.</rationale>
          
          <addressed-by>FPT_TST.1</addressed-by>
          <rationale>FPT_TST.1 helps mitigate the threat of a network attack by implementing a mechanism to detect when the DRBG may be failing to generate secure cryptographic keys.</rationale>
          <addressed-by>FTP_ITC_EXT.1</addressed-by>
          <rationale>FTP_ITC_EXT.1 helps mitigate the threat of a network attack by requiring the TSF to implement trusted protocols for network communication.</rationale>
          <addressed-by>FTP_TRP.1</addressed-by>
          <rationale>FTP_TRP.1 helps mitigate the threat of a network attack by requiring the use of a trusted path for any remote administration that can be performed on the TOE.</rationale>
          
          
          <addressed-by>FCS_RBG.6 (optional)</addressed-by>
          <rationale>FCS_RBG.6 helps mitigate the threat of a network attack by providing a secure DRBG service for third-party applications running on the TOE which may use this service to generate their own cryptographic keys for trusted communications.</rationale>
          <addressed-by>FPT_W^X_EXT.1 (optional)</addressed-by>
          <rationale>FPT_W^X_EXT.1 helps mitigate the threat of a network attack by enforcing data execution prevention so that an external interface cannot attempt to write data to executable memory.</rationale>
          <addressed-by>FTA_TAB.1 (optional)</addressed-by>
          <rationale>FTA_TAB.1 helps mitigate the threat of a network attack by providing actionable consequences for misuse of the TSF.</rationale>
          
          <addressed-by>FPT_BLT_EXT.1 (objective)</addressed-by>
          <rationale>FPT_BLT_EXT.1 helps mitigate the threat of a network attack by enforcing least functionality of the TOE's Bluetooth interface.</rationale>
          
          
          <addressed-by>FCS_CKM.2 (implementation-dependent)</addressed-by>
          <rationale>FCS_CKM.2 helps mitigate the threat of a network attack by implementing secure methods to perform key distribution for trusted communications.</rationale>
          <addressed-by>FCS_CKM_EXT.7 (implementation-dependent)</addressed-by>
          <rationale>FCS_CKM_EXT.7 helps mitigate the threat of a network attack by implementing secure methods to perform key agreement for trusted communications.</rationale>

          
          <addressed-by>FCS_COP.1/KeyEncap (selection-based)</addressed-by>
          <rationale>FCS_COP.1/KeyEncap helps mitigate the threat of a network attack by using a secure key encapsulation method to transmit a symmetric key to a third party as part of key establishment for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/KeyWrap (selection-based)</addressed-by>
          <rationale>FCS_COP.1/KeyWrap helps mitigate the threat of a network attack by using a secure key wrap method to distribute key material to a third party for use in trusted communications.</rationale>
          <addressed-by>FCS_COP.1/XOF (selection-based)</addressed-by>
          <rationale>FCS_COP.1/XOF helps mitigate the threat of a network attack by supporting extendable output function implementations that are dependencies of some secure key generation and signature verification algorithms.</rationale>      
          <addressed-by>FCS_RBG.2 (selection-based)</addressed-by>
          <rationale>FCS_RBG.2 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.3 (selection-based)</addressed-by>
          <rationale>FCS_RBG.3 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.4 (selection-based)</addressed-by>
          <rationale>FCS_RBG.4 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.5 (selection-based)</addressed-by>
          <rationale>FCS_RBG.5 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>

          

          <addressed-by>FDP_IFC_EXT.1 (selection-based)</addressed-by>
          <rationale>FDP_IFC_EXT.1 helps mitigate the threat of a network attack by ensuring that the TOE has the ability to enforce the use of an IPsec VPN for all network traffic.</rationale>
          
          
          <!--
          <addressed-by>FCS_SSH_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of a network attack by defining the TOE's implementation of SSH if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHC_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of a network attack by defining the TOE's implementation of SSH as a client if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHS_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of a network attack by defining the TOE's implementation of SSH as a server if this protocol is used for protected communications.</rationale>
          
          <addressed-by>FCS_TLS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by identifying the TOE's support for TLS or DTLS as trusted communications channels.</rationale>
          <addressed-by>FCS_DTLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          
          
          <addressed-by>FIA_XCU_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by requiring the use of X.509 certificates to validate the authenticity of network entities.</rationale>
          <addressed-by>FIA_XCU_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by requiring the use of X.509 certificates to assert its own identity to external entities.</rationale>
          <addressed-by>FIA_X509_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by defining how X.509 certificates are validated.</rationale>
          <addressed-by>FIA_X509_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by defining where X.509 certificates are used.</rationale>
          <addressed-by>FIA_X509_EXT.3 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by providing a secure means for the TOE to obtain certificates for its own use.</rationale>
     -->     
          
          <!--
          <objective-refer ref="O.PROTECTED_COMMS">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.PROTECTED_COMMS as this
              provides for integrity of transmitted data.</rationale>
          </objective-refer>
          <objective-refer ref="O.INTEGRITY">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.INTEGRITY as this provides for
              integrity of software that is installed onto the system from the network.</rationale>
          </objective-refer>
          <objective-refer ref="O.MANAGEMENT">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.MANAGEMENT as this provides for
              the ability to configure the OS to defend against network attack.</rationale>
          </objective-refer>
          <objective-refer ref="O.ACCOUNTABILITY">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.ACCOUNTABILITY as this
              provides a mechanism for the OS to report behavior that may indicate a network
              attack has occurred.</rationale>
          </objective-refer>
          -->
        </threat>
        <threat name="T.NETWORK_EAVESDROP">
          <description> An attacker is positioned on a communications channel or elsewhere on the
            network infrastructure. Attackers may monitor and gain access to data exchanged between
            applications and services that are running on or part of the OS, resulting in
            modification or disclosure of sensitive communications. </description>
          
          <addressed-by>FCS_CKM.1/AKG</addressed-by>
          <rationale>FCS_CKM.1/AKG helps mitigate the threat of network eavesdropping by ensuring the generation of strong keys used for trusted communications.</rationale>
          <addressed-by>FCS_CKM.1/SKG</addressed-by>
          <rationale>FCS_CKM.1/SKG helps mitigate the threat of network eavesdropping by ensuring the generation of strong keys used for trusted communications.</rationale>
          <addressed-by>FCS_CKM.6</addressed-by>
          <rationale>FCS_CKM.6 helps mitigate the threat of network eavesdropping by ensuring that keys used for trusted communications are destroyed in a secure manner.</rationale>
 
          <addressed-by>FCS_COP.1/AEAD</addressed-by>
          <rationale>FCS_COP.1/AEAD helps mitigate the threat of network eavesdrop by enforcing the use of a cryptographic algorithm to protect data in transit that includes assurance of both authenticity and confidentiality.</rationale>
          <addressed-by>FCS_COP.1/Hash</addressed-by>
          <rationale>FCS_COP.1/Hash helps mitigate the threat of network eavesdropping by ensuring that secure hash algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/KeyedHash</addressed-by>
          <rationale>FCS_COP.1/KeyedHash helps mitigate the threat of network eavesdropping by ensuring that secure HMAC algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/SigGen</addressed-by>
          <rationale>FCS_COP.1/SigGen helps mitigate the threat of network eavesdropping by ensuring that secure digital signature algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/SigVer</addressed-by>
          <rationale>FCS_COP.1/SigVer helps mitigate the threat of network eavesdropping by implementing signature verification functions used for protected storage.</rationale>
          <addressed-by>FCS_COP.1/SKC</addressed-by>
          <rationale>FCS_COP.1/SKC helps mitigate the threat of network eavesdropping by ensuring that secure symmetric algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_RBG.1</addressed-by>
          <rationale>FCS_RBG.1 helps mitigate the threat of network eavesdropping by ensuring that keys used for trusted communications are generated using a secure DRBG.</rationale>
          <addressed-by>FPT_FLS.1</addressed-by>
          <rationale>FPT_FLS.1 helps mitigate the threat of network eavesdropping by ensuring that a malfunctioning DRBG function cannot be used to generate potentially insecure keys.</rationale>
          <addressed-by>FPT_TST.1</addressed-by>
          <rationale>FPT_TST.1 helps mitigate the threat of network eavesdropping by implementing a mechanism to detect when the DRBG may be failing to generate secure cryptographic keys.</rationale>
          <addressed-by>FTP_ITC_EXT.1</addressed-by>
          <rationale>FTP_ITC_EXT.1 helps mitigate the threat of network eavesdropping by requiring the TSF to implement trusted protocols for network communication.</rationale>
          <addressed-by>FTP_TRP.1</addressed-by>
          <rationale>FTP_TRP.1 helps mitigate the threat of network eavesdropping by requiring the use of a trusted path for any remote administration that can be performed on the TOE.</rationale>
          
          <addressed-by>FCS_RBG.6 (optional)</addressed-by>
          <rationale>FCS_RBG.6 helps mitigate the threat of network eavesdropping by providing a secure DRBG service for third-party applications running on the TOE which may use this service to generate their own cryptographic keys for trusted communications.</rationale>
          
          <addressed-by>FPT_BLT_EXT.1 (objective)</addressed-by>
          <rationale>FPT_BLT_EXT.1 helps mitigate the threat of network eavesdropping by enforcing least functionality of the TOE's Bluetooth interface.</rationale>
          
          <addressed-by>FCS_CKM.2 (implementation-dependent)</addressed-by>
          <rationale>FCS_CKM.2 helps mitigate the threat of network eavesdropping by enforcing the use of a cryptographic algorithm to protect key data that is distributed in transit to a third party for use in trusted communications.</rationale>
          <addressed-by>FCS_CKM_EXT.7 (implementation-dependent)</addressed-by>
          <rationale>FCS_CKM_EXT.7 helps mitigate the threat of network eavesdropping by ensuring that a third party cannot obtain the key used by the TOE to communicate securely with a remote entity.</rationale>
     
          
          
          <addressed-by>FCS_COP.1/KeyEncap (selection-based)</addressed-by>
          <rationale>FCS_COP.1/KeyWrap helps mitigate the threat of network eavesdrop by using a key encapsulation algorithm to protect data in transit</rationale>
          <addressed-by>FCS_COP.1/KeyWrap (selection-based)</addressed-by>
          <rationale>FCS_COP.1/KeyWrap helps mitigate the threat of network eavesdrop by using a key wrap algorithm to protect data in transit.</rationale>
          
          <addressed-by>FCS_RBG.2 (selection-based)</addressed-by>
          <rationale>FCS_RBG.2 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.3 (selection-based)</addressed-by>
          <rationale>FCS_RBG.3 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.4 (selection-based)</addressed-by>
          <rationale>FCS_RBG.4 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.5 (selection-based)</addressed-by>
          <rationale>FCS_RBG.5 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>          
          
          <addressed-by>FCS_COP.1/XOF (selection-based)</addressed-by>
          <rationale>FCS_COP.1/XOF helps mitigate the threat of network eavesdrop by supporting extendable output function implementations that are dependencies of algorithms used for protection of data in transit.</rationale>      
          
          <addressed-by>FDP_IFC_EXT.1 (selection-based)</addressed-by>
          <rationale>FDP_IFC_EXT.1 helps mitigate the threat of network eavesdropping by ensuring that the TOE has the ability to enforce the use of an IPsec VPN for all network traffic.</rationale>
          
          <!--
          <addressed-by>FCS_SSH_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of network eavesdropping by defining the TOE's implementation of SSH if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHC_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of network eavesdropping by defining the TOE's implementation of SSH as a client if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHS_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of network eavesdropping by defining the TOE's implementation of SSH as a server if this protocol is used for protected communications.</rationale>
          
          <addressed-by>FCS_TLS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by identifying the TOE's support for TLS or DTLS as trusted communications channels.</rationale>
          <addressed-by>FCS_DTLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          
          
          <addressed-by>FIA_XCU_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of network eavesdropping by requiring the use of X.509 certificates to validate the authenticity of network entities.</rationale>
          <addressed-by>FIA_XCU_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by requiring the use of X.509 certificates to assert its own identity to external entities.</rationale>
          <addressed-by>FIA_X509_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of network eavesdropping by defining how X.509 certificates are validated.</rationale>
          <addressed-by>FIA_X509_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of network eavesdropping by defining where X.509 certificates are used.</rationale>
          <addressed-by>FIA_X509_EXT.3 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network eavesdrop by providing a secure means for the TOE to obtain certificates for its own use.</rationale>
  -->        
          <!--
          <objective-refer ref="O.PROTECTED_COMMS">
            <rationale>The threat T.NETWORK_EAVESDROP is countered by O.PROTECTED_COMMS as this
              provides for confidentiality of transmitted data.</rationale>
          </objective-refer>
          <objective-refer ref="O.MANAGEMENT">
            <rationale>The threat T.NETWORK_EAVESDROP is countered by O.MANAGEMENT as this provides
              for the ability to configure the OS to protect the confidentiality of its transmitted
              data.</rationale>
          </objective-refer>
          -->
        </threat>
        <threat name="T.LOCAL_ATTACK">
          <description> An attacker may compromise applications running on the OS. The
            compromised application may provide maliciously formatted input to the OS through a
            variety of channels including unprivileged system calls and messaging via the
            file system. </description>
          
          <addressed-by>FAU_GEN.1</addressed-by>
          <rationale>FAU_GEN.1 helps mitigate the threat of a local attack by logging evidence of potential malicious activity.</rationale>
          <addressed-by>FCS_COP.1/Hash</addressed-by>
          <rationale>FCS_COP.1/Hash helps mitigate the threat of a local attack by ensuring that secure hash algorithms are used for trusted updates.</rationale>
          <addressed-by>FCS_COP.1/KeyedHash</addressed-by>
          <rationale>FCS_COP.1/KeyedHash helps mitigate the threat of a local attack by ensuring that secure HMAC algorithms are used for trusted updates.</rationale>
          <addressed-by>FCS_COP.1/SigGen</addressed-by>
          <rationale>FCS_COP.1/SigGen helps mitigate the threat of a local attack by ensuring that secure digital signature algorithms are used for trusted updates.</rationale>
          <addressed-by>FCS_COP.1/SigVer</addressed-by>
          <rationale>FCS_COP.1/SigVer helps mitigate the threat of local attack by implementing signature verification functions used for protected storage.</rationale>
          <addressed-by>FCS_STO_EXT.1</addressed-by>
          <rationale>FCS_STO_EXT.1 helps mitigate the threat of a local attack by providing a mechanism to protect sensitive data at rest.</rationale>
          <addressed-by>FDP_ACF_EXT.1</addressed-by>
          <rationale>FDP_ACF_EXT.1 helps mitigate the threat of a local attack by providing a mechanism to restrict the ability of one user account to access data owned by another user.</rationale>
          <addressed-by>FIA_AFL.1</addressed-by>
          <rationale>FIA_AFL.1 helps mitigate the threat of a local attack by preventing an unprivileged user from gaining access to the TSF by brute force guessing the credential.</rationale>
          <addressed-by>FIA_UAU.5</addressed-by>
          <rationale>FIA_UAU.5 helps mitigate the threat of a local attack by providing specified authentication mechanisms for user authentication.</rationale>
          <addressed-by>FMT_MOF.1</addressed-by>
          <rationale>FMT_MOF.1 helps mitigate the threat of a local attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FMT_SMF_EXT.1</addressed-by>
          <rationale>FMT_SMF_EXT.1 helps mitigate the threat of a local attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FPT_ACF_EXT.1</addressed-by>
          <rationale>FPT_ACF_EXT.1 helps mitigate the threat of a local attack by limiting the ability of an unprivileged user to modify the behavior of the TSF.</rationale>
          <addressed-by>FPT_ASLR_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by limiting the ability of an application to modify the behavior of the TSF via memory overflow.</rationale>
          <addressed-by>FPT_SBOP_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by limiting the ability of an application to modify the behavior of the TSF via stack overflow.</rationale>
          <addressed-by>FPT_TST_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by ensuring the integrity of the TSF on boot.</rationale>
          <addressed-by>FPT_TUD_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by ensuring the authenticity and integrity of updates applied to the TOE.</rationale>
          <addressed-by>FPT_TUD_EXT.2</addressed-by>
          <rationale>helps mitigate the threat of a local attack by ensuring the integrity of updates applied to applications running the TOE.</rationale>
          
          <addressed-by>FPT_W^X_EXT.1 (optional)</addressed-by>
          <rationale>FPT_W^X_EXT.1 helps mitigate the threat of a local attack by enforcing data execution prevention so that an application cannot attempt to write data to executable memory.</rationale>
          <addressed-by>FTA_TAB.1 (optional)</addressed-by>
          <rationale>FTA_TAB.1 helps mitigate the threat of a local attack by providing actionable consequences for misuse of the TSF.</rationale>
          
          <addressed-by>FPT_NOT_EXT.2 (objective)</addressed-by>
          <rationale>FPT_NOT_EXT.2 helps mitigate the threat of a local attack by enforcing remote attestation to ensure that the TSF has not been compromised.</rationale>
          <addressed-by>FPT_SRP_EXT.1 (objective)</addressed-by>
          <rationale>FPT_SRP_EXT.1 helps mitigate the threat of a local attack by preventing the execution of unknown or untrusted software.</rationale>
          
          <!-- 
          <addressed-by>FIA_TSM_EXT.1 (X.509 Package)</addressed-by>
          <rationale>FIA_TSM_EXT.1 helps mitigate the threat of a local attack by ensuring that the contents of the trust store are protected against unauthorized modification.</rationale>
          -->
          <!--
          <objective-refer ref="O.INTEGRITY">
            <rationale>The objective O.INTEGRITY protects against the use of mechanisms that weaken
              the TOE with regard to attack by other software on the
              platform.</rationale>
          </objective-refer>
          <objective-refer ref="O.ACCOUNTABILITY">
            <rationale>The objective O.ACCOUNTABILITY protects against local attacks by providing
              a mechanism to report behavior that may indicate a local attack is occurring or
              has occurred.</rationale>
          </objective-refer>
          -->
        </threat>
        <threat name="T.LIMITED_PHYSICAL_ACCESS">
          <description> An attacker may attempt to access data on the OS while having a limited
            amount of time with the physical device, resulting in unauthorized disclosure or
            modification of the TSF's data or behavior. </description>
          
          <addressed-by>FAU_GEN.1</addressed-by>
          <rationale>FAU_GEN.1 helps mitigate the threat of by logging evidence of potential malicious activity should illicit access to the TSF be gained.</rationale>
          <addressed-by>FCS_STO_EXT.1</addressed-by>
          <rationale>FCS_STO_EXT.1 helps mitigate the threat by providing a mechanism to protect sensitive data at rest which prevents exfiltration of sensitive data during a limited access window.</rationale>
          <addressed-by>FIA_AFL.1</addressed-by>
          <rationale>FIA_AFL.1 helps mitigate the threat by preventing an unprivileged user from gaining access to the TSF by brute force guessing the credential in a limited time window.</rationale>
          <addressed-by>FIA_UAU.5</addressed-by>
          <rationale>FIA_UAU.5 helps mitigate the threat by providing specified authentication mechanisms for user authentication to prevent unauthorized access to the TOE.</rationale>
          <addressed-by>FMT_MOF.1</addressed-by>
          <rationale>FMT_MOF.1 helps mitigate the threat by limiting the management functions that are available to a given user which minimizes the impact of compromise should illicit access be gained.</rationale>
          <addressed-by>FMT_SMF_EXT.1</addressed-by>
          <rationale>FMT_SMF_EXT.1 helps mitigate the threat by limiting the management functions that are available to a given user which minimizes the impact of compromise should illicit access be gained.</rationale>
          <addressed-by>FPT_ACF_EXT.1</addressed-by>
          <rationale>FPT_ACF_EXT.1 helps mitigate the threat by limiting the ability of an unprivileged user to modify the behavior of the TSF should illicit access be gained.</rationale>
          
          <!--
          <objective-refer ref="O.PROTECTED_STORAGE">
            <rationale>The objective O.PROTECTED_STORAGE protects against unauthorized attempts to
              access physical storage used by the TOE.</rationale>
          </objective-refer>
          -->
        </threat>
      </threats>
    </sec:Threats>
	
	
    <sec:Assumptions>
      <assumptions>
        <assumption name="A.PLATFORM">
          <description> The OS relies upon a trustworthy computing platform for
            its execution. This underlying platform is out of scope of this PP. </description>
          <objective-refer ref="OE.PLATFORM">
            <rationale> The operational environment objective OE.PLATFORM is realized through
              A.PLATFORM. </rationale>
          </objective-refer>
        </assumption>
        <assumption name="A.PROPER_USER">
          <description> The user of the OS is not willfully negligent or hostile, and uses the
            software in compliance with the applied enterprise security policy. At the same time,
            malicious software could act <h:i>as</h:i> the user, so requirements which
            confine malicious subjects are still in scope.</description>
          <objective-refer ref="OE.PROPER_USER">
            <rationale>The operational environment objective OE.PROPER_USER is realized through
              A.PROPER_USER.</rationale>
          </objective-refer>
        </assumption>
        <assumption name="A.PROPER_ADMIN">
          <description> The administrator of the OS is not careless, willfully negligent or hostile,
            and administers the OS within compliance of the applied enterprise security policy. </description>
          <objective-refer ref="OE.PROPER_ADMIN">
            <rationale>The operational environment objective OE.PROPER_ADMIN is realized through
              A.PROPER_ADMIN.</rationale>
          </objective-refer>
        </assumption>
      </assumptions>
    </sec:Assumptions>
<!--    <section title="Organizational Security Policies" id="OSPs">
      <OSPs>
        <OSP id="P.ENTERPRISE">
          <description>If the OS is bound to a directory or management server, the configuration of
            the OS software must be capable of adhering to the enterprise security policies
            distributed by them.</description>
          <objective-refer ref="O.MANAGEMENT">
            <rationale>The organizational security policy P.ENTERPRISE is enforced through the
              objective O.MANAGEMENT as this objective represents how the enterprise and user assert
              management over the OS.</rationale>
          </objective-refer>
        </OSP>
      </OSPs>
    </section> -->
  </sec:Security_Problem_Definition>
  
  
  <sec:Security_Objectives>
  
    <sec:Security_Objectives_for_the_Operational_Environment>
      The following security objectives for the operational
      environment assist the OS in correctly providing its security functionality.
      These track with the assumptions about the environment. <SOEs>
        <SOE name="OE.PLATFORM">
          <description>The OS relies on being installed on trusted
            hardware.</description>
        </SOE>
        <SOE name="OE.PROPER_USER">
          <description> The user of the OS is not willfully negligent or hostile,
            and uses the software within compliance of the applied enterprise security policy.
            Standard user accounts are provisioned in accordance with the least privilege model.
            Users requiring higher levels of access should have a separate account dedicated for
            that use. </description>
        </SOE>
        <SOE name="OE.PROPER_ADMIN">
          <description> The administrator of the OS is not careless, willfully
            negligent or hostile, and administers the OS within compliance of the applied enterprise
            security policy. </description>
        </SOE>
      </SOEs>
    </sec:Security_Objectives_for_the_Operational_Environment>
    <sec:Security_Objectives_Rationale/>
  </sec:Security_Objectives>

  <sec:Security_Requirements>   
    
    <sec:SFRs title="Security Functional Requirements">
      
      <section id="s-audit-table" title="Auditable Events for Mandatory SFRs">        
        <audit-table id="t-audit-mandatory" table="mandatory" title="Auditable Events for Mandatory           SFRs">
        </audit-table>        
      </section>
      <!--
      <section id="opt-audit-table" title="Auditable Events for Optional SFRs">
        <audit-table id="at-optional" table="atref-optional" title="Auditable Events for Optional SFRs"></audit-table>
      </section>
      <section id="obj-audit-table" title="Auditable Events for Objective SFRs">
        <audit-table id="at-objective" table="atref-objective" title="Auditable Events for Objective SFRs"></audit-table>
      </section>
      <section id="sb-audit-table" title="Auditable Events for Selection-Based SFRs">
        <audit-table id="at-sel-based" table="atref-sel-based" title="Auditable Events for Selection-Based SFRs"></audit-table>
      </section>
      -->
      <section title="Class FAU: Security Audit" id="fau">
        <f-component cc-id="fau_gen.1" name="Audit Data Generation">
          <f-element id="fel-faugen">
            <title>
              The TSF shall be able to generate audit data of the following auditable
              events:
              <h:ol type="a">
                <h:li>Start-up and shut-down of the audit functions;</h:li>
                <h:li>All auditable events for the [<h:i>not specified</h:i>] level of audit;
                  <h:li>Specifically defined auditable events listed in <xref g="t-audit-mandatory"/></h:li>
                  
                  [</h:li>
                <h:li><h:i>
                  <h:ul><h:li>Authentication events (Success/Failure);</h:li>
                    <h:li>Use of privileged/special rights events (Successful and unsuccessful security, audit, and configuration changes);</h:li>
                    <h:li>Privilege or role escalation events (Success/Failure);</h:li>
                
                    <h:li><selectables linebreak="yes">
                      <selectable>Auditable events as defined in the <xref to="ssh"/></selectable>
                      <selectable>Auditable events as defined in the <xref to="tls"/></selectable>
                      <selectable>Auditable events as defined in the <xref to="X509"/></selectable>
                      <selectable>File and object events (Successful and unsuccessful attempts to create, access, delete, modify, modify permissions)</selectable>
                      <selectable>User and Group management events (Successful and unsuccessful add, delete, modify, disable, enable, and credential change)</selectable>
                      <selectable>Audit and log data access events (Success/Failure)</selectable>
                      <selectable>Cryptographic verification of software (Success/Failure)</selectable>
                      <selectable>Attempted application invocation with arguments (Success/Failure e.g., due to software restriction policy)</selectable>
                      <selectable>System reboot, restart, and shutdown events (Success/Failure)</selectable>
                      <selectable>Kernel module loading and unloading events (Success/Failure)</selectable>
                      <selectable>Administrator or root-level access events (Success/Failure)</selectable>
                      <selectable><assignable>other specifically defined auditable events</assignable>.</selectable>
                    </selectables>
                    </h:li>
                  </h:ul>
                </h:i>].
                </h:li>
              </h:ol>
            </title>
            <note role="application">For each functional package referenced in item d, the ST author is expected to include the corresponding selection if the TOE includes that functional package claim. If the TOE claims any SFRs in these functional packages for which a corresponding auditable event is defined, the ST must include those auditable events.</note>
            <aactivity level="component">
              <TSS>The evaluator shall examine the TSS to verify that it describes any mechanisms the TSF uses to generate audit data for security-relevant audit events. If multiple separate mechanisms are used, the evaluator shall verify that the TSS identifies the events that are logged via each mechanism.</TSS>
              <Guidance>
                The evaluator shall examine the operational guidance to verify that it includes information on how security-relevant audit events are logged and what the format for the audit records are. The evaluator shall also verify that the operational guidance includes sample audit records for each security-relevant event so that it is clear to the reader how the TSF identifies those events in the audit data.
                <h:p>
                  The evaluator shall check the administrative guide and ensure
                  that it provides a format
                  for audit data. Each audit data format type must be covered,
                  along with a brief description of each field. The evaluator shall
                  ensure that the fields contains the information required.
                </h:p>
			  </Guidance>
              <Tests>
                <h:p>
                  The evaluator shall test the OS's ability to correctly generate
                  audit data by having the TOE generate audit data for the
                  events listed in the ST.  This should include all instance types
                  of an event specified.
                  When verifying the test results, the evaluator shall ensure the
                  audit data generated during testing match the format specified
                  in the administrative guide, and that the audit
                  data provides the required information.
                </h:p>
              </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-audit-content">
            <title> The TSF shall record within the audit data at least the following information:
              <h:ol type="a">
                <h:li>Date and time of the event, type of event, subject identity (if applicable),
                  and the outcome (success or failure) of the event; </h:li>
                <h:li>For each audit event type, based on the auditable event
                  definitions of the functional components included in the PP, PP-Module, functional
                  package, or ST,
                  <assignable>other audit relevant information</assignable>
                </h:li>
              </h:ol>
              .
            </title>
            <note role="application">
              The term <h:i>subject</h:i> here is understood to be the user that the process
              is acting on behalf of.  If no auditable event definitions of
              functional components are provided, then no additional audit-relevant information
              is required.
            </note>
          </f-element>
          <audit-event/>
        </f-component>
        <f-component cc-id="fau_sel.1" name="Selective Audit" status="objective">
        <!--<depends on="mdm-management"/>-->
          <f-element id="fel-audit-select">
            <title>The TSF shall be able to select the set of events to be audited from the set of
              all auditable events based on the following attributes <h:ol type="a">
                <h:li>[<h:i>event type</h:i>]</h:li>
                <h:li>[<h:i>success of auditable security events</h:i></h:li>
                <h:li>
                  <h:i>failure of auditable security events</h:i>
                </h:li>
                <h:li><h:i>
                    <assignable>other attributes</assignable>
                  </h:i>]</h:li>
              </h:ol>
            </title>
            <note role="application"> The intent of this requirement is to identify all criteria
              that can be selected to trigger an audit event. This can be configured through an
              interface on the TSF for a user or administrator to invoke. For the ST author, the
              assignment is used to list any additional criteria or "none". </note>
            <aactivity>
              <TSS>There are no TSS evaluation activities for this component.<h:br/><h:br/></TSS>
              <Guidance> The evaluator shall review the administrative guidance to ensure that the
                guidance itemizes all event types, as well as describes all attributes that are to
                be selectable in accordance with the requirement, to include those attributes listed
                in the assignment. The administrative guidance shall also contain instructions on
                how to set the pre-selection as well as explain the syntax (if present) for
                multi-value pre-selection. The administrative guidance shall also identify those
                audit data that are always recorded, regardless of the selection criteria currently
                being enforced.<h:br/><h:br/>
              </Guidance>
              <Tests> The evaluator shall also perform the following tests:<h:br/>
                <testlist>
                  <test>For each attribute listed in the requirement, the evaluator shall devise a
                test to show that selecting the attribute causes only audit events with that
                attribute (or those that are always recorded, as identified in the
                    administrative guidance) to be recorded.</test>
                  <h:br/>
                  <test>[conditional] If the TSF supports specification of more complex audit
                    pre-selection criteria (e.g., multiple attributes, logical expressions using
                    attributes)] The evaluator shall devise tests showing that this capability
                    is correctly implemented. The evaluator shall also, in the test plan, provide a
                short narrative justifying the set of tests as representative and sufficient to
                exercise the capability.</test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event table="objective">
            <audit-event-descr>All modifications to the audit configuration that
              occur while the audit collection functions are operating</audit-event-descr>
          </audit-event>
        </f-component>
      </section>
      
      <section title="Class FCS: Cryptographic Support" id="fcs">
	  
	  
        <f-component id="sfr-fcs-ckm-1-akg" cc-id="fcs_ckm.1" iteration="AKG" name="Cryptographic           Key Generation - Asymmetric Key">
          <f-element id="fel-asym-gen">
            <title>
              The TSF shall generate <h:b>asymmetric</h:b> cryptographic keys in accordance with
              a specified cryptographic key generation algorithm<selectables>
                <tabularize id="fcs-ckm-1-ak-sels" title="Allowable choices for FCS_CKM.1/AKG">
                  <textcol>Identifier</textcol>
                  <selectcol>Cryptographic Key Generation Algorithm</selectcol>
                  <reqtext>and specified cryptographic <h:b>algorithm parameters</h:b> <h:s>key sizes</h:s></reqtext>
                  <selectcol>Cryptographic Algorithm Parameters</selectcol>
                  <reqtext>that meet the following: </reqtext>
                  <selectcol>List of Standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-ckm-1-ak-sels"/> provides the allowable choices for
                    completion of the selection operations of FCS_CKM.1/AKG.</reqtext>
                </tabularize>
                
                <!-- RSA -->
                <selectable id="sel-fcs-ckm-ak-rsa">
                  <col>RSA</col>
                  <col>RSA</col>
                  <col>Modulus of size <selectables>
                    <selectable id="sel-exp-ak-rsa-3072">3072</selectable>
                    <selectable id="sel-exp-ak-rsa-4096">4096</selectable>
                    <selectable id="sel-exp-ak-rsa-6144">6144</selectable>
                    <selectable id="sel-exp-ak-rsa-8192">8192</selectable>
                  </selectables> bits
                  </col>
                  <col>NIST FIPS PUB 186-5 (Section A.1.1)</col>
                </selectable>
                
                <!-- ECC-ERB - Extra Random Bits -->
                <selectable id="sel-fcs-ckm-ak-ecdsa-erb">
                  <col>ECC-ERB</col>
                  <col>ECC-ERB - Extra Random Bits</col>
                  <col>Elliptic Curve <selectables>
                    <selectable id="sel-exp-ak-edcsa-erb-P256">P-256</selectable>
                    <selectable id="sel-exp-ak-edcsa-erb-P384">P-384</selectable>
                    <selectable id="sel-exp-ak-edcsa-erb-P521">P-521</selectable></selectables>
                  </col>
                  <col>
                    FIPS PUB 186-5 (Section A.2.1)<h:p/>
                    NIST SP 800-186 (Section 3) [NIST Curves]
                  </col>
                </selectable>
                
                <!-- ECC-RS - Rejection Sampling -->
                <selectable id="sel-fcs-ckm-ak-ecdsa-rs">
                  <col>ECC-RS</col>
                  <col>ECC-RS - Rejection Sampling</col>
                  <col>Elliptic Curve <selectables>
                    <selectable id="sel-exp-ak-edcsa-rs-P256">P-256</selectable>
                    <selectable id="sel-exp-ak-edcsa-rs-P384">P-384</selectable>
                    <selectable id="sel-exp-ak-edcsa-rs-P521">P-521</selectable></selectables>
                  </col>
                  <col>
                    FIPS PUB 186-5 (Section A.2.2)<h:p/>
                    NIST SP 800-186 (Section 3) [NIST Curves]
                  </col>
                </selectable>
                
                <!-- FFC-ERB - Extra Random Bits -->
                <selectable id="sel-fcs-ckm-ak-ffc-erb">
                  <col>FFC-ERB</col>
                  <col>FFC-ERB - Extra Random Bits</col>
                  <col>Static domain parameters approved for <selectables>
                    <selectable>IKE Groups <selectables>
                      <selectable id="sel-dp-ak-ffc-erb-modp3072">MODP-3072</selectable>
                      <selectable id="sel-dp-ak-ffc-erb-modp4096">MODP-4096</selectable>
                      <selectable id="sel-dp-ak-ffc-erb-modp6144">MODP-6144</selectable>
                      <selectable id="sel-dp-ak-ffc-erb-modp8192">MODP-8192</selectable>
                    </selectables></selectable>
                    <selectable>TLS Groups <selectables>
                      <selectable id="sel-dp-ak-ffc-erb-ffdhe3072">ffdhe3072</selectable>
                      <selectable id="sel-dp-ak-ffc-erb-ffdhe4096">ffdhe4096</selectable>
                      <selectable id="sel-dp-ak-ffc-erb-ffdhe6144">ffdhe6144</selectable>
                      <selectable id="sel-dp-ak-ffc-erb-ffdhe8192">ffdhe8192</selectable>
                    </selectables></selectable></selectables>
                  </col>
                  <col>
                    NIST SP 800-56A Revision 3 (Section 5.6.1.1.3) [key pair generation]<h:p/>
                    <selectables>
                      <selectable>RFC 3526 [IKE groups]</selectable>
                      <selectable>RFC 7919 [TLS groups]</selectable></selectables>
                  </col>
                </selectable>
                
                <!-- FFC-RS - Rejection Sampling -->
                <selectable id="sel-fcs-ckm-ak-ffc-rs">
                  <col>FFC-RS</col>
                  <col>FFC-RS - Rejection Sampling</col>
                  <col>Static domain parameters approved for <selectables>
                    <selectable>IKE Groups <selectables>
                      <selectable id="sel-dp-ak-ffc-rs-modp3072">MODP-3072</selectable>
                      <selectable id="sel-dp-ak-ffc-rs-modp4096">MODP-4096</selectable>
                      <selectable id="sel-dp-ak-ffc-rs-modp6144">MODP-6144</selectable>
                      <selectable id="sel-dp-ak-ffc-rs-modp8192">MODP-8192</selectable>
                    </selectables></selectable>
                    <selectable>TLS Groups <selectables>
                      <selectable id="sel-dp-ak-ffc-rs-ffdhe3072">ffdhe3072</selectable>
                      <selectable id="sel-dp-ak-ffc-rs-ffdhe4096">ffdhe4096</selectable>
                      <selectable id="sel-dp-ak-ffc-rs-ffdhe6144">ffdhe6144</selectable>
                      <selectable id="sel-dp-ak-ffc-rs-ffdhe8192">ffdhe8192</selectable>
                    </selectables></selectable></selectables>
                  </col>
                  <col>
                    NIST SP 800-56A Revision 3 (Section 5.6.1.1.3) [key pair generation]<h:p/>
                    <selectables>
                      <selectable>RFC 3526 [IKE groups]</selectable>
                      <selectable>RFC 7919 [TLS groups]</selectable></selectables>
                  </col>
                </selectable>
                
                <!-- LMS -->
                <!--
                <selectable id="sel-fcs-ckm-ak-lms">
                  <col>LMS</col>
                  <col>LMS</col>
                  <col>Private key size = <selectables>
                    <selectable><h:i>192 bits with</h:i> <selectables>
                      <selectable>SHA-256/192</selectable>
                      <selectable>SHAKE256/192</selectable>
                    </selectables></selectable>
                    <selectable>256 bits with <selectables>
                      <selectable>SHA-256</selectable>
                      <selectable>SHAKE256</selectable>
                    </selectables></selectable>
                  </selectables><h:p/>
                    Winternitz parameter = <selectables>
                      <selectable>1</selectable>
                      <selectable>2</selectable>
                      <selectable>4</selectable>
                      <selectable>8</selectable></selectables><h:p/>
                    Tree height = <selectables>
                      <selectable>5</selectable>
                      <selectable>10</selectable>
                      <selectable>15</selectable>
                      <selectable>20</selectable>
                      <selectable>25</selectable></selectables>
                  </col>
                  <col>RFC 8554 [LMS]<h:p/>
                    NIST SP 800-208 (Section 4) [parameters]
                  </col>
                </selectable>
                -->
                <!-- ML-KEM Key Generation -->
                <selectable id="sel-fcs-ckm-ak-mlkem">
                  <col>ML-KEM</col>
                  <col>ML-KEM KeyGen</col>
                  <col>Parameter set = ML-KEM-1024</col>
                  <col>NIST FIPS 203 (Section 7.1)</col>
                </selectable>
                
                <!-- ML-DSA Key Generation -->
                <selectable id="sel-fcs-ckm-ak-mldsa">
                  <col>ML-DSA</col>
                  <col>ML-DSA KeyGen</col>
                  <col>Parameter set = ML-DSA-87</col>
                  <col>NIST FIPS 204 (Section 5.1)</col>
                </selectable>
                
                <!-- XMSS -->
                <!--
                <selectable id="sel-fcs-ckm-ak-xmss">
                  <col>XMSS</col>
                  <col>XMSS</col>
                  <col>Private key size = <selectables>
                    <selectable>192 bits with <selectables>
                      <selectable>SHA-256/192</selectable>
                      <selectable>SHAKE256/192</selectable>
                    </selectables></selectable>
                    <selectable>256 bits with <selectables>
                      <selectable>SHA-256</selectable>
                      <selectable>SHAKE256</selectable>
                    </selectables></selectable>
                  </selectables><h:p/>
                    Tree height = <selectables>
                      <selectable>10</selectable>
                      <selectable>16</selectable>
                      <selectable>20</selectable>
                    </selectables>
                  </col>
                  <col>RFC 8391 [XMSS]<h:p/>
                    NIST SP 800-208 (Section 5) [parameters]
                  </col>
                </selectable>
                -->
              </selectables>
            </title>
            <note role="application">
<h:p>
              For RSA the choice of the modulus implies the resulting key sizes of the public and private keys generated using the specified standard methods. RSA key generation with modulus size 2048 bits is no longer permitted by CNSA.
	      </h:p><h:p>
              For Finite Field Cryptography (FFC) DSA, ST authors should consult schemes for guidelines on use. FIPS PUB 186-5 does not approve DSA for digital signature generation but allows DSA for digital signature verification for legacy purposes. “FFC-ERB” or “FFC–RS” may be claimed only for generating private and public keys when “DH” is claimed in FCS_CKM_EXT.7.
	      </h:p><h:p>For ECC selections, “P-256” may only be selected if the the <xref to="mod-bluetooth"/> is included in the ST and P-256 may only be used specifically for Bluetooth functions.
	      </h:p><h:p>
              When generating ECC keys pairs for key agreement and if “ECDH” is claimed in FCS_CKM_EXT.7, then “ECC–ERB” or “ECC–RS” must be claimed. The sizes of the private key, which is a scalar, and the public key, which is a point on the elliptic curve, are determined by the choice of the curve.
	      </h:p><h:p>
              When generating ECC key pairs for digital signature generation and if “ECDSA” is claimed in FCS_COP.1/SigGen, then “ECC–ERB” or “ECC–RS” must be claimed. The sizes of the private key, which is a scalar, and the public key, which is a point on the elliptic curve, are determined by the choice of the curve.
              </h:p>
            </note>
            <aactivity>
	      <TSS>
						The evaluator shall examine the TSS to verify that it describes how the TOE generates a key
						based on output from a random bit generator as specified in FCS_RBG.1. The evaluator shall
						review the TSS to verify that it describes how the functionality described by FCS_RBG.1 is
						invoked. If support for P-256 is claimed, the evaluator shall examine the TSS to verify that it is only used for Bluetooth functions.<h:p/>
						The evaluator shall examine the TSS to verify that it identifies the usage and key lifecycle
						for keys generated using each selected algorithm.<h:p/>
						The evaluator shall examine the TSS to verify that any one-time values such as nonces or masks
						are constructed in accordance with the relevant standards.<h:p/>
						If the TOE uses the generated key in a key chain or hierarchy then the evaluator shall verify that the
						TSS describes how the key is used as part of the key chain or hierarchy.
					</TSS>
					<Guidance>
						The evaluator shall verify that the guidance instructs the administrator how to configure the TOE to
						generate keys for the selected key generation algorithms for all key types and uses identified in
						the TSS.
					</Guidance>
					<Tests>
						The following tests are conditional based on the selections made in the SFR. 
						The evaluator shall perform the following tests or witness respective tests 
						executed by the developer. The tests must be executed on a platform that is as 
						close as practically possible to the operational platform (but which may be 
						instrumented in terms of, for example, use of a debug mode). Where the test is
						not carried out on the TOE itself, the test platform shall be identified and the
						differences between test environment and TOE execution environment shall be 
						described.<h:p/>			
					
						<h:br/><h:b>RSA Key Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Key Generation Algorithm</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">RSA</h:td>
								<h:td valign="top">RSA</h:td>
								<h:td valign="top">Modulus of size [<h:b>selection:</h:b> <h:i>3072, 4096, 6144, 8192</h:i>] bits</h:td>
								<h:td valign="top">NIST FIPS PUB 186-5 (Section A.1.1)</h:td>
							</h:tr>
						</h:table><h:p/>						
						FIPS PUB 186-5 Key Pair generation specifies five methods for generating the 
						primes <h:i>p</h:i> and <h:i>q</h:i>.<h:p/>
						These are:<h:ol> 
						<h:li>Random provable primes</h:li>
						<h:li>Random probable primes</h:li>
						<h:li>Provable primes with conditions based on auxiliary provable primes</h:li>
						<h:li>Probable primes with conditions based on auxiliary provable primes</h:li>
						<h:li>Probable primes with conditions based on auxiliary probable primes</h:li>
						</h:ol><h:p/>
						In addition to the key generation method, the input parameters are:<h:ul>
						<h:li>Modulus [3072, 4096, 6144, 8192]</h:li>
						<h:li>Hash algorithm [SHA-384, SHA-512] (methods 1, 3, 4 only)</h:li>
						<h:li>Rabin-Miller prime test [2<h:sup>100</h:sup>, 2<h:sup>Security String</h:sup>] (methods 2, 4, 5 only)</h:li> 
						<h:li><h:i>p</h:i> mod 8 value [0,1,3,5,7]</h:li>
						<h:li><h:i>q</h:i> mod 8 value [0,1,3,5,7]</h:li>
						<h:li>Private key format [standard, Chinese Remainder Theorem]</h:li>
						<h:li>Public exponent [fixed value, random]</h:li></h:ul><h:p/>
						The evaluator shall verify the ability of the TSF to correctly produce values
						for the RSA key components, including the public verification exponent <h:i>e</h:i>, the
						private prime factors <h:i>p</h:i> and <h:i>q</h:i>, the public modulus <h:i>n</h:i>, and 
						the calculation of the private signature exponent <h:i>d</h:i>.<h:p/>
						
						<h:br/><h:i><h:b>Testing for Random Provable Primes and Conditional Methods</h:b></h:i><h:p/> 
						To test the key generation method for the random provable primes method and for
						all the primes with conditions methods (methods 1, 3-5), the evaluator shall seed 
						the TSF key generation routine with sufficient data to deterministically 
						generate the RSA key pair. <h:p/>
						For each supported combination of the above input parameters, the evaluator
						shall have the TSF generate 25 key pairs. The evaluator shall verify the
						correctness of the TSF’s implementation by comparing values generated by the TSF 
						with those generated by a known good implementation using the same input 
						parameters.<h:p/>
						<h:br/><h:i><h:b>Testing for Random Probable Primes Method</h:b></h:i><h:p/>
						If the TOE generates random probable primes (method 2) then, if possible, the 
						random probable primes method should also be verified against a known good
						implementation as described above. If verification against a known good
						implementation is not possible, the evaluator shall have the TSF generate 25 key
						pairs for each supported key length nlen and verify that all of the following 
						are true.<h:p/><h:ul>
						<h:li><h:i>n</h:i> = <h:i>p</h:i>*<h:i>q</h:i></h:li>
						<h:li><h:i>p</h:i> and <h:i>q</h:i> are probably prime according to Miller-Rabin tests with error
							probability &lt;2<h:sup>(-125)</h:sup></h:li>
						<h:li>2<h:sup>16</h:sup> &lt; <h:i>e</h:i> &lt; 2<h:sup>256</h:sup> and <h:i>e</h:i> is an odd integer</h:li>
						<h:li>GCD(<h:i>p</h:i>-1,<h:i>e</h:i>) = 1</h:li>
						<h:li>GCD(<h:i>q</h:i>-1,<h:i>e</h:i>) = 1</h:li>
						<h:li>|<h:i>p</h:i>-<h:i>q</h:i>| &gt; 2<h:sup>(<h:i>nlen</h:i>/2 – 100)</h:sup></h:li>
						<h:li><h:i>p</h:i> ≥ squareroot(2)*( 2<h:sup>(<h:i>nlen</h:i>/2 -1)</h:sup> )</h:li>
						<h:li><h:i>q</h:i> ≥ squareroot(2)*( 2<h:sup>(<h:i>nlen</h:i>/2 -1)</h:sup> )</h:li>
						<h:li>2<h:sup>(<h:i>nlen</h:i>/2)</h:sup> &lt; d &lt; LCM(<h:i>p</h:i>-1,<h:i>q</h:i>-1)</h:li>
						<h:li>e*d = 1 mod LCM(<h:i>p</h:i>-1,<h:i>q</h:i>-1)</h:li></h:ul>
 
						<h:br/><h:b>Elliptic Curve Key Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Key Generation Algorithm</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">ECC-ERB</h:td>
							  <h:td valign="top">ECC – Extra Random Bits</h:td>
								<h:td valign="top">Elliptic Curve [<h:b>selection:</h:b> <h:i>P-256, P-384, P-521</h:i>]</h:td>
								<h:td valign="top">NIST FIPS PUB 186-5 (Section A.2.1)<h:p/>
													NIST SP 800-186 (Section 3) [NIST Curves]</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">ECC-RS</h:td>
							  <h:td valign="top">ECC – Rejection Sampling</h:td>
							  <h:td valign="top">Elliptic Curve [<h:b>selection:</h:b> <h:i>P-256, P-384, P-521</h:i>]</h:td>
								<h:td valign="top">NIST FIPS PUB 186-5 (Section A.2.2)<h:p/>
													NIST SP 800-186 (Section 3) [NIST Curves]</h:td>
							</h:tr>
						</h:table><h:p/>						
						To test the TOE’s ability to generate asymmetric cryptographic keys using
						elliptic curves, the evaluator shall perform the ECC Key Generation Test 
						and the ECC Key Validation Test using the following input parameters.<h:ul>
						<h:li>Elliptic curve [P-256, P-384, P-521]</h:li>
						<h:li>Key pair generation method [extra random bits, rejection sampling]</h:li></h:ul><h:p/>
						
						<h:br/><h:i><h:b>ECC Key Generation Test</h:b></h:i><h:br/>
						For each supported combination of the above input parameters the evaluator shall
						require the implementation under test to generate 10 private and public key pairs
						(<h:i>d, Q</h:i>). The private key, <h:i>d</h:i>, shall be generated using a
						random bit generator as specified in FCS_RBG.1. The private key, <h:i>d</h:i>, is
						used to compute the public key, <h:i>Q'</h:i>. The evaluator shall confirm that
						0&lt;<h:i>d</h:i>&lt;<h:i>n</h:i> (where <h:i>n</h:i> is the order of the group),
						and the computed value <h:i>Q'</h:i> is then compared to the generated 
						public and private key pairs’ public key, <h:i>Q</h:i>, to confirm that <h:i>Q</h:i> is 
						equal to <h:i>Q'</h:i>.<h:p/>					
						
						<h:br/><h:i><h:b>ECC Key Validation Test</h:b></h:i><h:br/>
						For each supported combination of the above parameters the evaluator shall
						generate 12 private and public key pairs using the key generation function of a 
						known good implementation. For each set of 12 public keys, the evaluator shall
						modify four public key values by shifting <h:i>x</h:i> or <h:i>y</h:i> out of 
						range by adding the order of the field and modify four other public key values 
						by shifting <h:i>x</h:i> or <h:i>y</h:i> so that they are still in bounds, but 
						not on the curve. The remaining public key values are left unchanged (i.e., 
						correct). To determine correctness, the evaluator shall submit the public keys
						to the public key validation (PKV) function of the TOE and confirm that 
						the results correspond as expected for the modified and unmodified values.<h:p/>
					
						<h:br/><h:b>Finite Field Cryptography Key Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Key Generation Algorithm</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">FFC-ERB</h:td>
								<h:td valign="top">FFC – Extra Random Bits</h:td>
								<h:td valign="top">Static domain parameters approved for [<h:b>selection:</h:b>
									<h:i>IKE groups [<h:b>selection:</h:b> MODP-3072, MODP-4096, 
									MODP-6144, MODP-8192], TLS groups [<h:b>selection:</h:b>  
									ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192]</h:i>]]</h:td>
								<h:td valign="top">NIST SP 800-56A Revision 3 (Section 5.6.1.1.3) [key pair generation]<h:p/>
												[<h:b>selection:</h:b> <h:i>RFC 3526 [IKE groups], RFC 7919 [TLS groups]</h:i>]</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">FFC-RS</h:td>
								<h:td valign="top">FFC – Rejection Sampling</h:td>
								<h:td valign="top">Static domain parameters approved for [<h:b>selection:</h:b>
								  IKE groups [<h:b>selection:</h:b> <h:i>MODP-3072, MODP-4096, 
									MODP-6144, MODP-8192], TLS groups [<h:b>selection:</h:b>  
								    ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192]]</h:i>]</h:td>
								<h:td valign="top">NIST SP 800-56A Revision 3 (Section 5.6.1.1.4) [key pair generation]<h:p/>
								  [<h:b>selection:</h:b> <h:i>RFC 3526 [IKE groups], RFC 7919 [TLS groups]</h:i>]</h:td>
							</h:tr>
						</h:table><h:p/>						
						To test the TOE’s ability to generate asymmetric cryptographic keys using finite
						fields, the evaluator shall perform the Safe Primes Generation Test and the Safe
						Primes Validation Test using the following input parameter:<h:ul>
						<h:li>Fields/Groups [MODP-3072, MODP-4096, MODP-6144, MODP-8192,  
							ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192]</h:li></h:ul><h:p/>
					
						<h:br/><h:i><h:b>Safe Primes Generation Test</h:b></h:i><h:br/>
						For each supported safe primes group, generate 10 key pairs. The evaluator shall 
						verify the correctness of the TSF’s implementation by comparing values generated
						by the TSF with those generated by a known good implementation using the same 
						input parameters.<h:p/>
						
						<h:br/><h:i><h:b>Safe Primes Verification Test</h:b></h:i><h:br/>
						For each supported safe primes group, use a known good implementation to generate
						10 key pairs. For each set of 10, the evaluator shall modify three so they are 
						incorrect. The remaining values are left unmodified (i.e., correct). To
						determine correctness, the evaluator shall submit the key pairs to the public 
						key validation (PKV) function of the TOE and shall confirm that the results
						correspond as expected for the modified and unmodified values.<h:p/>
		
		<!--
						<h:br/><h:b>LMS Key Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Key Generation Algorithm</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">LMS</h:td>
								<h:td valign="top">LMS Key Generation</h:td>
								<h:td valign="top">Private key size = [<h:b>selection:</h:b>  
									192 bits with [<h:b>selection:</h:b> <h:i>SHA-256/192, SHAKE256/192],
									256 bits with [<h:b>selection:</h:b> SHA-256, SHAKE256]</h:i>]; 
								  Winternitz parameter = [<h:b>selection:</h:b> <h:i>1, 2, 4, 8</h:i>]; 
								  Tree height = [<h:b>selection:</h:b> <h:i>5, 10, 15, 20, 25</h:i>]
								</h:td>
								<h:td valign="top">RFC 8554 [LMS]<h:p/>NIST SP 800-208 (Section 4) [parameters]</h:td>
							</h:tr>
						</h:table><h:p/>						
						To test the TOE’s ability to generate asymmetric cryptographic keys using LMS, the
						evaluator shall perform the LMS Key Generation Test using the following input parameters:
						<h:ul>
						<h:li>Hash algorithm [SHA-256/192, SHAKE256/192, SHA-256, SHAKE256]</h:li>
						<h:li>Winternitz [1, 2, 4, 8]</h:li>
						<h:li>Tree height [5, 10, 15, 20, 25]</h:li></h:ul><h:p/>
						<h:br/><h:i><h:b>LMS Key Generation Test</h:b></h:i><h:br/>
						For each supported combination of the hash algorithm, Winternitz parameter, and tree height, the
						evaluator shall generate one public key for each of the test cases. The number of test cases
						depends on the tree height:
						<h:b><h:div style="text-align: center;">
							<ctr ctr-type="Table" pre="Table " id="lms-test-cases">: Number of LMS Test Cases</ctr>
							</h:div>
						</h:b>
							
						<h:table border="1" style="width:50%">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Height</h:td>
								<h:td valign="top">Number of test cases</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">5</h:td>
								<h:td valign="top">5</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">10</h:td>
								<h:td valign="top">4</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">15</h:td>
								<h:td valign="top">3</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">20</h:td>
								<h:td valign="top">2</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">25</h:td>
								<h:td valign="top">1</h:td>
							</h:tr>
						</h:table><h:p/>						
						The evaluator shall verify the correctness of the TSF’s implementation by
						comparing the public key generated by the TSF with that generated by a known
						good implementation using the same input parameters.<h:p/>
-->

						<h:br/><h:b>ML-KEM Key Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Key Generation Algorithm</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">ML-KEM</h:td>
								<h:td valign="top">ML-KEM Key Generation</h:td>
								<h:td valign="top">Parameter set = [ML-KEM-1024]</h:td>
								<h:td valign="top">NIST FIPS PUB 203 (Section 7.1)</h:td>
							</h:tr>
						</h:table><h:p/>						
						To test the TOE’s ability to generate asymmetric cryptographic keys using ML-KEM,
						the evaluator shall perform the Algorithm Functional Test using the following 
						input parameters:<h:ul>
						<h:li>Parameter set [ML-KEM-1024]</h:li>
						<h:li>Random seed d [32 bytes]</h:li>
						<h:li>Random seed z [32 bytes]</h:li></h:ul><h:p/>
						<h:br/><h:i><h:b>Algorithm Functional Test</h:b></h:i><h:br/>
						For each supported parameter set the evaluator shall require the implementation under test to
						generate 25 key pairs using 25 different randomly generated pairs of 32-byte seed values (<h:i>d, z</h:i>).
						To determine correctness, the evaluator shall compare the resulting key pairs (<h:i>ek, dk</h:i>) with those
						generated using a known good implementation using the same inputs.<h:p/>

						<h:br/><h:b>ML-DSA Key Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Key Generation Algorithm</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">ML-DSA</h:td>
								<h:td valign="top">ML-DSA Key Generation</h:td>
								<h:td valign="top">Parameter set = ML-DSA-87</h:td>
								<h:td valign="top">NIST FIPS PUB 204 (Section 5.1)</h:td>
							</h:tr>
						</h:table><h:p/>						
							To test the TOE’s ability to generate asymmetric cryptographic keys using ML-DSA, 
							the evaluator shall perform the Algorithm Functional Test using the following
							input parameters:<h:ul>
							<h:li>Parameter set [ML-DSA-87]</h:li>
							<h:li>Random seed [32 bytes]</h:li></h:ul><h:p/>
							<h:br/><h:i><h:b>Algorithm Functional Test</h:b></h:i><h:br/>
							For each supported parameter set the evaluator shall require the implementation 
							under test to generate 25 key pairs using 25 different randomly generated 32-byte 
							seed values. To determine correctness, the evaluator shall compare the resulting
							key pairs with those generated using a known good implementation using the same 
							inputs.<h:p/>	

<!--
						<h:br/><h:b>XMSS Key Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Key Generation Algorithm</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">XMSS</h:td>
								<h:td valign="top">XMSS</h:td>
							  <h:td valign="top">Private key size = [<h:b>selection:</h:b> <h:i>192 bits
									with [<h:b>selection:</h:b> SHA-256/192, SHAKE256/192], 256 bits 
									with [<h:b>selection:</h:b> SHA-256, SHAKE256]</h:i>], tree height = 
							    [<h:b>selection:</h:b> <h:i>10, 16, 20</h:i>]</h:td>
								<h:td valign="top">RFC 8391 [XMSS]<h:p/>
									NIST SP 800-208 (Section 4) [parameters]</h:td>
							</h:tr>
						</h:table><h:p/>
						To test the TOE’s ability to generate asymmetric cryptographic keys using 
						XMSS, the evaluator shall perform the XMSS Key 
						Generation Test using the following input parameters:<h:ul>
						<h:li>Hash algorithm [SHA-256/192, SHAKE256/192, SHA-256, SHAKE256]</h:li>
						<h:li>Tree height [10, 16, 20] (XMSS only)</h:li></h:ul><h:p/>

						<h:b><h:div style="text-align: center;">
							<ctr ctr-type="Table" pre="Table " id="xmss-akg-test-cases">: Number of Test Cases for XMSS<h:sup>MT</h:sup></ctr>
						</h:div></h:b>
						<h:table border="1" style="width:50%">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Height</h:td>
								<h:td valign="top">Number of test cases</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">10</h:td>
								<h:td valign="top">5</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">16</h:td>
								<h:td valign="top">4</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">20</h:td>
								<h:td valign="top">3</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">40</h:td>
								<h:td valign="top">2</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">60</h:td>
								<h:td valign="top">1</h:td>
							</h:tr>
						</h:table><h:p/>						

						<h:br/><h:i><h:b>XMSS Key Generation Test</h:b></h:i><h:br/>
						For each supported combination of hash algorithm and tree height, the evaluator 
						shall generate one public key for each test case. The number of test cases
						depends on the tree height as specified in <xref to="xmss-akg-test-cases"/>.<h:p/>

						The evaluator shall verify the correctness of the TSF’s implementation by comparing 
						values generated by the TSF with those generated by a known good implementation using 
						the same input parameters.<h:p/>
						
						Note: The number of test cases is limited due to the extreme amount of time it can
						take to generate XMSS trees.<h:p/>
					  -->
					</Tests>
	    </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        
        <!-- FCS_CKM.1/SKG Cryptographic Key Generation - Symmetric Key -->
        <f-component id="sfr-fcs-ckm-1-skg" cc-id="fcs_ckm.1" iteration="SKG" name="Cryptographic Key Generation - Symmetric Key">
          <f-element id="fcs-ckm-1e1-skg">
            <title>
              The TSF shall generate <h:b>symmetric</h:b> cryptographic keys in accordance with
              a specified cryptographic key generation algorithm<selectables>
                <tabularize id="fcs-ckm-1-skg-sels" title="Allowable choices for FCS_CKM.1/SKG">
                  <textcol>Identifier</textcol>
                  <selectcol>Cryptographic Key Generation Algorithm</selectcol>
                  <reqtext>and specified cryptographic key sizes</reqtext>
                  <selectcol>Cryptographic Key Sizes</selectcol>
                  <reqtext>that meet the following: </reqtext>
                  <selectcol>List of standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-ckm-1-skg-sels"/> provides the allowable choices for
                    completion of the selection operations of FCS_CKM.1/SKG.</reqtext>
                </tabularize>
                
                <!-- RSK -->
                <selectable id="sel-fcs-ckm-sk-rsk">
                  <col>RSK</col>
                  <col>Direct Generation from a Random Bit Generator as specified in FCS_RBG.1</col>
                  <col><selectables>
                    <selectable id="sel-exp-skg-256">256</selectable>
                    <selectable id="sel-exp-skg-256">384</selectable>
                    <selectable id="sel-exp-skg-512">512</selectable></selectables> bits
                  </col>
                  <col>NIST SP 800-133 Revision 2 (Section 6.1)[Direct generation of symmetric keys]</col>
                </selectable>
              </selectables>
            </title>
            <aactivity>
              <TSS>
                The evaluator shall examine the TSS to verify that it describes how the TOE obtains a symmetric
                cryptographic key through direct generation from a random bit generator as specified in
                FCS_RBG.1. The evaluator shall review the TSS to verify that it describes how the functionality
                described by FCS_RBG.1 is invoked.<h:p/>
                The evaluator shall examine the TSS to verify that it identifies the usage, and key lifecycle for
                keys generated using each selected algorithm.<h:p/>		
                If the TOE uses the generated key in a key chain/hierarchy then the evaluator shall verify that the
                TSS describes how the key is used as part of the key chain/hierarchy.
              </TSS>
              <Guidance>
                The evaluator shall verify that the AGD instructs the administrator how to configure the TOE to
                use the DRBG to generate symmetric keys for all uses identified in the ST.
              </Guidance>
              <Tests>
                The following tests are conditional based upon the selections made in the SFR.
                The evaluator shall perform the following test or witness respective tests 
                executed by the developer. The tests must be executed on a platform that is as 
                close as practically possible to the operational platform (but which may be 
                instrumented in terms of, for example, use of a debug mode). Where the test 
                is not carried out on the TOE itself, the test platform shall be identified and
                the differences between test environment and TOE execution environment shall be
                described.<h:p/>
                To test the TOE’s ability to generate symmetric cryptographic keys using a 
                random bit generator, the evaluator shall configure the symmetric cryptographic 
                key generation capability for each claimed key size. The evaluator shall use the
                description of the DRBG interface to verify that the TOE requests and receives an
                amount of DRBG output greater than or equal to the requested key size.
              </Tests>				
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_ckm.2" name="Cryptographic Key Distribution" status="feat-based">
          <depends on="key-encap-support"/>
          <depends on="wlan-support"/>
          <f-element id="fel-crypt-key-estab">
            <title>The TSF shall distribute cryptographic keys in accordance with a specified cryptographic 
              key distribution method <selectables>
                <selectable id="sel-ckm-2-encap">key encapsulation as specified in FCS_COP.1/KeyEncap</selectable>
                <selectable id="sel-ckm-2-wrap">key wrapping as specified in FCS_COP.1/KeyWrap</selectable>
              </selectables> that meets the following: [<h:i>none</h:i>].
            </title>
            <note role="application">
              <h:p>
                If "key encapsulation..." is selected, FCS_COP.1/KeyEncap is claimed. If "key wrapping..." is selected, FCS_COP.1/KeyWrap must be claimed.
              </h:p>
            </note>
            <aactivity>
              <TSS>
                The evaluator shall ensure that the TSS documents that the security strength supported by
                the selected key distribution methods is sufficient for the security strength of the keys
                distributed through those methods.<h:p/>
                It is not necessary to identify the services that use each key distribution method here. That
                information should be documented in the requirements for the individual services and
                protocols that invoke key distribution.
              </TSS>
              <Guidance>
                The evaluator shall verify that the operational guidance instructs the administrator
                how to configure the TOE to use the selected key distribution methods.
              </Guidance>
              <Tests>
                Specific testing for this component is covered by testing for the claimed components in
                FCS_COP.1/KeyEncap or FCS_COP.1/KeyWrap, depending on selections made.
              </Tests>
            </aactivity>
            <!--
            <rule id="r-key-rsa">
              <if><ref-id>s-keyestab-rsa</ref-id></if>
              <then><ref-id>s-keygen-rsa</ref-id></then>
            </rule>
            <rule id="r-key-ecc">
              <if><ref-id>s-keyestab-ecc</ref-id></if>
              <then><ref-id>s-keygen-ecc</ref-id></then>
            </rule>
            <rule id="r-key-ffc">
              <if><ref-id>s-keyestab-ffc</ref-id></if>
              <then><ref-id>s-keygen-ffc</ref-id></then>
            </rule>
            -->
          </f-element>
          <audit-event/>
        </f-component>
		
		
<f-component cc-id="fcs_ckm.6" name="Timing and Event of Cryptographic Key Destruction">
	 
  <f-element id="fel-key-kill-when">
    <title>The TSF shall destroy [<h:i>all plaintext keys and keying material</h:i>] when 
      <selectables>
        <selectable>no longer needed</selectable>
        <selectable><assignable>other circumstances for destruction</assignable></selectable>
      </selectables>.
    </title>
  </f-element>
  <f-element id="fel-key-kill-how">
    <title> The TSF shall destroy <h:b>plaintext</h:b> cryptographic keys and keying material specified by FCS_CKM.6.1 in accordance with a specified cryptographic key destruction method
      
      [<h:i>in accordance with the following rules: <h:ul>
        <h:li>For volatile memory, the destruction shall be executed by a single direct overwrite consisting of <selectables>
          <selectable>a pseudo-random pattern using the TSF or platform DRBG (as specified in FCS_RBG.1)</selectable>
          <selectable>zeroes</selectable>
        </selectables></h:li>
        <h:li>For non-volatile EEPROM, the destruction shall be executed by a single direct overwrite consisting of a pseudo-random pattern using the 
          TSF or platform DRBG (as specified in FCS_RBG.1), followed by a read-verify.</h:li>
        <h:li>For non-volatile flash memory, that is not wear-leveled, the destruction shall be executed by a <selectables>
          <selectable>single direct overwrite consisting of zeroes followed by a read-verify</selectable>
          <selectable>block erase that erases the reference to memory that stores data as well as the data itself</selectable>
        </selectables>
        </h:li>
        <h:li>For non-volatile flash memory that is wear-leveled, the destruction shall be executed by a <selectables>
          <selectable>single direct overwrite consisting of zeroes</selectable>
          <selectable>block erase</selectable>
        </selectables></h:li>
        <h:li>For non-volatile memory other than EEPROM and flash, the destruction shall be executed by a single direct overwrite with a random pattern that 
          is changed before each write</h:li></h:ul></h:i>] that meets the following: [<h:i>no standard</h:i>].
    </title>
    <note role="application">
      <h:p>
      For the purposes of this requirement, keying material refers to authentication data, passwords, secret/private symmetric keys, private asymmetric keys, data used to derive keys, values derived from passwords, etc. “Plaintext keying material” may refer to a KEK that is used to encrypt other keying material. Destruction of encrypted keying material may be accomplished by destroying the KEK used to encrypt it. If different mechanisms are used for destroying different keying material, all relevant claims should be selected and the TSS should identify which keying material is destroyed by which mechanism. 
      </h:p><h:p>
        Key storage areas in non-volatile storage can be overwritten with any value that renders the keys unrecoverable. The value used can be all zeroes, all ones, or any other pattern or combination of values significantly different than the value of the key itself. When ‘a value that does not contain any keying material’ is chosen, it means that the TOE uses some other specified data not drawn from a source that may contain keying material or reveal information about it or any other TSF-protected data. In other words, the data used for overwriting is carefully selected and not taken from a general ‘pool’ that might contain current or residual data that itself requires confidentiality protection. If multiple copies exist, all copies must be destroyed. 
      </h:p><h:p>
        Since this is a software-only TOE, the hardware controllers that manage non-volatile storage media are necessarily outside the TOE boundary. Thus, the TOE developer is likely to have little control over—or insight into—the functioning of these storage devices. The TOE must make a “best-effort” to destroy disused cryptographic keys by invoking the appropriate hardware interfaces—recognizing that the specific actions taken by the hardware are out of the TOE’s control. But in cases where the TOE has insight into the non-volatile storage technologies used by the hardware, or where the TOE can specify a preference or method for destroying keys, the destruction should be executed by a single, direct overwrite consisting of pseudorandom data or a new key, by a repeating pattern of any static value, or by a block erase.
      </h:p>
    </note>
    <aactivity>
      <TSS>
        <h:p>
          The evaluator shall verify that the TSS identifies all plaintext keys and keying material stored by the TOE, the type of memory in which it is stored, and when and how the keying material is erased. If the TOE uses one or more KEKs to protect stored keying material, the evaluator shall verify that the TSS describes the destruction of that keying material, either directly or by destruction of the KEK used to encrypt it.</h:p><h:p>
            If different types of memory are used to store the materials to be protected, the evaluator shall check to ensure that the TSS describes the clearing procedure in terms of the memory in which the data are stored (for example, "secret keys stored on flash are cleared by overwriting once with zeros, while secret keys stored on the internal persistent storage device are cleared by overwriting one time with a random pattern that is changed before each write"). For block erases, the evaluator shall also ensure that the TSS identifies the block erase command that is used and shall verify that the command used also addresses any copies of the plaintext key material that may be created, e.g., in order to optimize the use of Flash memory.
          </h:p>    
      </TSS>
      <Guidance>	      
        <h:p>
          There are a variety of concerns that may prevent or delay key destruction in some cases. The evaluator
          shall check that the guidance documentation identifies configurations or circumstances that may not 
          strictly conform to the key destruction requirement, and that this description is consistent with the
          relevant parts of the TSS and any other relevant Required Supplementary Information. The evaluator 
          shall check that the guidance documentation provides guidance on situations where key destruction may 
          be delayed at the physical layer and how such situations can be avoided or mitigated if possible.
        </h:p>
        <h:p>
          Some examples of what is expected to be in the documentation are provided here.
        </h:p>
        <h:p>
          When the TOE does not have full access to the physical memory, it is possible that the storage may be
          implementing wear-leveling and garbage collection. This may create additional copies of the key that 
          are logically inaccessible but persist physically. In this case, to mitigate this the drive should 
          support the TRIM command and implements garbage collection to destroy these persistent copies when
          not actively engaged in other tasks.
        </h:p>
        <h:p>
          Drive vendors implement garbage collection in a variety of different ways, as such there is a variable
          amount of time until data is truly removed from these solutions. There is a risk that data may persist
          for a longer amount of time if it is contained in a block with other data not ready for erasure. To 
          reduce this risk, the operating system and file system of the OE should support TRIM, instructing 
          the non-volatile memory to erase copies via garbage collection upon their deletion. If a RAID array
          is being used, only set-ups that support TRIM are utilized. If the drive is connected via PCI-Express,
          the operating system supports TRIM over that channel.
        </h:p>
        <h:p>
          The drive should be healthy and contains minimal corrupted data and should be end-of-lifed before a
          significant amount of damage to drive health occurs, this minimizes the risk that small amounts of
          potentially recoverable data may remain in damaged areas of the drive.
        </h:p>
      </Guidance>
      <Tests>
        <h:p><h:b>Evaluation Activity Note:</h:b> The following tests likely require the TOE developer to
          provide access to a test platform that provides the evaluator with tools that are
          typically not found on the end consumer version of the TOE.</h:p>
        <h:p>
          The evaluator shall perform the following tests for all keys and key material subject to destruction by the TOE. For these tests, the evaluator shall utilize an appropriate development environment (e.g., a virtual machine) and development tools
          (debuggers, simulators, etc.) to test that keys are cleared, including all copies of
          the key that may have been created internally by the TOE during normal cryptographic
          processing with that key.</h:p>
        <testlist>
          <test> Applied to each key held as plaintext in volatile memory and subject to
            destruction by overwrite by the TOE (whether or not the plaintext value is
            subsequently encrypted for storage in volatile or non-volatile memory). In the
            case where the only selection made for the destruction method key was removal of
            power, then this test is unnecessary. The evaluator shall: <h:br/>
            <h:ol>
              <h:li>Record the value of the key in the TOE subject to clearing.</h:li>
              <h:li>Cause the TOE to perform a normal cryptographic processing with the
                key from Step #1.</h:li>
              <h:li>Cause the TOE to clear the key.</h:li>
              <h:li>Cause the TOE to stop the execution but not exit.</h:li>
              <h:li>Cause the TOE to dump the entire memory of the TOE into a binary
                file.</h:li>
              <h:li>Search the content of the binary file created in Step #5 for instances
                of the known key value from Step #1.</h:li>
              <h:li>Break the key value from Step #1 into 3 similar sized pieces and
                perform a search using each piece.</h:li>
            </h:ol>
            <h:br/> Steps 1-6 ensure that the complete key does not exist anywhere in
            volatile memory. If a copy is found, then the test fails. <h:br/><h:br/>
            Step 7 ensures that partial key fragments do not remain in memory. If a fragment
            is found, there is a minuscule chance that it is not within the context of a key
            (e.g., some random bits that happen to match). If this is the case the test
            should be repeated with a different key in Step #1. If a fragment is found the
            test fails. <h:br/><h:br/>
          </test>
          <test> Applied to each key held in non-volatile memory and subject to destruction
            by overwrite by the TOE. The evaluator shall use special tools (as needed),
            provided by the TOE developer if necessary, to view the key storage location: <h:br/>
            <h:ol>
              <h:li>Record the value of the key in the TOE subject to clearing.</h:li>
              <h:li>Cause the TOE to perform a normal cryptographic processing with the
                key from Step #1.</h:li>
              <h:li>Cause the TOE to clear the key.</h:li>
              <h:li>Search the non-volatile memory the key was stored in for instances of
                the known key value from Step #1. If a copy is found, then the test
                fails.</h:li>
              <h:li>Break the key value from Step #1 into 3 or 4 similar sized pieces and
                perform a search using each piece. If a fragment is found then the test is
                repeated (as described for test 1 above), and if a fragment is found in the
                repeated test then the test fails.</h:li>
            </h:ol>
            <h:br/><h:br/>
          </test>
          <test> Applied to each key held as non-volatile memory and subject to destruction
            by overwrite by the TOE. The evaluator shall use special tools (as needed),
            provided by the TOE developer if necessary, to view the key storage location: <h:br/>
            <h:ol>
              <h:li>Record the storage location of the key in the TOE subject to
                clearing.</h:li>
              <h:li>Cause the TOE to perform a normal cryptographic processing with the
                key from Step #1.</h:li>
              <h:li>Cause the TOE to clear the key.</h:li>
              <h:li>Read the storage location in Step #1 of non-volatile memory to ensure
                the appropriate pattern is utilized. </h:li>
            </h:ol>
            <h:br/> The test succeeds if correct pattern is used to overwrite the key in
            the memory location. If the pattern is not found the test fails. </test>
        </testlist>
      </Tests>
    </aactivity>
  </f-element>
  <audit-event/>
        </f-component>

        <ext-comp-def title="Cryptographic Key Management" fam-id="FCS_CKM_EXT">
          <fam-behavior>This family defines requirements for management of cryptographic keys using mechanisms beyond what are specified in CC Part 2.
          </fam-behavior>
        </ext-comp-def>
    

        <f-component cc-id="fcs_ckm_ext.3" name="Cryptographic Key Generation" status="feat-based">
        <depends on="mdm-management"/>
          <comp-lev> requires the TSF to generate and manage the strength of Key Encryption Keys
            (KEKs).</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>FCS_CKM.1/AKG Cryptographic Key Generation - Asymmetric Key<h:br/>
          FCS_CKM.1/SKG Cryptographic Key Generation - Symmetric Key<h:br/>
          FCS_COP.1 Cryptographic Operation<h:br/>
          FCS_RBG.1 Random Bit Generation<h:br/>
          </dependencies>


          <f-element id="fel-kek-asym">
            <title>The TSF shall use <selectables>
                <selectable id="s-kek-asym"><snip>asymmetric KEKs</snip> of <assignable id="a-kek-asym-size">security strength greater than or equal
                    to 192 bits</assignable> security strength</selectable>
                <selectable id="s-kek-sym"><snip>symmetric KEKs</snip> of 256-bit security strength
              corresponding to at least the security strength of the keys encrypted by the KEK</selectable>
              </selectables>
              . </title>
            <ext-comp-def-title>
              <title>The TSF shall use <assignable>description of KEKs</assignable>.</title>
            </ext-comp-def-title>
            <note role="application"> The ST author selects all applicable KEK types implemented by
              the TOE. </note>
          </f-element>
          <f-element id="fel-kek-gen">
            <title>The TSF shall generate all KEKs using one of the following methods: <h:ul>
                <h:li>Derive the KEK from a Password Authentication Factor according to FCS_CKM_EXT.8.1<h:b>
              </h:b> and </h:li>
              </h:ul>
              <selectables linebreak="yes">
                <selectable>Generate the KEK using a DRBG that meets this profile (as specified in
              FCS_RBG.1)</selectable>
                <selectable>Generate the KEK using a key generation scheme that meets this profile
              (as specified in FCS_CKM.1)</selectable>
                <selectable>Combine the KEK from other KEKs in a way that preserves the effective
              entropy of each factor by <selectables>
                    <selectable>using an XOR operation</selectable>
                    <selectable>concatenating the keys and using a KDF (as described in SP
                      800-108)</selectable>
                    <selectable>concatenating the keys and using a KDF (as described in SP
                      800-56C)</selectable>
                    <selectable>encrypting one key with another</selectable>
                  </selectables>
                </selectable>
              </selectables>
              . </title>
            <ext-comp-def-title>
              <title>The TSF shall generate all KEKs using one of the following methods: <h:ul>
                  <h:li>Derive the KEK from a Password Authentication Factor according to
                    FCS_COP.1.1 and </h:li>
                </h:ul>
                <selectables linebreak="yes">
                  <selectable>Generate the KEK using a DRBG that meets this profile (as specified in
                FCS_RBG.1)</selectable>
                  <selectable>Generate the KEK using a key generation scheme that meets this profile
                (as specified in FCS_CKM.1)</selectable>
                  <selectable>Combine the KEK from other KEKs in a way that preserves the effective
                entropy of each factor by <selectables>
                      <selectable>using an XOR operation</selectable>
                      <selectable>concatenating the keys and using a KDF (as described in SP
                        800-108)</selectable>
                      <selectable id="s-dek-800-56">concatenating the keys and using a KDF (as described in SP
                        800-56C)</selectable>
                      <selectable>encrypting one key with another</selectable>
                    </selectables>
                  </selectable>
                </selectables>
                . </title>
            </ext-comp-def-title>
            <note role="application">
            <h:p> The conditioning of passwords is performed in accordance with FCS_CKM_EXT.8.1.</h:p>
            <h:p>It is expected that key generation derived from
              conditioning, using a DRBG or generation scheme, and through combination, will each be
              necessary to meet the requirements set out in this document. 
              <!--In particular, <xref to="Keys" /> has KEKs of each type: KEK_3 is generated, KEK_1 is derived from a
              Password Authentication Factor, and KEK_2 is combined from two KEKs. In <xref to="Keys" />, KEK_3 may either be a symmetric key generated from a DRBG or an
              asymmetric key generated using a key generation scheme according to FCS_CKM.1. --></h:p>
              <h:p>
              If combined, the ST author should describe which method of combination is used in
              order to justify that the effective entropy of each factor is preserved. </h:p>
              
              <h:p>SP 800-56C specifies a two-step key derivation procedure that employs an
              extraction-then-expansion technique for deriving keying material from a shared secret
              generated during a key establishment scheme. The Randomness Extraction step as
              described in Section 5 of SP 800-56C is followed by Key Expansion using the key
              derivation functions defined in SP 800-108 (as described in Section 6 of SP 800-56C).</h:p> </note>
            <aactivity>
              <TSS> The evaluator shall examine the key hierarchy section of the TSS to ensure that
                the formation of all KEKs are described and that the key sizes match that described
                by the ST author. The evaluator shall examine the key hierarchy section of the TSS
                to ensure that each key (DEKs, software-based key storage, and KEKs) is encrypted by
                keys of equal or greater security strength using one of the selected methods.<h:br/><h:br/>
                The evaluator shall review the TSS to verify that it contains a description of the
                conditioning used to derive KEKs. This description must include the size and storage
                location of salts. This activity may be performed in combination with that for
                FCS_CKM_EXT.8.1.<h:br/><h:br/> (conditional) If the symmetric KEK is generated
                by a DRBG, the evaluator shall review the TSS to determine that it describes how the
                functionality described by FCS_RBG.1 is invoked. The evaluator uses the description
                of the DRBG functionality in FCS_RBG.1 or documentation available for the operational
                environment to determine that the key size being requested is greater than or equal
                to the key size and mode to be used for the encryption/decryption of the data.<h:br/><h:br/>
                (conditional) If the KEK is generated according to an asymmetric key scheme, the
                evaluator shall review the TSS to determine that it describes how the functionality
                described by FCS_CKM.1/AKG is invoked. The evaluator uses the description of the key
                generation functionality in FCS_CKM.1/AKG or documentation available for the operational
                environment to determine that the key strength being requested is greater than or
                equal to 112 bits.<h:br/><h:br/> (conditional) If the KEK is formed from a
                combination, the evaluator shall verify that the TSS describes the method of
                combination and that this method is either an XOR, a KDF, or encryption.<h:br/><h:br/>
                (conditional) If a KDF is used, the evaluator shall ensure that the TSS includes a
                description of the key derivation function and shall verify the key derivation uses
                an approved derivation mode and key expansion algorithm according to SP 800-108. <h:br/><h:br/>
                (conditional) If <xref to="s-dek-800-56"/> is selected, the evaluator shall ensure
                the TSS includes a description of the randomness extraction step. The description
                must include <h:ul>
                  <h:li>How an approved untruncated MAC function is being used for the randomness
                extraction step and the evaluator shall verify the TSS describes that the output
                length (in bits) of the MAC function is at least as large as the targeted
                    security strength (in bits) of the parameter set employed by the key
                establishment scheme (see Tables 1-3 of SP 800-56C).</h:li>
                  <h:li>How the MAC function being used for the randomness extraction step is
                    related to the PRF used in the key expansion and verify the TSS description
                includes the correct MAC function:</h:li>
                  <h:ul>
                    <h:li>If an HMAC-hash is used in the randomness extraction step, then the same
                HMAC-hash (with the same hash function hash) is used as the PRF in the key
                      expansion step.</h:li>
                    <h:li>If an AES-CMAC (with key length 128, 192, or 256 bits) is used in the
                randomness extraction step, then AES-CMAC with a 128-bit key is used as the
                      PRF in the key expansion step.</h:li>
                  </h:ul>
                  <h:li>The lengths of the salt values being used in the randomness extraction
                    step and the evaluator shall verify the TSS description includes correct salt
                lengths:</h:li>
                  <h:ul>
                    <h:li>If an HMAC-hash is being used as the MAC, the salt length can be any
                      value up to the maximum bit length permitted for input to the hash function
                hash.</h:li>
                    <h:li>If an AES-CMAC is being used as the MAC, the salt length shall be the
                      same length as the AES key (i.e., 256 bits). </h:li>
                  </h:ul>
                </h:ul><h:br/>
                The evaluator shall also ensure that the documentation of the product's encryption
                key management is detailed enough that, after reading, the product's key management
                hierarchy is clear and that it meets the requirements to ensure the keys are
                adequately protected. The evaluator shall ensure that the documentation includes
                both an essay and one or more diagrams. Note that this may also be documented as
                separate proprietary evidence rather than being included in the TSS.<h:br/><h:br/>
              </TSS>
              <Guidance>There are no guidance evaluation activities for this component.<h:br/><h:br/></Guidance>
              <Tests> If a KDF is used, the evaluator shall perform one or more of the following
                tests to verify the correctness of the key derivation function, depending on the
                modes that are supported. <xref to="KDF"/> maps the data fields to the notations
                used in SP 800-108 and SP 800-56C. <h:br/><h:br/>
               <h:center><h:b>
                  <ctr ctr-type="Table" id="KDF">: Notations used in SP 800-108 and SP 800-56C</ctr>
               </h:b></h:center><h:br/>
                <h:table>
                  <h:tr class="header">
                    <h:td>Data Fields</h:td>
                    <h:td colspan="2">Notations</h:td>
                  </h:tr>
                  <h:tr class="header">
                    <h:td/>
                    <h:td>SP 800-108</h:td>
                    <h:td>SP
                      800-56C</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Pseudorandom
                      function</h:td>
                    <h:td>PRF</h:td>
                    <h:td>PRF</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Counter
                      length</h:td>
                    <h:td>r</h:td>
                    <h:td>r</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Length of output of
                      PRF</h:td>
                    <h:td>h</h:td>
                    <h:td>h</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Length of derived keying
                      material</h:td>
                    <h:td>L</h:td>
                    <h:td>L</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Length of input
                      values</h:td>
                    <h:td>I_length</h:td>
                    <h:td>I_length</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Pseudorandom input values I</h:td>
                    <h:td>K<h:sub>1</h:sub> (key derivation key)</h:td>
                    <h:td>Z (shared secret)</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Pseudorandom salt
                      values</h:td>
                    <h:td>n/a</h:td>
                    <h:td>s</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td>Randomness extraction
                      MAC</h:td>
                    <h:td>n/a</h:td>
                    <h:td>MAC</h:td>
                  </h:tr>
                </h:table>
                <h:br/><h:br/>
                <h:b>Counter
                Mode Tests:</h:b>
                <h:br/><h:br/> The evaluator shall determine the following
                characteristics of the key derivation function:<h:ul>
                  <h:li>One or more pseudorandom functions that are supported by the
                    implementation (PRF).</h:li>
                  <h:li>One or more of the values {8, 16, 24, 32} that equal the length of the
                    binary representation of the counter (r).</h:li>
                  <h:li>The length (in bits) of the output of the PRF (h).</h:li>
                  <h:li>Minimum and maximum values for the length (in bits) of the derived keying
                material (L). These values can be equal if only one value of L is supported.
                    These must be evenly divisible by h.</h:li>
                  <h:li>Up to two values of L that are NOT evenly divisible by h.</h:li>
                  <h:li>Location of the counter relative to fixed input data: before, after, or in
                the middle.<h:ul>
                      <h:li>Counter before fixed input data: fixed input data string length (in
                bytes), fixed input data string value.</h:li>
                      <h:li>Counter after fixed input data: fixed input data string length (in
                bytes), fixed input data string value.</h:li>
                      <h:li>Counter in the middle of fixed input data: length of data before
                        counter (in bytes), length of data after counter (in bytes), value of string
                input before counter, value of string input after counter.</h:li>
                    </h:ul></h:li>
                  <h:li>The length (I_length) of the input values I.</h:li>
                </h:ul><h:br/>
                For each supported combination of I_length, MAC, salt, PRF, counter location, value
                of r, and value of L, the evaluator shall generate 10 test vectors that include
                pseudorandom input values I, and pseudorandom salt values. If there is only one
                value of L that is evenly divisible by h, the evaluator shall generate 20 test
                vectors for it. For each test vector, the evaluator shall supply this data to the
                TOE in order to produce the keying material output.<h:br/><h:br/> The results from
                each test may either be obtained by the evaluator directly or by supplying the
                inputs to the implementer and receiving the results in response. To determine
                correctness, the evaluator shall compare the resulting values to those obtained by
                submitting the same inputs to a known good implementation. <h:br/><h:br/>
                <h:b>Feedback
                Mode Tests:</h:b>
                <h:br/> The evaluator shall determine the following
                characteristics of the key derivation function:<h:br/><h:ul>
                  <h:li>One or more pseudorandom functions that are supported by the
                    implementation (PRF).</h:li>
                  <h:li>The length (in bits) of the output of the PRF (h).</h:li>
                  <h:li>Minimum and maximum values for the length (in bits) of the derived keying
                material (L). These values can be equal if only one value of L is supported.
                    These must be evenly divisible by h.</h:li>
                  <h:li>Up to two values of L that are NOT evenly divisible by h.</h:li>
                  <h:li>Whether or not zero-length IVs are supported.</h:li>
                  <h:li>Whether or not a counter is used, and if so: <h:ul>
                      <h:li>One or more of the values {8, 16, 24, 32} that equal the length of the
                binary representation of the counter (r).</h:li>
                      <h:li>Location of the counter relative to fixed input data: before, after,
                        or in the middle.</h:li>
                      <h:ul>
                        <h:li>Counter before fixed input data: fixed input data string length (in
                bytes), fixed input data string value.</h:li>
                        <h:li>Counter after fixed input data: fixed input data string length (in
                bytes), fixed input data string value.</h:li>
                        <h:li>Counter in the middle of fixed input data: length of data before
                counter (in bytes), length of data after counter (in bytes), value of
                          string input before counter, value of string input after counter.</h:li>
                      </h:ul>
                    </h:ul>
                  </h:li>
                  <h:li>The length (I_length) of the input values I.</h:li>
                </h:ul><h:br/>
                For each supported combination of I_length, MAC, salt, PRF, counter location (if a
                counter is used), value of r (if a counter is used), and value of L, the evaluator
                shall generate 10 test vectors that include pseudorandom input values I and
                pseudorandom salt values. If the KDF supports zero-length IVs, five of these test
                vectors will be accompanied by pseudorandom IVs and the other five will use
                zero-length IVs. If zero-length IVs are not supported, each test vector will be
                accompanied by an pseudorandom IV. If there is only one value of L that is evenly
                divisible by h, the evaluator shall generate 20 test vectors for it.<h:br/><h:br/>
                For each test vector, the evaluator shall supply this data to the TOE in order to
                produce the keying material output. The results from each test may either be
                obtained by the evaluator directly or by supplying the inputs to the implementer and
                receiving the results in response. To determine correctness, the evaluator shall
                compare the resulting values to those obtained by submitting the same inputs to a
                known good implementation.<h:br/><h:br/>
                <h:b>Double Pipeline Iteration Mode Tests:</h:b><h:br/>
                The evaluator shall determine the following characteristics of the key derivation
                function:<h:br/><h:ul>
                  <h:li>One or more pseudorandom functions that are supported by the
                    implementation (PRF).</h:li>
                  <h:li>The length (in bits) of the output of the PRF (h).</h:li>
                  <h:li>Minimum and maximum values for the length (in bits) of the derived keying
                material (L). These values can be equal if only one value of L is supported.
                    These must be evenly divisible by h.</h:li>
                  <h:li>Up to two values of L that are NOT evenly divisible by h.</h:li>
                  <h:li>Whether or not a counter is used, and if so:<h:ul>
                      <h:li>One or more of the values {8, 16, 24, 32} that equal the length of the
                binary representation of the counter (r).</h:li>
                      <h:li>Location of the counter relative to fixed input data: before, after, or
                in the middle. <h:ul>
                          <h:li>Counter before fixed input data: fixed input data string length
                            (in bytes), fixed input data string value.</h:li>
                          <h:li>Counter after fixed input data: fixed input data string length (in
                bytes), fixed input data string value.</h:li>
                          <h:li>Counter in the middle of fixed input data: length of data before
                counter (in bytes), length of data after counter (in bytes), value of
                            string input before counter, value of string input after
                            counter.</h:li>
                        </h:ul>
                      </h:li>
                    </h:ul>
                  </h:li>
                  <h:li>The length (I_length) of the input values I.</h:li>
                </h:ul><h:br/>
                For each supported combination of I_length, MAC, salt, PRF, counter location (if a
                counter is used), value of r (if a counter is used), and value of L, the evaluator
                shall generate 10 test vectors that include pseudorandom input values I, and
                pseudorandom salt values. If there is only one value of L that is evenly divisible
                by h, the evaluator shall generate 20 test vectors for it. <h:br/><h:br/> For each
                test vector, the evaluator shall supply this data to the TOE in order to produce the
                keying material output. The results from each test may either be obtained by the
                evaluator directly or by supplying the inputs to the implementer and receiving the
                results in response. To determine correctness, the evaluator shall compare the
                resulting values to those obtained by submitting the same inputs to a known good
                implementation. </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <f-component cc-id="fcs_ckm_ext.5" name="TSF Wipe" status="feat-based">
        <depends on="mdm-management"/>
          
          <comp-lev> requires the TSF to implement a cryptographic or other mechanism to make non-TSF data unreadable.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>TSF wipe of sensitive data.</h:li>
            <!-- <h:li>TSF wipe of enterprise data.</h:li> -->
          </h:ul></management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included
            in the PP, PP-Module, functional package or ST:
          <h:ul>
            <h:li>Failure of the wipe.</h:li>
          </h:ul></audit>
          <dependencies>
            FCS_CKM.6 Timing and Event of Cryptographic Key Destruction<h:br/>
            FCS_RBG.1 Random Bit Generation
          </dependencies>
          
          <f-element id="fel-wipe-how">
            <title>The TSF shall wipe all sensitive data by 
            <selectables linebreak="yes">
              <selectable>Cryptographically erasing the encrypted DEKs or the KEKs in non-volatile
                 memory by following the requirements in FCS_CKM.6.2
              </selectable>

              <selectable>the invocation of an interface provided by the underlying platform that
                <selectables>
                  <selectable>logically addresses the storage location of the sensitive data and performs a 
                    <selectables>
                      <selectable>single</selectable>
                      <selectable><assignable>ST author defined multi-pass</assignable></selectable>
                    </selectables>overwrite consisting of
                    <selectables>
                      <selectable>zeroes</selectable>
                      <selectable>ones</selectable>
                      <selectable>pseudo-random pattern</selectable>
                    </selectables>
                  </selectable>
                  <selectable>instructs the underlying platform to destroy the sensitive data
                  </selectable>
                </selectables>
              </selectable>
              <!-- <selectable>Overwriting all sensitive data according to the following rules: <h:ul>
                    <h:li>For EEPROM, the destruction shall be executed by a single direct overwrite consisting of a pseudo random pattern using the TSF’s DRBG (as specified in FCS_RBG.1, followed by a read-verify. </h:li>
                    <h:li>For flash memory, that is not wear-leveled, the destruction shall be executed <selectables>
                        <selectable>by a single direct overwrite consisting of zeros followed by a read-verify</selectable>
                        <selectable>by a block erase that erases the reference to memory that stores data as well as the data itself</selectable></selectables>. </h:li>
                    <h:li>For flash memory, that is wear-leveled, the destruction shall be executed <selectables>
                        <selectable>by a single direct overwrite consisting of zeros</selectable>
                        <selectable>by a block erase</selectable></selectables>. </h:li>
                   <h:li>For non-volatile memory other than EEPROM and flash, the destruction shall be executed by a single direct overwrite with a random pattern that is changed before each write. </h:li>
                  </h:ul>
                </selectable> -->
              </selectables>. 
            </title>
            <note role="Application"> 
              Sensitive data is all non-TSF data, including all user or enterprise data.
            </note>
          </f-element>
          <f-element id="fel-wipe-power">
            <title>The TSF shall perform a power cycle on conclusion of the wipe procedure. </title>
            
            <aactivity>
              <TSS> 
                The evaluator shall check to ensure the TSS describes how the device is wiped, the type of clearing procedure that is performed (cryptographic erase or overwrite) and, if overwrite is performed, the overwrite procedure (overwrite with zeros, overwrite three or more times by a different alternating pattern, overwrite with random pattern, or block erase). <h:br/><h:br/>
                If different types of memory are used to store the data to be protected, the evaluator shall check to ensure that the TSS describes the clearing procedure in terms of the memory in which the data are stored (for example, data stored on flash are cleared by overwriting once with zeros, while data stored on the internal persistent storage device are cleared by overwriting three times with a random pattern that is changed before each write). <h:br/><h:br/>
              </TSS>
              <Guidance>
                The evaluator shall verify that the operational guidance describes how to enable encryption, if it is not enabled by default. Additionally the evaluator shall verify that the operational guidance describes how to initiate the wipe command.<h:br/><h:br/>
              </Guidance>
              <Tests> 
                <testlist>
                  <test>The evaluator shall perform one of the following tests. The test before and after the wipe command shall be identical. This test shall be repeated for each type of memory used to store the data to be protected. <h:br/><h:br/>
                  <testlist>
                    <test><h:b>For File-based Methods:</h:b><h:br/>
                      The evaluator shall enable encryption according to the operational guidance. The evaluator shall create a user data (sensitive data) file, for example, by using an application. The evaluator shall use a tool provided by the developer to examine this data stored in memory (for example, by examining a decrypted file). The evaluator shall initiate the wipe command according to the operational guidance provided for FMT_SMF_EXT.1. The evaluator shall use a tool provided by the developer to examine the same data location in memory to verify that the data has been wiped according to the method described in the TSS (for example, the files are still encrypted and cannot be accessed). </test>
                    <test><h:b>For Volume-based Methods:</h:b><h:br/>
                      The evaluator shall enable encryption according to the operational guidance. The evaluator shall create a unique data string, for example, by using an application. The evaluator shall use a tool provided by the developer to search decrypted data for the unique string. The evaluator shall initiate the wipe command according to the operational guidance provided for FMT_SMF_EXT.1. The evaluator shall use a tool provided by the developer to search for the same unique string in decrypted memory to verify that the data has been wiped according to the method described in the TSS (for example, the files are still encrypted and cannot be accessed).</test>
                  </testlist>               
                  </test>
                  <test>
                    The evaluator shall cause the device to wipe and verify that the wipe concludes with a power cycle.                                 
                  </test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
	  <audit-event>
	    <audit-event-descr><selectables onlyone="yes"><selectable>Failure of the wipe</selectable><selectable>none</selectable></selectables></audit-event-descr>
	  </audit-event>
        </f-component>
        
        <f-component id="sfr-fcs-ckm-ext-7" cc-id="fcs_ckm_ext.7" name="Cryptographic Key Agreement" status="feat-based">
          <depends on="bluetooth-support"/>
          <depends on="key-agreement-support"/>
          
          <consistency-rationale/>
          <comp-lev>requires that cryptographic key agreement be performed in accordance with specified standards.</comp-lev>
          <management/>
          <audit>
            The following actions should be auditable if FAU_GEN Security audit data generation is
            included in the PP, PP-Module, functional package or ST:<h:br/><h:ul>
              <h:li>minimal: Success and failure of the activity;</h:li>
              <h:li>basic: The object attribute(s), and object value(s) excluding any sensitive information.</h:li>
            </h:ul>
          </audit>
          <dependencies><h:br/>
            <h:br/>[FDP_ITC.1 Import of user data without security attributes, or
            <h:br/>FDP_ITC.2 Import of user data with security attributes, or 
            <h:br/>FCS_CKM.1/AKG Cryptographic Key Generation - Asymmetric Key, or
            <h:br/>FCS_CKM.1/SKG Cryptographic Key Generation - Symmetric Key, or
            <h:br/>FCS_CKM.5 Cryptographic key derivation, or
            <h:br/>FCS_CKM_EXT.8 Password-based key derivation],
            <h:br/>[FCS_CKM.2 Cryptographic key distribution, or
            <h:br/>FCS_COP.1 Cryptographic operation]
            <h:br/>FCS_CKM.6 Timing and event of cryptographic key destruction
            <h:br/>FCS_COP.1 Cryptographic operation 
          </dependencies>
          
          
          <f-element id="fcs-ckm-ext-7e1">
            <title>
              The TSF shall derive shared cryptographic keys with input from multiple parties in accordance 
              with specified cryptographic key agreement algorithms  
              <selectables>
                <tabularize id="fcs-ckm-ext-7-sels" title="Allowable choices for FCS_CKM_EXT.7">
                  <textcol>Identifier</textcol>
                  <selectcol>Cryptographic algorithm</selectcol>
                  <reqtext>and specified cryptographic parameters</reqtext>
                  <selectcol>Cryptographic parameters</selectcol>
                  <reqtext>that meet the following:</reqtext>
                  <selectcol>List of standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-ckm-ext-7-sels"/> provides the allowable choices for
                    completion of the selection operations of FCS_CKM_EXT.7.</reqtext>
                </tabularize>
                
                <selectable id="sel-fcs-ckm-kat-kas2">
                  <col>KAS2</col>
                  <col>RSA</col>
                  <col>Modulus size <selectables>
                    <selectable>3072</selectable>
                    <selectable>4096</selectable>
                    <selectable>6144</selectable>
                    <selectable>8192</selectable>
                  </selectables> bits</col>
                  <col>NIST SP 800-56B Revision 2 (Section 8.3) [KAS2]</col>
                </selectable>
                
                <selectable id="sel-fcs-ckm-kat-dh">
                  <col>DH</col>
                  <col>Finite Field Cryptography Diffie-Hellman</col>
                  <col>Static domain parameters approved for <selectables>
                    <selectable>IKE Groups <selectables>
                      <selectable id="sel-kat-ffc-modp3072">MODP-3072</selectable>
                      <selectable id="sel-kat-ffc-modp4096">MODP-4096</selectable>
                      <selectable id="sel-kat-ffc-modp6144">MODP-6144</selectable>
                      <selectable id="sel-kat-ffc-modp8192">MODP-8192</selectable>
                    </selectables></selectable>
                    <selectable>TLS Groups <selectables>
                      <selectable id="sel-kat-ffc-ffdhe3072">ffdhe3072</selectable>
                      <selectable id="sel-kat-ffc-ffdhe4096">ffdhe4096</selectable>
                      <selectable id="sel-kat-ffc-ffdhe6144">ffdhe6144</selectable>
                      <selectable id="sel-kat-ffc-ffdhe8192">ffdhe8192</selectable>
                    </selectables></selectable></selectables>
                  </col>
                  <col>
                    NIST SP 800-56A Revision 3 (Section 5.7.1.1) [DH]<h:p/>
                    <selectables>
                      <selectable>RFC 3526 [IKE groups]</selectable>
                      <selectable>RFC 7919 [TLS groups]</selectable></selectables>
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-ckm-kat-ecdh">
                  <col>ECDH</col>
                  <col>Elliptic Curve Diffie-Hellman</col>
                  <col>Elliptic Curve <selectables>
                    <selectable id="sel-exp-kat-ecdh-P256">P-256</selectable>
                    <selectable id="sel-exp-kat-ecdh-P384">P-384</selectable>
                    <selectable id="sel-exp-kat-ecdh-P521">P-521</selectable></selectables>
                  </col>
                  <col>
                    NIST SP 800-56A Revision 3 (Section 5.7.1.2) [ECDH]<h:p/>
                    NIST SP 800-186 (Section 3.2.1) [NIST Curves]
                  </col>
                </selectable>
              </selectables>
            </title>
            
            <ext-comp-def-title>
              <title>The TSF shall derive shared cryptographic keys with input from multiple parties in accordance 
                with specified cryptographic key agreement algorithms <assignable>cryptographic algorithm</assignable>
                and specified cryptographic parameters <assignable>cryptographic parameters</assignable> that meet the
                following: <assignable>list of standards</assignable></title>
            </ext-comp-def-title>
            
            <note role="application">
              This SFR is claimed if the TSF supports key agreement schemes as a method of key establishment for trusted channels. This will generally apply to all conformant TOEs, except in the rare (but possible) case where only key encapsulation is used.<h:p/>
              All of the above algorithms with the selectable parameters are CNSA compliant with the exception of P-256 ECDH. This may only be selected if the the <xref to="mod-bluetooth"/> is included in the ST and P-256 may only be used specifically for Bluetooth functions.<h:p/>
              
            </note>
            <aactivity>
              <TSS>
                The evaluator shall ensure that the TSS documents that the security strength of the
                material contributed by the TOE is sufficient for the security strength of the key and the
                agreement method. If support for P-256 is claimed, the evaluator shall examine the TSS to verify that it is only used for Bluetooth functions.
              </TSS>
              <Guidance>There are no guidance EAs for this component.</Guidance>
              <Tests>
                The following tests are conditional based upon the selections made in the SFR.
                The evaluator shall perform the following test or witness respective tests
                executed by the developer. The tests must be executed on a platform that is as 
                close as practically possible to the operational platform (but which may be 
                instrumented in terms of, for example, use of a debug mode). Where the test is 
                not carried out on the TOE itself, the test platform shall be identified and the 
                differences between test environment and TOE execution environment shall be 
                described.<h:p/>
                
                <!-- KAS2 -->
                <h:br/><h:b>KAS2</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Parameters</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">KAS2</h:td>
                    <h:td valign="top">RSA</h:td>
                    <h:td valign="top">Modulus Size [<h:b>selection:</h:b> 3072, 4096,
                      6144, 8192] bits</h:td>
                    <h:td valign="top">NIST SP 800-56B Revision 2 (Section 8.3) [KAS2]</h:td>
                  </h:tr>
                </h:table><h:p/>						
                To test the TOE’s implementation of the of the KAS2 RSA Key Agreement scheme, the evaluator
                shall perform the Algorithm Functional Test and Validation Test using the 
                following input parameters:<h:ul>
                  <h:li>RSA Private key format [Basic, Prime Factor, Chinese Remainder Theorem]</h:li>
                  <h:li>Modulo value [3072, 4096, 6144, 8192]</h:li>
                  <h:li>Role [initiator, responder]</h:li></h:ul><h:p/>
                The evaluator shall generate a test group (i.e., set of tests) for each parameter
                value of the above parameter type with the largest number of supported values.
                For example, if the TOE supports all five Modulo values, then the evaluator 
                shall generate five test groups. Each of the above supported parameter values
                must be included in at least one test group.<h:p/>
                Regardless of how many parameter values are supported, there must be at least two 
                test groups.<h:p/>
                Half of the test groups are designated as Algorithm Functional Tests (AFT) and the 
                remainder are designated as Validation Tests (VAT). If there is an odd number of 
                groups, then the extra group is designated randomly as either AFT or VAT.<h:p/>
                <h:br/><h:i><h:b>Algorithm Functional Test</h:b></h:i><h:br/>
                For each test group designated as AFT, the evaluator shall generate 10 test 
                cases using random data (except for a fixed public exponent, if supported). 
                The resulting shared secrets shall be compared with those generated by a 
                known-good implementation using the same inputs.<h:p/>
                <h:br/><h:i><h:b>Validation Test</h:b></h:i><h:br/>
                For each test group designated as VAT, the evaluator shall generate 25 test cases are
                using random data (except for a fixed public exponent, if supported). Of the 25
                test cases:<h:ul>
                  <h:li>Two test cases must have a shared secret with a leading nibble of 0s,</h:li>
                  <h:li>Two test cases have modified derived key material,</h:li>
                  <h:li>Two test cases have modified tags, if key confirmation is supported,</h:li>
                  <h:li>Two test cases have modified MACs, if key confirmation is supported, and</h:li>
                  <h:li>The remaining test cases are not modified.</h:li></h:ul><h:p/>
                To determine correctness, the evaluator shall confirm that the resulting 25 shared 
                secrets correspond as expected for both the modified and unmodified values.<h:p/>
                
                <!-- FFC Diffie-Hellman Key Agreement -->
                <h:br/><h:b>FFC Diffie-Hellman Key Agreement</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Parameters</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">DH</h:td>
                    <h:td valign="top">Finite Field Cryptography Diffie-Hellman</h:td>
                    <h:td valign="top">Static domain parameters approved for [<h:b>selection:</h:b>
                      IKE groups [<h:b>selection:</h:b> MODP-3072, MODP-4096,
                      MODP-6144, MODP-8192], TLS groups [<h:b>selection:</h:b> 
                      ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192]]</h:td>
                    <h:td valign="top">NIST SP 800-56A Revision 3 (Section 5.7.1.1) [DH]<h:p/>
                      [<h:b>selection:</h:b> RFC 3526 [IKE Groups], RFC 7919 [TLS Groups]]</h:td>
                  </h:tr>
                </h:table><h:p/>						
                To test the TOE’s implementation of FFC Diffie-Hellman Key Agreement, the evaluator shall
                perform the Algorithm Functional Test and Validation Test using the following 
                input parameters:<h:ul>
                  <h:li>Domain Parameter Group [MODP-3072, MODP-4096, MODP-6144, MODP-8192, 
                    ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192]</h:li></h:ul><h:p/>
                <h:br/><h:i><h:b>Algorithm Functional Test</h:b></h:i><h:br/>
                For each supported domain parameter group, the evaluator shall generate 10 test
                cases by generating the initiator and responder secret keys using random data,
                calculating the responder public key, and creating the shared secret. The 
                resulting shared secrets shall be compared with those generated by a known-good 
                implementation using the same inputs.<h:p/>
                <h:br/><h:i><h:b>Validation Test</h:b></h:i><h:br/>
                For each supported combination of the above parameters the evaluator shall
                generate 15 Diffie Hellman initiator/responder key pairs using the key generation
                function of a known-good implementation. For each set of key pairs, the 
                evaluator shall modify five initiator private key values. The remaining key
                values are left unchanged (i.e., correct). To determine correctness, the 
                evaluator shall confirm that the 15 shared secrets correspond as expected for 
                both the modified and unmodified inputs.<h:p/>
                
                <!-- Elliptic Curve Diffie-Hellman Key Agreement -->
                <h:br/><h:b>Elliptic Curve Diffie-Hellman Key Agreement</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Parameters</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">ECDH</h:td>
                    <h:td valign="top">Elliptic Curve Diffie-Hellman</h:td>
                    <h:td valign="top">Elliptic Curve [<h:b>selection:</h:b> P-256, P-384, P-521</h:td>
                    <h:td valign="top">NIST SP 800-56A Revision 3 (Section 5.7.1.2) [ECDH]<h:p/>
                      NIST SP 800-186 (Section 3.2.1) [NIST Curves]</h:td>
                  </h:tr>
                </h:table><h:p/>						
                To test the TOE’s implementation of Elliptic Curve Diffie-Hellman Key Agreement,
                the evaluator shall perform the Algorithm Functional Test and Validation Test 
                using the following input parameters:<h:ul>
                  <h:li>Elliptic Curve [P-256, P-384, P-521]</h:li></h:ul><h:p/>
                <h:br/><h:i><h:b>Algorithm Functional Test</h:b></h:i><h:br/>
                For each supported Elliptic Curve the evaluator shall generate 10 test cases by
                generating the initiator and responder secret keys using random data, calculating 
                the responder public key, and creating the shared secret. The resulting shared 
                secrets shall be compared with those generated by a known-good implementation using
                the same inputs.<h:p/>
                <h:br/><h:i><h:b>Validation Test</h:b></h:i><h:br/>
                For each supported Elliptic Curve the evaluator shall generate 15 Diffie Hellman
                initiator/responder key pairs using the key generation function of a known-good 
                implementation. For each set of key pairs, the evaluator shall modify five 
                initiator private key values. The remaining key values are left unchanged (i.e.,
                correct). To determine correctness, the evaluator shall confirm that the 15 
                shared secrets correspond as expected for the modified and unmodified values.<h:p/>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <f-component id="sfr-fcs-ckm-ext-8" cc-id="fcs_ckm_ext.8" name="Password-Based Key Derivation" status="feat-based">   
        <depends on="mdm-management"/>       
          <consistency-rationale/>
          <comp-lev>requires that password-based key derivation be performed in accordance with specified standards.</comp-lev>
          <management/>
          <audit>
            The following actions should be auditable if FAU_GEN Security audit data generation is
            included in the PP, PP-Module, functional package or ST:<h:br/><h:ul>
              <h:li>minimal: Success and failure of the activity;</h:li>
              <h:li>basic: The object attribute(s), and object value(s) excluding any sensitive information.</h:li>
            </h:ul>
          </audit>
          <dependencies><h:br/>
            <h:br/>[FCS_CKM.2 Cryptographic Key Distribution, or
            <h:br/>FCS_COP.1 Cryptographic Operation]
            <h:br/>FCS_CKM_EXT.7 Cryptographic Key Agreement],
            <h:br/>FCS_CKM.6 Timing and Event of Cryptographic Key Destruction
          </dependencies>
          
          <f-element id="fcs-ckm-ext-8-1">
            <title>
              The TSF shall perform password-based key derivation functions in accordance with a specified 
              cryptographic algorithm [<h:i>HMAC-</h:i><selectables>
                <selectable>SHA-256</selectable>
                <selectable>SHA-384</selectable>
                <selectable>SHA-512</selectable>
              </selectables>, with iteration count of 
              <assignable>number of iterations</assignable>
              using a randomly generated salt of length
              <assignable>equal to or greater than 128</assignable>
              and output cryptographic key sizes <selectables>
                <selectable>256</selectable>
                <selectable>384</selectable>
                <selectable>512</selectable></selectables>
              bits that meet the following standard: [<h:i>NIST SP 800-132 (Section 5.3) [PBKDF2]</h:i>].
            </title>
            <note role="application">
              NIST recommends a minimum “number of iterations” of 1000 but prefers the largest number feasible
              given performance constraints.<h:p/>
              NIST recommends that the randomly generated portion of the salt have length of at least 128 bits 
              and must be derived from Random Bit Generation.<h:p/>
              <!--If this SFR is claimed, then FCS_COP.1/KeyedHash and FCS_RBG.1 must also be claimed.<h:p/>-->
              For CNSA compliance, only SHA-384 or SHA-512 may be used.
            </note>
            <aactivity>
              <TSS>
                The evaluator shall verify that the TSS documents that the selection of the keyed hash
                algorithm, iteration count, length of salt, and other mitigations are sufficient for the
                security strength of the key derived.<h:p/>
                The evaluator shall examine the TSS to verify that the salt is generated in accordance with the
                relevant specification.<h:p/>
                The evaluator shall examine the TSS to determine whether the TOE implements other 
                mitigations against password-exhaustion attacks. Examples include the use of 
                interface-based mitigations and secret salts.
              </TSS>
              <Guidance/>
              <Tests>
                The following tests are conditional based upon the selections made in the SFR.
                The evaluator shall perform the following test or witness respective tests
                executed by the developer. The tests must be executed on a platform that is as 
                close as practically possible to the operational platform (but which may be 
                instrumented in terms of, for example, use of a debug mode). Where the test is 
                not carried out on the TOE itself, the test platform shall be identified and the 
                differences between test environment and TOE execution environment shall be 
                described.<h:p/>
                
                To test the TOE’s ability to derive cryptographic keys from a password using PBKDF2 the
                evaluator shall perform the Algorithm Functional Test using the following input 
                parameters:<h:ul>
                  <h:li>HMAC algorithms [SHA-384, SHA-512]</h:li>
                  <h:li>Iteration count [1-10000000]</h:li>
                  <h:li>Derived Key size [256, 384, 512] bits</h:li>
                  <h:li>Password length [8-128] bytes</h:li>
                  <h:li>Salt length [128-4096] bits in multiples of 8.</h:li></h:ul><h:p/>
                
                <h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
                For each supported HMAC algorithm, the evaluator shall generate 50 test cases using 
                supported values for the above parameters such that<h:ul>
                  <h:li>All supported derived key sizes are tested at least 10 times, </h:li>
                  <h:li>Iteration counts are random values between the supported minimum and maximum
                    values, with the supported minimum and maximum tested at least once each, </h:li>
                  <h:li>Passwords are random byte strings representing upper- and lower-case letters of random
                    supported lengths such that the minimum and maximum lengths are tested at least once, and </h:li>
                  <h:li>Salts are random values between the supported minimum and maximum lengths such that
                    the supported minimum and maximum lengths are both tested at least once. </h:li></h:ul><h:p/>
                The evaluator shall compare the resulting keys from each test case with keys derived using a
                known-good implementation with the same input parameters.
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <!-- FCS_COP.1/AEAD Cryptographic Operation – Authenticated Encryption with Associated Data -->	
        <f-component id="sfr-fcs-cop-1-aead" cc-id="fcs_cop.1" iteration="AEAD" name="Cryptographic Operation – Authenticated Encryption with Associated Data">
          <f-element id="fcs-cop-1e1-aead">
            <title>
              The TSF shall perform [<h:i>authenticated encryption with associated data</h:i>] in accordance with a specified 
              cryptographic algorithm 
              <selectables>
                <tabularize id="fcs-cop-aead-sels" title="Allowable choices for FCS_COP.1/AEAD">
                  <textcol>Identifier</textcol>
                  <reqtext/>
                  <selectcol>Cryptographic algorithm</selectcol>
                  <reqtext>and cryptographic key sizes</reqtext>
                  <selectcol>Cryptographic key sizes</selectcol>
                  <reqtext>that meet the following:</reqtext>
                  <selectcol>List of standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-cop-aead-sels"/> provides the allowable choices for
                    completion of the selection operations of FCS_COP.1/AEAD.</reqtext>
                </tabularize>
                
                <selectable id="sel-fcs-cop-aead-aes-ccm">
                  <col>AES-CCM</col>
                  <col>AES in CCM mode with unpredictable, non-repeating nonce, minimum size of 64 bits</col>
                  <col><selectables>
                    <selectable>128 bits</selectable>
                    <selectable>256 bits</selectable>
                  </selectables></col>
                  <col><selectables>
                    <selectable>ISO/IEC 18033-3:2010 (Subclause 5.2)</selectable>
                    <selectable>FIPS PUB 197</selectable></selectables> [AES]<h:p/>
                    <selectables>
                      <selectable>ISO/IEC 19772:2020 (Clause 7)</selectable> 
                      <selectable>NIST SP 800-38C</selectable></selectables> [CCM]
                  </col></selectable>
                
                <selectable id="sel-fcs-cop-aead-aes-gcm">
                  <col>AES-GCM</col>
                  <col>AES in GCM mode with non-repeating IVs using <selectables>
                    <selectable>deterministic</selectable>
                    <selectable>DRBG-based</selectable></selectables>,
                    IV construction; the tag must be of length
                    <selectables>
                      <selectable>96</selectable>
                      <selectable>104</selectable>
                      <selectable>112</selectable>
                      <selectable>120</selectable>
                      <selectable>128</selectable>
                    </selectables> bits.
                  </col>
                  <col>256 bits</col>
                  <col><selectables>
                    <selectable>ISO/IEC 18033-3:2010 (Subclause 5.2)</selectable>
                    <selectable>FIPS PUB 197</selectable></selectables> [AES]<h:p/>
                    <selectables>
                      <selectable>ISO/IEC 19772:2020 (Clause 10)</selectable> 
                      <selectable>NIST SP 800-38D</selectable></selectables> [GCM]
                  </col></selectable>
              </selectables>
            </title>
            <note role="application">
              The use of 256-bit keys for AES encryption is required by CNSA. 128-bit keys may only be used when the the <xref to="mod-bluetooth"/> is claimed and only for the purpose of Bluetooth communications.
            </note>
            <aactivity>
              <TSS>
                The evaluator shall examine the TSS to ensure that it describes the construction of any IVs,
                nonces, and tags in conformance with the relevant specifications.<h:p/>
                If a CCM mode algorithm is selected, then the evaluator shall examine the TOE summary
                specification to confirm that it describes how the nonce is generated and that the same nonce is
                never reused to encrypt different plaintext pairs under the same key. If the use of 128-bit keys is selected in conjunction with AES-CCM, the evaluator shall verify that the TSS describes the use of 128-bit AES-CCM as being solely for Bluetooth.<h:p/>
                If a GCM mode algorithm is selected, then the evaluator shall examine the TOE summary
                specification to confirm that it describes how the IV is generated and that the same IV is never
                reused to encrypt different plaintext pairs under the same key. The evaluator shall also confirm
                that for each invocation of GCM, the length of the plaintext is at most (2<h:sup>32</h:sup>)-2 blocks.
              </TSS>
              <Guidance/>
              <Tests>
                The following tests may require the developer to provide access to a test platform that
                provides the evaluator with tools that are typically not found on factory products.<h:p/>
                The following tests are conditional based upon the selections made in the SFR. The
                evaluator shall perform the following test or witness respective tests executed by
                the developer. The tests must be executed on a platform that is as close as practically
                possible to the operational platform (but which may be instrumented in terms of,
                for example, use of a debug mode). Where the test is not carried out on the TOE
                itself, the test platform shall be identified and the differences between test
                environment and TOE execution environment shall be described.<h:p/>
                
                <!-- AES-CCM -->
                <h:br/><h:b>AES-CCM</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Key Sizes</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">AES-CCM </h:td>
                    <h:td valign="top">AES in CCM mode with non-repeating nonce, minimum size
                      of 64 bits</h:td>
                    <h:td valign="top">[<h:b>selection:</h:b>128 bits, 256 bits]</h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> ISO/IEC 18033-3:2010 (Subclause 5.2),
                      FIPS PUB 197] [AES]<h:p/>
                      [<h:b>selection:</h:b>  ISO/IEC 19772:2020 (Clause 7), NIST SP 800-38C] [CCM]</h:td>
                  </h:tr>
                </h:table><h:p/>	
                To test the TOE’s implementation of AES-CCM authenticated encryption functionality the
                evaluator shall perform the Algorithm Functional Tests described below using the following
                input parameters:<h:ul>
                  <h:li>Key Size [128,256] bits</h:li>
                  <h:li>Associated data size [0-65536] bits in increments of 8</h:li>
                  <h:li>Payload size [0-256] bits in increments of 8</h:li>
                  <h:li>IV/Nonce size [64-104] bits in increments of 8</h:li>
                  <h:li>Tag size [32-128] bits in increments of 16</h:li></h:ul><h:p/>
                <h:br/><h:b>Algorithm Functional Tests</h:b><h:p/>
                Unless otherwise specified, the following tests should use random data, a tag size of 128 bits,
                IV/Nonce size of 104 bits, payload size of 256 bits, and associated data size of 256 bits. If any of
                these values are not supported, any supported value may be used. The evaluator shall compare
                the output from each test case against results generated by a known-good implementation with
                the same input parameters.<h:p/>
                <h:br/><h:b><h:i>Variable Associated Data Test</h:i></h:b><h:p/>
                For each claimed key size, and for each supported associated data size from 0 through 256 bits in
                increments of 8 bits, the TOE must be tested by encrypting 10 test cases using all random data.
                In addition, for each key size, the TOE must be tested by encrypting 10 cases with associated
                data lengths of 65536 bits, if supported.<h:p/>				
                <h:br/><h:b><h:i>Variable Payload Test</h:i></h:b><h:p/>
                For each claimed key size, and for each supported payload size from 0 through 256 bits in
                increments of 8 bits, the TOE must be tested by encrypting 10 test cases using all random data.<h:p/>
                <h:br/><h:b><h:i>Variable Nonce Test</h:i></h:b><h:p/>
                For each claimed key size, and for each supported IV/Nonce size from 64 through 104 bits in
                increments of 8 bits, the TOE must be tested by encrypting 10 test cases using all random data.<h:p/>
                <h:br/><h:b><h:i>Variable Tag Test</h:i></h:b><h:p/>
                For each claimed key size, and for each supported tag size from 32 through 128 bits in
                increments of 16 bits, the TOE must be tested by encrypting 10 test cases using all random data.<h:p/>
                <h:br/><h:b><h:i>Decryption Verification Test</h:i></h:b><h:p/>
                For each claimed key size, for each supported associated data size from 0 through 256 bits in
                increments of 8 bits, for each supported payload size from 0 through 256 bits in increments of 8
                bits, for each supported IV/Nonce size from 64 through 104 bits in increments of 8 bits, and for
                each supported tag size from 32 through 128 bits in increments of 16 bits, the TOE must be
                tested by decrypting 10 test cases using all random data.<h:p/>					
                
                <!-- AES-GCM -->
                <h:br/><h:b>AES-GCM</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Key Sizes</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">AES-GCM </h:td>
                    <h:td valign="top">AES in GCM mode with non-repeating IVs using 
                      [<h:b>selection:</h:b> deterministic, DRBG-based] IV construction; 
                      the tag must be of length [<h:b>selection:</h:b> 96, 104, 112, 120, or 128] bits.</h:td>
                    <h:td valign="top">256 bits</h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> ISO/IEC 18033-3:2010 (Subclause 5.2),
                      FIPS PUB 197] [AES]<h:p/>
                      [<h:b>selection:</h:b>  ISO/IEC 19772:2020 (Clause 10), NIST SP 800-38D] [GCM]</h:td>
                  </h:tr>
                </h:table><h:p/>	
                To test the TOE’s implementation of AES-GCM authenticated encryption functionality the
                evaluator shall perform the Encryption Algorithm Functional Tests and Decryption Algorithm
                Functional Tests as described below using the following input parameters:<h:ul>
                  <h:li>Key Size [256] bits</h:li>
                  <h:li>Associated data size [0-65536] bits</h:li>
                  <h:li>Payload size [0-65536] bits</h:li>
                  <h:li>IV size [96] bits</h:li>
                  <h:li>Tag size [96, 104, 112, 120, 128] bits</h:li></h:ul><h:p/>
                <h:br/><h:b>Encryption Algorithm Functional Tests</h:b><h:p/>
                The evaluator shall generate 15 test cases using random data for each combination of
                the above parameters as follows:<h:p/><h:ul>
                  <h:li>Each claimed key size,</h:li>
                  <h:li>Each supported tag size,</h:li>
                  <h:li>Four supported non-zero payload sizes, such that two are multiples of 128 bits
                    and two are not multiples of 128 bits,</h:li>
                  <h:li>Four supported non-zero associated data sizes, such that two are multiples of 
                    128 bits and two are not multiples of 128 bits, and</h:li>
                  <h:li>An associated data size of zero, if supported.</h:li></h:ul><h:p/>
                Note that the IV size is always 96 bits.<h:p/>
                The evaluator shall compare the output from each test case against results generated by a known-
                good implementation with the same input parameters.<h:p/>
                <h:br/><h:b><h:i>Decryption Algorithm Functional Tests</h:i></h:b><h:p/>
                The evaluator shall test the authenticated decrypt functionality of AES-GCM by supplying 15
                test cases for the supported combinations of the parameters as described above. For each
                parameter combination the evaluator shall introduce an error into either the Ciphertext or the Tag
                such that approximately half of the cases are correct and half the cases contain errors.
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
              
              
        <f-component cc-id="fcs_cop.1" iteration="Hash" name="Cryptographic Operation - Hashing">
          <f-element id="fel-hash-how">
            <title>
              The TSF shall perform [<h:i>cryptographic hashing</h:i>] in accordance with a specified 
              cryptographic algorithm 
              <selectables>
                <selectable id="sel-cop1-sha256">SHA-256</selectable>
                <selectable id="sel-cop1-sha384">SHA-384</selectable>
                <selectable id="sel-cop1-sha512">SHA-512</selectable>
                <selectable id="sel-cop1-sha3-384">SHA3-384</selectable>
                <selectable id="sel-cop1-sha3-512">SHA3-512</selectable>
              </selectables> that meet the following:
              <selectables>
                <selectable>ISO/IEC 10118-3:2018 [SHA, SHA3]</selectable>
                <selectable>FIPS PUB 180-4 [SHA]</selectable>
                <selectable>FIPS PUB 202 [SHA3]</selectable>
              </selectables>.   
            </title>
            <note role="application">
	      <h:p>
	        In accordance with CNSA:<h:ul>
	          <h:li>SHA-1 hash is no longer permitted to be used as a hash function, </h:li>
	          <h:li>SHA3 hashes may be used only for internal hardware functionality such as
	            boot integrity checks, and</h:li>
	          <h:li>SHA-256 is permitted only for use as a PRF or MAC as part of a key derivation function,
	            or as part of LMS or XMSS.</h:li>
	        </h:ul><h:p/>
	        The hash selection should be consistent with the overall strength of the 
	        algorithm used for signature generation. For example, the TOE should choose SHA-384 for 3072-bit RSA, 
	        4096-bit RSA, or ECC with P-384; and SHA-512 for ECC with P-521.
	      </h:p>
	    </note>
            <aactivity>
              <TSS>
                The evaluator shall examine the TSS to verify that if SHA-256 is selected, that it is being 
                used only as a PRF or MAC step in a key derivation function or as part of LMS, and not as a hash algorithm.
              </TSS>
              <Guidance/>
              <Tests>
                The following tests may require the developer to provide access to a test platform that
                provides the evaluator with tools that are typically not found on factory products.<h:p/>
                The following tests are conditional, based on the selections made in the SFR. The
                evaluator shall perform the following tests or witness respective tests executed by
                the developer. The tests must be executed on a platform that is as close as practically
                possible to the operational platform (but which may be instrumented in terms of,
                for example, use of a debug mode). Where the test is not carried out on the TOE
                itself, the test platform shall be identified and the differences between test
                environment and TOE execution environment shall be described.<h:p/>
                
                <h:br/><h:b>SHA-256, SHA-384, SHA-512</h:b><h:p/> 
                To test the TOE’s ability to generate hash digests using SHA2, the evaluator shall
                perform the Algorithm Functional Test, Monte Carlo Test, and Large Data Test for each claimed
                SHA2 algorithm.<h:p/>
                <h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
                The evaluator shall generate a number of test cases equal to the block size of the hash (512 for
                SHA2-256; 1024 for the other SHA2 algorithms).<h:p/>
                Each test case is to consist of random data of a random length between 0 and 65536 bits, or the
                largest size supported.<h:p/>                
                <h:br/><h:b>Monte Carlo Test</h:b><h:p/>
                Monte Carlo tests begin with a single seed and run 100 iterations of the chained computation.<h:p/>
                There are two versions of the Monte Carlo Test for SHA-1 and SHA-2. Either one is acceptable.
                For the standard Monte Carlo test the message hashed is always three times the length of the
                initial seed.<h:p/>
                <h:pre>
                  For j = 0 to 99
                  A = B = C = SEED
                  For i = 0 to 999
                  MSG = A || B || C
                  MD = SHA(MSG)
                  A = B
                  B = C
                  C = MD
                  Output MD
                  SEED = MD
                </h:pre><h:p/>
                For the alternate version of the Monte Carlo Test, the hashed message is always the same length as
                the seed.<h:p/>
                <h:pre>
                  INITIAL_SEED_LENGTH = LEN(SEED)
                  For j = 0 to 99
                  A = B = C = SEED
                  For i = 0 to 999
                  MSG = A || B || C
                  if LEN(MSG) &gt;= INITIAL_SEED_LENGTH:
                  MSG = leftmost INITIAL_SEED_LENGTH bits of MSG
                  else:
                  MSG = MSG || INITIAL_SEED_LENGTH - LEN(MSG) 0 bits
                  MD = SHA(MSG)
                  A = B
                  B = C
                  C = MD
                  Output MD
                  SEED = MD	
                </h:pre><h:p/>
                The evaluator shall compare the output against results generated by a known good
                implementation with the same input.<h:p/>
                <h:br/><h:b>Large Data Test</h:b><h:p/>
                The implementation must be tested against one test case each on large data messages of 1GB,
                2GB, 4GB, and 8GB of data as supported. The data need not be random. It may, for example,
                consist of a repeated pattern of 64 bits.<h:p/>
                The evaluator shall compare the output against results generated by a known good
                implementation with the same input.<h:p/>
                
                <h:br/><h:b>SHA3-384, SHA3-512</h:b> <h:p/>
                To test the TOE’s ability to generate hash digests using SHA3 the evaluator shall perform the
                Algorithm Functional Test, Monte Carlo Test, and Large Data Tests for each claimed SHA3
                algorithm.<h:p/>
                
                <h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
                Generate a test case consisting of random data for every message length from 0 bits (or the
                smallest supported message size) to rate bits, where rate equals<h:ul>
                  <h:li>832 for SHA3-384 and</h:li>
                  <h:li>576 for SHA3-512.</h:li></h:ul><h:p/>
                Additionally, generate tests cases of random data for messages of every multiple of (rate+1) bits
                starting at length rate, and continuing until 65535 is exceeded.<h:p/>
                The evaluator shall compare the output against results generated by a known good
                implementation with the same input.<h:p/>
                <h:br/><h:b>Monte Carlo Test</h:b><h:p/>
                Monte Carlo tests begin with a single seed and run 100 iterations of the chained computation.<h:p/>
                For this Monte Carlo Test, the hashed message is always the same length as the seed.<h:p/>
                <h:pre>
                  MD[0] = SEED
                  INITIAL_SEED_LENGTH = LEN(SEED)
                  For 100 iterations
                  For i = 1 to 1000
                  MSG = MD[i-1];
                  if LEN(MSG) &gt;= INITIAL_SEED_LENGTH:
                  MSG = leftmost INITIAL_SEED_LENGTH bits of MSG
                  else:
                  MSG = MSG || INITIAL_SEED_LENGTH - LEN(MSG) 0 bits
                  MD[i] = SHA3(MSG)
                  MD[0] = MD[1000]
                  Output MD[0]
                </h:pre><h:p/>
                The evaluator shall compare the output against results generated by a known good
                implementation with the same input.<h:p/>
                <h:br/><h:b>Large Data Test</h:b><h:p/>
                The implementation must be tested against one test case each on large data messages of 1GB,
                2GB, 4GB, and 8GB of data as supported. The data need not be random. It may, for example,
                consist of a repeated pattern of 64 bits.<h:p/>
                The evaluator shall compare the output against results generated by a known good
                implementation with the same input.
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_cop.1" iteration="KeyedHash" name="Cryptographic Operation - Keyed Hash">
          <f-element id="fel-keyed-hash-how">
            <title>The TSF shall perform [<h:i>keyed hash message authentication</h:i>] in accordance
              with a specified cryptographic algorithm 
              <selectables>
                <tabularize id="fcs-cop-keyedhash-sels" title="Allowable choices for FCS_COP.1/KeyedHash">
                  <selectcol>Keyed Hash Algorithm</selectcol>
                  <reqtext>and cryptographic key sizes</reqtext>
                  <selectcol>Cryptographic Key Sizes</selectcol>
                  <reqtext>that meet the following:</reqtext>
                  <selectcol>List of Standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-cop-keyedhash-sels"/> provides the allowable choices for
                    completion of the selection operations of FCS_COP.1/KeyedHash.</reqtext>
                </tabularize>
                
                <selectable id="sel-fcs-cop-keyedhash-hmac-sha-256">
                  <col>HMAC-SHA-256</col>
                  <col>256 bits</col>
                  <col><selectables>
                    <selectable><h:i>ISO/IEC 9797-2:2021 (Section 7 “MAC Algorithm 2”)</h:i></selectable>
                    <selectable><h:i>FIPS PUB 198-1</h:i></selectable></selectables>
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-cop-keyedhash-hmac-sha-384">
                  <col>HMAC-SHA-384</col>
                  <col><selectables>
                    <selectable><h:i>384 (ISO, FIPS)</h:i></selectable>
                    <selectable><h:i>256 (FIPS)</h:i></selectable></selectables> bits
                  </col>
                  <col><selectables>
                    <selectable><h:i>ISO/IEC 9797-2:2021 (Section 7 “MAC Algorithm 2”)</h:i></selectable>
                    <selectable><h:i>FIPS PUB 198-1</h:i></selectable></selectables>
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-cop-keyedhash-hmac-sha-512">
                  <col>HMAC-SHA-512</col>
                  <col><selectables>
                    <selectable><h:i>512 (ISO, FIPS)</h:i></selectable>
                    <selectable><h:i>384 (FIPS)</h:i></selectable>
                    <selectable><h:i>256 (FIPS)</h:i></selectable></selectables> bits
                  </col>
                  <col><selectables>
                    <selectable><h:i>ISO/IEC 9797-2:2021 (Section 7 “MAC Algorithm 2”)</h:i></selectable>
                    <selectable><h:i>FIPS PUB 198-1</h:i></selectable></selectables>
                  </col>
                </selectable>
              </selectables>
            </title>
            <note role="application">
              <h:p>
                The intent of this requirement is to specify the keyed-hash
                message authentication function used for key establishment purposes for the various
                cryptographic protocols used by the OS (e.g., trusted channel).
                The hash selection must support the message digest size selection.
                The hash selection should be consistent with the overall strength of the
                algorithm used for FCS_COP.1/Hash.
              </h:p>
              <h:p>
                In accordance with CNSA, HMAC-SHA-256 may be used only as a PRF or MAC step in a key derivation function.
              </h:p>
            </note>
            <aactivity>
              <TSS>
                The evaluator shall examine the TSS to ensure that the size of the key is sufficient for the desired
                security strength of the output.<h:p/>
                The evaluator shall examine the TSS to verify that if HMAC-SHA-256 is selected, that it is being 
                used only as a PRF or MAC step in a key derivation function.
              </TSS>
              <Guidance/>
              <Tests>
                The following tests are conditional based on the selections made in the SFR. The evaluator
                shall perform the following tests or witness respective tests executed by the developer. The tests
                must be executed on a platform that is as close as practically possible to the operational platform
                (but which may be instrumented in terms of, for example, use of a debug mode). Where the test
                is not carried out on the TOE itself, the test platform shall be identified and the differences
                between test environment and TOE execution environment shall be described.<h:p/>
                
                <!-- HMAC -->
                <h:br/><h:b>HMAC</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Keyed Hash Algorithm</h:td>
                    <h:td valign="top">Cryptographic Key Sizes</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">HMAC-SHA-256</h:td>
                    <h:td valign="top">256 bits</h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> <h:i>ISO/IEC 9797-2:2021 (Section 7 “MAC Algorithm 2”), FIPS PUB 198-1</h:i>] </h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">HMAC-SHA-384</h:td>
                    <h:td valign="top">[<h:i><h:b>selection:</h:b> (ISO, FIPS) 384, (FIPS) 256] bits</h:i></h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> <h:i>ISO/IEC 9797-2:2021 (Section 7 “MAC Algorithm 2”), FIPS PUB 198-1</h:i>] </h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">HMAC-SHA-512</h:td>
                    <h:td valign="top">[<h:b>selection:</h:b> <h:i>(ISO, FIPS) 512, (FIPS) 384, 256] bits</h:i></h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> <h:i>ISO/IEC 9797-2:2021 (Section 7 “MAC Algorithm 2”), FIPS PUB 198-1</h:i>] </h:td>
                  </h:tr>
                </h:table><h:p/>	
                To test the TOE’s ability to generate keyed hashes using HMAC the evaluator shall perform the
                Algorithm Functional Test for each combination of claimed HMAC algorithm the following
                parameters:<h:ul>
                  <h:li>Hash function [SHA-256, SHA-384, SHA-512]</h:li>
                  <h:li>Key length [8-65536] bits by 8s</h:li>
                  <h:li>MAC length [32-[digest size of hash function (256, 384, 512)]] bits</h:li></h:ul><h:p/>
                <h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
                For each supported Hash function the evaluator shall generate 150 test cases using random input
                messages of 128 bits, random supported key lengths, random keys, and random supported MAC
                lengths such that across the 150 test cases:<h:ul>
                  <h:li>The key length includes the minimum, the maximum, a key length equal to the block
                    size, and key lengths that are both larger and smaller than the block size.</h:li>
                  <h:li>The MAC size includes the minimum, the maximum, and two other random values.</h:li></h:ul><h:p/>
                The evaluator shall compare the output against results generated by a known good
                implementation with the same input.	
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        
        
		<!-- FCS_COP.1/KeyEncap Cryptographic Operation - Key Encapsulation -->
		<f-component id="sfr-fcs-cop-1-keyencap" cc-id="fcs_cop.1" iteration="KeyEncap" name="Cryptographic Operation - Key Encapsulation" status="sel-based">
		  <depends on-sel="sel-ckm-2-encap"/>
			<f-element id="fcs-cop-1e1-keyencap">
			  <title> The TSF shall perform [<h:i>key encapsulation</h:i>] in accordance with a specified cryptographic algorithm 
					<selectables>
						<tabularize id="fcs-cop-keyencap-sels" title="Allowable choices for FCS_COP.1/KeyEncap">
							<textcol>Identifier</textcol>
							<reqtext/>
							<selectcol>Cryptographic algorithm</selectcol>
							<reqtext>and cryptographic key sizes</reqtext>
							<selectcol>Cryptographic key sizes</selectcol>
							<reqtext>that meet the following:</reqtext>
							<selectcol>List of standards</selectcol>
							<reqtext>.<h:p/><h:p/><xref to="fcs-cop-keyencap-sels"/> provides the allowable choices for
										completion of the selection operations of FCS_COP.1/KeyEncap.</reqtext>
						</tabularize>
						
						
						<selectable id="sel-fcs-cop-keyencap-mlkem">
							<col>ML-KEM</col>
							<col>ML-KEM</col>
							<col>Parameter set = ML-KEM-1024</col>
							<col>NIST FIPS 203</col>
						</selectable>			
						
					</selectables>
				</title>
				<note role="application">
					This SFR is claimed when "key encapsulation" is selected in FCS_CKM.2.1. For this PP, the only anticipated use of key encapsulation is the use of ML-KEM as part of key establishment for trusted communications.
				</note>
				<aactivity>
					<TSS>The evaluator shall ensure that the TSS documents that the selection of the key size is
						sufficient for the security strength of the key encapsulated.<h:p/>
						The evaluator shall examine the TSS to verify that any one-time values such as nonces or masks
						are constructed and used in accordance with the relevant standards.
					</TSS>
					<Guidance/>
					<Tests>
						The following tests may require the developer to provide access to a test platform that
						provides the evaluator with tools that are typically not found on factory products.<h:p/>
						The following tests are conditional based upon the selections made in the SFR. The
						evaluator shall perform the following test or witness respective tests executed by
						the developer. The tests must be executed on a platform that is as close as practically
						possible to the operational platform (but which may be instrumented in terms of,
						for example, use of a debug mode). Where the test is not carried out on the TOE
						itself, the test platform shall be identified and the differences between test
						environment and TOE execution environment shall be described.<h:p/>

						<!-- ML-KEM  -->
						<h:br/><h:b>ML-KEM Key Encapsulation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Algorithm</h:td>
								<h:td valign="top">Cryptographic Key Sizes</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">ML-KEM</h:td>
								<h:td valign="top">ML-KEM</h:td>
								<h:td valign="top">Parameter set = ML-KEM-1024</h:td>
								<h:td valign="top">NIST FIPS PUB 203</h:td>
							</h:tr>
						</h:table><h:p/>	
						To test the TOE’s implementation of ML-KEM key encapsulation/decapsulation, the evaluator
						shall perform the Encapsulation Test and the Decapsulation Test using the following input
						parameters:<h:ul>
						<h:li>Encapsulation Parameters:<h:ul>
							<h:li>Parameter set [ML-KEM-1024]</h:li>
							<h:li>Previously generated encapsulation key (<h:i>ek</h:i>)</h:li>
							<h:li>Random value (<h:i>m</h:i>) [32 bytes]</h:li></h:ul></h:li>
						<h:li>Decapsulation Parameters:<h:ul>
							<h:li>Parameter set [ML-KEM-1024]</h:li>
							<h:li>Previously generated decapsulation key (<h:i>dk</h:i>)</h:li>
							<h:li>Previously generated ciphertext (<h:i>c</h:i>) [32 bytes]</h:li></h:ul></h:li>
						</h:ul><h:p/>
						<h:br/><h:b>Encapsulation Test</h:b><h:p/>
						For each supported parameter set the evaluator shall generate 25 test cases consisting of an
						encapsulation key ek and random value m. For each test case the valuator shall require the
						implementation under test to generate the corresponding shared secret k and ciphertext c. To
						determine correctness, the evaluator shall compare the resulting values with those generated
						using a known-good implementation using the same inputs.<h:p/>
						<h:br/><h:b>Encapsulation Key Check (if supported)</h:b><h:p/>
						The evaluator shall generate 10 encapsulation keys such that:<h:ul>
						<h:li>Five of the encapsulation keys are valid, and</h:li>
						<h:li>Five of the encapsulation keys are modified such that a value in the noisy linear 
						system is encoded into the key as a value greater than Q.</h:li></h:ul><h:p/>
						The evaluator shall invoke the TOE’s Encapsulation Key Check functionality to determine the
						validity of the 10 keys. The unmodified keys should be determined valid, and the modified keys
						should be determined invalid. <h:p/>
						<h:br/><h:b>Decapsulation Key Check (if supported)</h:b><h:p/>
						The evaluator shall generate 10 decapsulation keys such that:<h:ul>
						<h:li>Five of the decapsulation keys are valid, and</h:li>
						<h:li>Five of the decapsulation keys are modified such that the concatenated
						values ek||H(ek) will no longer match by modifying H(ek) to be a different value.</h:li></h:ul><h:p/>
						The evaluator shall invoke the TOE’s Decapsulation Key Check functionality to determine the
						validity of the 10 keys. The unmodified keys should be determined valid, and the modified keys
						should be determined invalid.<h:p/>				
						<h:br/><h:b>Decapsulation Test</h:b><h:p/>
						For each supported parameter set the evaluator shall use a single previously generated
						decapsulation key <h:i>dk</h:i> and generate 10 test cases consisting of valid and invalid ciphertexts c. For
						each test case the evaluator shall require the implementation under test to generate the
						corresponding shared secret <h:i>k</h:i> whether or not the ciphertext is valid. To determine correctness,
						the evaluator shall compare the resulting values with those generated using a known-good
						implementation using the same inputs.<h:p/>						
					</Tests>
				</aactivity>
			</f-element>
			<audit-event/>
		</f-component>


		<!-- FCS_COP.1/KeyWrap Cryptographic Operation - Key Wrapping -->
		<f-component id="sfr-fcs-cop-1-kw" cc-id="fcs_cop.1" iteration="KeyWrap" name="Cryptographic Operation - Key Wrapping" status="sel-based">
		  <depends on-sel="sel-ckm-2-wrap"/>
		  <f-element id="fcs-cop-1e1-kw">
				<title>
				  The TSF shall perform [<h:i>key wrapping</h:i>] in accordance with a specified cryptographic algorithm 
					<selectables>
						<tabularize id="fcs-cop-kw-sels" title="Allowable choices for FCS_COP.1/KeyWrap">
							<textcol>Identifier</textcol>
							<reqtext/>
							<selectcol>Cryptographic algorithm</selectcol>
							<reqtext>and cryptographic key sizes</reqtext>
							<selectcol>Cryptographic key sizes</selectcol>
							<reqtext>that meet the following:</reqtext>
							<selectcol>List of standards</selectcol>
							<reqtext>.<h:p/><h:p/><xref to="fcs-cop-kw-sels"/> provides the allowable choices for
								completion of the selection operations of FCS_COP.1/KeyWrap.</reqtext>
						</tabularize>
						
						<!-- AES-KW  -->
						<selectable id="sel-fcs-cop-kw-aes-kw">
							<col>AES-KW</col>
							<col>AES in KW mode</col>
							<col>256 bits</col>
							<col><selectables>
								<selectable>ISO/IEC 18033-3:2010 (Subclause 5.2)</selectable>
								<selectable>FIPS PUB 197</selectable></selectables> [AES]<h:p/>
								<selectables>
								<selectable>ISO/IEC 19772:2020 (clause 6)</selectable>
								<selectable>NIST SP 800-38F (Section 6.2)</selectable> 
							</selectables> [KW mode]</col>
						</selectable>

						<!-- KWP mode -->
						<selectable id="sel-fcs-cop-kw-aes-kwp">
							<col>AES-KWP</col>
							<col>AES in KWP mode</col>
							<col>256 bits</col>
							<col><selectables>
								<selectable>ISO/IEC 18033-3:2010 (Subclause 5.2)</selectable>
								<selectable>FIPS PUB 197</selectable></selectables> [AES]<h:p/>
								NIST SP 800-38F (Section 6.3) [KWP mode]</col>
						</selectable>
						
						<selectable id="sel-fcs-cop-kw-aes-ccm">
						<col>AES-CCM</col>
						<col>AES in CCM mode with unpredictable, non-repeating nonce, minimum size of 64 bits</col>
						<col>256 bits</col>
						<col><selectables>
							<selectable>ISO/IEC 18033-3:2010 (Subclause 5.2)</selectable>
							<selectable>FIPS PUB 197</selectable></selectables> [AES]<h:p/>
							<selectables>
							<selectable>ISO/IEC 19772:2020 (Clause 7)</selectable> 
							<selectable>NIST SP 800-38C</selectable></selectables> [CCM]
						</col></selectable>

						<selectable id="sel-fcs-cop-kw-aes-gcm">
						<col>AES-GCM</col>
						<col>AES in GCM mode with non-repeating IVs using <selectables>
							<selectable>deterministic</selectable>
							<selectable>DRBG-based</selectable></selectables>,
							IV construction; the tag must be of length
							<selectables>
								<selectable>96</selectable>
								<selectable>104</selectable>
								<selectable>112</selectable>
								<selectable>120</selectable>
								<selectable>128</selectable>
							</selectables> bits.
						</col>
						<col>256 bits</col>
						<col><selectables>
							<selectable>ISO/IEC 18033-3:2010 (Subclause 5.2)</selectable>
							<selectable>FIPS PUB 197</selectable></selectables> [AES]<h:p/>
							<selectables>
							<selectable>ISO/IEC 19772:2020 (Clause 10)</selectable> 
							<selectable>NIST SP 800-38D</selectable></selectables> [GCM]
						</col></selectable>
					</selectables>
				</title>
				<note role="application">
				  This SFR is claimed when "key wrapping" is selected in FCS_CKM.2.1. NIST 800-57p1rev5 sec. 5.6.2 specifies that the size of key used to protect the key being 
					transported should be at least the security strength of the key it is protecting.
				</note>
				<aactivity>
					<TSS>
						The evaluator shall ensure that the TSS documents that the selection of the key size is
						sufficient for the security strength of the key wrapped.<h:p/>
						The evaluator shall examine the TSS to ensure that it describes the construction of any IVs,
						nonces, and MACs in conformance with the relevant specifications.
					</TSS>
					<Guidance/>
					<Tests>
						For tests of AES-GCM and AES-CCM, see testing for FCS_COP.1/AEAD.<h:p/>
						The following tests are conditional based upon the selections made in the SFR. The evaluator
						shall perform the following test or witness respective tests executed by the developer. The tests
						must be executed on a platform that is as close as practically possible to the operational platform
						(but which may be instrumented in terms of, for example, use of a debug mode). Where the test
						is not carried out on the TOE itself, the test platform shall be identified and the differences
						between test environment and TOE execution environment shall be described.<h:p/>
						
						<!-- AES-KW -->
						<h:br/><h:b>AES-KW</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Algorithm</h:td>
								<h:td valign="top">Cryptographic Key Sizes</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">AES-KW</h:td>
								<h:td valign="top">AES in KW mode</h:td>
								<h:td valign="top">256 bits</h:td>
								<h:td valign="top">[<h:b>selection:</h:b> ISO/IEC 18033-3:2010 (Subclause 5.2),
														FIPS PUB 197] [AES]<h:p/>
													[<h:b>selection:</h:b> ISO/IEC 19772:2020 (clause 6), 
														NIST SP 800-38F (Section 6.2)] [KW mode] </h:td>
							</h:tr>
						</h:table><h:p/>	
						To test the TOE’s ability to wrap keys using AES in Key Wrap mode the evaluator shall perform
						the Algorithm Functional Tests using the following input parameters:<h:ul>
						<h:li>Key size [256] bits</h:li>
						<h:li>Keyword cipher type [cipher, inverse]</h:li>
						<h:li>Payload sizes [128-4096] bits by 64s</h:li></h:ul><h:p/>
						<h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
						The evaluator shall generate 100 encryption test cases using random data for each combination
						of claimed key size, keyword cipher type, and six supported payload sizes such that the payload
						sizes include the minimum, the maximum, two that are divisible by 128, and two that are not
						divisible by 128.<h:p/>
						The results shall be compared with those generated by a known-good implementation using the
						same inputs.<h:p/>
						The evaluator shall generate 100 decryption test cases using the same parameters as above, but
						with 20 of each 100 test cases having modified ciphertext to produce an incorrect result. To
						determine correctness, the evaluator shall confirm that the results correspond as expected for
						both the modified and unmodified values.<h:p/>

						<!-- AES-KWP -->
						<h:br/><h:b>AES-KWP</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Algorithm</h:td>
								<h:td valign="top">Cryptographic Key Sizes</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">AES-KWP</h:td>
								<h:td valign="top">AES in KWP mode</h:td>
								<h:td valign="top">256 bits</h:td>
								<h:td valign="top">[<h:b>selection:</h:b> ISO/IEC 18033-3:2010 (Subclause 5.2),
														FIPS PUB 197] [AES]<h:p/>
													NIST SP 800-38F (Section 6.3) [KWP mode] </h:td>
							</h:tr>
						</h:table><h:p/>	
						To test the TOE’s ability to wrap keys using AES in Key Wrap with Padding mode with padding
						the evaluator shall perform the Algorithm Functional Tests using the following input parameters:<h:ul>
						<h:li>Key size [256] bits</h:li>
						<h:li>Keyword cipher type [cipher, inverse]</h:li>
						<h:li>Payload sizes [8-4096] bits by 8s</h:li></h:ul><h:p/>
						<h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
						The evaluator shall generate 100 encryption test cases using random data for each combination
						of claimed key size, keyword cipher type, and six supported payload sizes such that the payload
						sizes include the minimum, the maximum, two that are divisible by 128, and two that are not
						divisible by 128.<h:p/>
						The results shall be compared with those generated by a known-good implementation using the
						same inputs.<h:p/>
						The evaluator shall generate 100 decryption test cases using the same parameters as above, but
						with 20 of each 100 test cases having modified ciphertext to produce an incorrect result. To
						determine correctness, the evaluator shall confirm that the results correspond as expected for
						both the modified and unmodified values.<h:p/>					
					</Tests>
				</aactivity>
			</f-element>
			<audit-event/>
		</f-component>
        
                <f-component cc-id="fcs_cop.1" iteration="SigGen" name="Cryptographic Operation -                   Signature Generation">
          <f-element id="fel-sign-how">
            <title> The TSF shall perform [<h:i>digital signature generation</h:i>] in accordance with a specified 
              cryptographic algorithm 
              <selectables>
                <tabularize id="fcs-cop-siggen-sels" title="Allowable choices for FCS_COP.1/SigGen">
                  <textcol>Identifier</textcol>
                  <reqtext/>
                  <selectcol>Cryptographic Algorithm</selectcol>
                  <reqtext>and cryptographic key sizes</reqtext>
                  <selectcol>Cryptographic Key Sizes</selectcol>
                  <reqtext>that meet the following:</reqtext>
                  <selectcol>List of Standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-cop-siggen-sels"/> provides the allowable choices for
                    completion of the selection operations in FCS_COP.1/SigGen.<h:p/></reqtext>
                </tabularize>
                
                <selectable id="sel-fcs-cop-siggen-rsa-pkcs">
                  <col>RSA-PKCS</col>
                  <col>RSASSA-PKCS1-v1_5</col>
                  <col>Modulus of size <selectables>
                    <selectable><h:i>3072</h:i></selectable>
                    <selectable><h:i>4096</h:i></selectable>
                    <selectable><h:i>6144</h:i></selectable>
                    <selectable><h:i>8192</h:i></selectable>
                  </selectables> bits, hash <selectables>
                    <selectable><h:i>SHA-384</h:i></selectable>
                    <selectable><h:i>SHA-512</h:i></selectable>
                  </selectables></col>
                  <col>
                    RFC 8017 (Section 8.2) [PKCS #1 v2.2]<h:p/>
                    FIPS PUB 186-5 (Section 5.4) [RSASSA-PKCS1-v1_5]
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-cop-siggen-rsa-pss">
                  <col>RSA-PSS</col>
                  <col>RSASSA-PSS</col>
                  <col>Modulus of size <selectables>
                    <selectable><h:i>3072</h:i></selectable>
                    <selectable><h:i>4096</h:i></selectable>
                    <selectable><h:i>6144</h:i></selectable>
                    <selectable><h:i>8192</h:i></selectable>
                  </selectables> bits, hash <selectables>
                    <selectable><h:i>SHA-384</h:i></selectable>
                    <selectable><h:i>SHA-512</h:i></selectable>
                  </selectables>, Salt Length (<h:i>sLen</h:i>)
                    such that <assignable><h:i>0 ≤ <h:i>sLen</h:i> ≤ <h:i>hLen</h:i> (Hash Output Length)</h:i></assignable>
                    and Mask Generation Function = MGF1</col>
                  <col>
                    RFC 8017 (Section 8.1) [PKCS#1 v2.2]<h:p/>
                    FIPS PUB 186-5 (Section 5.4) [RSASSA-PSS]
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-cop-siggen-ecdsa">
                  <col>ECDSA</col>
                  <col>ECDSA</col> 
                  <col>Elliptic Curve <selectables>
                    <selectable><h:i>P-384</h:i></selectable>
                    <selectable><h:i>P-521</h:i></selectable>
                  </selectables>, per-message secret number generation <selectables>
                    <selectable><h:i>extra random bits</h:i></selectable>
                    <selectable><h:i>rejection sampling</h:i></selectable>
                    <selectable><h:i>deterministic</h:i></selectable>
                  </selectables> and hash function using <selectables>
                    <selectable><h:i>SHA-384</h:i></selectable>
                    <selectable><h:i>SHA-512</h:i></selectable>
                  </selectables></col>
                  <col><selectables>
                    <selectable><h:i>ISO/IEC 14888-3:2018 (Subclause 6.6)</h:i></selectable>
                    <selectable><h:i>FIPS PUB 186-5 (Sections 6.3.1, 6.4.1)</h:i></selectable>
                  </selectables>[ECDSA]<h:p/>
                    NIST SP-800 186 (Section 4) [NIST Curves]
                  </col>
                </selectable>
       
                
                <!-- ML-DSA Signature Generation -->
                <selectable id="sel-fcs-cop-siggen-mldsa">
                  <col>ML-DSA</col>
                  <col>ML-DSA Signature Generation</col>
                  <col>Parameter set = ML-DSA-87</col>
                  <col>NIST FIPS 204 (Section 5.2)</col>
                </selectable>
                
              </selectables>
            </title>
            <note role="application">As stated in the selection, 2048-bit RSA signatures may be used only for secure boot.
            </note>
       <aactivity>
	       <TSS>The evaluator shall examine the TSS and verify that any hash function is the appropriate security
						strength for the signing algorithm.<h:p/>
						The evaluator shall examine the TSS to verify that any one-time values such as nonces or masks
						are constructed and used in accordance with the relevant standards.<h:p/>
						The evaluator shall examine the TSS to verify that the TOE has appropriate measures in place to
						ensure that hash-based signature algorithms do not reuse private keys.</TSS>
					<Guidance/>
					<Tests>
						The following tests are conditional based on the selections made in the SFR. The evaluator
						shall perform the following tests or witness respective tests executed by the developer. The tests
						must be executed on a platform that is as close as practically possible to the operational platform
						(but which may be instrumented in terms of, for example, use of a debug mode). Where the test
						is not carried out on the TOE itself, the test platform shall be identified and the differences
						between test environment and TOE execution environment shall be described.<h:p/>
					
						<!-- RSA-PKCS Signature Generation   -->
						<h:br/><h:b>RSA-PKCS Signature Generation </h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">Cryptographic Key Sizes</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">RSA-PKCS </h:td>
								<h:td valign="top">RSASSA-PKCS1-v1_5</h:td>
								<h:td valign="top">Modulus of size [<h:b>selection:</h:b> <h:i>3072, 4096, 6144, 8192</h:i>] bits,
									hash [<h:b>selection:</h:b> <h:i>SHA-384, SHA-512</h:i>]</h:td>
								<h:td valign="top">RFC 8017 (Section 8.2) [PKCS #1 v2.2]<h:p/>
													NIST FIPS PUB 186-5 (Section 5.4) [RSASSA-PKCS1-v1_5]</h:td>
							</h:tr>
						</h:table><h:p/>	
						To test the TOE’s ability to perform RSA Digital Signature Generation using PKCS1-v1_5
						signature type, the evaluator shall perform the Generated Data Test using the following input
						parameters:<h:ul>
						<h:li>Modulus size [3072, 4096, 6144, 8192] bits</h:li>
						<h:li>Hash algorithm [SHA-384, SHA-512]</h:li></h:ul>
						<h:br/><h:b>Generated Data Test</h:b><h:p/>
						For each supported combination of the above parameters, the evaluator shall cause the TOE to
						generate three test cases using random data. The evaluator shall compare the results against those
						from a known good implementation.<h:p/>

						<!-- RSA-PSS Signature Generation    -->
						<h:br/><h:b>RSA-PSS Signature Generation </h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">Cryptographic Key Sizes</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">RSA-PSS</h:td>
								<h:td valign="top">RSASSA-PSS</h:td>
								<h:td valign="top">Modulus of size [<h:b>selection:</h:b> <h:i>3072, 4096, 6144, 8192</h:i>] bits,
									hash [<h:b>selection:</h:b> <h:i>SHA-384, SHA-512</h:i>], Salt Length (<h:i>sLen</h:i>)
												such that [<h:b>assignment:</h:b> <h:i>0 ≤ <h:i>sLen</h:i> ≤ <h:i>hLen</h:i> (Hash Output Length)</h:i>]
												and Mask Generation Function = MGF1
												</h:td>
								<h:td valign="top">RFC 8017 (Section 8.2) [PKCS #1 v2.2]<h:p/>
													NIST FIPS PUB 186-5 (Section 5.4) [RSASSA-PSS]</h:td>
							</h:tr>
						</h:table><h:p/>	
						To test the TOE’s ability to perform RSA Digital Signature Generation using PSS signature type,
						the evaluator shall perform the Generated Data Test using the following input parameters:<h:ul>
						<h:li>Modulus size [3072, 4096, 6144, 8192] bits</h:li>
						<h:li>Hash algorithm [SHA-384, SHA-512]</h:li>
						<h:li>Salt length [Fixed based on implementation]</h:li>
						<h:li>Mask function [MGF1]</h:li></h:ul><h:p/>
						<h:br/><h:b>Generated Data Test</h:b><h:p/>
						For each supported combination of the above parameters, the evaluator shall cause the TOE to
						generate three test cases using random data. The evaluator shall compare the results against those
						from a known good implementation.<h:p/>

						<!-- ECDSA Signature Generation  -->
						<h:br/><h:b>ECDSA Signature Generation </h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">Cryptographic Key Sizes</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">ECDSA</h:td>
								<h:td valign="top">ECDSA</h:td>
								<h:td valign="top">Elliptic Curve [<h:b>selection:</h:b> <h:i>P-384, P-521</h:i>], 
									per-message secret number generation
									[<h:b>selection:</h:b> <h:i>extra random bits, rejection sampling, deterministic</h:i>] 
									and hash function using [<h:b>selection:</h:b> <h:i>SHA-384, SHA-512</h:i>] </h:td>
								<h:td valign="top">[<h:b>selection:</h:b> <h:i>ISO/IEC 14888-3:2018 (Subclause 6.6),
									NIST FIPS PUB 186-5 (Sections 6.3.1, 6.4.1</h:i>] [ECDSA]<h:p/>
									NIST SP-800 186 (Section 4) [NIST Curves] </h:td>
							</h:tr>
						</h:table><h:p/>	
						To test the TOE’s ability to perform ECDSA Digital Signature Generation using extra random
						bits or rejection sampling for secret number generation, the evaluator shall perform the
						Algorithm Functional Test using the following input parameters:<h:ul>
						<h:li>Elliptic Curve [P-384, P-521]</h:li>
						<h:li>Hash algorithm [SHA-384, SHA-512]</h:li></h:ul><h:p/>
						To test the TOE’s ability to perform ECDSA Digital Signature Generation using deterministic
						secret number generation, the evaluator shall perform the Algorithm Functional Test using the
						following input parameters:	<h:ul>
						<h:li>Elliptic Curve [P-384, P-521]</h:li>
						<h:li>Hash algorithm [SHA-384, SHA-512]</h:li></h:ul>
						<h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
						For each supported combination of the above parameters, the evaluator shall cause the TOE to
						generate 10 test cases using random data. The evaluator shall compare the results against those
						from a known good implementation.<h:p/>

						
						<!-- ML-DSA Signature Generation  -->
						<h:br/><h:b>ML-DSA Signature Generation</h:b><h:p/>
						<h:table border="1">
							<h:tr class="header" bgcolor="#cccccc">
								<h:td valign="top">Identifier</h:td>
								<h:td valign="top">Cryptographic Algorithm Parameters</h:td>
								<h:td valign="top">Cryptographic Key Sizes</h:td>
								<h:td valign="top">List of Standards</h:td>
							</h:tr>
							<h:tr>
								<h:td valign="top">ML-DSA</h:td>
								<h:td valign="top">ML-DSA SigGen</h:td>
								<h:td valign="top">Parameter set = ML-DSA-87</h:td>
								<h:td valign="top">NIST FIPS PUB 204 (Section 5.2)</h:td>
							</h:tr>
						</h:table><h:p/>	
						To test the TOE’s ability to generate digital signatures using ML-DSA, the
						evaluator shall perform the Algorithm Functional Test using the following input parameters:<h:ul>
						<h:li>Parameter set [ML-DSA-87]</h:li>
						<h:li>Seed [32 random bytes] (for non-deterministic signature testing), or</h:li>
						<h:li>Seed [32 zero bytes] (for deterministic signature testing)</h:li>
						<h:li>Message to sign [8-65535] bytes</h:li>
						<h:li><h:i>Mu</h:i> value (if generated externally)</h:li>
						<h:li>Previously generated private key (<h:i>sk</h:i>)</h:li>
						<h:li>Context (for external interface testing)</h:li></h:ul><h:p/>
						<h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
						For each combination of supported parameter set and capabilities, the evaluator shall require the
						implementation under test to generate 15 signatures pairs using 15 different randomly generated
						32-byte seed values. To determine correctness, the evaluator shall
						compare the resulting key pairs with those generated using a known good implementation using
						the same inputs.<h:p/>
						<h:br/><h:b>Known Answer Test for Rejection Cases</h:b><h:p/>
						For each supported parameter set, the evaluator shall cause the TOE to generate signatures using
						the data below and a deterministic seed of all 0’s. Correctness is determined by
						comparing the hash of the resulting signature with the hash in the fourth row 
						for each corresponding test case below.<h:p/>
						The test values are defined as follows:<h:ul>
						<h:li><h:i>Seed</h:i> is the seed to generate the key pair (<h:i>pk, sk</h:i>)</h:li>
						<h:li><h:i>Hash of keys</h:i> is computed by SHA-256(<h:i>pk</h:i>||<h:i>sk</h:i>)</h:li>
						<h:li><h:i>Message</h:i> is the message to be signed</h:li>
						<h:li><h:i>Hash of sig</h:i> is computed by SHA-256(<h:i>sig</h:i>)</h:li></h:ul><h:p/>
						<h:p/><h:b>ML-DSA-87 Test Cases for Rejection Cases</h:b><h:p/>
						<h:pre>
		Test case 87-RC-01
		Seed: 			E4F5AFCF697E0EC3C1BDEB66FAA903221E803902F9C3F716E1056A63D77DC250
		Hash of Keys: 	61618E8DDA6998072C8EB36974E03880D741CAF0BD523356DFC161E7C9E63934
		Message: 		F4F1C05004D5B946F69EAFE104C4020519086ADDB9582A20FDE887D13DFC36B1
		Hash of sig: 	B584E38FA442FC3C81A147D4BDBF058D73C822CAF5CA4C06B0110867F60A8001
						
		Test case 87-RC-02
		Seed: 			8B828D871254D6C57384A8E7025AA3F7160CAD1D2C754499DF3844426062C3DD
		Hash of Keys: 	BB64481317D6C0DBAD20C0C7EF11078AD54E5D574F4A07652115A95F77C655FA
		Message: 		0F9409C5A4930C25B83FC5B77FDB5BB49C75372DE724D9C1A77DB700CF0CF154
		Hash of sig: 	F86B49BE9DEB2B209BDEB4E922E5939E92D38E562C44BB09AFBD67323C345192
						
		Test case 87-RC-03
		Seed: 			E693D282CACB8CE65FD4D108DA7A373F097F0AA9713550BE242AAD5BD3E2E452
		Hash of Keys: 	B0BEAF56713A69BD4AB2CBEE006FA5001E7B41F3AE541E05F088933AA0CC78DF
		Message: 		24DABB9D57ADEBD560ED65D9451C5106D437061708F849BA53F3543CDF9AAAE0
		Hash of sig: 	DBF65CEFF9F96A74AAF6F3AB27B043231BE6AA04FBA2EEC987A24A00BDD6A08E
						
		Test case 87-RC-04
		Seed: 			4002163EB8EED01A8E0919BA8C07D291341EDCAE25B02B9779A2CFFE50561AF0
		Hash of Keys: 	FED1BE685C20ECB322FC40D41DEE7E0E98D0409FBF989CAE71B8AD2D58AD645E
		Message: 		EE316BB5EBED53325B4A55571C60657B53E353B51B831F4A0BBB28107EBA4BA8
		Hash of sig: 	3BE9B5545FDCED92547B3409C83B3312CCB5792A8EC3A4DA63BA692C79BEF17C
						
		Test case 87-RC-05
		Seed: 			9C7AD524F65854C27E565BCEDF8E86D650F13A40D0448F9AE10C05F10F777120
		Hash of Keys: 	0EA872CA5A4BEA94F4E8EF7ED31800727899A51059FDEE111E5CB15F0233B534
		Message: 		CE09831294AA96CAF684B9E667947B021C57B24C138EC7D4DA270694C82F2E08
		Hash of sig: 	3B9526CEE6587F2418BFE603ADB0F7DF0D69EBA31C9F9F005C60C993945EBD33
						
		Test case 87-RC-06
		Seed: 			2EB7676D4A28700DA7772A7A035EB495CAA6F842352A74824EF5FD891BC38B2A
		Hash of Keys: 	D5B73703A1DDC5BCB0D14AE39B193A25D6ADA6535827973181ADB0BE70435A5B
		Message: 		C2B3A0AC483A5517682285C205974B2A506946448A8F7D3E1934C155EFDFE922
		Hash of sig: 	375D598704B722C8A1FEF1626FD7738A532C06329AA4217357460E3B729660F8
						
		Test case 87-RC-07
		Seed: 			E4E80CCE8B26DF1B02B99949851EE2F907FE4F0CC34790352C76D5D91634D073
		Hash of Keys: 	84B7E61684A12698400B09EA332EA3C4FBCFA47FE37FD6AE725CBC5FA8A99D3F
		Message: 		89E6AB43C9CB1CC59C3986D53217A558357E62102A26F666F2B64CD1DBB7A536
		Hash of sig: 	7C4AABD163CAEF8F6EBFDA3E3EEBC0A9604675B0E991ABAFD284F1AE8BA07B2A
						
		Test case 87-RC-08
		Seed: 			5787262B803499223D4E5A8C1EE572E89F7A69B359B3F8505355B0BDEAB95E5C
		Hash of Keys: 	85AE1DE605A7B479C02730BF4B7DD6D0FD8FFE5C980893CA6DAD00BD8BD1CE68
		Message: 		D3230C4E061964BBFB17702432D5D36FC1EB3D1068F8CCAA84044776E3B5CC55
		Hash of sig: 	D3ABE460EE2DD9595F413CFE2780A319E4E4DFD6592995298A7AB0B82A5E2815
						
		Test case 87-RC-09
		Seed: 			CE099B99330537DD153052243FC32ACAD509A126AB982410258858567D410D79
		Hash of Keys: 	E04A9F15EDF8F078EB336CE624249EF2A8EDF2CDBF6A8276E9F5E92ED9B0BAE8
		Message: 		0035931762665F561A1B22176567E3B10FDE2441521F77030733A8E39312EEEE
		Hash of sig: 	3EEF413CB5EB179896ECA172D0DBFB9B251545DC561D61580BD5BBC8B6D734E1

		Test case 87-RC-10
		Seed: 			FC8F2929878CBD81E1CCC23913F290380120C043A4A8A251AEEBF09705B8E590
		Hash of Keys: 	7E2ECCA86F532E8E8092FEBB6E0007F92E7909AD2BCBE2E02AB375DAC9969E5E
		Message: 		D3C28875D2671C0EF23BFDC8869E8ECF8868D3F0561C3134D254F7479D0CE0E5
		Hash of sig: 	EB69A908EDCC04320A0B61AD57E21B044465F2037698636B64229CF2DB259789
						</h:pre>
						
						<h:br/><h:b>Known Answer Test for Large Number of Rejection Cases (Total Rejection Count)</h:b><h:p/>
						For each supported parameter set, the evaluator shall cause the TOE to generate signatures using
						the data below and a deterministic seed of all 0’s. Correctness is determined by
						comparing the hash of the resulting signature with the hash in the fourth row
						of the corresponding test case below.<h:p/>
						<h:p/><h:b>ML-DSA-87 Test Cases for Total Rejection Count</h:b><h:p/>
						<h:pre>
		Test case 87-LN-01
		Seed: 			98B6298051D92BF37293C93C97370747BF527B87B71F6C4264182F45155ADE4C
		Hash of Keys: 	04A135B5C9B7020332C7B16E7108E8FF7FC1EAE1C23C5FA0B5D5CED0FEEE7424
		Message: 		D7B0341269259083ABF3C8DC47559A19D57669B4486E0224F376DC43E577A3D8
		Hash of sig: 	58D72D76EC0FB65BFB9893C4479366B79DD7B8B7577E4291D13514FCC76C26DD

		Test case 87-LN-02
		Seed: 			DFB5BDD90F58571DCA962426C623F13D046BBE814D183886AC90D143EAD725A7
		Hash of Keys: 	2B6AB8CFCCCC41F759CAF01932E9413F5DC6D949BC827F739866929683FB155E
		Message: 		21005DB2B583CC826A9684BFFD0EE00AB97E0479FE4A1D266699337540145778
		Hash of sig: 	C93EA34E00FFFFC3ECEA072D5FB038A83B5539CAF7B831AEDCFA785E50B3CA5E

		Test case 87-LN-03
		Seed: 			5AD414E0DD0EF2FE685F342871875FDF06F503717A86C3B3466565ADD2096417
		Hash of Keys: 	BD9C2D52F3FC78DB17E682DA2E78947ECFC0898333838D60C892700B2B0DDA9F
		Message: 		29139C279816B25F2D6BB52C8247D163544F7BA332C3CF63359B9E23FBC56515
		Hash of sig:	DB4BE2DE19FB40437BDB7E9B6578D665DB05B4E88C16907DF4546EBA9BE03AEA

		Test case 87-LN-04
		Seed: 			484DD2F406A4D15F49A91AD5FC3BDC1D0FF253622EB68F83D6E1C870D0E89E29
		Hash of Keys: 	A719DC9A77C91C46295555C2353BA0CBEA513DA9A92A5C34D2E949EFF46A12D8
		Message: 		6AD6E959F0EA60126364FB7C95FA71133F246A9265A11B4965EE78AB0CB5AF0E
		Hash of sig: 	5050D7A665074EC63D9F3966C1F01A1BFB18F9E83AE0B09F838BC1E2342ED6F4

		Test case 87-LN-05
		Seed: 			B25C1816F82D59940D5CB829BAC364AAD013C4C16415CE1CF6DCC2F15199B391
		Hash of Keys: 	ADBB2CD43F222640BD9FF4E61C80E63853E8DC1F759C581B7447C9C166EAA38E
		Message: 		824E47322895BFFE37B6B4AFC41CF6115C07EEC0C24EB81076C87A1B01AE8617
		Hash of sig: 	667ADA46073BC69D64DC47BB9A76DD0D78302E7415D87D5E816B05FB95F9E84D

		Test case 87-LN-06
		Seed: 			B2CE72B3560AF07E06465881F56ADA00262BA708D87B73F39E04E310F3B8A3E9
		Hash of Keys: 	FD9C4AC53AE803242A62DF933B8E8BAD6CE5207AC4A73683B6D9383B5E70B17A
		Message: 		A1501CC84C917E0D2D7C27C2AC382220BD8FFFE807DB38E37A9E429EC2781911
		Hash of sig: 	779553B195E11558EE59EF3942F5F6B446A2144600D1F4F50B300C6C56504760

		Test case 87-LN-07
		Seed: 			AB01D0E591B7DDCD3C03395AED808FA2763C0A486D44119D621BE0FD0B022B25
		Hash of Keys: 	93B6ADE34F78A4ADB36B2F6D2C51DB793E659E1243E80488AE1C03B65125D6D7
		Message: 		8DE8122D89D15FE84A4C34F6B59B2C4B11F33B6A053154D199B634F557FDF5F6
		Hash of sig: 	0483045999A79B583F403DB96A736F0F0B24E2DFBC4E5CFA9B50E3D910786F07

		Test case 87-LN-08
		Seed: 			15D60D3693762F82C9AC1DCB0576936651AC81D863842EDB91109C8EE83AE705
		Hash of Keys: 	2DF544E2E939AA717741C2437288FAEB308DEB8FF37A2652FAE34BAE8B84D779
		Message: 		F05946A6113905C34163AEF2246FD69016CE24A7BA40F8E7E42EDAC2D0A44605
		Hash of sig: 	F8383917AF79C8E540D2356AB05F08B465BF32DFEC444B787CE31BF48CC6C3DD

		Test case 87-LN-09
		Seed: 			21212285BED53B3411705DAF5F3BDDB6F0618EB571B36EE11A74053407A269F5
		Hash of Keys: 	737061155A9A03F11F9FEBBB940BED4DD54542C4A6212F89A5EB4EC2BE542782
		Message: 		FFE38246BF3DEFD9CAD15CC17CEA511C067D582E04227B479E32F9197CF91482
		Hash of sig: 	C4C12C58032052FB2D21F0C6A7388A63154FB85B74287D2859DE6C1C6F7F277B

		Test case 87-LN-10
		Seed: 			A2744470587C71BA43EC26DC390CE3531978F315993C653E5D3EFD2849D5D9F1
		Hash of Keys: 	B1BF37BFFB11531B6ADD697870D7DB2E2462D0A97A63F09C1D0038457C6D795A
		Message: 		9831A830231A160B9847203341A5F30BF3E87A2A482AEEA6886315C92B5C4E4C
		Hash of sig: 	46C669D2FEB643A38E54FF87B790CC33F44043A1B6B31DB9474D301328CA2A7F
						</h:pre>
						
												
					</Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_cop.1" iteration="SigVer" name="Cryptographic Operation - Signature Verification">
          <f-element id="fel-sign-how">
            <title> 
              The TSF shall perform [<h:i>digital signature verification</h:i>] in accordance with a specified 
              cryptographic algorithm  
              <selectables>
                <tabularize id="fcs-cop-sigver-sels" title="Allowable choices for FCS_COP.1/SigVer">
                  <textcol>Identifier</textcol>
                  <reqtext/>
                  <selectcol>Cryptographic Algorithm</selectcol>
                  <reqtext>and cryptographic key sizes</reqtext>
                  <selectcol>Cryptographic Key Sizes</selectcol>
                  <reqtext>that meet the following:</reqtext>
                  <selectcol>List of Standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-cop-sigver-sels"/> provides the allowable choices for
                    completion of the selection operations in FCS_COP.1/SigVer.<h:p/></reqtext>
                </tabularize>
                
                <selectable id="sel-fcs-cop-sigver-rsa-pkcs">
                  <col>RSA-PKCS</col>
                  <col>RSASSA-PKCS1-v1_5</col>
                  <col>Modulus of size <selectables>
                    <selectable><h:i>2048 (for secure boot only)</h:i></selectable>
                    <selectable><h:i>3072</h:i></selectable>
                    <selectable><h:i>4096</h:i></selectable>
                    <selectable><h:i>6144</h:i></selectable>
                    <selectable><h:i>8192</h:i></selectable>
                  </selectables> bits and hash <selectables>
                    <selectable><h:i>SHA-384</h:i></selectable>
                    <selectable><h:i>SHA-512</h:i></selectable>
                  </selectables></col>
                  <col>
                    RFC 8017 (Section 8.2) [PKCS #1 v2.2]<h:p/>
                    FIPS PUB 186-5 (Section 5.4) [RSASSA-PKCS1-v1_5]
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-cop-sigver-rsa-pss">
                  <col>RSA-PSS</col>
                  <col>RSASSA-PSS</col>
                  <col>Modulus of size <selectables>
                    <selectable><h:i>2048 (for secure boot only)</h:i></selectable>
                    <selectable><h:i>3072</h:i></selectable>
                    <selectable><h:i>4096</h:i></selectable>
                    <selectable><h:i>6144</h:i></selectable>
                    <selectable><h:i>8192</h:i></selectable>
                  </selectables> bits and hash <selectables>
                    <selectable><h:i>SHA-384</h:i></selectable>
                    <selectable><h:i>SHA-512</h:i></selectable>
                  </selectables></col>
                  <col>
                    RFC 8017 (Section 8.1) [PKCS#1 v2.2]<h:p/>
                    FIPS PUB 186-5 (Section 5.4) [RSASSA-PSS]
                  </col>
                </selectable>
              
                
                <selectable id="sel-fcs-cop-sigver-ecdsa">
                  <col>ECDSA</col>
                  <col>ECDSA</col> 
                  <col>Elliptic Curve <selectables>
                    <selectable><h:i>P-384</h:i></selectable>
                    <selectable><h:i>P-521</h:i></selectable>
                  </selectables> using hash <selectables>
                    <selectable><h:i>SHA-384</h:i></selectable>
                    <selectable><h:i>SHA-512</h:i></selectable>
                  </selectables></col>
                  <col><selectables>
                    <selectable><h:i>ISO/IEC 14888-3:2018 (Subclause 6.6)</h:i></selectable>
                    <selectable><h:i>FIPS PUB 186-5 (Section 6.4.2)</h:i></selectable>
                  </selectables>[ECDSA]<h:p/>
                    NIST SP-800 186 (Section 4) [NIST Curves]
                  </col>
                </selectable>
                
                <!-- LMS -->
                <selectable id="sel-fcs-cop-sigver-lms">
                  <col>LMS</col>
                  <col>LMS</col>
                  <col>Private key size = <selectables>
                    <selectable><h:i>192 bits with </h:i><selectables>
                      <selectable><h:i>SHA-256/192</h:i></selectable>
                      <selectable><h:i>SHAKE256/192</h:i></selectable>
                    </selectables></selectable>
                    <selectable><h:i>256 bits with </h:i><selectables>
                      <selectable><h:i>SHA-256</h:i></selectable>
                      <selectable><h:i>SHAKE256</h:i></selectable>
                    </selectables></selectable>
                  </selectables><h:p/>
                    Winternitz parameter = <selectables>
                      <selectable><h:i>1</h:i></selectable>
                      <selectable><h:i>2</h:i></selectable>
                      <selectable><h:i>4</h:i></selectable>
                      <selectable><h:i>8</h:i></selectable></selectables><h:p/>
                    Tree height = <selectables>
                      <selectable><h:i>5</h:i></selectable>
                      <selectable><h:i>10</h:i></selectable>
                      <selectable><h:i>15</h:i></selectable>
                      <selectable><h:i>20</h:i></selectable>
                      <selectable><h:i>25</h:i></selectable></selectables>
                  </col>
                  <col>RFC 8554 [LMS]<h:p/>
                    NIST SP 800-208 (Section 4) [parameters]
                  </col>
                </selectable>
                
                <!-- XMSS -->
                <selectable id="sel-fcs-cop-sigver-xmss">
                  <col>XMSS</col>
                  <col>XMSS</col>
                  <col>Private key size = <selectables>
                    <selectable><h:i>192 bits with </h:i><selectables>
                      <selectable><h:i>SHA-256/192</h:i></selectable>
                      <selectable><h:i>SHAKE256/192</h:i></selectable>
                    </selectables></selectable>
                    <selectable><h:i>256 bits with </h:i><selectables>
                      <selectable><h:i>SHA-256</h:i></selectable>
                      <selectable><h:i>SHAKE256</h:i></selectable>
                    </selectables></selectable>
                  </selectables><h:p/>
                    Tree height = <selectables>
                      <selectable><h:i>10</h:i></selectable>
                      <selectable><h:i>16</h:i></selectable>
                      <selectable><h:i>20</h:i></selectable>
                    </selectables>
                  </col>
                  <col>RFC 8391 [XMSS]<h:p/>
                    NIST SP 800-208 (Section 5) [parameters]
                  </col>
                </selectable>
                
                <!-- ML-DSA Signature Verification -->
                <selectable id="sel-fcs-cop-sigver-mldsa">
                  <col>ML-DSA</col>
                  <col>ML-DSA Signature Verification</col>
                  <col>Parameter set = ML-DSA-87</col>
                  <col>NIST FIPS 204 (Section 5.3)</col>
                </selectable>
                
                
              </selectables>
            </title>
       <aactivity>
         <TSS>
           <h:p>
           The evaluator shall examine the TSS to verify that any one-time values such as nonces or masks
           are constructed and used in accordance with the relevant standards.
           </h:p><h:p>
           If "2048 (for secure boot only)" is selected for RSA, the evaluator shall check that the TSS documents that 2048-bit RSA is used only for secure boot and that a larger key size is used for any other function.
           </h:p>
         </TSS>
         <Guidance>
           <h:p>
             If "2048 (for secure boot only)" is selected for RSA, the evaluator shall check that the guidance includes a configuration needed to ensure that 2048-bit RSA is used only for secure boot and that a larger key size is used for any other function.
           </h:p>
         </Guidance>
         <Tests>
           The following tests are conditional based on the selections made in the SFR. The evaluator
           shall perform the following tests or witness respective tests executed by the developer. The tests
           must be executed on a platform that is as close as practically possible to the operational platform
           (but which may be instrumented in terms of, for example, use of a debug mode). Where the test
           is not carried out on the TOE itself, the test platform shall be identified and the differences
           between test environment and TOE execution environment shall be described.<h:p/>
           
           <!-- RSA-PKCS Signature Verification   -->
           <h:br/><h:b>RSA-PKCS Signature Verification</h:b><h:p/>
           <h:table border="1">
             <h:tr class="header" bgcolor="#cccccc">
               <h:td valign="top">Identifier</h:td>
               <h:td valign="top">Cryptographic Algorithm Parameters</h:td>
               <h:td valign="top">Cryptographic Key Sizes</h:td>
               <h:td valign="top">List of Standards</h:td>
             </h:tr>
             <h:tr>
               <h:td valign="top">RSA-PKCS </h:td>
               <h:td valign="top">RSASSA-PKCS1-v1_5</h:td>
               <h:td valign="top">Modulus of size [<h:b>selection:</h:b> <h:i>2048 (for secure boot only), 3072, 4096, 6144, 8192</h:i>] bits,
                 hash [<h:b>selection:</h:b> <h:i>SHA-384, SHA-512</h:i>]</h:td>
               <h:td valign="top">RFC 8017 (Section 8.2) [PKCS #1 v2.2]<h:p/>
                 NIST FIPS PUB 186-5 (Section 5.4) [RSASSA-PKCS1-v1_5]</h:td>
             </h:tr>
           </h:table><h:p/>	
           To test the TOE’s ability to perform RSA Digital Signature Verification using PKCS1-v1_5
           signature type, the evaluator shall perform Generated Data Test using the following input
           parameters:<h:ul>
             <h:li>Modulus size [2048, 3072, 4096, 6144, 8192] bits</h:li>
             <h:li>Hash algorithm [SHA-384, SHA-512]</h:li></h:ul><h:p/>
           <h:br/><h:b>Generated Data Test</h:b><h:p/>
           For each supported combination of the above parameters, the evaluator shall cause the TOE to
           generate six test cases using a random message and its signature such that the test cases are
           modified as follows:<h:p/><h:ul>
             <h:li>One test case is left unmodified</h:li>
             <h:li>For one test case the Message is modified</h:li>
             <h:li>For one test case the Signature is modified</h:li>
             <h:li>For one test case the exponent (<h:i>e</h:i>) is modified</h:li>
             <h:li>For one test case the IR is moved</h:li>
             <h:li>For one test case the Trailer is moved</h:li></h:ul><h:p/>
           The TOE must correctly verify the unmodified signatures and fail to verify the modified
           signatures.<h:p/>
           
           <!-- RSA-PSS Signature Verification    -->
           <h:br/><h:b>RSA-PSS Signature Verification </h:b><h:p/>
           <h:table border="1">
             <h:tr class="header" bgcolor="#cccccc">
               <h:td valign="top">Identifier</h:td>
               <h:td valign="top">Cryptographic Algorithm Parameters</h:td>
               <h:td valign="top">Cryptographic Key Sizes</h:td>
               <h:td valign="top">List of Standards</h:td>
             </h:tr>
             <h:tr>
               <h:td valign="top">RSA-PSS</h:td>
               <h:td valign="top">RSASSA-PSS</h:td>
               <h:td valign="top">Modulus of size [<h:b>selection:</h:b> <h:i>2048 (for secure boot only), 3072, 4096, 6144, 8192</h:i>] bits,
                 hash [<h:b>selection:</h:b> <h:i>SHA-384, SHA-512</h:i>]</h:td>
               <h:td valign="top">RFC 8017 (Section 8.2) [PKCS #1 v2.2]<h:p/>
                 NIST FIPS PUB 186-5 (Section 5.4) [RSASSA-PSS]</h:td>
             </h:tr>
           </h:table><h:p/>	
           To test the TOE’s ability to perform RSA Digital Signature Verification using PSS signature
           type, the evaluator shall perform the Generated Data Test using the following input parameters:<h:ul>
             <h:li>Modulus size [2048, 3072, 4096, 6144, 8192] bits</h:li>
             <h:li>Hash algorithm [SHA-384, SHA-512]</h:li>
             <h:li>Salt length [0-hash length]</h:li>
             <h:li>Mask function [MGF1]</h:li></h:ul><h:p/>
           <h:br/><h:b>Generated Data Test</h:b><h:p/>
           For each supported combination of the above parameters, the evaluator shall cause the TOE to
           generate six test cases using random data such that the test cases are modified as follows:<h:p/><h:ul>
             <h:li>One test case is left unmodified</h:li>
             <h:li>For one test case the Message is modified</h:li>
             <h:li>For one test case the Signature is modified</h:li>
             <h:li>For one test case the exponent (<h:i>e</h:i>) is modified</h:li>
             <h:li>For one test case the IR is moved</h:li>
             <h:li>For one test case the Trailer is moved</h:li></h:ul><h:p/>
           The TOE must correctly verify the unmodified signatures and fail to verify the modified
           signatures.<h:p/>
           
           
           <!-- ECDSA Signature Verification  -->
           <h:br/><h:b>ECDSA Signature Verification </h:b><h:p/>
           <h:table border="1">
             <h:tr class="header" bgcolor="#cccccc">
               <h:td valign="top">Identifier</h:td>
               <h:td valign="top">Cryptographic Algorithm Parameters</h:td>
               <h:td valign="top">Cryptographic Key Sizes</h:td>
               <h:td valign="top">List of Standards</h:td>
             </h:tr>
             <h:tr>
               <h:td valign="top">ECDSA</h:td>
               <h:td valign="top">ECDSA</h:td>
               <h:td valign="top">Elliptic Curve [<h:b>selection:</h:b> <h:i>P-384, P-521</h:i>] and hash function using 
                 [<h:b>selection:</h:b> <h:i>SHA-384, SHA-512</h:i>] </h:td>
               <h:td valign="top">[<h:b>selection:</h:b> <h:i>ISO/IEC 14888-3:2018 (Subclause 6.6),
                 NIST FIPS PUB 186-5 (Sections 6.3.1, 6.4.1</h:i>] [ECDSA]<h:p/>
                 NIST SP-800 186 (Section 4) [NIST Curves] </h:td>
             </h:tr>
           </h:table><h:p/>	
           To test the TOE’s ability to perform ECDSA Digital Signature Verification, the evaluator shall
           perform the Algorithm Functional Test using the following input parameters:<h:ul>
             <h:li>Elliptic Curve [P-384, P-521]</h:li>
             <h:li>Hash algorithm [SHA-384, SHA-512]</h:li></h:ul><h:p/>
           <h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
           For each supported combination of the above parameters, the evaluator shall cause the TOE to
           generate test cases consisting of messages and signatures such that the 21 test cases are
           modified as follows:<h:p/><h:ul>
             <h:li>Three test cases are left unmodified</h:li>
             <h:li>For three test cases the Message is modified</h:li>
             <h:li>For three test cases the key is modified</h:li>
             <h:li>For three test cases the <h:i>r</h:i> value is modified</h:li>
             <h:li>For three test cases the <h:i>s</h:i> value is modified</h:li>
             <h:li>For three test cases the value <h:i>r</h:i> is zeroed</h:li>
             <h:li>For three test cases the value <h:i>s</h:i> is zeroed</h:li></h:ul><h:p/>
           The TOE must correctly verify the unmodified signatures and fail to verify the modified
           signatures.<h:p/>
           
           <!-- LMS signature Verification  -->
           <h:br/><h:b>LMS Signature Verification </h:b><h:p/>
           <h:table border="1">
             <h:tr class="header" bgcolor="#cccccc">
               <h:td valign="top">Identifier</h:td>
               <h:td valign="top">Cryptographic Algorithm Parameters</h:td>
               <h:td valign="top">Cryptographic Key Sizes</h:td>
               <h:td valign="top">List of Standards</h:td>
             </h:tr>
             <h:tr>
               <h:td valign="top">LMS</h:td>
               <h:td valign="top">LMS</h:td>
               <h:td valign="top">Private key size = [<h:b>selection:</h:b>
                 <h:i>192 bits with [<h:b>selection:</h:b> SHA256/192, SHAKE256/192], 
                 256 bits with [<h:b>selection:</h:b> SHA-256, SHAKE256]</h:i>], 
                 Winternitz parameter = [<h:b>selection:</h:b> <h:i>1, 2, 4, 8</h:i>], 
                 and tree height = [<h:b>selection:</h:b> <h:i>5, 10, 15, 20, 25</h:i>] </h:td>
               <h:td valign="top">RFC 8554 [LMS]<h:p/>
                 NIST SP 800-208 (Section 4) [parameters] </h:td>
             </h:tr>
           </h:table><h:p/>	
           To test the TOE’s ability to verify cryptographic digital signature using LMS, the
           evaluator shall perform the Algorithm Functional Test using the following input parameters:<h:ul>					
             <h:li>Hash algorithm [SHA-256/192, SHAKE256/192, SHA-256, SHAKE256]</h:li>
             <h:li>Winternitz [1, 2, 4, 8]</h:li>
             <h:li>Tree height [5, 10, 15, 20, 25]</h:li></h:ul><h:p/>
           <h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
           For each supported combination of the above parameters, the evaluator shall generate four test cases
           consisting of signed messages and keys, such that<h:ul>
             <h:li>One test case is unmodified (i.e., correct)</h:li>
             <h:li>For one test case modify the message, i.e., the message is different</h:li>
             <h:li>For one test case modify the signature, i.e., signature is different</h:li>
             <h:li>For one test case modify the signature header so that it is a valid header for a different
               LMS parameter set.</h:li></h:ul><h:p/>
           The TOE must correctly verify the unmodified test case and fail to verify the modified test cases.<h:p/>
           
           <!-- XMSS Signature Verification  -->
           <h:br/><h:b>XMSS Signature Verification</h:b><h:p/>
           <h:table border="1">
             <h:tr class="header" bgcolor="#cccccc">
               <h:td valign="top">Identifier</h:td>
               <h:td valign="top">Cryptographic Algorithm Parameters</h:td>
               <h:td valign="top">Cryptographic Key Sizes</h:td>
               <h:td valign="top">List of Standards</h:td>
             </h:tr>
             <h:tr>
               <h:td valign="top">XMSS</h:td>
               <h:td valign="top">XMSS</h:td>
               <h:td valign="top">Private key size = [<h:b>selection:</h:b>
                 <h:i>192 bits with [<h:b>selection:</h:b> SHA256/192, SHAKE256/192], 
                   256 bits with [<h:b>selection:</h:b> SHA-256, SHAKE256]</h:i>], 
                 and tree height = [<h:b>selection:</h:b> <h:i>10, 16, 20</h:i>] </h:td>
               <h:td valign="top">RFC 8391 [XMSS] <h:p/>
                 NIST SP 800-208 (Section 5) [parameters]</h:td>
             </h:tr>
           </h:table><h:p/>	
           To test the TOE’s ability to verify digital signatures using XMSS or XMSS MT, the evaluator shall
           perform the XMSS digital signature verification test using the following input parameters:<h:ul>
             <h:li>Hash algorithm [SHA-256/192, SHAKE256/192, SHA-256, SHAKE256]</h:li>
             <h:li>Tree height [10, 16, 20]</h:li></h:ul><h:p/>
           <h:br/><h:b>XMSS Digital Signature Verification Test</h:b><h:p/>
           For each supported combination of the above parameters, the evaluator shall generate four test
           cases consisting of signed messages and keys, such that<h:ul>
             <h:li>One test case is unmodified (i.e., correct)</h:li>
             <h:li>For one test case modify the message, i.e., the message is different</h:li>
             <h:li>For one test case modify the signature, i.e., signature is different</h:li>
             <h:li>For one test case modify the signature header so that it is a valid header 
               for a different XMSS parameter set</h:li></h:ul><h:p/>
           The evaluator shall verify the correctness of the implementation by verifying that the TOE
           correctly verifies the unmodified test case and fails to verify the modified test cases.<h:p/>	
           
           <!-- ML-DSA Signature Verification  -->
           <h:br/><h:b>ML-DSA Signature Verification</h:b><h:p/>
           <h:table border="1">
             <h:tr class="header" bgcolor="#cccccc">
               <h:td valign="top">Identifier</h:td>
               <h:td valign="top">Cryptographic Algorithm Parameters</h:td>
               <h:td valign="top">Cryptographic Key Sizes</h:td>
               <h:td valign="top">List of Standards</h:td>
             </h:tr>
             <h:tr>
               <h:td valign="top">ML-DSA</h:td>
               <h:td valign="top">ML-DSA SigVer</h:td>
               <h:td valign="top">Parameter set = ML-DSA-87</h:td>
               <h:td valign="top">NIST FIPS PUB 204 (Section 5.2)</h:td>
             </h:tr>
           </h:table><h:p/>				
           To test the TOE’s ability to validate digital signatures using ML-DSA, the
           evaluator shall perform the Algorithm Functional Test using the following input parameters:<h:ul>
             <h:li>Parameter set [ML-DSA-87]</h:li>
             <h:li>Previously generated signed Message [8-65535] bytes</h:li>
             <h:li><h:i>Mu</h:i> value (if generated externally)</h:li>
             <h:li>Context (for external interface testing)</h:li>
             <h:li>Previously generated public key (<h:i>pk</h:i>)</h:li>
             <h:li>Previously generated Signature</h:li></h:ul><h:p/>
           <h:br/><h:b>Algorithm Functional Test</h:b><h:p/>
           For each combination of supported parameter set and capabilities, the evaluator shall require the
           implementation under test to validate 15 signatures. Each group of 15 test
           cases is modified as follows:<h:ul>
             <h:li>Three test cases are left unmodified</h:li>
             <h:li>For three test cases the Signed message is modified</h:li>
             <h:li>For three test cases the component of the signature that commits the signer to the message is
               modified</h:li>
             <h:li>For three test cases the component of the signature that allows the verifier to construct the vector z is
               modified</h:li>
             <h:li>For three test cases the component of the signature that allows the verifier to construct the hint array
               is modified</h:li></h:ul><h:p/>
           The TOE must correctly verify the unmodified signatures and fail to verify the modified
           signatures.
         </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_cop.1" iteration="SKC" name="Cryptographic Operation - Encryption/Decryption">
          <f-element id="fel-encrypt-how">
            <title>
              The TSF shall perform [<h:i>symmetric-key encryption and decryption</h:i>] in accordance with a 
              specified cryptographic algorithm   
              <selectables>
                <tabularize id="fcs-cop-skc-sels" title="Allowable choices for FCS_COP.1/SKC">
                  <textcol>Identifier</textcol>
                  <reqtext/>
                  <selectcol>Cryptographic Algorithm</selectcol>
                  <reqtext>and cryptographic key sizes</reqtext>
                  <selectcol>Cryptographic Key Sizes</selectcol>
                  <reqtext>that meet the following:</reqtext>
                  <selectcol>List of Standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-cop-skc-sels"/> provides the allowable choices for
                    completion of the selection operations in FCS_COP.1/SKC.</reqtext>							
                </tabularize>
                
                <!-- AES-CBC -->
                <selectable id="sel-fcs-cop-skc-aes-cbc">
                  <col>AES-CBC</col>
                  <col>AES in CBC mode with non-repeating and unpredictable IVs</col>
                  <col>256 bits</col>
                  <col><selectables>
                    <selectable><h:i>ISO/IEC 18033-3:2010 (Subclause 5.2)</h:i></selectable> 
                    <selectable><h:i>FIPS PUB 197</h:i></selectable></selectables> [AES]<h:p/><selectables>
                      <selectable><h:i>ISO/IEC 10116:2017 (Clause 7)</h:i></selectable> 
                      <selectable><h:i>NIST SP 800-38A</h:i></selectable></selectables> [CBC]
                  </col>
                </selectable>
                
                <!-- XTS-AES -->
                <selectable id="sel-fcs-cop-skc-aes-xts">
                  <col>XTS-AES</col>
                  <col>AES in XTS mode with unique tweak values that are consecutive non-negative 
                    integers starting at an arbitrary non-negative integer</col>
                  <col>512 bits</col>
                  <col><selectables>
                    <selectable><h:i>ISO/IEC 18033-3:2010 (Subclause 5.2)</h:i></selectable> 
                    <selectable><h:i>FIPS PUB 197</h:i></selectable></selectables> [AES]<h:p/><selectables>
                      <selectable>IEEE Std. 1619-2018</selectable> 
                      <selectable>NIST SP 800-38E</selectable></selectables> [XTS]
                  </col>
                </selectable>
                
                <!-- AES-CTR -->
                <selectable id="sel-fcs-cop-skc-aes-ctr">
                  <col>AES-CTR</col>
                  <col>AES in Counter Mode with a non-repeating initial counter and with no repeated
                    use of counter values across multiple messages with the same secret key</col>
                  <col>256 bits</col>
                  <col><selectables>
                    <selectable>ISO/IEC 18033-3:2010 (Subclause 5.2)</selectable> 
                    <selectable>FIPS PUB 197</selectable></selectables> [AES]<h:p/><selectables>
                      <selectable>ISO/IEC 10116:2017 (Clause 10)</selectable> 
                      <selectable>NIST SP 800-38A</selectable></selectables> [CBC]
                  </col>
                </selectable>
        
              </selectables>
            </title>
            <aactivity>
              <TSS>
                The evaluator shall examine the TSS to ensure that it describes the construction of any IVs,
                tweak values, and counters in conformance with the relevant specifications.<h:p/>
                If XTS-AES is claimed then the evaluator shall examine the TSS to verify that the TOE creates
                full-length keys by methods that ensure that the two key halves are different and independent.
              </TSS>
              <Guidance/>
              <Tests>
                The following tests require the developer to provide access to a test platform that
                provides the evaluator with tools that are typically not found on factory products.<h:p/>
                The following tests are conditional based on the selections made in the SFR. The
                evaluator shall perform the following tests or witness respective tests executed by
                the developer. The tests must be executed on a platform that is as close as practically
                possible to the operational platform (but which may be instrumented in terms of,
                for example, use of a debug mode). Where the test is not carried out on the TOE
                itself, the test platform shall be identified and the differences between test
                environment and TOE execution environment shall be described.
                
                <!-- AES-CBC -->
                <h:br/><h:b>AES-CBC</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Key Sizes</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">AES-CBC</h:td>
                    <h:td valign="top">AES in CBC mode with non-repeating and unpredictable IVs</h:td>
                    <h:td valign="top">256 bits</h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> <h:i>ISO/IEC 18033-3:2010 (Subclause 5.2),
                      FIPS PUB 197</h:i>] [AES]<h:p/>
                      [<h:b>selection:</h:b>  <h:i>ISO/IEC 10116:2017 (Clause 7), 
                      NIST SP 800-38A</h:i>] [CBC]</h:td>
                  </h:tr>
                </h:table><h:p/>	
                
                To test the TOE’s ability to encrypt and decrypt data using AES in CBC mode, the evaluator 
                shall perform Algorithm Functional Tests and Monte Carlo Tests using the following
                input parameters:<h:ul>
                  <h:li>Key size [256] bits</h:li>
                  <h:li>Direction [encryption, decryption]</h:li></h:ul><h:p/>
                <h:br/><h:b>Algorithm Functional Tests</h:b><h:p/>
                Algorithm Functional Tests are designed to verify the correct operation of the logical
                components of the algorithm implementation under normal operation using different block sizes.
                For AES-CBC, there are two types of AFTs:<h:p/>
                <h:br/><h:b><h:i>Known-Answer Tests</h:i></h:b><h:p/>
                For each combination of direction and claimed key size, the TOE must be tested using the
                GFSBox, KeySbox, VarTxt, and VarKey test cases listed in Appendixes B through E of <h:i>The
                  Advanced Encryption Standard Algorithm Validation Suite (AESAVS)</h:i>, NIST, 15 November 2002.<h:p/>
                <h:br/><h:b><h:i>Multi-Block Message Tests</h:i></h:b><h:p/>
                For each combination of direction and claimed key size, the TOE must be tested against 10 test
                cases consisting of a random IV, random key, and random plaintext or ciphertext. The
                plaintext or ciphertext starts with a length of 16 bytes and increases by 16 bytes for each test case
                until reaching 160 bytes.<h:p/>
                <h:br/><h:b><h:i>Monte Carlo Tests</h:i></h:b><h:p/>
                Monte Carlo tests are intended to test the implementation under strenuous conditions. The TOE
                must process the test cases according to the following algorithm once for each combination of
                direction and key size:<h:p/>
                <h:pre>
                  Key[0] = Key
                  IV[0] = IV
                  PT[0] = PT
                  for i = 0 to 99 {
                  Output Key[i], IV[i], PT[0]
                  for j = 0 to 999 {
                  if (j == 0) {
                  CT[j] = AES-CBC-Encrypt(Key[i], IV[i], PT[j])
                  PT[j+1] = IV[i]
                  } else {
                  CT[j] = AES-CBC-Encrypt(Key[i], PT[j])
                  PT[j+1] = CT[j-1]
                  }
                  }
                  Output CT[j]
                  AES_KEY_SHUFFLE(Key, CT)
                  IV[i+1] = CT[j]
                  PT[0] = CT[j-1]
                  }
                </h:pre><h:p/>	
                where <h:pre>AES_KEY_SHUFFLE</h:pre> is defined as: <h:p/>
                <h:pre>
                  If ( keylen = 128 )
                  Key[i+1] = Key[i] xor MSB(CT[j], 128)
                  If ( keylen = 192 )
                  Key[i+1] = Key[i] xor (LSB(CT[j-1], 64) || MSB(CT[j], 128))
                  If ( keylen = 256 )
                  Key[i+1] = Key[i] xor (MSB(CT[j-1], 128) || MSB(CT[j], 128))
                </h:pre><h:p/>
                The above pseudocode is for encryption. For decryption, swap all instances of CT and PT.<h:p/>
                The initial IV, key, and plaintext or ciphertext should be random.<h:p/>
                The evaluator shall test the decrypt functionality using the same test as above,
                exchanging CT and PT, and replacing AES-CBC-Encrypt with AES-CBC-Decrypt.<h:p/>
                
                
                <!-- XTS-AES -->
                <h:br/><h:b>XTS-AES</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Key Sizes</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">XTS-AES</h:td>
                    <h:td valign="top">AES in XTS mode with unique tweak values that are consecutive
                      non-negative integers starting at an arbitrary non-negative integer</h:td>
                    <h:td valign="top">512 bits</h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> <h:i>ISO/IEC 18033-3:2010 (Subclause 5.2),
                      FIPS PUB 197</h:i>] [AES]<h:p/>
                      [<h:b>selection:</h:b> <h:i>IEEE Std. 1619-2018, 
                      NIST SP 800-38E</h:i>] [XTS]</h:td>
                  </h:tr>
                </h:table><h:p/>	
                To test the TOE’s ability to encrypt and decrypt data using AES in XTS mode, the evaluator shall
                perform the Single Data Unit Test and the Multiple Data Unit Test using the following input
                parameters:<h:ul>
                  <h:li>Direction [encryption, decryption]</h:li>
                  <h:li>Key size [512] bits</h:li>
                  <h:li>Tweak value format [128-bit hex string, data unit sequence number]</h:li></h:ul><h:p/>
                <h:br/><h:b>Single Data Unit Test</h:b><h:p/>
                For each combination of claimed key size, direction, and supported tweak value format, the
                evaluator shall generate 50 test cases consisting of random payload data. The payload data size is
                determined randomly for each test case from supported values within the range [128-65536] bits.
                The payload size and data unit size must be equal.<h:p/>
                <h:br/><h:b>Multiple Data Unit Test</h:b><h:p/>
                For each combination of claimed key size, direction, and supported tweak value format, the
                evaluator shall generate 50 test cases consisting of random payload data. The payload data size is
                determined randomly for each test case from supported values within the range [128-65536] bits.
                Likewise, the data unit size is determined randomly for each test case from supported values
                within the range [128-65535] bits. The payload size and data unit size must not be equal.<h:p/>
                The evaluator shall verify the correctness of the TSF’s implementation by comparing values
                generated by the TSF with those generated by a known good implementation using the same
                input parameters.<h:p/>
                
                <!-- AES-CTR -->
                <h:br/><h:b>AES-CTR</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Identifier</h:td>
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Cryptographic Key Sizes</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">AES-CTR</h:td>
                    <h:td valign="top">AES in Counter Mode with a non-repeating initial counter and
                      with no repeated use of counter values across multiple messages with the 
                      same secret key.</h:td>
                    <h:td valign="top">256 bits</h:td>
                    <h:td valign="top">
                      [<h:b>selection:</h:b> <h:i>ISO/IEC 18033-3:2010 (Subclause 5.2),
                      FIPS PUB 197</h:i>] [AES]<h:p/>
                      [<h:b>selection:</h:b>  <h:i>ISO/IEC 10116:2017 (Clause 10), 
                        NIST SP 800-38A</h:i>] [CTR]</h:td>
                  </h:tr>
                </h:table><h:p/>	
                To test the TOE’s ability to encrypt and decrypt data using AES in CTR mode, the evaluator shall
                perform the Algorithm Functional Test and the Counter Test using the following input
                parameters:<h:ul>
                  <h:li>Direction [encryption, decryption]</h:li>
                  <h:li>Key size [256] bits</h:li></h:ul><h:p/>
                <h:br/><h:b>Algorithm Functional Tests</h:b><h:p/>
                Algorithm Functional Tests are designed to verify the correct operation of the logical
                components of the algorithm implementation under normal operation using different block sizes.
                For AES-CTR, there are three types of AFTs:<h:p/>
                <h:br/><h:b><h:i>Known-Answer Tests</h:i></h:b><h:p/>
                For each combination of direction and claimed key size, the TOE must be tested using the
                GFSBox, KeySbox, VarTxt, and VarKey test cases listed in Appendixes B through E of <h:i>The
                  Advanced Encryption Standard Algorithm Validation Suite (AESAVS)</h:i>, NIST, 15 November 2002.<h:p/>
                <h:br/><h:b><h:i>Single Block Message Tests</h:i></h:b><h:p/>
                For each combination of direction and claimed key, the evaluator shall generate 10 test cases
                with a data size of 128 bits.<h:p/>
                <h:br/><h:b><h:i>Partial Block Message Tests</h:i></h:b><h:p/>
                Monte Carlo tests are intended to test the implementation under strenuous conditions. The TOE
                must process the test cases according to the following algorithm once for each combination of
                direction and key size:<h:p/>
                For each combination of direction and claimed key, the evaluator shall generate five test cases
                such that the data size is not a multiple of 128 bits.<h:p/>
                The evaluator shall verify the correctness of the TSF’s implementation by comparing values
                generated by the TSF with those generated by a known good implementation using the same
                input parameters.<h:p/>
                <h:br/><h:b><h:i>Counter Test</h:i></h:b><h:p/>
                The evaluator shall generate a single message of 1000 blocks (128000 bits) and either encrypt or
                decrypt it. Back-compute the IVs used and verify that they are unique and increasing (encryption) or
                decreasing (decryption).<h:p/>
                
              </Tests>
            </aactivity>
            <!--
            <rule id="r-wlan-aes">
              <or>
                <and><not><ref-id>mod-wlanclient</ref-id></not></and>
                <and>
                  <ref-id>mod-wlanclient</ref-id>
                  <or><ref-id>s-aes-ccmp</ref-id><ref-id>s-aes-gcmp</ref-id></or>
                </and>
              </or>
            </rule>
            -->
            <!-- <rule id="r-aes-ctr-for-ssh"> -->
            <!--   <if><ref-id>s-ftp_ssh</ref-id></if> -->
            <!--   <then><ref-id>s-aes-ctr</ref-id></then> -->
            <!-- <or><and><ref-id>s-aes-ctr</ref-id><ref-id>s-ftp_ssh</ref-id></and> -->
            <!-- <not><ref-id>s-ftp_ssh</ref-id></not> -->
            <!-- </or> -->
            <!-- </rule> -->
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component id="sfr-fcs-cop-1-xof" cc-id="fcs_cop.1" iteration="XOF" name="Cryptographic Operation - Extendable-Output Function" status="sel-based">
         
          <depends on-sel="sel-fcs-cop-sigver-lms"/>
          <depends on-sel="sel-fcs-cop-sigver-xmss"/>
          <f-element id="fcs-cop-1e1-xof">
            <title>
              The TSF shall perform [<h:i>extendable-output function</h:i>] in accordance with a specified cryptographic algorithm  
              <selectables>
                <tabularize id="fcs-cop-xof-sels" title="Allowable choices for FCS_COP.1/XOF">
                  <selectcol>Cryptographic Algorithm</selectcol>
                  <reqtext>and parameters</reqtext>
                  <selectcol>Parameters</selectcol>
                  <reqtext>that meet the following:</reqtext>
                  <selectcol>List of Standards</selectcol>
                  <reqtext>.<h:p/><h:p/><xref to="fcs-cop-xof-sels"/> provides the allowable choices for
                    completion of the selection operations of FCS_COP.1/XOF.</reqtext>
                </tabularize>
                
                <!-- SHAKE -->
                <selectable id="sel-fcs-cop-xof-shake">
                  <col>SHAKE</col>
                  <col>Functions = [SHAKE256]
                  </col>
                  <col>NIST FIPS PUB 202 Section 6.2 [SHAKE]</col>
                </selectable>
                
              </selectables>
            </title>
            <note role="application">
              In accordance with CNSA, SHAKE is permitted to be used only as a component of LMS or XMSS. 
              Therefore this component is claimed only if LMS or XMSS is claimed in FCS_COP.1/SigVer.
            </note>
            <aactivity>
              <TSS/>
              <Guidance/>
              <Tests>
                The following tests are conditional based on the selections made in the SFR. The evaluator
                shall perform the following tests or witness respective tests executed by the developer. The tests
                must be executed on a platform that is as close as practically possible to the operational platform
                (but which may be instrumented in terms of, for example, use of a debug mode). Where the test
                is not carried out on the TOE itself, the test platform shall be identified and the differences
                between test environment and TOE execution environment shall be described.<h:p/>
                
                <!-- SHAKE -->
                <h:br/><h:b>SHAKE</h:b><h:p/>
                <h:table border="1">
                  <h:tr class="header" bgcolor="#cccccc">
                    <h:td valign="top">Cryptographic Algorithm</h:td>
                    <h:td valign="top">Parameters</h:td>
                    <h:td valign="top">List of Standards</h:td>
                  </h:tr>
                  <h:tr>
                    <h:td valign="top">SHAKE</h:td>
                    <h:td valign="top">Function = [SHAKE256]</h:td>
                    <h:td valign="top">NIST FIPS PUB 202 Section 6.2 [SHAKE]</h:td>
                  </h:tr>
                </h:table><h:p/>	
                To test the TOE’s implementation of the SHAKE Extendable Output Function the evaluator shall
                perform the Algorithm Functional Test, Monte Carlo Test, and Variable Output Test using the
                following input parameters:<h:ul>
                  <h:li>Function [SHAKE256]</h:li>
                  <h:li>Output length [16-65536] bits</h:li></h:ul><h:p/>
                <h:br/><h:b><h:i>Algorithm Functional Test</h:i></h:b><h:p/>
                For each supported function, generate test cases consisting of random data for every message
                length from 0 bits (if supported) to <h:i>rate</h:i>-1 bits, where <h:i>rate</h:i> equals<h:p/> 1088.<h:p/>
                Additionally, generate tests cases of random data for messages of every multiple of (rate+1) bits
                starting at length rate, and continuing until 65535 is exceeded.<h:p/>
                <h:br/><h:b><h:i>Monte Carlo Test</h:i></h:b><h:p/>
                The Monte Carlo test takes in a single 128-bit message (SEED) and desired output length in
                bits, and runs 100 iterations of the chained computation. MaxOutBytes and MinOutBytes are the
                largest and smallest supported input and output sizes in bytes, respectively.<h:p/>
                <h:pre>
                  Range = maxOutBytes - minOutBytes + 1
                  OutputLen = maxOutBytes
                  For j = 0 to 99
                  MD[0] = SEED
                  For i = 1 to 1000
                  MSG[i] = 128 leftmost bits of MD[i-1]
                  if (MSG[i] &lt; 128 bits)
                  Append 0 bits on rightmost side of MSG[i] til MSG[i] is 128 bits
                  MD[i] = SHAKE(MSG[i], OutputLen * 8)
                  
                  RightmostOutputBits = 16 rightmost bits of MD[i] as an integer
                  OutputLen = minOutBytes + (RightmostOutputBits % Range)
                  Output MD[1000], OutputLen
                  SEED = MD[1000]
                </h:pre><h:p/>
                <h:br/><h:b><h:i>Variable Output Test</h:i></h:b><h:p/>
                This test measures the ability of the TOE to generate output digests of varying sizes.<h:p/>
                The evaluator shall generate 512 test cases such that the input for each test case consists of 128-
                bits of random data, and the output length includes the minimum supported value, the maximum
                supported value, and 510 random values between the minimum and maximum digest sizes
                supported by the implementation.<h:p/>
                
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <ext-comp-def fam-id="FCS_HTTPS_EXT" title="HTTPS Protocol">
          <fam-behavior>This family defines requirements for implementation of the HTTPS protocol. 
          </fam-behavior>
        </ext-comp-def>
        
        
        <f-component cc-id="fcs_https_ext.1" name="HTTPS Protocol" status="sel-based">
          <depends on-sel="upc_https"/>
          <depends on-sel="itc_https"/>
          
          <comp-lev> requires the TSF to implement the HTTPS protocol in accordance with the specified standard, using TLS, and notifying the application if invalid.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>Configuring whether to allow or disallow establishment of a trusted channel if the peer or server certificate is deemed invalid.</h:li>
          </h:ul></management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included
            in the PP, PP-Module, functional package or ST:
          <h:ul>
            <h:li>Failure of the certificate validity check.</h:li>
          </h:ul></audit>
          <dependencies>
            FCS_TLS_EXT.1 TLS Protocol<h:br/>
            FIA_X509_EXT.1 X.509 Validation of Certificates
          </dependencies>
          
          
          <f-element id="fel-https-how">
            <title>The TSF shall implement the HTTPS protocol that complies with RFC 2818. </title>
          </f-element>

          <f-element id="fel-https-tls">
            <title>The TSF shall implement HTTPS using TLS as defined in [<h:i>the <xref to="tls"/></h:i>].</title>
            <ext-comp-def-title>
              <title>The TSF shall implement HTTPS using TLS as defined in 
                <assignable>specification that defines TLS implementation requirements</assignable>. </title>
            </ext-comp-def-title>
            <note role="application"> 
              The <xref to="tls"/> must be included in the ST, with the following selections made: <h:ul>
                <h:li>FCS_TLS_EXT.1:</h:li>
                <h:ul>
                  <h:li>TLS must be selected</h:li>
                  <h:li>Client must be selected</h:li>
                </h:ul>
              </h:ul>
            </note>
          </f-element>
          <f-element id="fel-conn-notify">

            <title>The TSF shall notify the application and <selectables>
                <selectable id="s-not-estab">not establish the connection</selectable>
                <selectable id="s-req-app-auth">request application authorization to establish the
                  connection</selectable>
            <selectable id="s-no-other-action" exclusive="yes">no other action</selectable></selectables> if the peer certificate is deemed invalid. </title>
	    <ext-comp-def-title><title>The TSF shall notify the application and <assignable>a response</assignable> if the peer certificate is deemed invalid.</title></ext-comp-def-title>
            <note role="application"> Validity is determined by the certificate path, the expiration
            date, and the revocation status in accordance with RFC 5280. <h:br/><h:br/>

	    If <xref to="s-not-estab"/> is selected then "the server certificate is invalid [with no TLS-specific exceptions]" must be selected
            for FCS_TLSC_EXT.1.6 in the <xref to="tls"/>.
              <!-- 
	    <rule id="r-not-estab">
	      <if><ref-id>s-not-estab</ref-id></if>
	      <then><doc ref="tls"><ref-id>s-tlsc-no-excep</ref-id></doc></then>
	    </rule>
	    If <xref to="s-req-app-auth"/> is selected then
              "the server certificate is invalid [except when override is authorized in the case where valid revocation information is not available]" must be selected
	    for FCS_TLSC_EXT.1.6 in the <xref to="tls"/>.
	    <rule id="r-override">
	      <if><ref-id>s-req-app-auth</ref-id></if>
	      <then><doc ref="tls"><ref-id>fcs_tlsc_ext.1.6_2</ref-id></doc></then>
	    </rule>
	    -->
	    If <xref to="s-no-other-action"/> is selected, then "the server certificate is invalid" with either selection can be
            made in FCS_TLSC_EXT.1.6.<h:br/><h:br/>
	    FMT_SMF_EXT.1 Function <xref to="mf-certInvalid"/> configures whether to allow or disallow the establishment of a
              trusted channel if the peer certificate is deemed invalid. </note>
            <aactivity>
              <!-- TODO: Need to fix EA and interweave FMT_SMF_EXT function certInvalid -->
              <TSS>There are no TSS evaluation activities for this component.<h:br/><h:br/></TSS>
              <Guidance>There are no guidance evaluation activities for this component.<h:br/><h:br/></Guidance>
              
              <Tests>
                <testlist>
                  <test>The evaluator shall attempt to establish an HTTPS connection with a
                    webserver, observe the traffic with a packet analyzer, and verify that the
                    connection succeeds and that the traffic is identified as TLS or HTTPS.
                    <h:br/><h:br/> Other tests are performed in conjunction with testing in the
                    <xref to="tls"/>. <h:br/><h:br/> Certificate validity
                    shall be tested in accordance with testing performed for FIA_X509_EXT.1 as defined in <xref to="X509"/>, and the
                    evaluator shall perform the following test: </test><h:br/>
                  <test>The evaluator shall demonstrate that using a certificate without a valid
                    certification path results in an application notification. Using the
                    administrative guidance, the evaluator shall then load a certificate or
                    certificates to the Trust Anchor Database needed to validate the certificate to
                    be used in the function, and demonstrate that the function succeeds. The
                    evaluator then shall delete one of the certificates, and show that the
                    application is notified of the validation failure.</test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
	  <audit-event>
	    <audit-event-descr>Failure of the certificate validity check.</audit-event-descr>
	    <audit-event-info>Issuer Name and Subject Name of certificate</audit-event-info>
	    <audit-event-info><selectables onlyone="yes"><selectable>User’s authorization decision</selectable><selectable>No additional information</selectable></selectables></audit-event-info>
	  </audit-event>
        </f-component>

        
        <f-component cc-id="fcs_rbg.1" name="Random Bit Generation (RBG)">
          <f-element id="fel-rbg-init-seed">
            <title>
              The TSF shall perform deterministic random bit generation services using   
              <selectables>
                <tabularize id="fcs-rbg-1-sels" title="Allowable choices for FCS_RBG.1.1">
                  <textcol>Identifier</textcol>
                  <reqtext/>
                  <selectcol>DRBG Algorithm</selectcol>
                  <reqtext> in accordance with </reqtext>
                  <selectcol>List of standards</selectcol>
                  <reqtext>after initialization.<h:p/><h:p/><xref to="fcs-rbg-1-sels"/> provides the allowable choices for
                    completion of the selection operations of FCS_RBG.1.</reqtext>
                </tabularize>
                
                <selectable id="sel-fcs-rbg-hash-drbg">
                  <col>HASH_DRBG</col>
                  <col>Hash_DRBG with <selectables>
                    <selectable>SHA-384</selectable>
                    <selectable>SHA-512</selectable>
                  </selectables></col>
                  <col><selectables>
                    <selectable>ISO/IEC 18031: 2011 (Section C.2.2)</selectable>
                    <selectable>NIST SP 800-90A Revision 1 Section 10.1.1</selectable></selectables>
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-rbg-hmac-drbg">
                  <col>HMAC_DRBG</col>
                  <col>HMAC_DRBG with  <selectables>
                    <selectable>SHA-384</selectable>
                    <selectable>SHA-512</selectable>
                  </selectables></col>
                  <col><selectables>
                    <selectable>ISO/IEC 18031: 2011 (Section C.2.3)</selectable>
                    <selectable>NIST SP 800-90A Revision 1 Section 10.1.2</selectable></selectables>
                  </col>
                </selectable>
                
                <selectable id="sel-fcs-rbg-ctr-drbg">
                  <col>CTR_DRBG</col>
                  <col>CTR_DRBG with AES-CTR-256</col>
                  <col><selectables>
                    <selectable>ISO/IEC 18031: 2011 (Section C.3.2)</selectable>
                    <selectable>NIST SP800-90A Revision 1 Section 10.2.1</selectable></selectables>
                  </col>
                </selectable>
              </selectables>          
            </title>
            <aactivity level="element">
              Documentation will be produced and the evaluator shall perform the
              activities in accordance with <xref to="entropyappendix"/> and
              the
              <h:a href="https://niap-ccevs.org/Documents_and_Guidance/ccevs/Entropy%20Documentation%20and%20Assessment%20Clarification.pdf">Clarification to the Entropy Documentation and Assessment Annex</h:a>.
              <TSS>The evaluator shall verify that the TSS identifies the DRBGs used by the TOE.</TSS>
              <Guidance>If the DRBG functionality is configurable, the evaluator shall verify that the operational guidance includes instructions on how to configure this behavior.</Guidance>
              <Tests>
                <h:p>
                  The evaluator shall perform the following tests:
                </h:p><h:p>
                  The evaluator shall perform 15 trials for the DRBG implementation. If the DRBG
                  is configurable, the evaluator shall perform 15 trials for each configuration. The
                  evaluator shall also confirm that the operational guidance contains appropriate
                  instructions for configuring the DRBG functionality.
                </h:p><h:p>
                  If the DRBG has  prediction resistance enabled, each trial consists of:<h:ol type="1">
                    <h:li>Instantiate the DRBG.</h:li>
                    <h:li>Generate a block of random bits.</h:li>
                    <h:li>Generate a second block of random bits.</h:li>
                    <h:li>Uninstantiate.</h:li>
                  </h:ol>
                  
                  The evaluator shall verify that the second block of random bits is
                  the expected value. The evaluator shall generate eight input values for each
                  trial. The first is a count (0 – 14). The next three are entropy input, nonce, and
                  personalization string for the instantiate operation. The next two are additional
                  input and entropy input for the first call to generate. The final two are
                  additional input and entropy input for the second call to generate. These values
                  are randomly generated. "generate one block of random bits" means to generate
                  random bits with number of returned bits equal to the Output Block Length (as
                  defined in NIST SP 800-90A).
                </h:p><h:p>
                  If the DRBG does not have prediction resistance, each trial consists of:<h:ol type="1">
                    <h:li>Instantiate the DRBG.</h:li>
                    <h:li>Generate a block of random bits.</h:li>
                    <h:li>Reseed.</h:li>
                    <h:li>Generate a second block of random bits.</h:li>
                    <h:li>Uninstantiate.</h:li>
                  </h:ol>
                  The evaluator shall verify that the second block of random bits is the
                  expected value. The evaluator shall generate eight input values for each trial.
                  The first is a count (0 – 14). The next three are entropy input, nonce, and
                  personalization string for the instantiate operation. The fifth value is
                  additional input to the first call to generate. The sixth and seventh are
                  additional input and entropy input to the call to reseed. The final value is
                  additional input to the second generate call.
                </h:p><h:p>
                  The following list contains more information on some of the input values to be generated/selected by the evaluator.
                  <h:ul>
                    <h:li> <h:b>Entropy input:</h:b> The length of the entropy input value must equal the seed
                      length.</h:li>
                    
                    <h:li><h:b>Nonce:</h:b> If a nonce is supported (CTR_DRBG with no Derivation Function does
                      not use a nonce), the nonce bit length is one-half the seed length. </h:li>
                    <h:li><h:b>Personalization string:</h:b> The length of the personalization string must be
                      less than or equal to seed length. If the implementation only supports one
                      personalization string length, then the same length can be used for both values.
                      If more than one string length is support, the evaluator shall use personalization
                      strings of two different lengths. If the implementation does not use a
                      personalization string, no value needs to be supplied. </h:li>
                    <h:li><h:b>Additional input:</h:b> The additional input bit lengths have the same defaults
                      and restrictions as the personalization string lengths.</h:li>
                  </h:ul>
                </h:p>
              </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-rbg-init-seed-how">
            <title>
              The TSF shall use a <selectables>
                <selectable id="internal-seed">TSF entropy source <assignable>name of entropy source</assignable></selectable>
                <selectable id="internal-seeds"><h:b>multiple independent TSF entropy sources <assignable>names of entropy sources</assignable></h:b></selectable>
                <selectable id="external-seed">TSF interface for obtaining entropy</selectable>
              </selectables>
              for initialization and reseeding.
            </title>
            <note role="application">
              <h:p>
                Following the approach in SP800-90B/C, noise sources are required to be independent. Non-independent noise sources that share dependencies are treated as a single raw source requiring a single entropy source validation. If a TOE has multiple dependent noise sources, they should be grouped according to their dependencies for the purposes of these requirements. For the 
                selection in this requirement, the ST author selects "TSF entropy source..." if
                a single entropy source is used as input to the DRBG. The ST author selects "multiple independent TSF entropy sources..." if a seed is formed from a combination of two or more independent entropy sources within the TOE boundary. If the TSF implements two or more separate DRBGs that are seeded in separate manners, this SFR should be iterated for each DRBG. If multiple distinct entropy sources exist such that each DRBG only uses one of them, then each iteration would select "TSF entropy source..."; "multiple independent TSF entropy sources..." is only selected if a single DRBG uses multiple independent entropy sources for its seed. The ST author selects "TSF interface for obtaining entropy" if entropy source data is generated outside the TOE boundary.
              </h:p>
              <h:p>
                If "TSF entropy source..." is selected, FCS_RBG.3 must be claimed.
              </h:p>
              <h:p>
                If "multiple independent TSF entropy sources..." is selected, FCS_RBG.4 and FCS_RBG.5 must be claimed. 
              </h:p>
              <h:p>
                If "TSF interface for obtaining entropy" is selected, FCS_RBG.2 must be claimed. 
              </h:p>
            </note>
            <aactivity level="element">
              <no-tests>There are no additional EAs for this element.</no-tests>
            </aactivity>
          </f-element>
          
          <f-element id="fel-rbg-init-seed-when">
            <title>
              The TSF shall update the DRBG state by <selectables>
                <selectable>reseeding</selectable>
                <selectable>uninstantiating and reinstantiating</selectable>
              </selectables> using a <selectables>
                <selectable>TSF entropy source <assignable>name of entropy source</assignable></selectable>
                <selectable>TSF interface for obtaining entropy <assignable>name of the interface</assignable></selectable></selectables>
              in the following situations: <selectables linebreak="yes">
                <selectable>never</selectable>
                <selectable>on demand</selectable>
                <selectable>on the condition: <assignable>condition</assignable></selectable>
                <selectable>after <assignable>time</assignable></selectable>
              </selectables>
              in accordance with <assignable>list of standards</assignable>.
            </title>
            <aactivity level="element">              
              <TSS>
                The evaluator shall verify that the TSS identifies how the DRBG state is updated, and the situations under which this may occur.
              </TSS>
              <Guidance>If the ST claims that the DRBG state can be updated on demand, the evaluator shall verify that the operational guidance has instructions for how to perform this operation.</Guidance>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>    
        
        <f-component cc-id="fcs_rbg.2" name="Random Bit Generation (External Seeding)" status="sel-based">
          <depends on="external-seed"/>
          <f-element id="fe1-rbg-seed">
            <title>
              The TSF shall be able to accept a minimum input of [<h:i>384 bits of min-entropy</h:i>] from a TSF interface for obtaining entropy.
            </title>
            <note role="application">
              <h:p>This SFR is claimed if "TSF interface for obtaining entropy" is selected in <xref to="fel-rbg-init-seed-how"/>, i.e., the TOE's entropy source is outside the TOE boundary.
              </h:p><h:p>
                 If the environmental entropy source produces full entropy, the amount of entropy data collected is equal to the amount specified in the selection. If the entropy source does not assure full entropy (i.e., the ratio of min-entropy to collected data is less than 1:1), then the TSF must collect sufficient additional entropy data and perform a derivation function on it to reduce the collected data to a seed with the claimed min-entropy. In this case, the entropy documentation is expected to identify the min-entropy rate of the source data, how much data the TSF collects, and what derivation function is performed on this collected data to ensure that it has the claimed min-entropy.
              </h:p>
              <h:p>
                One should not apply NIST SP 800-90B (or AIS-31) statistical tests against
                an external entropy source since the TSF is unable to enforce entropy requirements or conditioning
                requirements against something outside of its logical boundary. However, the TSS may include estimates for
                min-entropy from external sources that contribute to the overall entropy requirements for 
                the DRBG.
              </h:p>
            </note>
            <aactivity>
              <h:p>
                The evaluator shall examine the entropy documentation required by FCS_RBG.1 to verify that it identifies, for each DRBG function implemented by the TOE, the TSF external interface that is used to seed the TOE's DRBG. The evaluator shall verify that this includes the amount of sampled data and the min-entropy rate of the sampled data such that it can be determined that the TSF can derive a seed from it that has the claimed amount of min-entropy. If the TSF uses an entropy source that can be assumed to have full entropy, the seed is the output data from the entropy source. If the TSF uses an entropy source where the min-entropy of the data is less than 1:1, the evaluator shall verify that the entropy documentation identifies how large the collected data sample is and how TSF derives this data into a seed that has the claimed min-entropy. 
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_rbg.3" name="Random Bit Generation (Internal Seeding - Single Source)" status="sel-based">
          <depends on="internal-seed"/>
          <f-element id="fel-rbg-seed-int-sing">
            <title>
              The TSF shall be able to seed the DRBG using a [<h:i>TSF software-based entropy source</h:i>] <assignable>name of entropy source</assignable>
              with [<h:i>a minimum of 384</h:i>] bits of min-entropy.
            </title>        
            <note role="application">
              <h:p>
                This SFR is claimed if "TSF entropy source..." is selected in <xref to="fel-rbg-init-seed-how"/>, i.e., the TOE has a single entropy source that is inside the TOE boundary. If the TOE obtains seed material from an environmental component, this is specified using FCS_RBG.2.
              </h:p><h:p>
              If the TSF entropy source produces full entropy, the amount of entropy data collected is equal to the amount specified in the selection. If the entropy source does not assure full entropy (i.e., the ratio of min-entropy to collected data is less than 1:1), then the TSF must collect sufficient additional entropy data and perform a derivation function on it to reduce the collected data to a seed with the claimed min-entropy. In this case, the entropy documentation is expected to identify the min-entropy rate of the source data, how much data the TSF collects, and what derivation function is performed on this collected data to ensure that it has the claimed min-entropy.
              </h:p><h:p>
                One can apply NIST SP 800-90B (or AIS-31) statistical tests against internal entropy sources
                (aka raw entropy) to confirm the min-entropy of the entropy source. 
              </h:p>
            </note>
            <aactivity>
              <h:p>
                The evaluator shall examine the entropy documentation required by FCS_RBG.1 to verify that it identifies, for each DRBG function implemented by the TOE, the TSF entropy source that is used to seed the TOE's DRBG. The evaluator shall verify that this includes the amount of sampled data and the min-entropy rate of the sampled data such that it can be determined that the TSF can derive a seed from it that has the claimed amount of min-entropy. If the TSF uses an entropy source that can be assumed to have full entropy, the seed is the output data from the entropy source. If the TSF uses an entropy source where the min-entropy of the data is less than 1:1, the evaluator shall verify that the entropy documentation identifies how large the collected data sample is and how TSF derives this data into a seed that has the claimed min-entropy. 
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_rbg.4" name="Random Bit Generation (Internal Seeding - Multiple Sources)" status="sel-based">
          <depends on="internal-seeds"/>
          <f-element id="fel-rbg-seed-int-mult">
            <title>
              The TSF shall be able to seed the DRBG using [<h:i><assignable>number</assignable> independent TSF software-based entropy sources</h:i>].
            </title>
            <note role="application">
              <h:p>
                This SFR is claimed if "multiple independent TSF entropy sources..." is selected in <xref to="fel-rbg-init-seed-how"/>, i.e., the TSF performs some sort of operation to combine data from multiple distinct sources into a value that is used to derive a seed. Since this PP defines the TOE as software, it does not have any hardware components and therefore would only claim software-based entropy sources here. If the TOE obtains seed material from any hardware components, this is specified using FCS_RBG.2. FCS_RBG.5 defines the mechanism by which all sources are combined to ensure sufficient minimum entropy.
              </h:p>
            </note>
            <aactivity>
              <h:p>
                The evaluator shall examine the entropy documentation required by FCS_RBG.1 to verify that it identifies, for each DRBG function implemented by the TOE, each TSF entropy source used to seed the TOE's DRBG. 
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_rbg.5" name="Random Bit Generation (Combining Entropy Sources)" status="sel-based">
          <depends on="internal-seeds"/>
          <f-element id="fel-rbg-comb">
            <title>
              The TSF shall <assignable>combining operation</assignable> <selectables>
                <selectable>output from TSF entropy source(s)</selectable>
                <selectable>input from TSF interface(s) for obtaining entropy</selectable></selectables>
              resulting in a minimum of [<h:i>384</h:i>] bits of min-entropy to create the entropy input into the derivation function as defined in <assignable>list of standards</assignable>.         
            </title> 
            <note role="application">
              <h:p>
                This SFR is claimed if "multiple TSF entropy sources..." is selected in <xref to="fel-rbg-init-seed-how"/>, i.e., the TSF performs some sort of operation to combine data from multiple distinct sources into a value that is used to derive a seed.
              </h:p>
              <h:p>
        If the environmental entropy source produces full entropy, the amount of entropy data collected is equal to the amount specified in the selection. If the entropy source does not assure full entropy (i.e., the ratio of min-entropy to collected data is less than 1:1), then the TSF must collect sufficient additional entropy data and perform a derivation function on it to reduce the collected data to a seed with the claimed min-entropy. In this case, the entropy documentation is expected to identify the min-entropy rate of the source data, how much data the TSF collects, and what derivation function is performed on this collected data to ensure that it has the claimed min-entropy.
              </h:p>
              <h:p>
                One can apply NIST SP 800-90B (or AIS-31) statistical tests against internal entropy sources
                (aka raw entropy) to confirm the min-entropy of the entropy sources either in aggregate or
                individually. 
              </h:p>
            </note>
            <aactivity>
              <h:p>
                Using the entropy sources specified in FCS_RBG.4, the evaluator shall examine the entropy documentation required by FCS_RBG.1 to verify that it describes the method by which data from these sources are combined into a single seed. This should include an estimation of the rate at which each entropy source outputs data and whether this is dependent on any system-specific factors so that each source's relative contribution to the overall entropy is understood. The evaluator shall verify that the amount of sampled data, the min-entropy rate of the sampled data, and the method by which the multiple sampled data sources are combined can be used to determine that the TSF can derive a seed from it that has the claimed amount of min-entropy. This includes any description of how the TSF derives data larger than the seed value into a seed that has the claimed min-entropy.  
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>  
        
        <f-component cc-id="fcs_rbg.6" name="Random Bit Generation Service" status="optional">
          <f-element id="fel-external-service">
            <title>
              The TSF shall provide a [<h:i>software</h:i>]
              interface to make the output, as specified in FCS_RBG.1 Random bit generation (RBG),
              available as a service to entities outside of the TOE.
            </title>        
            <aactivity>              
              <TSS>
                The evaluator shall verify that the TSS identifies the interface that the TSF makes available for calling applications to obtain output. 
              </TSS>
              <Guidance>The evaluator shall verify that the guidance documentation includes an API specification for the random bit generation service such that it is clear how a calling application is able to obtain output from the TSF.</Guidance>
              <Tests>The evaluator shall invoke the API specified by the guidance documentation to determine that the TSF provides output upon proper invocation of the API.</Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <ext-comp-def fam-id="FCS_STG_EXT" title="Cryptographic Key Storage">
          <fam-behavior>This family defines requirements for the implementation of secure key
            storage with access control, confidentiality, and integrity protections.
          </fam-behavior>
        </ext-comp-def>

        <!--   <h:div class="comp">
          <h:h3>FCS_STG Cryptographic Storage</h:h3>
          <h:p class="comp"> 
            The following requirements describe how keys are protected. All keys
            must ultimately be protected by a REK, and may optionally be protected by the user’s
            authentication factor. Each key’s confidentiality and integrity must be protected. This
            section also describes the secure key storage services to be provided by the Mobile
            Device for use by applications and users, applying the same level of protection for
            these keys as keys internal to the OS. </h:p>
        </h:div>-->

        <f-component cc-id="fcs_stg_ext.1" name="Cryptographic Key Storage" status="feat-based">
        <depends on="mdm-management"/>

          <comp-lev> requires the TSF to implement a secure key storage and defines the access
            restrictions to be enforced on this. </comp-lev>
          <management>The following actions could be considered for the management functions in FMT: <h:ul>
              <h:li>Importing keys or secrets into the secure key storage.</h:li>
              <h:li>Destroying imported keys or secrets in the secure key storage.</h:li>
              <h:li>Approving exceptions for shared use of keys or secrets by multiple applications.</h:li>
              <h:li>Approving exceptions for destruction of keys or secrets by applications that did
            not import the key or secret</h:li>
            </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included
            in the PP, PP-Module, functional package or ST:
            <h:ul>
              <h:li>Import or destruction of key.</h:li>
              <h:li>Exceptions to use and destruction rules.</h:li>
            </h:ul>
          </audit>
          <dependencies> [FCS_CKM.1/AKG Cryptographic Key Generation - Asymmetric Key, or<h:br/>
          FCS_CKM.1/SKG Cryptographic Key Generation - Symmetric Key, or<h:br/>
          FDP_ITC.1 Import of User Data without Security Attributes, or<h:br/>
          FDP_ITC.2 Import of User Data with Security Attributes]<h:br/>
          FMT_SMF.1 Specification of Management Functions<h:br/>
          FMT_SMR.1 Security Roles
          </dependencies>

          <!--fcs_stg_ext.1.1 -->
          <f-element id="fel-key-store">
            <title>The TSF shall provide <selectables>
                <selectable id="s-mutable-hardware">mutable hardware</selectable>
                <selectable id="s-software-store">software-based</selectable>
              </selectables>
              secure key storage for asymmetric private keys and <selectables>
                <selectable>symmetric keys</selectable>
                <selectable>persistent secrets</selectable>
                <selectable exclusive="yes">no other keys</selectable>
              </selectables>.</title>
            <ext-comp-def-title>
              <title>The TSF shall provide <assignable>storage medium</assignable> secure key
                storage for asymmetric private keys and <assignable>list of secrets</assignable> .</title>
            </ext-comp-def-title>

            <note role="application">
              <h:p>
              A hardware keystore can be exposed to the TSF through a variety
              of interfaces, including embedded on the motherboard, USB, microSD, and Bluetooth. <h:br/><h:br/>
              Immutable hardware is considered outside of this requirement and will be covered
              elsewhere. <h:br/><h:br/> If the secure key storage is implemented in software that
              is protected as required by FCS_STG_EXT.2, the ST author must select <xref to="s-software-store"/>. If <xref to="s-software-store"/> is selected, the ST
                author must select <xref to="s-all-software-key-store"/> in FCS_STG_EXT.2.1.</h:p> 
              <!--
              <rule
                id="r-store">
                <if>
                  <ref-id>s-software-store</ref-id>
                </if>
                <then>
                  <ref-id>s-all-software-key-store</ref-id>
                </then>
              </rule>
		<h:br /><h:br /> -->
              Support for secure key storage for all symmetric keys and persistent secrets will be
              required in future revisions. </note>
          </f-element>
          <!--fcs_stg_ext.1.2 -->
          <f-element id="fel-key-import">
            <title>The TSF shall be capable of importing keys or secrets into the secure key storage
              upon request of the administrator and 
              <selectables>
                <selectable id="import-user">the user</selectable>
                <selectable>applications running on the TSF</selectable>
                <selectable exclusive="yes">no other subjects</selectable>
              </selectables>
              . </title>
            <ext-comp-def-title>
              <title>The TSF shall be capable of importing keys or secrets into the secure key
                storage upon request of <assignable>list of users</assignable> and <assignable>list
                of other subjects</assignable>. </title>
            </ext-comp-def-title>
          </f-element>
          <!--fcs_stg_ext.1.3 -->
          <f-element id="fel-keystore-kill">
            <title>The TSF shall be capable of destroying keys or secrets in the secure key storage
              upon request of the administrator and 
              <selectables> 
                <selectable>the user</selectable>
                <selectable exclusive="yes">no other subjects</selectable>
              </selectables>. </title>
          </f-element>
          <!--fcs_stg_ext.1.4 -->
          <f-element id="fel-keystore-who-access">
            <title>The TSF shall have the capability to allow only the application that imported the
              key or secret the use of the key or secret. Exceptions may only be explicitly
              authorized by <selectables>
                <selectable id="s-import-user">the user</selectable>
                <selectable id="s-import-admin">the administrator</selectable>
                <selectable>a common application developer</selectable>
              </selectables>. </title>
            <note role="application">If the ST selects <xref to="s-import-user"/> or <xref to="s-import-admin"/>, the ST author must also select <xref to="mf-sharedKeys"/>
              in FMT_SMF_EXT.1.1.</note>
          </f-element>
          <!--fcs_stg_ext.5. -->
          <f-element id="fel-keystore-who-kill">
            <title>The TSF shall allow only the application that imported the key or secret to
              request that the key or secret be destroyed. Exceptions may only be explicitly
              authorized by <selectables>
                <selectable id="s-killkey-user">the user</selectable>
                <selectable id="s-killkey-admin">the administrator</selectable>
                <selectable>a common application developer</selectable>
              </selectables>. </title>
            <ext-comp-def-title>
              <title>The TSF shall allow only the application that imported the key or secret to
                request that the key or secret be destroyed. Exceptions may only be explicitly
                authorized by <assignable>list of subjects</assignable>.</title>
            </ext-comp-def-title>

            <note role="application">If the ST selects <xref to="s-killkey-user"/> or <xref to="s-killkey-admin"/>, the ST author must also select function <xref to="mf-keyWipeRules"/> in FMT_SMF_EXT.1.1.</note>
            <aactivity> The evaluator shall verify that the API documentation provided according to <xref to="adv"/> includes the security functions (import, use, and destruction) described
              in these requirements. The API documentation shall include the method by which
              applications restrict access to their keys or secrets in order to meet
              FCS_STG_EXT.1.4. <h:br/><h:br/>
                <TSS> The evaluator shall review the TSS to determine
              that the TOE implements the required secure key storage. The evaluator shall ensure
              that the TSS contains a description of the key storage mechanism that justifies the
              selection of "mutable hardware" or "software-based". <h:br/><h:br/>
              </TSS>
                <Guidance>
              The evaluator shall review the operational guidance to determine that it describes the steps
              needed to import or destroy keys or secrets.<h:br/><h:br/>
              </Guidance>
                <Tests>
              The evaluator shall test the functionality of each security function: <testlist>
                  <test>The evaluator shall import keys or secrets of each supported type according
              to
                    the operational guidance. The evaluator shall write, or the developer shall provide
              access to, an application that generates a key or secret of each supported type and
              calls the import functions. The evaluator shall verify that no errors occur
                    during import.</test>
                  <h:br/>
                  <test>The evaluator shall write, or the developer shall provide access to, an
              application that uses an imported key or secret: <h:br/>
                    <h:ul>
                      <h:li>For RSA, the secret shall be used to sign data.</h:li>
                      <h:li>For ECDSA, the secret shall be used to sign data.</h:li>
                    </h:ul>
                    <h:br/>
              In the future additional types will be required to be tested: <h:br/>
                    <h:ul>
                      <h:li>For symmetric algorithms, the secret shall be used to encrypt
                        data.</h:li>
                      <h:li>For persistent secrets, the secret shall be compared to the imported
              secret. </h:li>
                    </h:ul>
                    <h:br/> The evaluator shall repeat this
              test with the application-imported keys or secrets and a different application’s
              imported keys or secrets. The evaluator shall verify that the TOE requires approval
              before allowing the application to use the key or secret imported by the user or by a
              different application: <h:br/>
                    <h:ul>
                      <h:li>The evaluator shall deny the approvals to verify that the application
                        is not able to use the key or secret as described. </h:li>
                      <h:li>The evaluator shall repeat the test, allowing the approvals to verify
              that the application is able to use the key or secret as described.</h:li>
                    </h:ul>
                    <h:br/>
              If the ST author has selected "common application developer", this test is performed
              by either using applications from different developers or appropriately (according to
              API documentation) not authorizing sharing. </test>
                  <h:br/>
                  <test>The evaluator shall destroy keys or secrets of each supported type according
              to the operational guidance. The evaluator shall write, or the developer shall provide access
              to, an application that destroys an imported key or secret. <h:br/><h:br/> The
              evaluator shall repeat this test with the application-imported keys or secrets and a
              different application’s imported keys or secrets. The evaluator shall verify that the
              TOE requires approval before allowing the application to destroy the key or secret
              imported by the administrator or by a different application: <h:br/><h:br/>
                    <h:ul>
                      <h:li>The evaluator shall deny the approvals and verify that the application
                        is still able to use the key or secret as described. </h:li>
                      <h:li>The evaluator shall repeat the test, allowing the approvals and
                        verifying that the application is no longer able to use the key or secret as
              described.</h:li>
                    </h:ul>
                    <h:br/> If the ST author has selected
              "common application developer", this test is performed by either using applications
              from different developers or appropriately (according to API documentation) not
              authorizing sharing. </test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event>
            <audit-event-descr>Import or destruction of key</audit-event-descr>
            <audit-event-info>Identity of key, role and identity of requester</audit-event-info>
          </audit-event>
          <audit-event>
            <audit-event-descr>
              <selectables onlyone="yes">
                <selectable>Exceptions to use and destruction rules</selectable>
                <selectable>none</selectable>
              </selectables>
            </audit-event-descr>
            <audit-event-info>Identity of key, role and identity of requester</audit-event-info>
          </audit-event>


        </f-component>
        <f-component cc-id="fcs_stg_ext.2" name="Encrypted Cryptographic Key Storage" status="feat-based">
        <depends on="mdm-management"/>

          <comp-lev> requires the TSF to implement confidentiality measures to protect the key
            storage.</comp-lev>
          <management>There are no management activities foreseen.
          </management>
          <audit>There are no auditable events foreseen.
          </audit>
          <dependencies> FCS_CKM_EXT.3 Cryptographic Key Generation<h:br/> FCS_COP.1 Cryptographic
            Operation<h:br/> FCS_STG_EXT.1 Cryptographic Key Storage </dependencies>
          <f-element id="fel-encrypt-key-what">
            <title>The TSF shall encrypt all DEKs, KEKs, <assignable>any long-term trusted channel
              key material</assignable> and <selectables>
                <selectable id="s-all-software-key-store">all software-based key storage</selectable>
                <selectable exclusive="yes">no other keys</selectable>
              </selectables>
              by KEKs that are <selectables linebreak="yes">
                <selectable>Protected by the REK with <selectables linebreak="yes">
                    <selectable>encryption by a REK</selectable>
                    <selectable>encryption by a KEK chaining from a REK</selectable>
                    <selectable>encryption by a KEK that is derived from a REK</selectable>
                  </selectables>
                </selectable>
                <selectable>Protected by the REK and the password with <selectables linebreak="yes">
                    <selectable>encryption by a REK and the password-derived KEK</selectable>
                    <selectable>encryption by a KEK chaining to a REK and the password-derived or
              biometric-unlocked KEK</selectable>
                    <selectable>encryption by a KEK that is derived from a REK and the
              password-derived or biometric-unlocked KEK</selectable>
                  </selectables>
                </selectable>
              </selectables>
              .</title>
            <ext-comp-def-title>
              <title> The TSF shall encrypt all DEKs, KEKs, <assignable>any long-term trusted
                channel
                  key material</assignable> and <assignable>other secrets </assignable> by KEKs that
                are <assignable>protection mechanism</assignable>. </title>
            </ext-comp-def-title>
            <note role="application"><h:p>The ST author must select <xref to="s-all-software-key-store"/>
              if <xref to="s-software-store"/> is selected in FCS_STG_EXT.1.1. If the ST author
              selects <xref to="s-mutable-hardware"/> in FCS_STG_EXT.1.1, the secure key storage is
              not subject to this requirement. REKs are not subject to this requirement. </h:p>
              <h:p>
              A REK and the password-derived KEK may be combined to form a combined KEK (as
              described in FCS_CKM_EXT.3) in order to meet this requirement. </h:p>
              <h:p>
              Software-based key storage must be protected by the password or biometric and REK. All keys must ultimately be protected by a REK.</h:p>
              <!--              
              <h:p>In particular, <xref to="Keys" /> has KEKs protected according to these requirements: DEK_1 meets the
              "encryption by a REK and the password-derived KEK" case and would be appropriate for
              sensitive data, DEK_2 meets the "encryption by a KEK chaining from a REK" case and
              would not be appropriate for sensitive data, K_1 meets the "encryption by a REK" case
              and is not considered a sensitive key, and K_2 meets the "encryption by a KEK chaining
              to a REK and the password-derived or biometric-unlocked KEK" case and is considered a
              sensitive key. </h:p>-->
              <h:p> Long-term trusted channel key material includes Wi-Fi
              (PSKs), IPsec (PSKs and client certificates) and Bluetooth keys. These keys must not
              be protected by the password, as they may be necessary in the locked state. For
              clarity, the ST author must assign any Long-term trusted channel key material
              supported by the TOE . At a minimum, a TOE must support at least Wi-Fi and Bluetooth
              keys.</h:p>
              </note>
			  <aactivity level="component">
				  <TSS>The evaluator shall review the TSS to determine that the TSS includes key
					hierarchy description of the protection of each DEK for sensitive data, of
					software-based key storage, of long-term trusted channel keys, and of KEK related to
					the protection of the DEKs, long-term trusted channel keys, and software-based key
					storage. This description must include a diagram illustrating the key hierarchy
					implemented by the TOE in order to demonstrate that the implementation meets
					FCS_STG_EXT.2. The description shall indicate how the functionality described by
					FCS_RBG.1 is invoked to generate DEKs (FCS_CKM_EXT.2), the key size (FCS_CKM_EXT.2
					and FCS_CKM_EXT.3) for each key, how each KEK is formed (generated, derived, or
					combined according to FCS_CKM_EXT.3), the integrity protection method for each
					encrypted key (FCS_STG_EXT.3), and the IV generation for each key encrypted by the
					same KEK (FCS_IV_EXT.1). More detail for each task follows the corresponding
					requirement.<h:br/>
					  <h:br/> The evaluator shall also ensure that the documentation
					of the product's encryption key management is detailed enough that, after reading,
					the product's key management hierarchy is clear and that it meets the requirements
					to ensure the keys are adequately protected. The evaluator shall ensure that the
					documentation includes both an essay and one or more diagrams. Note that this may
					also be documented as separate proprietary evidence rather than being included in
					the TSS.<h:br/><h:br/>
					  The evaluator shall examine the key hierarchy description in the TSS section to
	                verify that each DEK and software-stored key is encrypted according to
	                FCS_STG_EXT.2.<h:br/><h:br/>
				  </TSS>
				  <Guidance/>
                  <Tests/>
				</aactivity>
          </f-element>
          <f-element id="fel-encrypt-key-how">
            <title>DEKs, KEKs, <assignable>any long-term trusted channel key material</assignable>
              and <selectables>
                <selectable>all software-based key storage</selectable>
                <selectable exclusive="yes">no other keys</selectable>
              </selectables>
              shall be encrypted using one of the following methods: <selectables>
                <selectable>using a SP800-56B key establishment scheme</selectable>
                <selectable>using AES in the <selectables>
                    <selectable>Key Wrap (KW) mode</selectable>
                    <selectable>Key Wrap with Padding (KWP) mode</selectable>
                    <selectable>GCM</selectable>
                    <selectable>CCM</selectable>
                    <selectable>CBC mode</selectable>
                  </selectables></selectable>
              </selectables>
              . </title>
            <note role="application">The ST author selects which key encryption schemes are used by
              the TOE. This requirement refers only to KEKs as defined this PP and does not refer to
              those KEKs specified in other standards. The ST author must assign the same Long-term
              trusted channel key material assigned in FCS_STG_EXT.2.1.</note>
          </f-element>
          <audit-event/>
        </f-component>
        

	<ext-comp-def fam-id="FCS_STO_EXT" title="Storage of Sensitive Data">
	  <fam-behavior>Components in this family describe the requirements for storing sensitive data (such as cryptographic
	    keys). This is a new family defined for the FCS class.</fam-behavior>
	</ext-comp-def>
        
        <f-component cc-id="fcs_sto_ext.1" name="Storage of Sensitive Data">
          <comp-lev> requires the TSF to include a mechanism that encrypts
            sensitive data and that can be invoked by third-party applications in addition to internal TSF usage.</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>
            <no-link>FCS_COP.1</no-link> Cryptographic Operation
          </dependencies>
          
          <f-element id="fel-store-sdata">
            <title>
	      The TSF shall implement functionality to encrypt sensitive data
	      stored in non-volatile storage and provide interfaces to applications to invoke this functionality.
            </title>
	    <note role="application">Sensitive data will be identified in the TSS by the ST
	    author, and minimally includes credentials and keys.  The interface for invoking the
	    functionality could take a variety of forms: it could consist of an API,
	    or simply well-documented conventions for accessing credentials stored as files.
	    </note>
            <aactivity>
	      <TSS>
	      The evaluator shall check the TSS to ensure that it lists all persistent
              sensitive data for which the OS provides a storage capability.  For each of these
              items, the evaluator shall confirm that the TSS lists for what purpose it can be used,
              and how it is stored.
	      The evaluator shall confirm that cryptographic operations used to protect the data occur as
	      specified in FCS_COP.1/SKC.
	      </TSS>
	      <Guidance>
		The evaluator shall consult the developer documentation to verify that instructions
		exists on applications should securely store credentials.
	      </Guidance>
        <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

      </section>
      <section title="Class FDP: User Data Protection" id="fdp">
	<ext-comp-def title="Access Controls for Protecting User Data" fam-id="FDP_ACF_EXT">
	  <fam-behavior>This family specifies methods for ensuring that data stored or maintained by the TSF cannot be accessed
	    without authorization. This family differs from FDP_ACF in CC Part 2 by defining technology-specific
	    details for the implementation of these functions.</fam-behavior>
	</ext-comp-def>
        <f-component cc-id="fdp_acf_ext.1" name="Access Controls for Protecting User Data">
          
          <comp-lev> requires the TSF to prevent unprivileged users
            from accessing operating system objects owned by other users.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>Configuration of object ownership and allowed access</h:li>
          </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included
            in the PP, PP-Module, functional package or ST:
          <h:ul>
            <h:li>Successful and unsuccessful attempts to access data</h:li>
          </h:ul></audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-protect-user-data">
            <title>
	      The TSF shall implement access controls which can prohibit unprivileged users from
              accessing files and directories owned by other users.
            </title>
	    <note role="application">
	      Effective protection by access controls may also depend
	      upon system configuration.  This requirement is designed to ensure
	      that, for example, files and directories owned by one user in a multi user system
	      can be protected from access by another user in that system.
            </note>
            <aactivity>
	      <TSS>
	      <h:p>
	      The evaluator shall confirm that the TSS comprehensively describes the access control policy enforced by the OS.
              The description must include the rules by which accesses to particular files and directories
	      are determined for particular users.
              The evaluator shall inspect the TSS to ensure that it describes the access control rules
              in such detail that given any possible scenario between a user and a file governed by
              the OS the access control decision is unambiguous.
	      </h:p>
	      </TSS>
        <Guidance/>
	      <Tests>
	      <h:p>
	        The evaluator shall create two new standard user accounts on the TOE and conduct the tests below. If the TSF enforces access controls on user home directories that prevents the evaluator from exercising the permissions directly (i.e., because the home directory itself or its contents are restricted by permissions), the evaluator shall temporarily relax the permissions on the parent directory/directories in order to perform the tests.
              <testlist>
                <test>
                  The evaluator shall authenticate to the system as the first user and create a file within that user's home directory.
		  The evaluator shall then log off the system and log in as the second user.
		  The evaluator shall then attempt to read the file created in the first user's home directory.
		  The evaluator shall ensure that the read attempt is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and create a file within that user's home directory.
		  The evaluator shall then log off the system and log in as the second user.
		  The evaluator shall then attempt to modify the file created in the first user's home directory.
		  The evaluator shall ensure that the modification is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and create a file within that user's user directory.
		  The evaluator shall then log off the system and log in as the second user.
		  The evaluator shall then attempt to delete the file created in the first user's home directory.
		  The evaluator shall ensure that the deletion is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user.
		  The evaluator shall attempt to create a file in the second user's home directory.
                  The evaluator shall ensure that the creation of the file is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and attempt to modify the file created in the first user's home directory.
                  The evaluator shall ensure that the modification of the file is accepted.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and attempt to delete the file created in the first user's directory.
                  The evaluator shall ensure that the deletion of the file is accepted.
                </test>
              </testlist>
	      </h:p>
	      </Tests>
            </aactivity>
          </f-element>
          <audit-event>
            <audit-event-descr>Successful and unsuccessful attempts to access data</audit-event-descr>
          </audit-event>
        </f-component>
	  
        <f-component cc-id="fdp_acf_ext.2" name="Access Control for System Services" status="feat-based">
        <depends on="mdm-management"/>
	  
	  <comp-lev> requires the TSF to be able to control access to its own services.</comp-lev>
	  <management>The following actions could be considered for the management functions in FMT:
	  <h:ul>
	    <h:li>Placing applications into application groups based on enterprise configuration settings.</h:li>
	    <h:li>Enabling/disabling location services.</h:li>
	    <h:li>Enabling/disabling data signaling over externally-accessible hardware ports.</h:li>
	  </h:ul>
	  </management>
	  <audit>There are no auditable events foreseen.</audit>
	  <dependencies>FMT_MOF.1 Management of Security Functions Behavior</dependencies>
	  
	  
          <f-element id="fel-restrict-sys-service">
            <title>The TSF shall provide a mechanism to restrict the system services that are
              accessible to an application. </title>
            <note role="application">Examples of system services to which this requirement applies
              include: <h:br/><h:br/>
              <h:ul>
                <h:li>Obtain data from camera and microphone input devices</h:li>
                <h:li>Obtain current device location</h:li>
                <h:li>Retrieve credentials from system-wide credential store</h:li>
                <h:li>Retrieve contacts list / address book</h:li>
                <h:li>Retrieve stored pictures</h:li>
                <h:li>Retrieve text messages</h:li>
                <h:li>Retrieve emails</h:li>
                <h:li>Retrieve device identifier information</h:li>
                <h:li>Obtain network access</h:li>
              </h:ul>
            </note>
            <aactivity level="element">
              <TSS><h:p>The evaluator shall ensure the TSS lists all system services available for use by
                an application. The evaluator shall also ensure that the TSS describes how
                applications interface with these system services, and means by which these system
                services are protected by the TSF.</h:p>
                <h:p>The TSS shall describe which of the following categories each system service falls in:<h:br/>
                <h:ol>
                  <h:li>No applications are allowed access</h:li>
                  <h:li>Privileged applications are allowed access</h:li>
                  <h:li>Applications are allowed access by user authorization</h:li>
                  <h:li>All applications are allowed access</h:li>
                </h:ol> Privileged applications include any applications developed by the TSF
                developer. The TSS shall describe how privileges are granted to third-party
                applications. For both types of privileged applications, the TSS shall describe how
                and when the privileges are verified and how the TSF prevents unprivileged
                applications from accessing those services. </h:p> 
                <h:p>For any services for which the user may grant access, the evaluator shall ensure that the TSS identifies whether the user is prompted for authorization when the application is installed, or
                during runtime. The evaluator shall ensure that the operational user guidance
                contains instructions for restricting application access to system services.
                </h:p>
              </TSS>
              <Guidance>There are no guidance evaluation activities for this element.<h:br/><h:br/></Guidance>
              <Tests>
                <h:b>Evaluation Activity Note:</h:b><h:p>The
                evaluator shall write, or the developer shall provide, applications for the purposes
                of the following tests.</h:p>
                <testlist>
                  <test>For each system service to which no applications are allowed access, the
                    evaluator shall attempt to access the system service with a test application and
                    verify that the application is not able to access that system service.</test>
                  <test>For each system service to which only privileged applications are allowed
                    access, the evaluator shall attempt to access the system service with an
                    unprivileged application and verify that the application is not able to access
                    that system service. The evaluator shall attempt to access the system service
                    with a privileged application and verify that the application can access the
                    service.</test>
                  <test>For each system service to which the user may grant access, the evaluator
                    shall attempt to access the system service with a test application. The
                    evaluator shall ensure that either the system blocks such accesses or prompts
                    for user authorization. The prompt for user authorization may occur at runtime
                    or at installation time, and should be consistent with the behavior described in
                    the TSS. </test>
                  <test>For each system service listed in the TSS that is accessible by all
                    applications, the evaluator shall test that an application can access that
                    system service.</test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-acp">
            <title>The TSF shall provide an access control policy that prevents <selectables>
                <selectable id="s-fdp-app">application</selectable>
                <selectable id="fdp_group">groups of applications</selectable>
              </selectables> from accessing <selectables>
                <selectable>all</selectable>
                <selectable id="s-private">private</selectable>
              </selectables> data stored by other <selectables>
                <selectable>application</selectable>
                <selectable>groups of applications</selectable>
              </selectables>. Exceptions may only be explicitly authorized for such sharing by <selectables>
                <selectable id="s-acl-user">the user</selectable>
                <selectable id="s-acl-admin">the administrator</selectable>
                <selectable id="s-acl-devel">a common application developer</selectable>
                <selectable>no one</selectable>
            </selectables>. </title>
	    <ext-comp-def-title>
              <title>The TSF shall provide an access control policy that prevents
	      <assignable>list of subjects</assignable> from accessing
	      <selectables><selectable>all</selectable><selectable>private</selectable>
		</selectables> data stored by other <assignable>list of subjects</assignable>.
		Exceptions may only be explicitly authorized for such sharing by
		<assignable>list of authorized subjects</assignable>.</title>
	    </ext-comp-def-title>
            <note role="application">Application groups may be designated Enterprise or Personal.
              Applications installed by the user default to being in the Personal application group
              unless otherwise designated by the administrator in function <xref to="mf-appGroups"/> of FMT_SMF_EXT.1.1. Applications installed by the administrator
              default to being in the Enterprise application group (this category includes
              applications that the user requests the administrator install, for instance by
              selecting the application for installation through an enterprise application catalog)
              unless otherwise designated by the administrator in function <xref to="mf-appGroups"/> of FMT_SMF_EXT.1.1. It is acceptable for the same application to
              have multiple instances installed, each in different application groups. Private data
              is defined as data that is accessible only by the application that wrote it. Private
              data is distinguished from data that an application may, by design, write to shared
              storage areas. <h:br/><h:br/>
	      If <xref to="fdp_group"/> is selected, FDP_ACF_EXT.3 must be included in the ST.
	    </note>
            <aactivity level="element">
              <TSS>The evaluator shall examine the TSS to verify that it describes which data
                sharing is permitted between applications, which data sharing is not permitted, and
                how disallowed sharing is prevented. It is possible to select both "applications" and
                "groups of applications", in which case the TSS is expected to describe the data
                sharing policies that would be applied in each case.<h:br/><h:br/></TSS>
              <Guidance>There are no guidance evaluation activities for this element.<h:br/><h:br/></Guidance>
              <Tests>
                <testlist>
                  <test>The evaluator shall write, or the developer shall provide, two applications,
                    one that saves data containing a unique string, and the other, which attempts to
                    access that data.
		    If <xref to="fdp_group"/> is selected, the applications
                    shall be placed into different groups.
		    If <xref to="s-fdp-app"/> is selected, the
                    evaluator shall install the two applications.
		    If <xref to="s-private"/> is selected, the
                    application shall not write to a designated shared storage area.
		    The evaluator
                    shall verify that the second application is unable to access the stored unique
                    string. <h:br/><h:br/> If <xref to="s-acl-user"/> is selected, the evaluator shall grant
                    access as the user and verify that the second application is able to access the
                    stored unique string. <h:br/><h:br/>

		    If <xref to="s-acl-admin"/> is selected, the
                    evaluator shall grant access as the administrator and verify that the second
                    application is able to access the stored unique string. <h:br/><h:br/>

		    If <xref to="s-acl-devel"/>  is selected, the evaluator shall grant access to
                    an application with a common application developer to the first, and verify
                    that the application is able to access the stored unique string. </test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>	  
	  <audit-event/>
        </f-component>
        <f-component id="fc_access_control_system" cc-id="fdp_acf_ext.3" name="Access Control for System Resources" status="sel-based">
          <depends on="fdp_group"/>
          
          <comp-lev> requires the TSF to be able to provide separate copies of system resources for different application groups.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
            <h:ul>
              <h:li>Approving exceptions for sharing data between applications or groups of applications.</h:li>
            </h:ul>
          </management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>FDP_ACF_EXT.2 Access Control for System Services<h:br/>
            FMT_MOF.1 Management of Security Functions Behavior</dependencies>
          
          <f-element id="fel-per-app-resources">
            <title>The TSF shall provide a separate <selectables>
                <selectable>address book</selectable>
                <selectable>calendar</selectable>
                <selectable>keystore</selectable>
                <selectable>account credential database, <assignable>list of additional
                    resources</assignable></selectable>
              </selectables> for each application group and only allow applications within that
              process group to access the resource. Exceptions may only be explicitly authorized for
              such sharing by <selectables>
                <selectable>the user</selectable>
                <selectable>the administrator</selectable>
                <selectable>no one</selectable>
              </selectables>. </title>
            <note role="application">If <xref to="fdp_group"/> is selected in FDP_ACF_EXT.2.2, <!-- taken care of by depends -->
              FDP_ACF_EXT.3 must be included in the ST. </note>
            <aactivity>
              <TSS>There are no TSS evaluation activities for this component.<h:br/><h:br/></TSS>
              <Guidance>There are no guidance evaluation activities for this component.<h:br/><h:br/></Guidance>
              <Tests>For each selected resource, the evaluator shall cause data to be placed into
                the Enterprise group’s instance of that shared resource. The evaluator shall install
                an application into the Personal group that attempts to access the shared resource
                information and verify that it cannot access the information. </Tests>
            </aactivity>
          </f-element>
	  <audit-event/>
          <audit-event table="sel-based"/>
        </f-component>


        <ext-comp-def fam-id="FDP_IFC_EXT" title="Information Flow Control">
          <fam-behavior>This family defines the ability of the TSF to control information flows by ensuring that it is possible to
            use IPsec to encapsulate all traffic bound to or from the TOE. This family differs from FDP_IFC in CC Part
            2 by defining technology-specific details for the implementation of these functions.</fam-behavior>
        </ext-comp-def>
        
        <f-component cc-id="fdp_ifc_ext.1" name="Information Flow Control" status="sel-based">
          <depends on="s-itc-ipsec"/>
          
          <comp-lev> requires the TSF to provide the ability to protect IP traffic
            using IPsec.</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>
            <no-link>FTP_ITC_EXT.1</no-link> Trusted Channel Communication
          </dependencies>
          
          <f-element id="fel-dit-vpn">
            <title> The OS shall
              <selectables linebreak="yes">
                <selectable>provide an interface which allows a VPN client to protect all IP traffic using IPsec</selectable>
                <selectable id="s-provides-vpnclient">provide a VPN client that can protect all IP traffic using IPsec</selectable>
              </selectables>
              with the exception of IP traffic required to establish the VPN connection
              and
              <selectables>
                <selectable>signed updates directly from the OS vendor</selectable>
                <selectable exclusive="yes">no other traffic</selectable>
              </selectables>
              .
            </title>
            <note role="application">
              <h:p>
                Typically, the traffic required to establish the VPN connection is referred to as "Control Plane" traffic,
                whereas the IP traffic protected by the IPsec VPN is referred to as "Data Plane" traffic.
                All Data Plane traffic must flow through the VPN connection and the VPN must not split-tunnel.
              </h:p>
              <h:p>
                If no native IPsec client is validated or third-party VPN clients may
                also implement the required Information Flow Control, the first
                option must be selected. In these cases, the TOE provides an API to
                third-party VPN clients that allows them to configure the TOE's
                network stack to perform the required Information Flow Control.
              </h:p>
              <h:p>
                If the TSF implements a native VPN client, then the ST author must select 
                <xref to="s-provides-vpnclient"/> and includes the <xref to="mod-vpnclient"/>
                as part of the ST.
                <!-- If the native VPN client is to be validated  -->
                <!-- (<xref to="s-itc-ipsec"/> is selected in FTP_ITC_EXT.1.1  -->
                <!-- and the TSF is validated against the  -->
                <!-- <h:i>Module for Virtual Private Network (VPN) Clients</h:i>), -->
                <!-- the ST author will also -->
                <!-- include FDP_IFC_EXT.1 from this package. -->
              </h:p>
              <h:p>
                In the future, this requirement may also make a distinction between the
                current requirement (which requires that when the IPsec trusted
                channel is enabled, all traffic from the TSF is routed through that
                channel) and having an option to force the establishment of an IPsec
                trusted channel to allow any communication by the TSF.
              </h:p>
            </note>
            <aactivity>
              <TSS>
                The evaluator shall verify that the TSS section of the ST describes the
                routing of IP traffic when a VPN client is enabled.
                The evaluator shall ensure that the description indicates which traffic does not go
                through the VPN and which traffic does, and that a configuration exists for each
                in which only the traffic identified by the ST author as necessary
                for establishing the VPN connection (IKE traffic and perhaps HTTPS or DNS traffic) is
                not encapsulated by the VPN protocol (IPsec).
              </TSS>
              <Guidance>The evaluator shall examine the operational guidance to verify whether the TOE provides its own VPN client or if VPN client capability must be implemented by a third-party application.</Guidance>
              <Tests>
                The evaluator shall perform the following test:
                <testlist><test><steplist>
                  <step>The evaluator shall enable a network connection.
                    The evaluator shall sniff packets while performing running applications that use the network such as web browsers and email clients.
                    The evaluator shall verify that the sniffer captures the traffic generated by these actions, turn off the sniffing tool, and save the session data.
                  </step>
                  <step>
                    The evaluator shall configure an IPsec VPN client that supports the routing specified in this requirement.
                    The evaluator shall turn on the sniffing tool, establish the VPN connection, and perform the same actions with the device as performed in the first step.
                    The evaluator shall verify that the sniffing tool captures traffic generated by these actions, turn off the sniffing tool, and save the session data.
                  </step>
                  <step>
                    The evaluator shall examine the traffic from both step one and step two to verify that all non-excepted Data Plane traffic in Step 2 is encapsulated by IPsec.
                    The evaluator shall examine the Security Parameter Index (SPI) value present in the encapsulated packets captured in Step 2 from the TOE to the Gateway and will verify this value is the same for all actions used to generate traffic through the VPN.
                    Note that it is expected that the SPI value for packets from the Gateway to the TOE is different than the SPI value for packets from the TOE to the Gateway.
                  </step>
                  <step>
                    The evaluator shall perform a ping on the TOE host on the local network and verify that no packets sent are captured with the sniffer.
                    The evaluator shall attempt to send packets to the TOE outside the VPN tunnel (i.e., not through the VPN gateway), including from the local network, and verify that the TOE discards them.
                  </step>
                </steplist></test></testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <f-component cc-id="fdp_upc_ext.1" iteration="APPS" name="Inter-TSF User Data Transfer Protection (Applications)" status="feat-based">
        <depends on="mdm-management"/>
          <f-element id="fdp-app-comms">
            <title>The TSF shall provide a means for non-TSF applications executing on the TOE to use <selectables linebreak="yes">
                <selectable>Mutually authenticated TLS as conforming to the <xref to="tls"/> as a client
    	  	    </selectable>
              <selectable id="upc_https">HTTPS</selectable>
      	      </selectables>
      	        and <selectables linebreak="yes">
                <selectable>Mutually authenticated TLS as conforming to the <xref to="tls"/> as a server
    	  	    </selectable>
              <selectable>TLS as conforming to the <xref to="tls"/> as a
    	  	        <selectables>
    	  	          <selectable><readable>client(TLS)</readable>client</selectable>
    	  	          <selectable><readable>server(TLS)</readable>server</selectable>
                  </selectables>
                </selectable>
                <selectable>DTLS as conforming to the <xref to="tls"/> as a
    	  	    <selectables>
    	  	      <selectable><readable>client(DTLS)</readable>client</selectable>
    	  	      <selectable><readable>server(DTLS)</readable>server</selectable>
    	  	    </selectables></selectable>
      	      <selectable id="s-upc-ipsec">IPsec as defined in the <xref to="mod-vpnclient"/></selectable>
      	          <selectable><snip>SSH</snip> as conforming to the <xref to="ssh"/> as a
      	          <selectables>
      	          <selectable><readable>client(SSH)</readable>client</selectable>
      	            <selectable><readable>server(SSH)</readable>server</selectable>
      	          </selectables></selectable>
      	          <selectable>no other protocols</selectable>
      	        </selectables> to provide a protected communication channel between the non-TSF
              application and another IT product that is logically distinct from other communication
              channels, provides assured identification of its end points, protects channel data
              from disclosure, and detects modification of the channel data. </title>
            <note role="application"> 
              <h:p>The intent of this requirement is that one of the selected protocols is available for use by user applications running on the device for use in connecting to distant-end services that are not necessarily part of the enterprise infrastructure. It should be noted that the FTP_ITC_EXT.1 requires that all TSF communications be protected using the protocols indicated in that requirement, so the protocols required by this component ride "on top of" those listed in FTP_ITC_EXT.1.</h:p>
              <h:p> 
              It should also be noted that some applications are part of the TSF, and FTP_ITC_EXT.1 requires that TSF applications be protected by at least one of the protocols in first selection in FTP_ITC_EXT.1. It is not required to have two different implementations of a protocol, or two different protocols, to satisfy both this requirement (for non-TSF apps) and FTP_ITC_EXT.1 (for TSF apps), as long as the services specified are provided. </h:p>
              <h:p> 
              The ST author must list which trusted channel protocols are implemented by the TOE for use by non-TSF apps.</h:p>
              <h:p>
              If <xref to="upc_https"/> is selected, FCS_HTTPS_EXT.1 must be included in the ST. 
              </h:p>
              <h:p> 
              If ST author selects <xref to="s-upc-ipsec"/>, the TSF must be validated against the <xref to="mod-vpnclient"/>. 
              </h:p>
            </note>
          </f-element>
          <f-element id="fdp-app-comms-init">
            <title>The TSF shall permit the non-TSF applications to initiate communication via the
              trusted channel.</title>
            <aactivity> 
            <h:p>The evaluator shall verify that the API documentation provided according to
                <xref to="adv"/> includes the security functions (protection channel) described in these requirements, and verify that the APIs implemented to support this
              requirement include the appropriate settings/parameters so that the application can
              both provide and obtain the information needed to assure mutual identification of the
              endpoints of the communication as required by this component. </h:p>
              <TSS> The evaluator shall examine the TSS to determine that it describes that all
                protocols listed in the TSS are specified and included in the requirements in the
                ST. <h:br/><h:br/>
              </TSS>
              <Guidance> The evaluator shall confirm that the operational guidance contains
                instructions necessary for configuring the protocols selected for use by the
                applications.<h:br/><h:br/>
              </Guidance>
              <Tests>
                <h:b>Evaluation Activity Note:</h:b> The evaluator shall write, or the developer shall provide access to, an application that
                requests protected channel services by the TSF. The evaluator shall verify that the
                results from the protected channel match the expected results according to the API
                documentation. This application may be used to assist in verifying the protected
                channel Evaluation Activities for the protocol requirements. The evaluator shall also
                perform the following tests: <testlist>
                  <test>The evaluators shall ensure that the application is able to initiate
                    communications with an external IT entity using each protocol specified in the
                    requirement, setting up the connections as described in the operational guidance
                    and ensuring that communication is successful. </test>
                  <test>The evaluator shall ensure, for each communication channel with an
                    authorized IT entity, the channel data are not sent in plaintext.</test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
	  <audit-event>
	    <audit-event-descr>Application initiation of trusted channel</audit-event-descr>
	    <audit-event-info>Identifier of application. Trusted channel protocol. Non-TOE endpoint of connection</audit-event-info>
	  </audit-event>
        </f-component>
      </section>
      
      
      <section title="Class FIA: Identification and Authentication" id="fia">
        <f-component cc-id="fia_afl.1" name="Authentication Failure Handling">
          <f-element id="fel-id-and-auth">
            <title>
            The TSF shall detect when
            <selectables linebreak="yes">
              <selectable><assignable>positive integer number</assignable></selectable>
              <selectable>an administrator configurable positive integer within <assignable>range of acceptable values</assignable></selectable>
            </selectables>
            unsuccessful authentication attempts occur related to
	    <h:b>
	      events with
            <selectables linebreak="yes">
              <selectable>authentication based on user name and password</selectable>
              <selectable>authentication based on user name and a PIN that
	      releases an asymmetric key stored in OE-protected storage</selectable>
              <selectable>authentication based on X.509 certificates</selectable>
              <selectable>authentication based on biometric in accordance with the <xref to="mod-biometric"/></selectable>
              <selectable>hybrid</selectable>
            </selectables>.
	    </h:b>
	    </title>
        <note role="application">
          Selections in FIA_AFL.1 and FIA_UAU.5 must be consistent.
            </note>
            <aactivity level="component">
              <TSS>The evaluator shall examine the TSS to verify that it defines the mechanism by which excessive authentication failures are checked (i.e, whether it is a fixed or configurable value) and the actions that are taken against that account when the failure threshold has been reached.</TSS>
              <Guidance>The evaluator shall examine the operational guidance to verify that it identifies either the fixed number of successive authentication failures that triggers a response to occur, or if this is a configurable value, the mechanism by which the value is configured. The evaluator shall also examine the operational guidance to verify that it describes the behavior that occurs when the failure threshold is met. If this behavior is configurable, the evaluator shall verify that the operational guidance provides instructions for how to set each response as claimed in FIA_AFL.1.2.</Guidance>
	      <Tests>
		  If configurable, the evaluator shall set an administrator-configurable threshold for
		  failed authentication attempts, or note the ST-specified assignment. The evaluator
		  will then (per selection) repeatedly attempt to authenticate with an
		  incorrect password, PIN, certificate, or biometric until the number of attempts
		  reaches the threshold and observe that the behavior claimed in FIA_AFL.1.2 occurs. If the behavior in FIA_AFL.1.2 is configurable, the evaluator shall repeat this test as necessary for each configured behavior and verify that the configured behavior occurs in all cases.
		  
		  Note that the authentication attempts and
		  lockouts must also be logged as specified in FAU_GEN.1.

			<testlist>
                <test>
                  [conditional] If "authentication based on user name and password" is selected in FIA_AFL.1
                  and FIA_UAU.5, the evaluator shall attempt to authenticate repeatedly to the system with a
                  known bad password. Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.
                </test>
                <test>
                  [conditional] If "authentication based on user name and a PIN that releases an                  
                  asymmetric key stored in OE-protected storage" is selected in FIA_AFL.1 and FIA_UAU.5, the 
                  evaluator shall attempt to authenticate repeatedly to the system with a
                  known bad PIN. Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.
                </test>
                <test>
                  [conditional] If "authentication based on X.509 certificates" is selected in                  
                  FIA_AFL.1 and FIA_UAU.5, the evaluator shall attempt to authenticate repeatedly to the system 
                  using a known bad certificate.
                  Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.
                </test>
                <test>
                  [conditional] If "authentication based on biometric in accordance with the <xref to="mod-biometric"/>" or "hybrid" is selected in            
                  FIA_AFL.1 and FIA_UAU.5, the evaluator shall attempt to authenticate repeatedly to the system 
                  using a known bad biometric authentication factor.
                  Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.
                </test>
                <test>
                  [conditional] If "hybrid" is selected in                  
                  FIA_AFL.1 and FIA_UAU.5, <h:p>the evaluator shall attempt to authenticate repeatedly to the system 
                  using a known bad primary authentication factor (PIN, Password, certificate).
                  Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.</h:p>
                  <h:p>
                  The evaluator shall then attempt to authenticate repeatedly to the system 
                  using a known good primary authentication factor (PIN, Password, certificate) but a known bad biometric authentication factor.
                  Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.</h:p>
                </test>
              </testlist>
	      </Tests>
	    </aactivity>
          </f-element>
          <f-element id="fel-bad-attempts">
            <title>
	      When the defined number of unsuccessful authentication attempts <h:b>for an
	      account</h:b> has been [<h:i>met</h:i>], The TSF shall:
	      <h:b>
	      <selectables>
		<selectable>Account Lockout</selectable>
		<selectable>Account Disablement</selectable>
		<selectable>Mandatory Credential Reset</selectable>
    <selectable>Wipe Sensitive Data</selectable>
		<selectable><assignable>list of actions</assignable></selectable>
	      </selectables>
	      </h:b>.
            </title>
            <note role="application">
            	The action to be taken will be populated in the assignment of the ST and defined
            	in the administrator guidance.
            </note>
          </f-element>
          <audit-event/>
        </f-component>

        <f-component cc-id="fia_uau_ext.4" id="fc-fia-uau-ext-4" name="Secondary User Authentication" status="optional">
          <comp-lev> requires the TSF to enforce the use of a secondary authentication factor to access certain user data.</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>FDP_ACF_EXT.2 Access Control for System Resources<h:br/>
            FIA_UAU.5 Multiple Authentication Mechanisms
          </dependencies>
          
          <f-element id="fel-two-auths">
            <title>The TSF shall provide a secondary authentication mechanism for accessing
              Enterprise applications and resources. The secondary authentication mechanism shall
              control access to the Enterprise application and shared resources and shall be
              incorporated into the encryption of protected and sensitive data belonging to
              Enterprise applications and shared resources.</title>
            <note role="application"><h:p>For the BYOD use case, Enterprise applications and data must
              be protected using a different password than the user authentication to gain access to
              the personal applications and data, if configured. </h:p> 

              <h:p>This requirement must be included in the ST if the TOE implements a container solution, in which there
              is a separate authentication, to separate user and Enterprise applications and
              resources.</h:p></note>
            <aactivity level="element">
              <TSS>There are no TSS evaluation activities for this element.</TSS>
              <Guidance>There are no guidance evaluation activities for this element.</Guidance>
              <Tests><h:p>The Evaluation Activities for any selected requirements related to device
                authentication must be separately performed for the secondary authentication
                mechanism (in addition to activities performed for the primary authentication
                mechanism). The requirements are: FCS_STG_EXT.2, FMT_SMF_EXT.1/FMT_MOF.1
                #1, #2, #8, #21, and #36.</h:p> 
                <h:p>Additionally, FIA_AFL.1 must be
                met, except that in FIA_AFL.1.2 the separate test is performed with the text
                "wipe of all sensitive data" changed to "wipe of all Enterprise application data and
                all Enterprise shared resource data."</h:p>
                </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-two-auth-when">
            <title>The TSF shall require the user to present the secondary authentication factor
              prior to decryption of Enterprise application data and Enterprise shared resource
              data.</title>
              <note role="application">
		<!-- This requirement must be selected if FIA_UAU_EXT.4.1 is -->
		<!-- selected. -->
		The intent of this requirement is to prevent decryption of protected
              Enterprise application data and Enterprise shared resource data before the user has
              authenticated to the device using the secondary authentication factor. Enterprise
              shared resource data consists of the FDP_ACF_EXT.2.1 selections.</note>
            <aactivity level="element">
              <TSS> The evaluator shall verify that the TSS section of the ST describes the process
                for decrypting Enterprise application data and shared resource data. The evaluator
                shall ensure that this process requires the user to enter an Authentication Factor
                and, in accordance with FCS_CKM_EXT.3, derives a KEK which is used to protect the
                software-based secure key storage and (optionally) DEKs for sensitive data, in
                accordance with FCS_STG_EXT.2.</TSS>
              <Guidance>There are no guidance evaluation activities for this element.</Guidance>
              <Tests>There are no test evaluation activities for this element.</Tests>
            </aactivity>
          </f-element>
	  <audit-event table="optional"/>
        </f-component>
        
        <f-component cc-id="fia_uau.5" name="Multiple Authentication Mechanisms">
          <f-element id="fel-mult-auth">
            <title>
	      The <refinement>OS</refinement> shall provide 
	      <h:b><selectables linebreak="yes">
		<selectable id="s-pass">authentication based on username and password</selectable>
		<selectable id="s-pin">authentication based on username and a PIN that releases an asymmetric key stored
		in OE-protected storage</selectable>
		<selectable id="s-otp">combination of authentication based on user name, password, and time-based one-time password</selectable>
		<selectable id="s-x509-auth">authentication based on X.509 certificates</selectable>
		<selectable id="s-uau-ssh">for use in SSH only, <snip>SSH public key-based authentication</snip> as specified by the <xref to="ssh"/></selectable>
	      </selectables> </h:b> and <selectables>
                  <selectable id="uau_biometric"> biometric in accordance with the <xref to="mod-biometric"/></selectable>
                  <selectable id="uau_hybr"> hybrid</selectable>
                  <selectable exclusive="yes">no other mechanism</selectable>
        </selectables>	      
	      to support user authentication.
            </title>
            <note role="application">
	      <h:p>
	        The <xref to="s-uau-ssh"/> selection can only be included, and must be included, if
		    FTP_ITC_EXT.1.1 selects <xref to="s-ftp_ssh"/>.
	      </h:p>
        <h:p>
	        If "authentication based on X.509 certificates" is claimed, the TOE must claim conformance to <xref to="X509"/>.
	      </h:p>
        <h:p>
        The TSF may optionally implement a Biometric Authentication Factor. A hybrid authentication factor is where a user has to submit a combination of primary authentication factor (e.g., username and password) and biometric sample where both have to pass and if either fails the user is not made aware of which factor failed.</h:p>
        <h:p>If <xref to="uau_biometric"/> or <xref to="uau_hybr"/> is selected, then the TSF must be validated against requirements from the <xref to="mod-biometric"/>.</h:p>
        <h:p>If <xref to="uau_hybr"/> is selected, <xref to="uau_biometric"/> does not need to be selected, but should be
        selected if the biometric authentication can be used independent of the hybrid authentication, i.e., without having to enter a PIN/password.</h:p>
	    </note>
            <aactivity level="component">
			<TSS>
			  The evaluator shall ensure that the TSS describes
			  the rules as to how each authentication mechanism specified in
			  FIA_UAU.5.1 is implemented and used.
			  Example rules are how the authentication mechanism authenticates the user
			  (i.e., how does the TSF verify that the correct password or authentication
			  factor is used),
			  the result of a successful authentication
			  (i.e., is the user input used to derive or unlock a key) and which
			  authentication mechanism can be used at which authentication factor
			  interfaces (i.e., if there are times, for example, after a reboot,
			  that only specific authentication mechanisms can be used).
			  Rules regarding how the authentication factors interact in terms of
			  unsuccessful authentication are covered in FIA_AFL.1. If multiple Biometric Authentication Factors are claimed in FIA_MBV_EXT.1.1 in the Biometric Enrollment and Verification, version 1.1, the interaction between the BAFs must be described. For example, whether the multiple BAFs can be enabled at the same time.
			</TSS>
		      <Guidance>
		      <h:p>
			The evaluator shall verify that
			configuration guidance for each authentication mechanism is
			addressed in the operational guidance.
		      </h:p>
		      </Guidance>
	      <Tests>
		<h:div>
		  <depends on="s-pass"/>
                  <!-- If <xref to="s-pass"/> is selected, the evaluator shall configure the OS with a -->
                  <!-- known user name and password and conduct the following tests: -->
		  <testlist>
                    <test>
		      The evaluator shall attempt to authenticate to the OS using
		      the known user name and password. The evaluator shall ensure
		      that the authentication attempt is successful.
                    </test>
                    <test>
		      The evaluator shall attempt to authenticate to the OS using
		      the known user name but an incorrect password. The evaluator
		      will ensure that the authentication attempt is unsuccessful.
                    </test>
		  </testlist>
		</h:div>
		<h:div>
		  <depends on="s-pin"/>
		  The evaluator shall examine the TSS for guidance on supported
		  protected storage and will then configure the TOE or OE to establish a PIN
		  which enables release of the asymmetric key from the protected storage (such as a TPM, a hardware token, or
		  isolated execution environment) with which the
		  OS can interface.  The evaluator shall then conduct the following tests:
		  <testlist>
		    <test>
		      The evaluator shall attempt to  authenticate to the OS using the known user name and PIN.
		      The evaluator shall ensure that the authentication attempt is successful.
		    </test>
		    <test>
		      The evaluator shall attempt to  authenticate to the OS using the known user name but an incorrect
		      PIN. The evaluator shall ensure that the authentication attempt is
		      unsuccessful.
		    </test>
		  </testlist>
		</h:div>
		<h:div><depends on="s-otp"/>
		  The evaluator shall configure the OS to authentication to authenticate to the OS using
		  a username, password, and one-time password mechanism.
		  The evaluator shall then perform the following tests.
		  <testlist>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, valid password, and valid one-time password.
		      The evaluator shall ensure that the authentication attempt is successful.
		    </test>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, invalid password, and valid one-time password.
		      The evaluator shall ensure that the authentication attempt fails.
		    </test>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, valid password, and invalid one-time password.
		      The evaluator shall ensure that the authentication attempt fails.
		    </test>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, invalid password, and invalid one-time password.
		      The evaluator shall ensure that the authentication attempt fails.
		    </test>
		  </testlist>
		</h:div>

		<h:p>
		  Authentication mechanisms related to <xref to="s-x509-auth"/> are tested under FIA_X509_EXT.1 as defined in the <xref to="X509"/> and <xref to="s-uau-ssh"/> are tested in the <xref to="ssh"/>. Biometric authentication mechanisms are tested in the <xref to="mod-biometric"/>.
		</h:p>

		    <!-- <testlist> -->
                <!--   <test>For each -->
                <!-- 	authentication mechanism selected, the evaluator shall enable that -->
                <!-- 	mechanism and verify that it can be used to authenticate the user at -->
                <!-- 	the specified authentication factor interfaces. </test> -->
                <!-- 	<test> -->
	      <h:p>
		  For each authentication mechanism rule, the evaluator shall ensure that
		  the authentication mechanism(s) behave as documented in the TSS.
	      </h:p>
                <!-- 	</test> -->
                <!-- </testlist> -->
              </Tests>
	    </aactivity>
          </f-element>
           <f-element id="fel-auth-how">
            <title>
The TSF shall authenticate any user's claimed identity according to the
              <assignable>
              	rules describing how the multiple authentication
		mechanisms provide authentication
              </assignable>.
            </title>
          </f-element>
          <audit-event/>
        </f-component>

        <!--
        <ext-comp-def fam-id="FIA_X509_EXT" title="Authentication Using X.509 Certificates">
          <fam-behavior>This family defines the behavior, management, and use of X.509 certificates for functions to be
            performed by the TSF. Components in this family require validation of certificates according to a
            specified set of rules and use of certificates for authentication for protocols and integrity verification.
            This is a new family defined for the FIA class.</fam-behavior>
	</ext-comp-def>

	<f-component cc-id="fia_x509_ext.1" id="fc-cert-val" name="X.509 Certificate Validation">
	  
	  <comp-lev> requires the TSF to check and validate certificates in
	    accordance with the RFCs and rules specified in the component.</comp-lev>
	  <management>The following actions could be considered for the management functions in FMT:
	    <h:ul>
	      <h:li>Import and removal of X.509v3 certificates</h:li>
	      <h:li>Approval of import and removal of X.509v3 certificates</h:li>
	    </h:ul>
	  </management>
	  <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
	    <h:ul>
	      <h:li>Failure of certificate validation</h:li>	      
	    </h:ul>
	  </audit>
	  <dependencies>
	    <no-link>FCS_COP.1</no-link> Cryptographic Operation<h:br/>
	    <no-link>FPT_STM.1</no-link> Reliable Time Stamps
	  </dependencies>
	  
          <f-element id="fel-cert-val">
            <title>
	      The OS shall implement functionality to validate certificates in accordance with the following rules:
	      <h:ul>
		<h:li>RFC 5280 certificate validation and certificate path validation</h:li>
		<h:li>The certificate path must terminate with a trusted CA certificate</h:li>
    <h:li>The OS shall validate a certificate path by ensuring the presence of the 
	        basicConstraints extension, that the CA flag is set to TRUE for all CA certificates,
          and that any path constraints are met.</h:li>
    <h:li>The TSF shall validate that any CA certificate includes "Certificate Signature Generation" as a purpose the key usage field</h:li>
    <h:li>The OS shall validate the revocation status of the certificate using 
		<selectables>
		  <selectable>OCSP as specified in RFC 6960</selectable>
		  <selectable>CRL as specified in RFC 8603</selectable>
		  <selectable>an OCSP TLS Status Request Extension (OCSP stapling) as specified in RFC 6066</selectable>
		  <selectable> OCSP TLS Multi-Certificate Status Request Extension (i.e., OCSP Multi-Stapling) as specified in RFC 6961</selectable>
		</selectables>
		with
		<selectables>
		  <selectable>no exceptions</selectable>
		  <selectable id="s-revoc-exceptions"><readable>exceptional use cases</readable><assignable>exceptional use cases and alternative status check</assignable></selectable>
		</selectables></h:li>
		<h:li>The OS shall validate the extendedKeyUsage field according to the following rules:
		<h:ul>
		  <h:li>Certificates used for trusted updates and executable code integrity verification shall have the Code Signature Generation Purpose (id-kp 3 with OID 1.3.6.1.5.5.7.3.3) in the extendedKeyUsage field.</h:li>
		  <h:li>Server certificates presented for TLS shall have the Server Authentication purpose (id-kp 1 with OID 1.3.6.1.5.5.7.3.1) in the extendedKeyUsage field.</h:li>	
		  <h:li>Client certificates presented for TLS shall have the Client Authentication purpose (id-kp 2 with OID 1.3.6.1.5.5.7.3.2) in the EKU field.</h:li>
		  <h:li>S/MIME certificates presented for email encryption and signature shall have the Email Protection purpose (id-kp 4 with OID 1.3.6.1.5.5.7.3.4) in the EKU field.</h:li>
		  <h:li>OCSP certificates presented for OCSP responses shall have the OCSP Signature Generation Purpose (id-kp 9 with OID 1.3.6.1.5.5.7.3.9) in the EKU field.</h:li>
		  <h:li>Server certificates presented for EST shall have the CMC Registration Authority (RA) purpose (id-kp-cmcRA with OID 1.3.6.1.5.5.7.3.28) in the EKU field. (conditional)</h:li>
		</h:ul>
		</h:li>
	      </h:ul>				
	      .
            </title>
            <note role="application">
	      <h:p>
		FIA_X509_EXT.1.1 lists the rules for validating certificates.
		The ST author will select whether revocation status is verified using OCSP or CRLs.
		FIA_X509_EXT.2 requires that certificates are used for HTTPS, TLS, and DTLS;
		this use requires that the <h:i>extendedKeyUsage</h:i> rules are verified.
	      </h:p>
	      <h:p>
		OCSP stapling and OCSP multi-stapling only support TLS server certificate validation. If other certificate types are validated, either OCSP or CRL should be claimed.
		If OCSP is not supported the EKU provision for checking the OCSP Signature Generation purpose is met by default.
	      </h:p>
	      <h:p>
		If the OS receives server certificates presented for EST, then the ST author should make the selection for EST in the SFR.
	      </h:p>

	      <h:p>
		If the OS cannot perform revocation checking in accordance with one of the specified revocation methods,
		then the specific use cases where revocation checking is not possible must be described, along with any alternative to certificate status checking for each use case.
		For example, for the use case "update functions when network connections are not available, notice of a compromised certificate disables automatic updates."
	      </h:p>
	      
            </note>
            <aactivity>
	      <TSS>
		<h:p>
		The evaluator shall ensure the TSS describes where the
		check of validity of the certificates takes place.
		The evaluator ensures the TSS also provides a description of the certificate path validation algorithm.
		</h:p>
		<h:p>
		  If there are exceptional use cases where the OS cannot perform revocation checking in accordance with
		  at least one of the revocation methods, the evaluator shall ensure the TSS describes each revocation
		  checking exception use case and, for each exception, the alternate functionality the TOE implements 
		  to determine the status of the certificate and disable functionality dependent on the validity of 
		  the certificate.
		</h:p>
	      </TSS>
	      <Tests> 
The tests described must be performed in conjunction with the other certificate services evaluation activities, including the functions in FIA_X509_EXT.2.1.
The evaluator shall create a chain of at least four certificates: the node certificate to be tested, two Intermediate CAs, and the self-signed Root CA.

	<testlist>
<test> The evaluator shall demonstrate that validating a certificate without a valid certification path results in the function failing, for each of the following reasons, in turn:
by establishing a certificate path in which one of the issuing certificates is not a CA certificate,
by omitting the basicConstraints field in one of the issuing certificates,
by setting the basicConstraints field in an issuing certificate to have CA=False,
by omitting the CA signing bit of the key usage field in an issuing certificate, and
by setting the path length field of a valid CA field to a value strictly less than the certificate path.
The evaluator shall then establish a valid certificate path consisting of valid CA certificates, and demonstrate that the function succeeds.
The evaluator shall then remove trust in one of the CA certificates, and show that the function fails.
</test>
<test> The evaluator shall demonstrate that validating an expired certificate results in the function failing.</test>
<test> [Conditional, to be performed for use cases identified in exceptions that cannot be configured to allow revocation checking]
The evaluator shall test that the OS can properly handle revoked certificates - conditional on whether CRL, OCSP, OCSP stapling, or OCSP multi-stapling is selected; if multiple methods are selected, then a test will be performed for each method.
The evaluator shall test revocation of the node certificate and revocation of the intermediate CA certificate (i.e., the intermediate CA certificate should be revoked by the root CA).
If OCSP stapling per RFC 6066 is the only supported revocation method, testing revocation of the intermediate CA certificate is omitted.
The evaluator shall ensure that a valid certificate is used, and that the validation function succeeds.
The evaluator then attempts the test with a certificate that has been revoked (for each method chosen in the selection) to ensure when the certificate is no longer valid that the validation function fails.
If the exceptions are configurable, the evaluator shall attempt to configure the exceptions to allow revocation checking for each function indicated in FIA_X509_EXT.2.</test>
<test> If any OCSP option is selected, the evaluator shall configure the OCSP server or use a man-in-the-middle tool to present a certificate that does not have the OCSP signing purpose and verify that validation of the OCSP response fails.
If CRL is selected, the evaluator shall configure the CA to sign a CRL with a certificate that does not have the cRLsign key usage bit set and verify that validation of the CRL fails.</test>
<test> The evaluator shall modify any byte in the first eight bytes of the certificate and demonstrate that the certificate fails to validate.
(The certificate will fail to parse correctly.)</test>
<test> The evaluator shall modify any byte in the last eight bytes of the certificate and demonstrate that the certificate fails to validate.
(The signature on the certificate will not validate.)</test>
<test> The evaluator shall modify any byte in the public key of the certificate and demonstrate that the certificate fails to validate.
(The signature of the certificate will not validate.)</test>
<test>
      <depends on="s-ec-certs"/>
      <depends on="sel-rfc6187"><external-doc ref="ssh"/></depends>
      <testlist><test id="t-ecdsa-valid">
	The evaluator shall establish a valid, trusted certificate chain consisting of an EC leaf certificate, an EC Intermediate CA certificate not designated as a trust anchor, and an EC certificate designated as a trusted anchor, where the elliptic curve parameters are specified as a named curve.
    The evaluator shall confirm that the TOE validates the certificate chain.
  </test>
  <test>
      The evaluator shall replace the intermediate certificate in the certificate chain for <xref to="t-ecdsa-valid"/> with a modified certificate, where the modified intermediate CA has a public key information field where the EC parameters uses an explicit format version of the Elliptic Curve parameters in the public key information field of the intermediate CA certificate from <xref to="t-ecdsa-valid"/>, and the modified Intermediate CA certificate is signed by the trusted EC root CA, but having no other changes.
The evaluator shall confirm the TOE treats the certificate as invalid.
      </test></testlist>
</test>
    <test>
    <depends on="s-revoc-exceptions"/>
    For each exceptional use case for revocation checking described in the ST, the evaluator shall attempt to establish the conditions of the use case, designate the certificate as invalid and perform the function relying on the certificate. The evaluator shall observe that the alternate revocation checking mechanism successfully prevents performance of the function.
</test>
</testlist>

<h:div>
  [Conditional, to be performed if "authentication based on X.509 certificates" is selected in FIA_UAU.5]:
  The evaluator shall generate an X.509v3 certificate for a user with the Client Authentication Extended Key Usage field set.
  The evaluator shall provision the OS for authentication with the X.509v3 certificate.
  The evaluator shall ensure that the certificates are validated by the OS as per
  FIA_X509_EXT.1.1 and then conduct the following two tests:
  <testlist>
    <test>
      The evaluator shall attempt to authenticate to the OS using the X.509v3 certificate.
      The evaluator shall ensure that the authentication attempt is successful.
    </test>
    <test>
      The evaluator shall generate a second certificate identical to
      the first except for the public key and any values derived
      from the public key.
      The evaluator shall attempt to authenticate to the OS with this certificate.
      The evaluator shall ensure that the authentication attempt is unsuccessful.
    </test>
  </testlist>
</h:div>


</Tests>

			  
			  </aactivity>
          </f-element>
          <f-element id="fel-cacert">
            <title>
The OS shall only treat a certificate as a CA certificate if the
basicConstraints extension is present and the CA flag is set to TRUE.
	    </title>
            <note role="application"> This requirement applies to certificates that are used and
              processed by the TSF and restricts the certificates that may be
              added as trusted CA certificates. </note>
            <aactivity>
	      <Tests>
The tests described must be performed in conjunction with the other
certificate services evaluation activities, including the functions in
FIA_X509_EXT.2.1.
The evaluator shall create a chain of at least four certificates:
the node certificate to be tested, two Intermediate CAs, and the
              self-signed Root CA.
<testlist>
  <test> The evaluator shall construct a certificate path, such that the certificate
  of the CA issuing the OS&apos;s certificate does not contain the
  <h:i>basicConstraints</h:i> extension. The validation of the certificate path fails. </test>
  <test> The evaluator shall construct a certificate path, such that the certificate
  of the CA issuing the OS&apos;s certificate has the CA flag in the
  <h:i>basicConstraints</h:i> extension not set. The validation of the certificate path fails. </test>
  <test> The evaluator shall construct a certificate path, such that the certificate
  of the CA issuing the OS&apos;s certificate has the CA flag in the
  <h:i>basicConstraints</h:i> extension set to TRUE. The validation of the certificate path
  succeeds. </test>
</testlist>
              </Tests>
	    </aactivity>
          </f-element>
        </f-component>
        <f-component cc-id="fia_x509_ext.2" name="X.509 Certificate Authentication">
          
          <comp-lev> requires the TSF to use certificates for authentication
            functions.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
            <h:ul>
              <h:li>Import and removal of X.509v3 certificates</h:li>
              <h:li>Approval of import and removal of X.509v3 certificates</h:li>
            </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Success or failure of authentication attempt</h:li>	      
            </h:ul>
          </audit>
          <dependencies>
            <no-link>FIA_X509_EXT.1</no-link> X.509 Certificate Validation
          </dependencies>
          
          <f-element id="fel-cert-auth">
            <title> The OS shall use X.509v3 certificates as defined by RFC 5280 to support
              authentication for
			  <selectables>
			  <selectable>TLS</selectable>
			  <selectable>DTLS</selectable>
			  <selectable>HTTPS</selectable>
			  <selectable><assignable>other protocols</assignable></selectable>
			  </selectables>
			  connections.
	    </title>
            <aactivity>
	      <Tests>
	      <h:p>
		The evaluator shall acquire or develop an application that uses the selected OS
		mechanism with an X.509v3 certificate. The evaluator shall then run the
		application and ensure that the provided certificate is used to authenticate the
		connection.
	      </h:p>
	      <h:p>
		The evaluator shall repeat the activity for all selections listed.
	      </h:p>
	      </Tests>
	    </aactivity>
          </f-element>
        </f-component>
        
        -->
        
      </section>
      
      <section title="Class FMT: Security Management" id="fmt">
     <!--
        <ext-comp-def fam-id="FMT_MOF_EXT" title="Management of Functions Behavior">
          <fam-behavior>This family defines the administrative privileges required to modify the behavior of the security
            functions that are defined specifically for operating systems.</fam-behavior> 
	</ext-comp-def> -->
        <f-component cc-id="fmt_mof.1" name="Management of Security Functions Behavior">
          <!-- 
          <comp-lev> requires the TSF to define a set of
            management functions for the TOE and the privileges that are required to administer them.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>Configuration of the roles that may manage the behavior of the TSF management functions</h:li>
          </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included
            in the PP, PP-Module, functional package or ST:
          <h:ul>
            <h:li>Successful or unsuccessful management of the behavior of any TOE functions</h:li>
            <h:li>Change in permissions to a set of users that have the ability to manage a given function</h:li>
          </h:ul>
          </audit>
          <dependencies>
            <no-link>FMT_SMF_EXT.1</no-link> Specification of Management Functions
          </dependencies>
          -->
	  <f-element id="fel-man-sec-func">
	    <title>
	      The TSF shall restrict the ability to [<h:i>perform</h:i>] the functions [<h:i>indicated with an M in the "Administrator" column in 
	        FMT_SMF_EXT.1.1</h:i>] to the [<h:i>administrator</h:i>].
	    </title>
	    <note role="application">
        The functions with an "M" in the "Administrator" column must be restricted
        to (or overridden by) the administrator in the TOE.
	The functions with an "O" in the "Administrator" column may be restricted
        to (or overridden by) the administrator when implemented in the TOE at
        the discretion of the ST author.  For such functions, the ST author indicates this
        by replacing an "O" with an "M" in the ST.
	    </note>
            <aactivity>
	      <TSS>
	      <h:p>
		The evaluator shall verify that the TSS describes those management functions
		that are restricted to Administrators, including how the user is prevented
		from performing those functions, or not able to use any interfaces that
		allow access to that function.
	      </h:p>

	      </TSS>
              <Guidance>The evaluator shall examine the operational guidance to verify that for the functions claimed in FMT_SMF_EXT.1 as being restricted to the administrator (i.e., the user cannot perform them), the guidance identifies how that restriction is enforced (i.e., what role or permission permits the ability to perform the function).</Guidance>
		<Tests>
		The evaluator shall also perform the following test.
  	      <testlist><test>For each function that is indicated as restricted to the administrator,
              the evaluation will perform the function as an administrator, as specified in the
              Operational Guidance, and determine that it has the expected effect as outlined by
              the Operational Guidance and the SFR.  The evaluator shall then perform the function
              (or otherwise attempt to access the function) as a non-administrator and observe
              that they are unable to invoke that functionality.
              </test></testlist>
		</Tests>
            </aactivity>
	  </f-element>
          <audit-event>
            <audit-event-descr>Successful or unsuccessful management of the behavior of any TOE
              functions</audit-event-descr>            
          </audit-event>
          <audit-event>
            <audit-event-descr>Change in permissions to a set of users that have the ability to
              manage a given function</audit-event-descr>
          </audit-event>
	</f-component>

        <ext-comp-def fam-id="FMT_SMF_EXT" title="Specification of Management Functions">
	  <fam-behavior>This family defines management functions that are defined specifically for operating systems.</fam-behavior>
	</ext-comp-def>
	<f-component cc-id="fmt_smf_ext.1" name="Specification of Management Functions">
	  
	  <comp-lev> requires the TSF to define a set of
	    management functions for the TOE.</comp-lev>
	  <management>There are no management functions foreseen.</management>
	  <audit>There are no auditable events foreseen.
	  </audit>
	  <dependencies>No dependencies.</dependencies>
	  
	  <f-element id="fel-manage-functions">
	    <title>
	      The TSF shall be capable of performing the following management functions:
	      <h:br/>
        <h:br/>
        <h:b><ctr id="fmt_smf" ctr-type="Table">: Management Functions</ctr></h:b><h:br/><h:br/> 
            Status Markers:<h:br/> M - Mandatory<h:br/> O - Optional/Objective<h:br/>
              <!-- NOTE: management-function uses ctr variables crt-type=functions in the MOOO table,
              so that they do not have to be renumbered when one is added or removed. However app 
              notes and AAs need to be in the same order as the functions.
		          The list of IDs for each function is at the end of the xml.-->
	      <management-function-set default="O">
          <manager cid="U">User</manager>
          <manager cid="A">Administrator</manager>
          <manager cid="AM">Administrator (When managed with an MDM)</manager>
          <manager cid="AO">Administrator Only (When managed with an MDM)</manager>
          <management-function id="mf-pwd">
            <text>
                    <!-- <ctr id="pwd" pre="" ctr-type="function">.</ctr>--> Configure password policy:
                <h:ul>
                  <h:li>minimum password length</h:li>
                  <h:li>minimum password complexity</h:li>
                  <h:li>maximum password lifetime</h:li>
                </h:ul>
            </text>
            <O ref="U"/>
            <M ref="A"/>
            <M ref="AM"/>
            <M ref="AO"/>
            <aactivity>
              <TSS>The evaluator shall verify
                the TSS defines the allowable policy options: the range of values for both
                password length and lifetime, and a description of complexity to include
                character
                set and complexity policies (e.g., configuration and enforcement of number of
                uppercase, lowercase, and special characters per password).</TSS>
              <Tests> The evaluator shall exercise the TSF configuration as the administrator
                and perform positive and negative tests, with at least two values set for each
                variable setting, for each of the following: <h:br/>
              <h:ul>
                  <h:li>minimum password length</h:li>
                  <h:li>minimum password complexity</h:li>
                  <h:li>maximum password lifetime</h:li>
                </h:ul>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-screenlock">
            <text>
                    <!-- <ctr id="screenlock" pre="" ctr-type="function">.</ctr>--> Configure screen/session locking policy: 
              <h:ul>
                <h:li>enable/disable <selectables><selectable>screen lock</selectable><selectable>session</selectable></selectables> inactivity timeout</h:li>
                <h:li><selectables><selectable>screen lock</selectable><selectable>session</selectable></selectables> inactivity timeout value</h:li>
                <h:li>number of authentication failures to trigger lockout</h:li>
              </h:ul>
            </text>
            <O ref="U"/>
            <M ref="A"/>
            <M ref="AM"/>
            <M ref="AO"/>
            <aactivity>
              <TSS>The evaluator shall
                verify the TSS defines the range of values for both timeout period and number
                of
                authentication failures for all supported authentication mechanisms.</TSS>
              <Tests> The evaluator shall exercise the TSF configuration as the administrator.
                The evaluator shall perform positive and negative tests, with at least two
                values set for each variable setting, for each of the following: <h:br/>
              <h:ul>
                  <h:li>screen-lock and/or session timeout enabled/disabled</h:li>
                  <h:li>screen lock and/or session timeout value</h:li>
                  <h:li>number of authentication failures to trigger lockout (may be combined with test for
                FIA_AFL.1)</h:li>
                </h:ul>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-vpn">
            <text>
                    <!-- <ctr id="vpn" pre="" ctr-type="function">.</ctr>--> Enable/disable the VPN protection: 
               <h:ul>
                <h:li>Across device</h:li>
              </h:ul>
              <h:div class="indent">
                <selectables linebreak="yes">
                  <selectable id="s-vpn-per-app">on a per-app basis</selectable>
                  <selectable id="s-vpn-per-appgroup">on a per-group of applications processes
              basis</selectable>
                  <selectable exclusive="yes">no other method</selectable>
                </selectables>
              </h:div>
            </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note><also ref-id="mf-audioVisual"/><also ref-id="mf-location"/> Functions <_/>
              must be implemented on a device-wide basis but may also be implemented on a
              per-app basis or on a per-group of applications basis in which the configuration
              includes the list of applications or groups of applications to which the
              enable/disable applies.</app-note>
            <app-note> Function <_/> addresses enabling and disabling the IPsec VPN only. The
              configuration of the VPN Client itself (with information such as VPN Gateway,
              certificates, and algorithms) is addressed by the <xref to="mod-vpnclient"/>.
              The administrator options should only be listed if the administrator can
              remotely enable/disable the VPN connection. 
              <h:p> Function <xref to="mf-vpn"/>
              optionally allows the VPN to be configured per-app or per-groups of apps. If
              this configuration is selected, it does not void FDP_IFC_EXT.1. Instead
              FDP_IFC_EXT.1 is applied to the application or group of applications the VPN is
              applied to. In other words, all traffic destined for the VPN-enabled application
              or group of applications, must travel through the VPN, but traffic not destined
              for that application or group of applications can travel outside the VPN. When
              the VPN is configured across the device FDP_IFC_EXT.1 applies to all traffic and
              the VPN must not split tunnel. </h:p>
            </app-note>
            <aactivity>
              <Tests> The evaluator shall perform the following tests: <testlist>
                  <test>The evaluator shall exercise the TSF configuration to enable the VPN
                protection. These configuration actions must be used for the testing of the
                FDP_IFC_EXT.1.1 requirement. </test>
                  <test>[conditional] If "<xref to="s-vpn-per-app"/>" is selected, the
                evaluator shall create two applications and enable one to use the VPN and the
                other to not use the VPN. The evaluator shall exercise each application
                (attempting to access network resources; for example, by browsing different
                websites) individually while capturing packets from the TOE. The evaluator
                shall verify from the packet capture that the traffic from the VPN-enabled
                application is encapsulated in IPsec and that the traffic from the
                VPN-disabled application is not encapsulated in IPsec. </test>
                  <test>[conditional] If "<xref to="s-vpn-per-appgroup"/>" is selected, the
                evaluator shall create two applications and the applications shall be placed
                into different groups. Enable one application group to use the VPN and the
                other to not use the VPN. The evaluator shall exercise each application
                (attempting to access network resources; for example, by browsing different
                websites) individually while capturing packets from the TOE. The evaluator
                shall verify from the packet capture that the traffic from the application in
                the VPN-enabled group is encapsulated in IPsec and that the traffic from the
                application in the VPN-disabled group is not encapsulated in IPsec. </test>
                </testlist>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-radios">
            <text>
                    <!-- <ctr id="radios" pre="" ctr-type="function">.</ctr>--> Enable/disable <assignable id="a-mf-radios">list of all radios</assignable>
            </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> The assignment in function <_/> consists of all radios present on the
              TSF, such as Wi-Fi, cellular, NFC, Bluetooth BR/EDR, and Bluetooth LE, which can
              be enabled and disabled. In the future, if both Bluetooth BR/EDR and Bluetooth
              LE are supported, they will be required to be enabled and disabled separately.
              If the TOE supports cellular calling, disablement of the cellular radio does not imply that the radio may not be
              enabled in order to place emergency phone calls; however, it is not expected
              that a device in "airplane mode", where all radios are disabled, will
              automatically (without authorization) turn on the cellular radio to place
              emergency calls.</app-note>
            <aactivity>
              <TSS>
                The evaluator shall
                verify that the TSS includes a description of each radio and an indication of
                if
                the radio can be enabled/disabled along with what role can do so. In addition
                the
                evaluator shall verify that the frequency ranges at which each radio operates
                is
                included in the TSS. The evaluator shall verify that the TSS includes at what
                point
                in the boot sequence the radios are powered on and indicates if the radios are
                used
                as part of the initialization of the device.
              </TSS>
              <Guidance> The evaluator shall confirm that the operational guidance describes how to
                perform the enable/disable function for each radio.<h:br/><h:br/>
              </Guidance>
              <Tests> The evaluator shall ensure that minimal signal leakage enters the RF
                shielded enclosure (i.e., Faraday bag, Faraday box, RF shielded room) by
                performing the following tests: 
                <testlist><test>
                <h:ol type="1">
                <h:li>Place the antenna of
                the spectrum analyzer inside the RF shielded enclosure.</h:li>
                <h:li>Enable "Max Hold" on the spectrum analyzer and perform a spectrum sweep of
                the frequency range between 300 MHz – 6000 MHz, in I kHz steps (this range
                should encompass 802.11, 802.15, GSM, UMTS, and LTE). This range will not
                address NFC 13.56.MHz, another test should be set up with similar constraints
                to address NFC.<h:br/><h:br/> If power above -90 dBm is observed, the
                Faraday box has too great of signal leakage and shall not be used to complete
                the test for Function <xref to="mf-radios"/>. The evaluator shall exercise
                the TSF configuration as the administrator and, if not restricted to the
                administrator, the user, to enable and disable the state of each radio (e.g.
                Wi-Fi, cellular, NFC, Bluetooth). </h:li>
                </h:ol>
                </test>
                <test>
                  The evaluator shall repeat the
                  steps below, booting into any auxiliary boot mode supported by the device. For
                  each radio, the evaluator shall:
                  <h:ol type="1">
                    <h:li>Place the antenna of
                      the spectrum analyzer inside the RF shielded enclosure. Configure the spectrum
                      analyzer to sweep desired frequency range for the radio to be tested (based on
                      range provided in the TSS). The ambient noise floor shall be set to -110 dBm.
                      Place the TOE into the RF shielded enclosure to isolate them from all other RF
                      traffic.</h:li>
                    <h:li>The evaluator shall create a baseline of the
                      expected behavior of RF signals. The evaluator shall power on the device,
                      ensure the radio in question is enabled, power off the device, enable "Max
                      Hold" on the spectrum analyzer and power on the device. The evaluator shall
                      wait 2 minutes at each Authentication Factor interface prior to entering the
                      necessary password to complete the boot process, waiting 5 minutes after the
                      device is fully booted. The evaluator shall observe that RF spikes are present
                      at the expected uplink channel frequency. The evaluator shall clear the "Max
                      Hold" on the spectrum analyzer.</h:li>
                    <h:li>The evaluator shall
                      verify the absence of RF activity for the uplink channel when the radio in
                      question is disabled. The evaluator shall complete the following test five
                      times. The evaluator shall power on the device, ensure the radio in question
                      is disabled, power off the device, enable "Max Hold" on the spectrum analyzer
                      and power on the device. The evaluator shall wait 2 minutes at each
                      Authentication Factor interface prior to entering the necessary password to
                      complete the boot process, waiting 5 minutes after the device is fully booted.
                      The evaluator shall clear the "Max Hold" on the spectrum analyzer. If the
                      radios are used for device initialization, then a spike of RF activity for the
                      uplink channel can be observed initially at device boot. However, if a spike
                      of RF activity for the uplink channel of the specific radio frequency band is
                      observed after the device is fully booted or at an Authentication Factor
                      interface it is deemed that the radio is enabled. </h:li>
                  </h:ol>
                </test>
                </testlist>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-audioVisual">
            <text>
                    <!-- <ctr id="audioVisual" pre="" ctr-type="function">.</ctr>--> Enable/disable <assignable id="a-audiovisual-devs">list of audio or visual
              collection devices</assignable>: 
              <h:ul>
                <h:li>Across device</h:li>
              </h:ul>
              <h:div class="indent">
                <selectables linebreak="yes">
                  <selectable id="s-audiovisual-per-app">on a per-app basis</selectable>
                  <selectable id="s-audiovisual-per-appgroup">on a per-group of applications
              processes basis</selectable>
                  <selectable exclusive="yes">no other method</selectable>
                </selectables>
              </h:div>
            </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note>The assignment in function <_/> consists of at least one audio or
              visual device, such as camera and microphone, which can be enabled and disabled
              by either the user or administrator. If the TOE supports cellular calling, disablement of the microphone does not
              imply that the microphone may not be enabled in order to place emergency phone
              calls. If certain devices are able to be restricted to the enterprise (either
              device-wide, per-app or per-group of applications) and others are able to be
              restricted to users, then this function should be iterated in the table with the
              appropriate table entries. <h:p> Regarding functions <xref to="mf-radios"/> and <xref to="mf-audioVisual"/>, disablement of a particular radio or audio/visual
              device must be effective as soon as the TOE has power. Disablement must also
              apply when the TOE is booted into auxiliary boot modes, for example, associated
              with updates or backup. If the TOE supports states in which security management
              policy is inaccessible, for example, due to sensitive data protection, it is
              acceptable to meet this requirement by ensuring that these devices are disabled
              by default while in these states. That these devices are disabled during
              auxiliary boot modes does not imply that the device (particularly the cellular
              radio) may not be enabled in order to perform emergency phone calls, if supported by the TOE. </h:p>
            </app-note>
            <aactivity>
              <TSS>
                The evaluator
                shall verify that the TSS includes a description of each collection device and
                an
                indication of if it can be enabled/disabled along with what role can do so.
                The
                evaluator shall confirm that the operational guidance describes how to perform the
                enable/disable function.
              </TSS>
              <Tests>The evaluator shall perform the following tests: <testlist>
                  <test>The evaluator shall exercise the TSF configuration as the
                    administrator and, if not restricted to the administrator, the user, to
                enable and disable the state of each audio or visual collection devices
                    (e.g., camera, microphone) listed by the ST author. For each collection
                device, the evaluator shall disable the device and then attempt to use its
                functionality. The evaluator shall reboot the TOE and verify that disabled
                collection devices may not be used during or early in the boot process.
                Additionally, the evaluator shall boot the device into each available
                    auxiliary boot mode and verify that the collection device cannot be used. </test>
                  <test>[conditional] If "<xref to="s-audiovisual-per-app"/>" is selected,
                the evaluator shall create two applications and enable one to use access the
                A/V device and the other to not access the A/V device. The evaluator shall
                exercise each application attempting to access the A/V device individually.
                The evaluator shall verify that the enabled application is able to access the
                A/V device and the disabled application is not able to access the A/V device. </test>
                  <test>[conditional] If "<xref to="s-audiovisual-per-appgroup"/>" is
                selected, the evaluator shall create two applications and the applications
                shall be placed into different groups. Enable one group to access the A/V
                device and the other to not access the A/V device. The evaluator shall
                exercise each application attempting to access the A/V device individually.
                The evaluator shall verify that the application in the enabled group is able
                to access the A/V device and the application in the disabled group is not able
                to access the A/V device. </test>
                </testlist>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-lockState">
            <text>
                    <!-- 6. -->
                    <!-- <ctr id="lockState" pre="" ctr-type="function">.</ctr>--> Transition to the locked state </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <aactivity>
              <Tests>
                The evaluator shall use the test environment to instruct the TSF, both as a
                user and as the administrator, to command the device to transition to a locked
                state, and verify that the device transitions to the locked state upon
                command.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-wipe">
            <text>
                    <!-- 7. -->
                    <!-- <ctr id="wipe" pre="" ctr-type="function">.</ctr>--> TSF wipe of sensitive data </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> Wipe of the TSF (function <xref to="mf-wipe"/>) is performed according
              to FCS_CKM_EXT.5. Sensitive data is all non-TSF data, including all user or
              enterprise data.
            </app-note>
            <aactivity>
              <Tests>The evaluator shall use the test environment to instruct the TSF, both as
                a user and as the administrator, to command the device to perform a wipe of
                sensitive data.
                The evaluator shall ensure that this management setup is used when conducting
                the Evaluation Activities in FCS_CKM_EXT.5.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-appInstallRules">
            <text>
                    <!--8. -->
                    <!-- <ctr id="appInstallRules" pre="" ctr-type="function">.</ctr>--> Configure application installation policy by <h:div class="indent">
                <selectables linebreak="yes">
                  <selectable id="mf-appInstallRules-restrict">restricting the sources of
              applications</selectable>
                  <selectable id="mf-appInstallRules-specify">specifying a set of allowed
              applications based on <assignable>application characteristics</assignable> (an <snip>application
              allowlist</snip>)</selectable>
                  <selectable id="mf-appInstallRules-deny">denying installation of
              applications</selectable>
                </selectables>
              </h:div>
            </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <M ref="AO"/>
            <app-note> The selection in function <xref to="mf-appInstallRules"/> allows the
              ST author to select which mechanisms are available to the administrator through
              the MDM Agent to restrict the applications which the user may install. The ST
              author must state if application allowlist is applied device-wide or if it can
              be specified to apply to either the Enterprise or Personal applications. <h:ul>
                <h:li>If the administrator can restrict the sources from which applications
              can be installed, the ST author selects "<xref to="mf-appInstallRules-restrict"/>." </h:li>
                <h:li>If the administrator can specify a allowlist of allowed applications,
              the ST author selects "<xref to="mf-appInstallRules-specify"/>." The ST author
              should list any application characteristics (e.g., name, version, or developer)
              based on which the allowlist can be formed.</h:li>
                <h:li>If the administrator can prevent the user from installing additional
              applications, the ST author selects "<xref to="mf-appInstallRules-deny"/>." </h:li>
              </h:ul>
            </app-note>
            <aactivity>
              <TSS> The evaluator shall verify the TSS describes the allowable application
                installation policy options based on the selection included in the ST. If the <xref to="mf-appInstallRules-specify"/> is selected, the evaluator shall verify
                that the TSS includes a description of each application characteristic upon
                which the allowlist may be based. </TSS>
              <Tests> The evaluator shall exercise the TSF configuration as the administrator
                to restrict particular applications, sources of applications, or application
                installation according to the operational guidance. The evaluator shall attempt to
                install unauthorized applications and ensure that this is not possible. The
                evaluator shall, in conjunction, perform the following specific tests: <testlist>
                  <test>[conditional] If "<xref to="mf-appInstallRules-restrict"/>" is selected, the evaluator shall attempt to connect to an
                    unauthorized repository in order to install applications and verify that applications from this repository cannot be installed. </test>
                  <test>[conditional] If "<xref to="mf-appInstallRules-specify"/>" is selected, the evaluator shall attempt to install two applications
                (one allowlisted, and one not) from a known allowed repository and verify
                    that the application not on the allowlist is rejected. The evaluator shall
                also attempt to side-load executables or installation packages via USB
                connections to determine that the allowlist is still adhered to.</test>
                <test>[conditional] If "<xref to="mf-appInstallRules-deny"/>" is selected, the evaluator shall enable the ability to install applications. The evaluator shall then install an application and observe that this completes successfully. The evaluator shall then uninstall the application, configure the TOE to deny installation of applications, and verify that the same application cannot be reinstalled.</test>
                </testlist>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-keyStorage">
            <text>
                    <!-- 9. -->
                    <!-- <ctr id="keyStorage" pre="" ctr-type="function">.</ctr>--> Import keys or secrets into the secure key storage </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <aactivity>
              <also ref-id="mf-keyWipe"/>
              <TSS>The evaluator shall verify that the TSS
                describes each category of keys or secrets that can be imported into the TSF’s
                secure
                key storage.</TSS>
              <Tests>
                The test of these functions is performed in association with FCS_STG_EXT.1.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-keyWipe">
            <text>
                    <!-- 10. -->
                    <!-- <ctr id="keyWipe" pre="" ctr-type="function">.</ctr>--> Destroy imported keys or secrets and <selectables>
                <selectable exclusive="yes">no other keys or secrets</selectable>
                <selectable>
                  <assignable>list of other categories of
                    keys or secrets</assignable>
                </selectable>
              </selectables>
              in the secure key storage </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
          </management-function>
          <management-function id="mf-certImport">
            <text>            
                    <!-- 11. -->
                    <!-- <ctr id="certImport" pre="" ctr-type="function">.</ctr>--> Import X.509v3 certificates into the Trust Anchor Database </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <aactivity>
              <Guidance>The evaluator shall
                review the operational guidance to determine that it describes the steps needed to
                import,
                modify, or remove certificates in the Trust Anchor database, and that the
                users
                that have authority to import those certificates (e.g., only administrator, or
                both administrators and users) are identified.
              </Guidance>
              <Tests>
                The evaluator shall import certificates according to the operational guidance as the
                user or as the administrator, as determined by the administrative guidance.
                The evaluator shall verify that no errors occur during import. The evaluator
                should perform an action requiring use of the X.509v3 certificate to provide
                assurance that installation was completed properly.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-certWipe">
            <text>
                    <!-- 12. -->
                    <!-- <ctr id="certWipe" pre="" ctr-type="function">.</ctr>--> Remove imported X.509v3 certificates and <selectables>
                <selectable exclusive="yes">no other X.509v3 certificates</selectable>
                <selectable>
                  <assignable>list of other categories of X.509v3
                    certificates</assignable>
                </selectable>
              </selectables>
              in the Trust Anchor Database </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> In the future, function <xref to="mf-certWipe"/> may require
              destruction or disabling of any default trusted CA certificates, excepting those
              CA certificates necessary for continued operation of the TSF, such as the
              developer’s certificate. At this time, the ST author must indicate in the
              assignment whether pre-installed or any other category of X.509v3 certificates
              may be removed from the Trust Anchor Database. </app-note>
            <aactivity>
              <TSS>
                The evaluator shall
                verify that the TSS describes each additional category of X.509 certificates
                and
                their use within the TSF.
              </TSS>
              <Tests> The evaluator shall remove an administrator-imported certificate and any
                other categories of certificates included in the assignment of function <xref to="mf-appRemove"/> from the Trust Anchor Database according to the AGD
                guidance as the user and as the administrator. </Tests>
            </aactivity>

          </management-function>
          <management-function id="mf-enroll">
            <text>
                    <!-- 13. -->
                    <!-- <ctr id="enroll" pre="" ctr-type="function">.</ctr>--> Enroll the TOE in management </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> For function <xref to="mf-enroll"/>, the enrollment function may be
              installing an MDM agent and includes the policies to be applied to the device.
              It is acceptable for the user approval notice to require the user to
              intentionally opt to view the policies (for example, by "tapping" on a "View"
              icon) rather than listing the policies in full in the notice. </app-note>
            <aactivity>
              <TSS>The evaluator shall
                examine the TSS to ensure that it contains a description of each management
                function that will be enforced by the enterprise once the device is enrolled.
              </TSS><Guidance>
                The
                evaluator shall examine the operational guidance to determine that the same
                information from the TSS
                is present.
              </Guidance>
              <Tests>
                The evaluator shall verify that user approval is required to enroll the
                device into management.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-appRemove">
            <text>
                    <!-- 14. -->
                    <!-- <ctr id="appRemove" pre="" ctr-type="function">.</ctr>--> Remove applications </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <aactivity>
              <TSS>
                The evaluator shall
                verify that the TSS includes an indication of what applications (e.g.,
                user-installed applications, Administrator-installed applications, or
                Enterprise
                applications) can be removed along with what role can do so. 
                
              </TSS>
              <Guidance>
                The evaluator
                shall
                examine the operational guidance to determine that it details, for each type of
                application that can be removed, the procedures necessary to remove those
                applications and their associated data. For the purposes of this Evaluation
                Activity, "associated data" refers to data that are created by the app during
                its
                operation that do not exist independent of the app's existence, for instance,
                configuration data, or e-mail information that’s part of an e-mail client. It
                does
                not, on the other hand, refer to data such as word processing documents (for a
                word processing app) or photos (for a photo or camera app).
              </Guidance>
              <Tests>
                The evaluator shall attempt to remove applications according to the AGD
                guidance and verify that the TOE no longer permits users to access those
                applications or their associated data.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-update">
            <text>
                    <!-- 15 -->
                    <!-- <ctr id="update" pre="" ctr-type="function">.</ctr>--> Update system software </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> For function <xref to="mf-update"/>, the administrator capability to
              update the system software may be limited to causing a prompt to the user to
              update rather than the ability to initiate the update itself. As the
              administrator is likely to be acting remotely, he/she would be unaware of
              inopportune situations, such as low power, which may cause the update to fail
              and the device to become inoperable. The user can refuse to accept the update in
              such situations. It is expected that system architects will be cognizant of this
              limitation and will enforce network access controls in order to enforce
              enterprise-critical updates. </app-note>
            <aactivity>
              <Tests>The evaluator shall attempt to update the TSF system software following
                the
                procedures in the operational guidance and verify that updates correctly install and
                that the version numbers of the system software increase.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-appInstall">
            <text>
                    <!-- 16. -->
                    <!-- <ctr id="appInstall" pre="" ctr-type="function">.</ctr>--> Install applications </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> Function <xref to="mf-appInstall"/> addresses both installation and update. <!-- This protection
              profile does not distinguish between installation and update of applications
              because mobile devices typically completely overwrite the previous installation
              with a new installation during an application update. --> </app-note>
            <aactivity>
              <Tests>The evaluator shall attempt to install an application following the
                procedures in the operational guidance and verify that the application is installed
                and
                available on the TOE.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-entAppRemove">
            <text>
                    <!-- 17. -->
                    <!-- <ctr id="entAppRemove" pre="" ctr-type="function">.</ctr>--> Remove Enterprise applications </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> For function <xref to="mf-entAppRemove"/>, "Enterprise applications" are those applications that
              belong to the Enterprise application group. Applications installed by the
              enterprise administrator (including automatic installation by the administrator
              after being requested by the user from a catalog of enterprise applications) are
              by default placed in the Enterprise application group unless an exception has
              been made in function <xref to="mf-appGroups"/> of FMT_SMF_EXT.1.1. </app-note>
            <aactivity>
              <Tests>
                The evaluator shall attempt to remove any Enterprise applications from the
                device by following the administrator guidance. The evaluator shall verify
                that
                the TOE no longer permits users to access those applications or their
                associated
                data.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-notifications">
            <text>
                    <!-- 18. -->
                    <!-- <ctr id="notifications" pre="" ctr-type="function">.</ctr>--> Enable/disable display notification in the locked state of: <selectables linebreak="yes">
                <selectable>email notifications</selectable>
                <selectable>calendar appointments</selectable>
                <selectable>contact associated with phone call notification</selectable>
                <selectable>text message notification</selectable>
                <selectable>
                  <assignable>other application-based notifications</assignable>
                </selectable>
                <selectable>all notifications</selectable>
              </selectables>
            </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> If the display of notifications in the locked state is supported, the
              configuration of these notifications (function <xref to="mf-notifications"/>)
              must be included in the selection. </app-note>
            <aactivity>
              <Guidance>The evaluator shall examine the operational guidance to determine that it
                specifies, for at least each category of information selected for Function <xref to="mf-notifications"/>, how to enable and disable display information for
                that type of information in the locked state. </Guidance>
              <Tests>For each category of information listed in the operational guidance, the
                evaluator
                shall verify that when that TSF is configured to limit the information
                according
                to the AGD, the information is no longer displayed in the locked state.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-dar">
            <text>
                    <!-- 20. -->
                    <!-- <ctr id="dar" pre="" ctr-type="function">.</ctr>--> Enable sensitive data protection </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> Function <xref to="mf-dar"/> must be included in the selection if
              sensitive data protection is not natively enabled. </app-note>
            <aactivity>
              <Tests>
                The evaluator shall exercise the TSF configuration as the administrator and,
                if not restricted to the administrator, the user, to enable system-wide
                sensitive data protection according to the operational guidance.
              </Tests>
            </aactivity>
          </management-function>

          <management-function id="mf-rmediaDar">
            <text>
                    <!-- 21. -->
                    <!-- <ctr id="rmediaDar" pre="" ctr-type="function">.</ctr>--> Enable removable media’s sensitive data protection </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> Function <xref to="mf-rmediaDar"/> is implicitly met if the TSF does
              not support removable media. </app-note>
            <aactivity>
              <Tests>
                The evaluator shall exercise the TSF configuration as the administrator and,
                if not restricted to the administrator, the user, to enable removable media’s
                sensitive data protection according to the operational guidance.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-location">
            <text>
                    <!-- 21. -->
                    <!-- <ctr id="location" pre="" ctr-type="function">.</ctr>--> Enable/disable location services: <h:ul>
                <h:li>Across device</h:li>
              </h:ul>
              <h:div class="indent">
                <selectables linebreak="yes">
                  <selectable id="mf-location-per_app">on a per-app basis</selectable>
                  <selectable>on a per-group of applications processes basis</selectable>
                  <selectable exclusive="yes">no other method</selectable>
                </selectables>
              </h:div>
            </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <O ref="AO"/>
            <app-note> For function <xref to="mf-location"/>, location services include
              location information gathered from GPS, cellular, and Wi-Fi. </app-note>
            <aactivity>
              <Tests> The evaluator shall perform the following tests. <testlist>
                  <test>The evaluator shall enable location services device-wide and shall
                verify that an application (such as a mapping application) is able to access
                the TOE’s location information. The evaluator shall disable location
                    services device-wide and shall verify that an application (such as a
                mapping
                    application) is unable to access the TOE’s location information. </test>
                  <test>[conditional] If <xref to="mf-location-per_app"/> is selected, the
                evaluator shall create two applications and enable one to use access the
                location services and the other to not access the location services. The
                evaluator shall exercise each application attempting to access location
                services individually. The evaluator shall verify that the enabled application
                is able to access the location services and the disabled application is not
                able to access the location services. </test>
                </testlist></Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-authFactors">
            <text>
                    <!-- <ctr id="authFactors" pre="" ctr-type="function">.</ctr>--> Enable/disable the use of <selectables>
                <selectable>Biometric Authentication Factor</selectable>
                <selectable>Hybrid Authentication Factor</selectable>
              </selectables>
            </text>
            <app-note> Function <xref to="mf-authFactors"/> must be included in the ST if the
              TOE contains a BAF. This selection must correspond with the selection made in
              FIA_UAU.5.1. If <xref to="uau_biometric"/> is selected in FIA_UAU.5.1,
              "Biometric Authentication Factor" must be selected and the user or admin must
              have the option to disable the use of it. If multiple BAFs are claimed in
              FIA_MBV_EXT.1.1 in the <xref to="mod-biometric"/>, this applies to all
              different modalities. If <xref to="uau_hybr"/> is selected in FIA_UAU.5.1 it
              must be selected and the user or admin must have the option to disable the use
              of it. </app-note>
            <aactivity>
              <Tests>If the TOE does not include a BAF or hybrid
                authentication this test is implicitly met.<testlist>
                  <test>[conditional] If <xref to="uau_biometric"/> is selected in
                FIA_UAU.5.1, for each BAF claimed in FIA_MBV_EXT.1.1 in the <xref to="mod-biometric"/> the evaluator shall verify that the TSS describes
                the procedure to enable/disable the BAF.<!--If the TOE includes
                  multiple BAFs, the evaluator shall verify that the TSS describes how to
                  enable/disable each BAF, specifically if the different modalities can be
                  individually enabled/disabled.--> The evaluator shall configure the TOE
                to allow each supported BAF to authenticate and verify that successful
                authentication can be achieved using the BAF. The evaluator shall configure
                the TOE to disable the use of each supported BAF for authentication and
                confirm that the BAF cannot be used to authenticate. </test>
                  <test>[conditional] If <xref to="uau_hybr"/> is selected the evaluator
                shall verify that the TSS describes the procedure to enable/disable the hybrid
                (e.g., username, password, and biometric credential) authentication. The evaluator shall
                configure the TOE to allow hybrid authentication to authenticate and confirm
                that successful authentication can be achieved using the hybrid
                authentication. The evaluator shall configure the TOE to disable the use of
                hybrid authentication and confirm that the hybrid authentication cannot be
                used to authenticate. </test>
                </testlist>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-certInvalid">
            <text>
                    <!-- <ctr id="certInvalid" pre="" ctr-type="function">.</ctr>--> Configure whether to allow or disallow establishment of <assignable>configurable
              trusted channel in FTP_ITC_EXT.1.1 or FDP_UPC_EXT.1.1/APPS</assignable> if the
              peer or server certificate is deemed invalid.</text>
            <app-note>
                    <!-- TODO: Should this be something like for TLS do not approve any exceptions,
              for HTTP this is per FCS_HTTPS_EXT.1.3?? How do I force the selection of no
              exceptions for all (non-HTTPS) TLS connections? --> Function <xref to="mf-certInvalid"/> must be included in the ST if the
              function is configurable on the TOE for any of the trusted channels either
              mandated or selected in <xref to="fel-trust-comms"/> or <xref to="fdp-app-comms"/>. The
              configuration can be different depending on the specific trusted channel(s) and
              they must be filled in for the assignment. </app-note>
            <aactivity>
              <Tests>The test of this function is performed in conjunction with
                FIA_X509_EXT.2.2 in <xref to="X509"/>, FCS_TLSC_EXT.1.6 in the <xref to="tls"/>. </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-externalPorts">
            <text>
                    <!-- <ctr id="externalPorts" pre="" ctr-type="function">.</ctr>--> Enable/disable all data signaling over <assignable>list of externally
              accessible hardware
                ports</assignable>
            </text>
            <app-note>
                    <!-- Start of the optional to include functions --> The assignment in function <xref to="mf-externalPorts"/> consists of
              all externally accessible hardware ports, such as USB, the SD card, and HDMI,
              whose data transfer capabilities can be enabled and disabled by either the user
              or administrator. Disablement of data transfer over an external port must be
              effective during and after boot into the normal operative mode of the device. If
              the TOE supports states in which configured security management policy is
              inaccessible, for example, due to sensitive data protection, it is acceptable to
              meet this requirement by ensuring that data transfer is disabled by default
              while in these states. Each of the ports may be enabled or disabled separately.
              The configuration policy need not disable all ports together. In the case of
              USB, charging is still allowed if data transfer capabilities have been disabled. </app-note>
            <aactivity>
              <TSS>
                The evaluator shall verify that the TSS includes a list of each externally
                accessible hardware port and an indication of if data transfer over that port
                can be enabled/disabled.</TSS>
              <Guidance>
                For each externally accessible hardware port for which data transfer can be enabled or disabled, the evaluator shall verify that the operational guidance provides instructions for how to perform this function.
              </Guidance>
              <Tests>The evaluator shall exercise the TSF configuration to enable and disable
                data transfer capabilities over each externally accessible hardware ports
                (e.g.,
                USB, SD card, HDMI) listed by the ST author. The evaluator shall use test
                equipment for the particular interface to ensure that while the TOE may
                continue to
                receive data on the RX pins, it is not responding on TX pins used for data
                transfer when they are disabled. For each
                disabled data transfer capability, the evaluator shall repeat this test by
                rebooting the device into the normal operational mode and verifying that the
                capability is disabled throughout the boot and early execution stage of the
                device.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-serverProtocols">
            <text>
                    <!-- <ctr id="serverProtocols" pre="" ctr-type="function">.</ctr>--> Enable/disable <assignable id="a-server">list of protocols where the device
              acts as a server</assignable>
            </text>
            <app-note> The assignment in function <xref to="mf-serverProtocols"/> consists of
              all protocols where the TSF acts as a server, which can be enabled and disabled
              by either the user or administrator. </app-note>
            <aactivity>
              <TSS>
                The evaluator shall verify that the TSS describes how the TSF acts as a server
                in
                each of the protocols listed in the ST, and the reason for acting as a server.</TSS>
              <Tests>
                The evaluator shall attempt to disable each listed protocol in the
                assignment. The evaluator shall verify that remote devices can no longer
                access
                the TOE or TOE resources using any disabled protocols.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-devModes">
            <text>
                    <!-- <ctr id="devModes" pre="" ctr-type="function">.</ctr>--> Enable/disable developer modes </text>
            <app-note> Function <xref to="mf-devModes"/> must be included in the selection if developer modes are
              supported by the TSF. </app-note>
            <aactivity>
              <Tests>
                The evaluator shall exercise the TSF configuration as the administrator and,
                if not restricted to the administrator, the user, to enable and disable any
                developer mode. The evaluator shall test that developer mode access is not
                available when its configuration is disabled. The evaluator shall verify the
                developer mode remains disabled during device reboot.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-authBypass">
            <text>
                    <!-- <ctr id="authBypass" pre="" ctr-type="function">.</ctr>--> Enable/disable bypass of local user authentication </text>
            <app-note> Function <xref to="mf-authBypass"/> must be included in the selection
              if bypass of local user authentication, such as a "Forgot Password", password
              hint, or remote authentication feature, is supported. </app-note>
            <aactivity>
              <Guidance>The
                evaluator shall examine the operational guidance to determine that it describes how to
                enable and disable any "Forgot Password", password hint, or remote
                authentication
                (to bypass local authentication mechanisms) capability.
              </Guidance>
              <Tests>For each mechanism listed in the operational guidance that provides a "Forgot
                Password" feature or other means where the local authentication process can be
                bypassed, the evaluator shall disable the feature and ensure that they are not
                able to bypass the local authentication process.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-wipeEntData">
            <text>
                    <!-- <ctr id="wipeEntData" pre="" ctr-type="function">.</ctr>--> Wipe Enterprise data </text>
            <aactivity>
              <Tests>
                The evaluator shall attempt to wipe Enterprise data resident on the device
                according to the administrator guidance. The evaluator shall verify that the
                data is no longer accessible by the user.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-appCert">
            <text>
                    <!-- <ctr id="appCert" pre="" ctr-type="function">.</ctr>--> Approve <selectables>
                <selectable>import</selectable>
                <selectable>removal</selectable>
              </selectables> by
              applications of X.509v3 certificates in the Trust Anchor Database </text>
            <app-note> Function <xref to="mf-appCert"/> must be included in the selection if
              the TSF allows applications, other than the MDM Agents, to import or remove
              X.509v3 certificates from the Trust Anchor Database. The MDM Agent is considered
              the administrator. This function does not apply to applications trusting a
              certificate for its own validations. The function only applies to situations
              where the application modifies the device-wide Trust Anchor Database, affecting
              the validations performed by the TSF for other applications. The user or
              administrator may be provided the ability to globally allow or deny any
              application requests in order to meet this requirement. </app-note>
            <aactivity>
              <TSS> The evaluator shall verify that the TSS describes how approval for an
                application to perform the selected action (import, removal) with respect to
                certificates in the Trust Anchor Database is accomplished (e.g., a pop-up,
                policy setting, etc.). <h:br/><h:br/> The evaluator shall also verify that
                the API documentation provided according to <xref to="adv"/> includes any
                security functions (import, modification, or destruction of the Trust Anchor
                Database) allowed by applications. </TSS>
              <Tests>The evaluator shall perform one of the following tests: <testlist>
                  <test>[conditional] If applications may import certificates to the Trust
                Anchor Database, the evaluator shall write, or the developer shall provide
                access to, an application that imports a certificate into the Trust Anchor
                Database. The evaluator shall verify that the TOE requires approval before
                allowing the application to import the certificate: <h:ul>
                      <h:li>The evaluator shall deny the approvals to verify that the
                application is not able to import the certificate. Failure of import shall be
                tested by attempting to validate a certificate that chains to the certificate
                whose import was attempted (as described in the evaluation activity for
                FIA_X509_EXT.1 as defined in <xref to="X509"/>). </h:li>
                      <h:li>The evaluator shall repeat the test, allowing the approval to
                verify that the application is able to import the certificate and that
                validation occurs. </h:li>
                    </h:ul>
                  </test>
                  <test>[conditional] If applications may remove certificates in the Trust
                Anchor Database, the evaluator shall write, or the developer shall provide
                access to, an application that removes certificates from the Trust Anchor
                Database. The evaluator shall verify that the TOE requires approval before
                allowing the application to remove the certificate: <h:ul>
                      <h:li>The evaluator shall deny the approvals to verify that the
                application is not able to remove the certificate. Failure of removal shall be
                tested by attempting to validate a certificate that chains to the certificate
                whose removal was attempted (as described in the evaluation activity for
                FIA_X509_EXT.1 as defined in <xref to="X509"/>). </h:li>
                    </h:ul>
                  </test>
                </testlist>
                The evaluator shall repeat the test, allowing the approval to verify that the
                application is able to remove/modify the certificate and that validation no
                longer occurs. </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-certValidity">
            <text>
                    <!-- <ctr id="certValidity" pre="" ctr-type="function">.</ctr>--> Configure whether to allow or disallow establishment of a trusted channel
              if the TSF cannot establish a connection to determine the validity of a
              certificate</text>
            <app-note> Function <xref to="mf-certValidity"/> must be included in the ST if
              "administrator is allowed to configure certificate acceptance" is selected in
              FIA_X509_EXT.2.2 as defined in the <xref to="X509"/>
            </app-note>
            <aactivity>
              <Tests>The test of this function is performed in conjunction with
                FIA_X509_EXT.2.2 in <xref to="X509"/>.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-cellular">
            <text>
                    <!-- <ctr id="cellular" pre="" ctr-type="function">.</ctr>--> Enable/disable the cellular protocols used to connect to cellular network
              base stations </text>
            <aactivity>
              <TSS>The
                evaluator shall ensure that the TSS describes which cellular protocols can be
                disabled.</TSS>
              <Guidance>The evaluator shall confirm that the operational guidance describes the
                procedure for disabling each cellular protocol identified in the TSS.
              </Guidance>
              <Tests>The evaluator shall attempt to disable each cellular protocol according
                to
                the administrator guidance. The evaluator shall attempt to connect the device
                to
                a cellular network and, using network analysis tools, verify that the device
                does not allow negotiation of the disabled protocols.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-auditLogs">
            <text>
                    <!-- <ctr id="auditLogs" pre="" ctr-type="function">.</ctr>--> Read audit logs kept by the TSF </text>
            <aactivity>
              <Tests>The evaluator shall attempt to read any device audit logs according to
                the
                administrator guidance and verify that the logs may be read. This test may be
                performed in conjunction with the evaluation activity of FAU_GEN.1.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-digSign">
            <text>
                    <!-- <ctr id="digSign" pre="" ctr-type="function">.</ctr>--> Configure <selectables>
                <selectable>certificate</selectable>
                <selectable>public-key</selectable>
              </selectables> used to
              validate digital signature on applications </text>
            <app-note> Function <xref to="mf-digSign"/> should be included in the selection
              if FPT_SRP_EXT.1 is included in the ST and the execution restriction is enforced by a configurable X.509v3 certificate or public key.</app-note>
            <aactivity>
              <Tests>
                The test of this function is performed in conjunction with FPT_SRP_EXT.1.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-sharedKeys">
            <text>
                    <!-- <ctr id="sharedKeys" pre="" ctr-type="function">.</ctr>--> Approve exceptions for shared use of keys or secrets by multiple
              applications </text>
            <app-note> Function <xref to="mf-sharedKeys"/> should be included in the selection if user or
              administrator is selected in FCS_STG_EXT.1.4. </app-note>
            <aactivity>
              <TSS>The
                evaluator shall verify that the TSS describes how the approval for exceptions
                for
                shared use of keys or secrets by multiple applications is accomplished (e.g.,
                a
                pop-up, policy setting, etc.).</TSS>
              <Tests>
                The test of this function is performed in conjunction with FCS_STG_EXT.1.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-keyWipeRules">
            <text>
                    <!-- <ctr id="keyWipeRules" pre="" ctr-type="function">.</ctr>--> Approve exceptions for destruction of keys or secrets by applications that
              did not import the key or secret </text>
            <app-note> Function <xref to="mf-keyWipeRules"/> should be included in the
              selection if <xref to="s-killkey-user"/> or <xref to="s-killkey-admin"/> is
              selected in FCS_STG_EXT.1.5. 
              <!--
              <rule id="r-killkey-user-mf">
                <if>
                  <ref-id>s-killkey-user</ref-id>
                </if>
                <then>
                  <ref-id>mf-keyWipeRules</ref-id>
                </then>
              </rule>
  <rule
                id="r-killkey-admin-mf">
                <if>
                  <ref-id>s-killkey-admin</ref-id>
                </if>
                <then>
                  <ref-id>mf-keyWipeRules</ref-id>
                </then>
              </rule> -->
            </app-note>
            <aactivity>
              <TSS>The
                evaluator shall verify that the TSS describes how the approval for exceptions
                for
                destruction of keys or secrets by applications that did not import the key or
                secret is
                accomplished (e.g., a pop-up, policy setting, etc.).
              </TSS>
              <Tests>
                The test of this function is performed in conjunction with FCS_STG_EXT.1.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-unlockBanner">
            <text>
                    <!-- <ctr id="unlockBanner" pre="" ctr-type="function">.</ctr>--> Configure the unlock banner </text>
            <O ref="U"/>
            <O ref="A"/>
            <M ref="AM"/>
            <M ref="AO"/>
            <app-note>
                    <!-- ToDo Removed because FTA_TAB is now mandatory: Function <xref
              to="mf-unlockBanner"/> must be
    included in the selection if FTA_TAB.1 is included in the ST. !-->
            </app-note>
            <aactivity>
              <TSS>
                The evaluator shall verify that the TSS describes any restrictions in banner
                settings (e.g., character limitations).
              </TSS>
              <Tests>
                The test of this function is performed in conjunction with FTA_TAB.1.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-auditItems">
            <text>
                    <!-- <ctr id="auditItems" pre="" ctr-type="function">.</ctr>--> Configure the auditable items </text>
            <app-note> Function <xref to="mf-auditItems"/> must be included in the selection
              if FAU_SEL.1 is included in the ST. </app-note>
            <aactivity>
              <Tests>The test of this function is performed in conjunction with FAU_SEL.1.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-integ">
            <text>
                    <!-- <ctr id="integ" pre="" ctr-type="function">.</ctr>--> Retrieve TSF-software integrity verification values </text>
            <aactivity>
              <Tests>The test of this function is performed in conjunction with
                FPT_NOT_EXT.2.1.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-USB">
            <text>
                    <!-- <ctr id="USB" pre="" ctr-type="function">.</ctr>--> Enable/disable <selectables linebreak="yes">
                <selectable id="s-usb-store">USB mass storage mode</selectable>
                <selectable id="s-usb-userauth">USB data transfer without user authentication</selectable>
                <selectable id="s-usb-systemauth">USB data transfer without authentication of the connecting
                  system</selectable>
              </selectables>
            </text>
            <aactivity>
              <TSS>The
                evaluator shall verify that the TSS includes a description of how data
                transfers
                can be managed over USB.</TSS>
              <Tests>The evaluator shall perform the following tests based on the selections
                made in the table: <testlist>
                  <test>[conditional] If "<xref to="s-usb-store"/>" is selected, the evaluator shall disable USB mass storage mode,
                    attach the device to a computer, and verify that the computer cannot mount
                the TOE as a drive. The evaluator shall reboot the TOE and repeat this test
                with other supported auxiliary boot modes. </test>
                  <test>[conditional] If "<xref to="s-usb-userauth"/>" is selected, the evaluator shall disable USB data transfer without
                user authentication, attach the device to a computer, and verify that the
                    TOE requires user authentication before the computer can access TOE data.
                The evaluator shall reboot the TOE and repeat this test with other supported
                auxiliary boot modes. </test>
                  <test>[conditional] If "<xref to="s-usb-systemauth"/>" is selected, the evaluator shall disable USB data transfer without
                connecting system authentication, attach the device to a computer, and
                    verify that the TOE requires connecting system authentication before the
                computer can access TOE data. The evaluator shall then connect the TOE to
                another computer and verify that the computer cannot access TOE data. The
                evaluator shall then connect the TOE to the original computer and verify
                    that the computer can access TOE data. </test>
                </testlist></Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-backup">
            <text>
                    <!-- <ctr id="backup" pre="" ctr-type="function">.</ctr>--> Enable/disable backup of <selectables>
                <selectable id="s-backup-all-apps">all applications</selectable>
                <selectable id="s-backup-sel-apps">selected applications</selectable>
                <selectable id="s-backup-sel-grps">selected groups of applications</selectable>
                <selectable id="s-backup-cfg">configuration data</selectable>
              </selectables>
              to <selectables>
                <selectable>locally connected system</selectable>
                <selectable>remote system</selectable>
              </selectables>
            </text>
            <aactivity>
              <TSS>The
                evaluator shall verify that the TSS includes a description of available backup
                methods that can be enabled/disabled. If "selected applications" or "selected
                groups
                of applications" are selected the TSS shall include which applications of
                groups of
                applications backup can be enabled/disabled.</TSS>

              <Tests> 
                The evaluator shall perform the following tests:
                <testlist>
                  <test>[conditional] If <xref to="s-backup-all-apps"/> is selected, the evaluator shall
                    disable each selected backup location in turn and verify that the TOE cannot
                    complete a backup. The evaluator shall then enable each selected backup
                    location in turn and verify that the TOE can perform a backup.</test>
                  <test>[conditional] If <xref to="s-backup-all-apps"/> is selected, the evaluator shall
                    disable each selected backup location in turn and verify that the TOE cannot
                    complete a backup. The evaluator shall then enable each selected backup
                    location in turn and verify that the TOE can perform a backup.</test>
                  <test>[conditional] If <xref to="s-backup-sel-apps"/> is selected, the evaluator shall disable
                    each selected backup location in turn and verify that for the selected
                    application the TOE prevents backup from occurring. The evaluator shall then
                    enable each selected backup location in turn and verify that for the selected
                    application the TOE can perform a backup. </test>
                  <test>[conditional] If <xref to="s-backup-sel-grps"/> is selected, the evaluator shall disable each
                    selected backup location in turn and verify that for a group of applications
                    the TOE prevents the backup from occurring. The evaluator shall then enable
                    each selected backup location in turn and verify for the group of application
                    the TOE can perform a backup.</test>
                    <test>[conditional] If <xref to="s-backup-cfg"/>
                    is selected, the evaluator shall disable each selected backup location in turn
                    and verify that the TOE prevents the backup of configuration data from
                    occurring. The evaluator shall then enable each selected backup location in
                    turn and verify that the TOE can perform a backup of configuration data.</test>
                </testlist>
             </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-hotspot">
            <text>
                    <!-- <ctr id="hotspot" pre="" ctr-type="function">.</ctr>--> Enable/disable <selectables linebreak="yes">
                <selectable id="s-hotspot">Hotspot functionality authenticated by <selectables>
                    <selectable>pre-shared key</selectable>
                    <selectable>passcode</selectable>
                    <selectable exclusive="yes">no authentication</selectable>
                  </selectables></selectable>
                <selectable id="s-usbtether"><snip>USB tethering</snip> authenticated by <selectables>
                    <selectable>pre-shared key</selectable>
                    <selectable>passcode</selectable>
                    <selectable exclusive="yes">no authentication</selectable>
                  </selectables>
                </selectable>
              </selectables>
            </text>
            <app-note> For function <xref to="mf-hotspot"/>, hotspot functionality refers to
              the condition in which the managed device is serving as an access point to other
              devices, not the connection of the TOE to external hotspots. </app-note>
            <aactivity>
              <TSS> The
                evaluator shall verify that the TSS includes a description of Hotspot
                functionality and USB tethering to include any authentication for these.</TSS>
              <Tests>The evaluator shall perform the following tests based on the selections
                in Function <xref to="mf-hotspot"/>. <testlist>
                  <test>[conditional] If "<xref to="s-hotspot"/>" is selected, the evaluator shall enable hotspot functionality with
                each of the of the supported authentication methods. The evaluator shall
                    connect to the hotspot with another device and verify that the hotspot
                functionality requires the configured authentication method. </test>
                  <test>[conditional] If "<xref to="s-usbtether"/>" is selected, the evaluator shall enable USB tethering functionality
                with each of the of the supported authentication methods. The evaluator shall
                connect to the TOE over USB with another device and verify that the
                    tethering functionality requires the configured authentication method.
                  </test>
                </testlist></Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-dataSharing">
            <text>
                    <!-- <ctr id="dataSharing" pre="" ctr-type="function">.</ctr>--> Approve exceptions for sharing data between <selectables>
                <selectable>applications</selectable>
                <selectable>groups of applications</selectable>
              </selectables></text>
            <app-note> Functions <xref to="mf-dataSharing"/> and <xref to="mf-appGroups"/> correspond to FDP_ACF_EXT.2.2 and should be included if FDP_ACF_EXT.2 is included in the ST.</app-note>
            <aactivity>
              <Tests>The test of this function is performed in conjunction with
                FDP_ACF_EXT.2.2.</Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-appGroups">
            <text>
                    <!-- <ctr id="appGroups" pre="" ctr-type="function">.</ctr>--> Place applications into application groups based on <assignable>enterprise
              configuration
                settings</assignable></text>
            <aactivity>
              <Tests>
                The evaluator shall set a policy to cause a designated application to be
                placed into a particular application group. The evaluator shall then install
                the
                designated application and verify that it was placed into the correct group.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-unenroll">
            <text>
                    <!-- <ctr id="unenroll" pre="" ctr-type="function">.</ctr>--> Unenroll the TOE from management </text>
            <app-note> For function <xref to="mf-unenroll"/>, FMT_SMF_EXT.2.1 specifies
              actions to be performed when the TOE is unenrolled from management. </app-note>
            <aactivity>
              <Tests>The evaluator shall attempt to unenroll the device from management and
                verify that the steps described in FMT_SMF_EXT.2.1 are performed. This test
                should be performed in conjunction with the FMT_SMF_EXT.2.1 evaluation
                activity.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-alwaysOnVPN">
            <text>
                    <!-- <ctr id="alwaysOnVPN" pre="" ctr-type="function">.</ctr>--> Enable/disable the Always On VPN protection: <h:ul>
                <h:li>Across device</h:li>
              </h:ul>
              <h:div class="indent">
                <selectables linebreak="yes">
                  <selectable>on a per-app basis</selectable>
                  <selectable>on a per-group of applications processes basis</selectable>
                  <selectable exclusive="yes">no other method</selectable>
                </selectables>
              </h:div>
            </text>
            <app-note> Function <_/> must be included in the ST if IPsec is selected in
              FTP_ITC_EXT.1 and the native IPsec VPN client can be configured to be Always-On.
              Always-On is defined as when the TOE has a network connection the VPN attempts
              to connect, all data leaving the device uses the VPN when the VPN is connected
              and no data leaves that device when the VPN is disconnected. The configuration
              of the VPN Client itself (with information such as VPN Gateway, certificates,
              and algorithms) is addressed by the <xref to="mod-vpnclient"/>. </app-note>
            <aactivity>
              <TSS>The evaluator shall verify that the TSS contains guidance to configure the
                VPN as Always-On.
              </TSS>
              <Tests>The evaluator shall configure the VPN as Always-On and perform the
                following tests: <testlist>
                  <test>The evaluator shall verify that when the VPN is connected all traffic
                is routed through the VPN. This test is performed in conjunction with
                FDP_IFC_EXT.1.1. </test>
                  <test>The evaluator shall verify that when the VPN is not established, that
                no traffic leaves the device. The evaluator shall ensure that the TOE has
                network connectivity and that the VPN is established. The evaluator shall
                    use a packet sniffing tool to capture the traffic leaving the TOE. The
                evaluator shall disable the VPN connection on the server side. The evaluator
                shall perform actions with the device such as navigating to websites, using
                provided applications, and accessing other Internet resources and verify
                    that no traffic leaves the device. </test>
                  <test>The evaluator shall verify that the TOE has network connectivity and
                that the VPN is established. The evaluator shall disable network
                    connectivity (i.e., Airplane Mode) and verify that the VPN disconnects. The
                evaluator shall re-establish network connectivity and verify that the VPN
                automatically reconnects. </test>
                </testlist>
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-bioRevoke">
            <text>
                    <!-- <ctr id="bioRevoke" pre="" ctr-type="function">.</ctr>--> Revoke Biometric template</text>
            <aactivity>
              <TSS>The evaluator shall verify that the TSS describes the procedure to revoke a
                biometric credential stored on the TOE.
              </TSS>
              <Tests>The evaluator shall configure the TOE to
                use BAF and confirm that the biometric can be used to authenticate to the
                device. The evaluator shall revoke the biometric credential’s ability to
                authenticate to the TOE and confirm that the same BAF cannot be used to
                authenticate to the device.
              </Tests>
            </aactivity>
          </management-function>
          <management-function id="mf-auditCapacity">
            <text>
                    <!-- <ctr id="auditCapacity" pre="" ctr-type="function">.</ctr>--> Configure local audit storage capacity
            </text>
          </management-function>
          <management-function id="mf-lockout">
            <text> <!-- <ctr id="lockout" pre="" ctr-type="function">.</ctr>--> Configure lockout policy for unsuccessful authentication attempts through <selectables>
                <selectable>timeouts between attempts</selectable>
                <selectable>limiting number of attempts during a time period</selectable>
              </selectables>
            </text>
          </management-function>
          <management-function id="mf-hostFirewall">
            <text><!-- <ctr id="hostFirewall" pre="" ctr-type="function">.</ctr>--> Configure host-based firewall</text>
          </management-function>
          <management-function id="mf-directoryServer">
            <text><!-- <ctr id="directoryServer" pre="" ctr-type="function">.</ctr>--> Configure name/address of directory server with which to bind</text>
          </management-function>
          <management-function id="mf-auditServer">
            <text>
                    <!-- <ctr id="auditServer" pre="" ctr-type="function">.</ctr>--> Configure name/address of audit/logging server to which to send
              audit/logging records
            </text>
          </management-function>
          <management-function id="mf-timeServer">
            <text><!-- <ctr id="timeServer" pre="" ctr-type="function">.</ctr>--> Configure name/address of network time server</text>
          </management-function>
          <management-function id="mf-automaticUpdate">
            <text><!-- <ctr id="automaticUpdate" pre="" ctr-type="function">.</ctr>--> Enable/disable automatic software update</text>
          </management-function>
          <management-function id="mf-other">
            <text>
                    <!-- <ctr id="other" pre="" ctr-type="function">.</ctr>-->
              <assignable>list of other management functions to be provided by the
                TSF</assignable>
            </text>
            <aactivity>
              <TSS> The evaluator shall
                verify that the TSS describes all assigned security management functions and
                their
                intended behavior.
              </TSS>
              <Tests>The evaluator shall design and perform tests to demonstrate that the
                function may be configured and that the intended behavior of the function is
                enacted by the TOE.
              </Tests>
            </aactivity>
          </management-function>
	      </management-function-set>
	    </title>
	    <note role="application">
	      <h:p>
          The ST should indicate which of the optional management functions are implemented in the TOE.
          This can be done by copying the above table into the ST and adjusting the "Administrator"
          and "User" columns to "M" according to which capabilities are present or not present,
          and for which privilege level. The Application Note for FMT_MOF.1 explains
          how to indicate Administrator or User capability.
	      </h:p>
	      <h:p>
          The terms "Administrator" and "User" are defined in section 1.2.2.
          The intent of this requirement is to ensure that the ST is populated with the
          relevant management functions that are provided by the OS.
        </h:p>
        <h:p>
        The columns labeled with "When managed with an MDM" refer to situations when "Mobile Device Management Support" is claimed as an implemented feature of the TOE and the OS is
        enrolled in a management infrastructure utilizing a Mobile Device Management system. The functions containing an "M" under these colums are mandatory and must be implemented by the TOE. The functions with an "M" in the "Administrator Only" column must be restricted to (or overridden by) the administrator. The functions with an "O" in the "Administrator Only" column may optionally be restricted to (or overridden by) the administrator when implemented in the TOE at the discretion of the ST author. For such functions, the ST author indicates this by replacing an "O" with an "M" in the ST. If the TOE does not claim "Mobile Device Management Support" as an implemented feature then the columns labeled with "When managed with an MDM" are not applicable. 
        </h:p>
      
	      <!--<h:p>
Sophisticated account management policies, such as intricate password complexity requirements and handling of temporary accounts, are a function of directory servers.
The OS can enroll in such account management and enable the overall information system to achieve such policies by binding to a directory server.
	      </h:p>-->
	      <h:p>
	        For management functions 50, 51, and 52, it is expected that the interfaces to these remote entities are trusted channels and the ST author is expected to claim them in FTP_ITC_EXT.1 accordingly.
	      </h:p>
	      
	    </note>
	    <aactivity>
	      <TSS>The evaluator shall examine the TSS to verify that identifies the management functions claimed by the TOE and whether they can be performed by an administrator, a user, or both.</TSS>
	      <Guidance>
		The evaluator shall examine the operational guidance verify that every management function captured in the ST is described in the operational guidance and that the description contains the information required to perform the management duties associated with the management function.
	      </Guidance>
	      <Tests>
	      The evaluator shall test the OS's ability to provide the management functions by configuring the operating system and testing each option selected from above.
	      The evaluator is expected to test these functions in all the ways in which the ST and guidance documentation state the configuration can be managed.
	      </Tests>
	    </aactivity>
	  </f-element>
	  <audit-event/>
	</f-component>
      </section>
      <section title="Class FPT: Protection of the TSF" id="fpt">

        <ext-comp-def fam-id="FPT_ACF_EXT" title="Access Controls">
          <fam-behavior>This family defines specific TOE components that are protected against unprivileged access. This is a new
            family defined for the FPT class.</fam-behavior>
	</ext-comp-def>
	
        <f-component cc-id="fpt_acf_ext.1" name="Access Controls">
          
          <comp-lev> requires the TSF to prohibit unauthorized users from reading or
            modifying specific TSF data.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included
            in the PP, PP-Module, functional package or ST:
            <h:ul>
              <h:li>Unauthorized attempts to perform operations against sensitive data</h:li>
            </h:ul>
          </audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-protect-priv">
            <title> The TSF shall implement access controls which prohibit unprivileged users from
              modifying: <h:ul>
                <h:li>Kernel and its drivers/modules</h:li>
                <h:li>Security audit logs</h:li>
                <h:li>Shared libraries</h:li>
                <h:li>System executables</h:li>
                <h:li>System configuration files</h:li>
                <h:li><assignable>other objects</assignable></h:li>
              </h:ul>
	     .
            </title>
            <aactivity level="component">
	      <TSS>
	      The evaluator shall confirm that the TSS specifies the locations of kernel drivers/modules, security
	      audit logs, shared libraries, system executables, and system configuration files.  Every
	      file does not need to be individually identified, but the system's conventions for storing and protecting
	      such files must be specified.
	      </TSS>
        <Guidance/>
	      <Tests>
	      The evaluator shall create an unprivileged user account.
	      Using this account, the evaluator shall ensure that the following tests result in a negative
              outcome (i.e., the action results in the OS denying the evaluator permission to
              complete the action):
              <testlist>
                <test>The evaluator shall attempt to modify all kernel drivers and modules.</test>
                <test>The evaluator shall attempt to modify all security audit logs generated by the logging subsystem.</test>
                <test>The evaluator shall attempt to modify all shared libraries that are used throughout the system.</test>
                <test>The evaluator shall attempt to modify all system executables.</test>
                <test>The evaluator shall attempt to modify all system configuration files.</test>
                <test>The evaluator shall attempt to modify any additional components selected.</test>
              </testlist>

			The evaluator shall create an unprivileged user account.
	      Using this account, the evaluator shall ensure that the following tests result in a negative
              outcome (i.e., the action results in the OS denying the evaluator permission to
              complete the action):
              <testlist>
                <test>The evaluator shall attempt to read security audit logs generated by the auditing subsystem</test>
                <test>The evaluator shall attempt to read system-wide credential repositories</test>
                <test>The evaluator shall attempt to read any other object specified in the assignment</test>
              </testlist>
	      </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-no-read">
            <title> The TSF shall implement access controls which prohibit unprivileged users from
              reading: <h:ul>
                <h:li>Security audit logs</h:li>
                <h:li>System-wide credential repositories</h:li>
                <h:li><assignable>list of other objects</assignable></h:li>
              </h:ul>
	     .
            </title>
            <note role="application">
	      "Credential repositories" refer, in this case, to structures containing cryptographic keys or passwords.
	    </note>
          </f-element>
          <audit-event>
            <audit-event-descr>Unauthorized attempts to perform operations against sensitive data</audit-event-descr>
          </audit-event>
        </f-component>

        <ext-comp-def fam-id="FPT_ASLR_EXT" title="Address Space Layout Randomization">
          <fam-behavior>This family defines the ability of the TOE to implement address space layout randomization (ASLR). This
            is a new family defined for the FPT class.</fam-behavior>
	</ext-comp-def>
	
        <f-component cc-id="fpt_aslr_ext.1" name="Address Space Layout Randomization">
          
          <comp-lev> defines the ability of the TOE to use ASLR as
            well as the objects that ASLR is applied to.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-aslr">
            <title>The TSF shall always randomize process address space memory locations with
	    <selectables>
	      <selectable>8</selectable>
	      <selectable><assignable>number greater than 8</assignable></selectable>
	    </selectables>
	    bits of entropy except for
                <assignable>list of explicit exceptions</assignable>.
            </title>
            <aactivity>
              <TSS>The evaluator shall examine the TSS to verify that it identifies the number of entropy bits used for ASLR and what exceptions there are to this, if any.</TSS>
              <Guidance/>
	      <Tests>
The evaluator shall select 3 executables included with the TSF.
If the TSF includes a web browser it must be selected.
If the TSF includes a mail client it must be selected.
For each of these apps, the evaluator shall launch the same executables on two separate instances of the
OS on identical hardware and compare all memory mapping locations.
The evaluator shall ensure that no memory mappings are placed in the same location.
If the rare chance occurs that two mappings are the same for a single executable and
not the same for the other two, the evaluator shall repeat the test with that executable to verify
that in the second test the mappings are different.
This test can also be completed on the same hardware and rebooting between application launches.
	      </Tests>
	    </aactivity>
          </f-element>
          <!--          <f-element>
            <title>The OS shall always randomize kernel address space memory locations</title>
                <note role="application">
                  Randomizing the location of the kernel address spaces provides some defense against
		  kernel-level exploits.
                </note>
            <aactivity>
	      The evaluator shall review the TSS to ensure that ASLR applies to the kernel.
	    </aactivity>
          </f-element> -->
          <audit-event/>
	</f-component>

  <f-component cc-id="fmt_smf_ext.2" name="Specification of Remediation Actions" status="feat-based">
  <depends on="mdm-management"/>
          
          <comp-lev> requires the TSF to automatically perform specific management functions in response to a specific event.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT: <h:ul>
            <h:li>Configuration of the functions that are performed in response to unenrollment event.</h:li>
          </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP/ST: <h:ul>
            <h:li>Initiation of unenrollment.</h:li>
            <h:li>Completion of unenrollment.</h:li>
          </h:ul>
          </audit>
          <dependencies>No dependencies.</dependencies>
          
          
          <f-element id="fmt-smf-ext-acts">
            <title>The TSF shall offer <selectables>
                <selectable id="s-smf-wipe-sen">wipe of sensitive data</selectable>
                <selectable id="s-smf-ext-2-rem-ent-app">remove Enterprise applications</selectable>
                <selectable>remove all device-stored Enterprise resource data</selectable>
                <selectable>remove Enterprise secondary authentication data</selectable>
                <selectable><assignable>list other available remediation
                  actions</assignable></selectable>
              </selectables> upon unenrollment and <selectables>
                <selectable><assignable>other administrator-configured triggers</assignable></selectable>
                <selectable exclusive="yes"> no other triggers</selectable>
            </selectables>.</title>
	    <ext-comp-def-title><title>
	      The TSF shall offer <assignable>list of remediation actions</assignable>
	      upon unenrollment and
	      <assignable>list of triggers</assignable>.</title></ext-comp-def-title>
            <note role="application"> <h:p>Unenrollment may consist of removing the MDM agent or
              removing the administrator's policies. The functions in the selection are remediation
              actions that TOE may provide (perhaps via APIs) to the administrator (perhaps via an MDM
              agent) that may be performed upon unenrollment. "Enterprise applications" refers to
              applications that are in the Enterprise application group. "Enterprise resource data"
              refers to all stored Enterprise data and the separate resources that are available to
              the Enterprise application group, per FDP_ACF_EXT.3.1. If FDP_ACF_EXT.3.1 is included
              in the ST, then "remove all device-stored Enterprise resource data" must be selected,
              and is defined to be all resources selected in FDP_ACF_EXT.3.1.</h:p> 
              
              <h:p>If FIA_UAU_EXT.4.1 is
              included in the ST, then "remove Enterprise secondary authentication data" must be
              selected. If FIA_UAU_EXT.4.1 is not included in the ST, then "remove Enterprise
              secondary authentication data" cannot be selected. Enterprise secondary authentication
              data only refers to any data stored on the TOE that is specifically used as part of a
              secondary authentication mechanism to authenticate access to Enterprise applications
              and shared resources. Material that is used for the TOE's primary authentication
              mechanism or other purposes not related to authentication to or protection of
              Enterprise applications or shared resources should not be removed. </h:p>
        <h:p>      
			  If <xref to="s-smf-wipe-sen"/> is selected the wipe  must be in accordance with FCS_CKM_EXT.5.1. Thus cryptographically wiping the device is an acceptable remediation action.</h:p>
			</note>
            <aactivity>
              <TSS> The evaluator shall verify that the TSS describes all available remediation
                actions, when they are available for use, and any other administrator-configured
                triggers. The evaluator shall verify that the TSS describes how the remediation
                actions are provided to the administrator.<h:br/><h:br/></TSS>
              <Guidance>There are no guidance evaluation activities for this component.<h:br/><h:br/></Guidance>
              <Tests> The evaluator shall use the test environment to iteratively configure the
                device to perform each remediation action in the selection. The evaluator shall
                configure the remediation action per how the TSS states it is provided to the
                administrator. The test environment could be an MDM agent application, but can also
                be an application with administrator access.</Tests>
            </aactivity>
          </f-element>
	  <audit-event>
	    <audit-event-descr>Unenrollment, Initiation of unenrollment</audit-event-descr>
	    <audit-event-info>Identity of administrator Remediation action performed, failure of accepting command to unenroll</audit-event-info>
	  </audit-event>
        </f-component>
        <!-- <f-component id="fpt_php_ext.1" name="External Interface Controls">-->
        <!--   <f-element> -->
        <!--     <title> -->
        <!--       The OS shall provide a mechanism to  -->
        <!--       <selectables> -->
        <!-- 	<selectable>users</selectable> -->
        <!-- 	<selectable>administrators</selectable> -->
        <!--       </selectables> -->
        <!--       to disable external interfaces (physical and logical) and -->
        <!--       services exposed to untrusted networks and devices:  -->
        <!--       <selectables linebreak="yes"> -->
        <!--         <selectable>WiFi</selectable> -->
        <!--         <selectable>Bluetooth</selectable> -->
        <!--         <selectable>NFC</selectable> -->
        <!--         <selectable>USB</selectable> -->
        <!--         <selectable>FireWire</selectable> -->
        <!--         <selectable><assignable>list of other external interfaces</assignable></selectable> -->
        <!--       </selectables> -->
        <!--       . -->
        <!--     </title> -->
        <!--     <note role="application"> -->
        <!--       Different hardware platforms present different external interfaces. -->
        <!--       The selection of tests to run against an OS varies depending on the hardware the OS  -->
        <!--       is running on.  -->
        <!--       However, where an OS supports an external interface -->
        <!--       type (e.g., FireWire) it is important that the OS also offers the ability to disable -->
        <!--       that interface.  -->
        <!--       Requirements that ensure secure communication over WiFi are defined in the  -->
        <!--       <a href="https://www.niap-ccevs.org/pp/PP_WLAN_AS_EP_V1.0/" -->
        <!-- 	 >ND CPP EP Wireless LAN Access System</a>. -->

        <!--     </note> -->
        <!--     <aactivity> -->
        <!--       The evaluator shall install the OS onto a platform that has capabilities commiserate -->
        <!--       with the OS capabilities (e.g., a USB capable OS must be evaluated on a USB capable -->
        <!--       platform) and ensure that the following tests (where applicable) -->
        <!--       succeed: <testlist> -->
        <!--         <test> The evaluator shall attempt to connect to a Wireless network and ensure that the OS successfully connects and allows network traffic to flow.</test> -->
        <!--         <test>  -->
        <!-- 	  The evaluator shall connect to a Wireless network and then disable the WiFi -->
        <!--           network interface from within the OS.  -->
        <!-- 	  The evaluator shall ensure that the WiFi connection is terminated and that the OS -->
        <!-- 	  does not list any wireless network as accessible. -->
        <!-- 	  The evaluator shall run a wireless sniffer (e.g., Kismet, aircrack) and ensure that -->
        <!-- 	  no signals, attributable to the test platform, are detected. -->
        <!-- 	</test> -->
        <!--         <test> The evaluator shall attempt to pair, and connect, a Bluetooth device to the OS and ensure that the OS successfully connects to the device.</test> -->
        <!--         <test> -->
        <!-- 	  The evaluator shall pair, and connect, a Bluetooth device to the OS and then -->
        <!--           disable the Bluetooth interface within the OS.  -->
        <!-- 	  The evaluator shall ensure that the Bluetooth connection is terminated and that -->
        <!-- 	  the OS does not list any devices as accessible. -->
        <!-- 	  The evaluator shall run a Bluetooth sniffer (e.g., UberTooth, Wireshark) -->
        <!-- 	  and ensure that no signals, attributable to the test platform, are detected. -->
        <!-- 	</test> -->
        <!--         <test> The evaluator shall attempt to pair, and connect, a NFC device to the OS and ensure that the OS successfully connects to the device.</test> -->
        <!--         <test> The evaluator shall pair, and connect, an NFC device to the OS and then disable -->
        <!--           the NFC interface within the OS. The evaluator shall ensure that the NFC connection -->
        <!--           is terminated. -->
        <!-- 	  The evaluator shall run a NFC sniffer  -->
        <!-- 	  and ensure that no signals, attributable to the test platform, are detected. -->
        <!-- 	</test> -->
        <!--         <test> The evaluator shall connect a USB device to the OS and then disable the USB -->
        <!--           interface within the OS. The evaluator shall ensure that the USB device no longer -->
        <!--           functions within the OS. </test> -->
        <!--         <test> The evaluator shall connect a FireWire device to the OS and ensure that the OS successfully connects to the device.</test> -->
        <!--         <test> The evaluator shall connect a FireWire device to the OS and then disable the -->
        <!--           FireWire interface within the OS. The evaluator shall ensure that the FireWire -->
        <!--           device no longer functions within the OS. </test> -->
        <!--         <test>If any additional components have been listed in the selection, the evaluator shall connect each component to the OS and ensure that the OS successfully connects to it.</test> -->
        <!--         <test> If any additional components have been listed in the selection, the evaluator -->
        <!--           shall connect each component to the OS and then disable the component interface -->
        <!--           within the OS. The evaluator shall ensure that the component device no longer -->
        <!--           functions within the OS. </test> -->
        <!--       </testlist> -->
        <!--     </aactivity> -->
        <!--   </f-element> -->
        <!-- </f-component> -->
        
        <ext-comp-def fam-id="FPT_BLT_EXT" title="Limitation of Bluetooth Profile Support">
          <fam-behavior>This family defines requirements for limiting Bluetooth capabilities without user action.
            This is a new family defined for the FPT class.</fam-behavior>
        </ext-comp-def>
        
        <f-component cc-id="fpt_blt_ext.1" name="Limitation of Bluetooth Profile Support" status="objective">
         
          <comp-lev> requires the TSF to maintain a disabled by default posture for Bluetooth profiles.</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>No dependencies.</dependencies>
                    
          <f-element id="fel-bluetooth-stop">
            <title>
	      The TSF shall disable support for
 	      <assignable>list of Bluetooth profiles</assignable>
	      Bluetooth profiles when they are not currently being used by
              an application on the TOE and shall require explicit user action to enable
              them.
	    </title>
            <note role="application">
		<h:p>
		Some Bluetooth services incur more serious consequences if
		unauthorized remote devices gain access to them.
		Such services should be protected by measures like disabling support for
		the associated Bluetooth profile unless it is actively being used by an application on the OS
		(in order to prevent discovery by a Service Discovery Protocol search), and then requiring explicit user
		action to enable those profiles in order to use the services.
		It may be further appropriate to require additional user action before granting a remote device access
		to that service.
		</h:p>
		<h:p>
		  For example, it may be appropriate to disable the
		  OBEX Push Profile until a user  pushes a button in an application
		  indicating readiness to transfer an object.
		  After completion of the object transfer,
		  support for the OBEX profile should be suspended until the next time the user requests
		  its use.
		</h:p>
	    </note>
            <aactivity>
              <TSS>The evaluator shall ensure that the TSS lists all Bluetooth profiles that are
                disabled while not in use by an application and which need explicit user action in
                order to become enabled.
	      </TSS>
              <Guidance>There are no guidance evaluation activities for this component.</Guidance>
	      <Tests>The evaluator shall perform the following tests:
	      <testlist>
                <test id="untrusted-service-unavailable">
		  The evaluator shall perform this test with a test device that does not have a trust relationship with the TOE.
		  While the service is not in active use by an application on the TOE, the
                  evaluator shall attempt to discover a service associated with a "protected"
                  Bluetooth profile (as specified by the requirement) on the TOE via a Service
                  Discovery Protocol search.
		  The evaluator shall verify that the service does not
                  appear in the Service Discovery Protocol search results.
		  Next, the evaluator shall attempt to gain remote access to the service from a device that does not
                  currently have a trusted device relationship with the TOE.
		  The evaluator shall verify that this attempt fails due to the unavailability of the service and
                  profile.
		</test>
	        <test>The evaluator shall repeat <xref to="untrusted-service-unavailable"/> with a device that currently has a trusted
                device relationship with the TOE and verify that the same behavior is exhibited.</test>
              </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <ext-comp-def fam-id="FPT_NOT_EXT" title="Self-Test Notification">
          <fam-behavior>This family defines requirements for generation of notifications in response to completed self-tests. 
          </fam-behavior>
        </ext-comp-def>

        <f-component cc-id="fpt_not_ext.2" name="Software Integrity Verification" status="objective">
          
          <comp-lev> requires the TSF to generate and sign software integrity verification values.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
            <h:ul>
              <h:li>Retrieval of TSF software integrity verification values.</h:li>
            </h:ul>
          </management>
          <audit>There are no auditable events foreseen.
          </audit>
          <dependencies>FCS_COP.1 Cryptographic Operation</dependencies>
          
          <f-element id="fel-selftest-notify">
            <title>The TSF shall <selectables>
                <selectable>audit</selectable>
                <selectable>provide the administrator with</selectable>
              </selectables> TSF-software integrity verification values.</title>
            <note role="application">These notifications are typically called remote attestation and
              these integrity values are typically called measurements. The integrity values are
              calculated from hashes of critical memory and values, including executable code. The
              ST author must select whether these values are logged as a part of FAU_GEN.1.1 or are
              provided to the administrator. </note>
            <aactivity level="element">
              <TSS>The evaluator shall verify that the TSS describes which critical memory is
                measured for these integrity values and how the measurement is performed (including
                which TOE software generates these values, how that software accesses
                the critical memory, and which algorithms are used). <h:br/><h:br/>
              </TSS>
              <Guidance> If the integrity values are provided to the administrator, the evaluator
                shall verify that the AGD guidance contains instructions for retrieving these values
                and information for interpreting them. For example, if multiple measurements are
                taken, what those measurements are and how changes to those values relate to changes
                in the device state. <h:br/><h:br/>
              </Guidance>
              <Tests>
                The evaluator shall repeat the following test for each measurement: <testlist>
                  <test>The evaluator shall boot the device in an approved state and record the
                    measurement taken<!-- (either from the log or by using the administrative guidance
                    to retrieve the value via an MDM agent)-->. The evaluator shall modify the critical
                    memory or value that is measured. The evaluator shall boot the device and verify
                    that the measurement changed. </test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>

          <f-element id="fel-sign-integrity">
            <title>The TSF shall cryptographically sign all integrity verification values.</title>
            <note role="application">The intent of this requirement is to provide assurance to the
              administrator that the responses provided are from the TOE and have not been modified
              or spoofed by a man-in-the-middle such as a network-based adversary or a malicious MDM
              Agent. </note>
            <aactivity level="element">
              <TSS>The evaluator shall verify that the TSS describes which key the TSF uses to sign
                the responses to queries and the certificate used to prove ownership of the key, and
                the method of associating the certificate with a particular device manufacturer and
                model.<h:br/><h:br/></TSS>
              <Guidance>There are no guidance evaluation activities for this component.<h:br/><h:br/></Guidance>
              <Tests>The evaluator shall perform the following test: <testlist>
                  <test>The evaluator shall write, or the developer shall provide, a management
                    application that queries either the audit logs or the measurements. The
                    evaluator shall verify that the responses to these queries are signed and verify
                    the signatures against the TOE’s certificate.</test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>


        <ext-comp-def fam-id="FPT_SBOP_EXT" title="Stack Buffer Overflow Protection">
          <fam-behavior>This family requires the TSF to be compiled using stack-based buffer overflow protections. This is a new
            family defined for the FPT class.</fam-behavior>
	</ext-comp-def>
        
        
        <f-component cc-id="fpt_fls.1" name="Failure with Preservation of Secure State">
          <f-element id="fel-pres-sec-state">
            <title>
              The TSF shall preserve a secure state when the following types of failures occur: [<h:i>DRBG self-test failure</h:i>].              
            </title>
            <note role="application">The intent of this requirement is to ensure that cryptographic services requiring random bit generation cannot be performed if a failure of a self-test defined in FPT_TST.1 occurs.</note>
            <aactivity>              
              <TSS>
                The evaluator shall verify that the TSF describes how the TOE enters an error state in the event of a DRBG self-test failure.
              </TSS>
              <Guidance>
                The evaluator shall verify that the guidance documentation describes the error state that results from a DRBG self-test failure and the actions that a user or administrator should take in response to attempt to resolve the error state.
              </Guidance>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>	     

	<f-component cc-id="fpt_sbop_ext.1" name="Stack Buffer Overflow Protection">
	  
	  <comp-lev> requires the TSF to be compiled using stack-based
	    buffer overflow protections or to store data in such a manner that a stack-based buffer overflow cannot
	    compromise the TSF.</comp-lev>
	  <management>There are no management activities foreseen.</management>
	  <audit>There are no auditable events foreseen.</audit>
	  <dependencies>No dependencies.</dependencies>
	  
          <f-element id="fel-sbop">
            <title>
The TSF shall <selectables>
  <selectable>employ stack-based buffer overflow protections</selectable>
  <selectable>not store parameters or variables in the same data structures as control flow values</selectable>
</selectables>.
</title>

            <note role="application">
Many OSes store control flow values (i.e., return addresses) in stack data structures that also contain parameters and variables.
For these OSes, it is expected that most of the OS, to include the kernel, libraries, and application software from the OS vendor be compiled with stack-based buffer overflow protection enabled.
OSes that store parameters and variables separately from control flow values do not need additional stack protections.
            </note>
            <aactivity>
              <TSS>The evaluator shall examine the TSS to verify that it describes how stack-based buffer overflow protection is implemented, or how the TOE is designed in such a way that these protections are not explicitly needed. For stack-based OSes, the evaluator shall determine that the TSS contains a description of stack-based buffer overflow protections used by the OS. These are referred to by a variety of terms. These include, but are not limited to, tagging, stack cookie, stack guard, and stack canaries. The TSS must include a rationale for any binaries that are not protected in this manner.
              </TSS>
              <Guidance/>
	      <Tests>
<h:p>The evaluator shall preform the following test:
            <testlist>
                <test>
                  [conditional] If stack-based overflow detection can be determined by inventorying, the evaluator shall inventory the kernel, libraries, and application binaries
                  to determine those that do not implement stack-based buffer overflow protections. This list should
                  match up with the list provided in the TSS.
                </test>
            </testlist>
</h:p>

<h:p>For OSes that store parameters/variables separately from control flow values, the evaluator shall verify that the TSS describes what data structures control values, parameters, and variables are stored.
The evaluator shall also ensure that the TSS includes a description of the safeguards that ensure parameters and variables do not intermix with control flow values.
</h:p>
              </Tests>
	    </aactivity>
          </f-element>
	  <audit-event/>
        </f-component>

	<ext-comp-def fam-id="FPT_SRP_EXT" title="Software Restriction Policies">
	  <fam-behavior>This family defines the ability of the TOE to restrict the execution of software unless it meets defined
	    criteria. This is a new family defined for the FPT class.</fam-behavior>
	</ext-comp-def>

	<f-component cc-id="fpt_srp_ext.1" name="Software Restriction Policies" status="objective">
	  
	  <comp-lev> defines the criteria the TSF can use to prevent execution
	    of restricted programs.</comp-lev>
	  <management>The following actions could be considered for the management functions in FMT:
	  <h:ul>
	    <h:li>Specification of restriction policies</h:li>
	  </h:ul></management>
	  <audit>There are no auditable events foreseen.</audit>
	  <dependencies>No dependencies.</dependencies>
	  
          <f-element id="fel-srp">
            <title> The TSF shall restrict execution to only programs which match an administrator-specified
              <selectables linebreak="yes">
                <selectable id="s-srp-path">file path</selectable>
                <selectable id="s-srp-signature">file digital signature</selectable>
                <selectable id="s-srp-version">version</selectable>
                <selectable id="s-srp-hash">hash</selectable>
                <selectable id="s-srp-other"><readable>other</readable><assignable>other characteristics</assignable></selectable>
              </selectables>
	     .
            </title>
            <note role="application">
              The assignment permits implementations which provide a low
              level of granularity such as a volume.
	      The restriction is only against direct execution of
              executable programs.
	      It does not forbid interpreters which may take data as an input, even if
              this data can subsequently result in arbitrary computation.
            </note>
            <aactivity>
	      <TSS>
		The evaluator shall ensure that the description of the supported characteristics in the TSS is consistent with the SFR.
		The evaluator shall also ensure that any characteristics specified by the ST-author are described in sufficient detail to understand how to test those characteristics.
	      </TSS>
	      <Guidance>
		The evaluator shall ensure that the characteristics are described in sufficient detail for administrators to configure policies using them, and that the list of characteristics in the guidance is consistent with the information in the TSS.
	      </Guidance>
	      <Tests>
		There are two tests for each selection above.
              <testlist>
                <test>
		  <depends on="s-srp-path"/>
                  The evaluator shall configure the OS to only allow code execution from the core
                  OS directories. The evaluator shall then attempt to execute code from a directory
                  that is in the allowed list. The evaluator shall ensure that the code they
                  attempted to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-path"/>
                  The evaluator shall configure the OS to only allow code execution from the core
                  OS directories. The evaluator shall then attempt to execute code from a directory
                  that is not in the allowed list. The evaluator shall ensure that the code they
                  attempted to execute has not been executed.
                </test>
                <test>
		  <depends on="s-srp-signature"/>
                  The evaluator shall configure the OS to only allow code that has been signed by
                  the OS vendor to execute. The evaluator shall then attempt to execute code signed
                  by the OS vendor. The evaluator shall ensure that the code they
                  attempted to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-signature"/>
                  The evaluator shall configure the OS to only allow code that has been signed by
                  the OS vendor to execute. The evaluator shall then attempt to execute code signed
                  by another digital authority. The evaluator shall ensure that the code they
                  attempted to execute has not been executed.
                </test>
                <test>
		  <depends on="s-srp-version"/>
                  The evaluator shall configure the OS to allow execution of a specific
                  application based on version. The evaluator shall then attempt to execute the same
                  version of the application. The evaluator shall ensure that the code they attempted
                  to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-version"/>
                  The evaluator shall configure the OS to allow execution of a specific
                  application based on version. The evaluator shall then attempt to execute an older
                  version of the application. The evaluator shall ensure that the code they attempted
                  to execute has not been executed.
                </test>
                <test>
		  <depends on="s-srp-hash"/>
                  The evaluator shall configure the OS to allow execution based on the hash of the application
                  executable. The evaluator shall then attempt to execute
                  the application with the matching hash. The evaluator shall
                  ensure that the code they attempted to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-hash"/>
                  The evaluator shall configure the OS to allow execution based on the hash of the application
                  executable. The evaluator shall modify the
                  application in such a way that the application hash is changed. The evaluator
                  will then attempt to execute the application with the matching hash. The evaluator shall
                  ensure that the code they attempted to execute has not been executed.
                </test>
		<test>
		  <depends on="s-srp-other"/>
		  The evaluator shall attempt to run an application that should be allowed based on the defined software restriction policy and ensure that it runs.
		</test>
		<test>
		  <depends on="s-srp-other"/>
		  The evaluator shall then attempt to run an application that should not be allowed the defined software restriction policy and ensure that it does not run.
		</test>
              </testlist>
              
              </Tests>
	    </aactivity>
          </f-element>
	  <audit-event/>
        </f-component>
        
        <f-component cc-id="fpt_stm.1" name="Reliable Time Stamps">
          <f-element id="fel-timestamp">
            <title>The TSF shall be able to <refinement>obtain</refinement> reliable time stamps <refinement>from a primary time source for its own use</refinement>. </title>
            <note role="application">In the context of this SFR, a primary time source is that which can be synchronized with a time source that is considered to be authoritative in the context of the overall organization deploying the TOE. Specifically, primary time sources include connectivity to an external NTP server, connectivity to a cellular carrier network, or in the case of a TOE that runs on a virtualization system, a hypercall to the virtualization system's host platform (as this platform could feasibly have its own connectivity to a primary time source). A primary time source does not include the hardware clock on the TOE platform if it is localized only to that system.</note>
            <aactivity>
              <TSS>The evaluator shall examine the TSS to ensure that it lists each security
                function that makes use of time, and that it identifies the primary time source that can be considered to be reliable. The evaluator shall examine the TSS to verify that it describes the TOE's ability to obtain time data from an NTP server, a cellular carrier network, or a hypercall to the TOE's hardware platform if running on a virtualization system.  
                <h:br/><h:br/></TSS>
              <Guidance>If this functionality is configurable, the evaluator shall examines the operational guidance to ensure it describes how
                to set the time directly or how to configure the TOE's primary time source.<h:br/><h:br/></Guidance>
              <Tests>
                <testlist>
                  <test>If the time is configurable, the evaluator shall follow the operational guidance to set the time. The evaluator
                    shall then use an available interface to observe that the time was set
                    correctly. If the primary time source is configurable, the evaluator shall deliberately set the time to an incorrect value, verify the incorrect time setting is applied, configure the TOE to connect to the primary time source, and verify that the time is subsequently synchronized to the expected time.</test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fpt_tst.1" name="TSF Self-Testing">
          <f-element id="fel-tsf-self-test">
            <title>
              The TSF shall run a suite of the following self-tests [<h:i>during initial start-up, 
                <selectables>
                  <selectable>periodically during normal operation</selectable>
                  <selectable>at the request of the authorized user</selectable>
                  <selectable>at the conditions <assignable>conditions under which self-test should occur</assignable></selectable>
                  <selectable>at no other time</selectable>
                </selectables></h:i>]
              to demonstrate the correct operation of [<h:i>TSF DRBG specified in FCS_RBG.1</h:i>]: <assignable>DRBG health tests</assignable>. 
            </title>
          </f-element>
          
          <f-element id="fel-tsf-ver-int-data">
            <title>
              The TSF shall provide authorized users with the capability to verify the integrity of [<h:i>[DRBG seed/output data]</h:i>].
            </title>
          </f-element>
          
          <f-element id="fel-tsf-ver-int">
            <title>
              The TSF shall provide authorized users with the capability to verify the integrity of [<h:i>[TSF DRBG specified in FCS_RBG.1]</h:i>].
            </title>
            <note role="application">This SFR is a required dependency of FCS_RBG.1. It is intended to require that any DRBG implemented by the TOE undergo health testing at startup (and optionally in other circumstances) to ensure that the random bit generation functionality has not been degraded.  If the TSF supports multiple DRBGs, this SFR should be iterated to describe the self-test behavior for each. The TSF's response to a DRBG health test failure is addressed by in FPT_FLS.1.</note>
            <aactivity>
              <TSS>
                <h:p>
                  The	evaluator shall examine the TSS to ensure that it details the self-tests that are run by the TSF along with how they are run. This description should include an outline of what the tests are actually doing. The evaluator shall ensure that the TSS makes an argument that the tests are sufficient to demonstrate that the DRBG is operating correctly.
                </h:p><h:p>
                  Note that this information may also be placed in the entropy documentation specified by <xref to="entropyappendix"/>. 
                </h:p>
              </TSS>
              <Guidance>
                <h:p>
                  If a self-test can be executed at the request of an authorized user, the evaluator shall verify that the operational guidance provides instructions on how to execute that self-test.
                </h:p>
              </Guidance>
              <Tests>
                <h:p>
                  For each self-test, the evaluator shall verify that evidence is produced that the self-test is executed when specified by FPT_TST.1.1.
                </h:p><h:p>
                  If a self-test can be executed at the request of an authorized user, the evaluator shall verify that following the steps documented in the operational guidance to perform the self-test will result in execution of the self-test.
                </h:p>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <ext-comp-def fam-id="FPT_TST_EXT" title="Boot Integrity">
          <fam-behavior>This family defines the ability of the TOE to provide a mechanism that can be used to verify its integrity
            when started.</fam-behavior>
	</ext-comp-def>
     
        <f-component cc-id="fpt_tst_ext.1" name="Boot Integrity">
          
          <comp-lev> defines the mechanisms that the TSF uses to assert its own integrity at
            startup.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
          <h:ul>
            <h:li>Failure of the integrity checking mechanism</h:li>
          </h:ul>
          </audit>
          <dependencies>
          <no-link>FCS_COP.1</no-link> Cryptographic Operation<h:br/>
          <no-link>FIA_X509_EXT.1</no-link> X.509 Certificate Validation
          </dependencies>
          
          <f-element id="fel-boot">
            <title>The TSF shall verify the integrity of the bootchain up through the OS kernel and
              <selectables linebreak="yes">
                <selectable id="s-verify-all-code">all executable code stored in mutable media</selectable>
                <selectable><assignable>list of other executable code</assignable></selectable>
                <selectable exclusive="yes">no other executable code</selectable>
              </selectables>
	      prior to its execution through the use of
              <selectables linebreak="yes">
                <selectable>a digital signature using a hardware-protected asymmetric key</selectable>
		<selectable id="s-boot-x509">a digital signature using an X.509 certificate with hardware-based protection</selectable>
                <selectable>a hardware-protected hash</selectable>
              </selectables>.
            </title>
            <note role="application">
	      <h:p>
              The bootchain of the OS is the sequence of software, to include the OS loader, the kernel, system
              drivers or modules, and system files, which ultimately result in loading the OS.
	          The first part of the OS, usually referred to as the first-stage bootloader,
	          must be loaded by the platform.
	          Assessing its integrity, while critical, is the platform's responsibility; and therefore outside
	          the scope of this PP. 
		      All software loaded after this stage is potentially within the control of the OS and is in scope.
	      </h:p>
	      <h:p>
              The verification may be transitive in nature:
	      a hardware-protected public key, X.509 certificate, or hash may be used to verify the mutable bootloader code
              which contains a key, certificate, or hash used by the bootloader to verify the mutable OS kernel code,
              which contains a key, certificate, or hash to verify the next layer of executable code, and so on.
	      However, the way in which the hardware stores and protects these keys is out of scope.
	      </h:p>
	      <h:p>
              If all executable code (including bootloader(s), kernel, device drivers, pre-loaded applications, user-loaded
              applications, and libraries) is verified, <xref to="s-verify-all-code"/> should
              be selected.
              </h:p>
	      <h:p>
		If certificates are used, they can be hardware-protected trust store elements or leaf certificates in a certificate chain that terminates in a root CA which is an element of a hardware protected trust store.
		If the certificates themselves are not trust store elements, revocation information is expected to be available for each CA certificate in the chain that is not a trust element, in accordance with FIA_X509_EXT.1 as defined in the <xref to="X509"/>.
	      </h:p>
            </note>
            <aactivity>
	      <TSS>
	      <h:p>
              The evaluator shall verify that the TSS section of the ST includes a comprehensive description of the boot
              procedures, including a description of the entire bootchain, for the TSF.
              The evaluator shall ensure that the OS cryptographically verifies each
	      piece of software it loads in the bootchain to include bootloaders and the kernel.
	      Software loaded for execution directly by the platform (e.g., first-stage bootloaders) is out of scope.
	      For each additional category of executable code verified before
              execution, the evaluator shall verify that the description in the TSS describes how that
              software is cryptographically verified.
	      </h:p>
	      <h:p>
                  <!-- Out of scope, for now:
			  The evaluator shall verify that the TSS contains a justification for the protection of the
              cryptographic key or hash, preventing it from being modified by unverified or
              unauthenticated software.
              <br/> -->
              The evaluator shall verify that the TSS contains a description of the
              protection afforded to the mechanism performing the cryptographic verification.
	      </h:p>
	      </TSS>
              <Guidance/>
	      <Tests>
	      <h:p>
              The evaluator shall also perform the following tests:
              <testlist>
                <test>
                  The evaluator shall perform actions to cause TSF software to load and observe that the
                  integrity mechanism does not flag any executables as containing integrity errors and that the
                  OS properly boots.
                </test>
                <test>
                  The evaluator shall modify a TSF executable that is part of the bootchain verified by the TSF (i.e., Not the first-stage bootloader)
		  and attempt to boot.
		  The evaluator shall ensure that an integrity violation is triggered and the OS does not boot
		  (Care must be taken so that the integrity
                  violation is determined to be the cause of the failure to load the module, and not the fact that
                  in such a way to invalidate the structure of the module.).
                </test>
                <test>
		  <depends on="s-boot-x509"/>
                  If the ST author indicates that the integrity verification is performed
                  using public key in an X509 certificate, the evaluator shall verify that the boot integrity mechanism includes a certificate
                  validation according to in accordance with FIA_X509_EXT.1 as defined in the <xref to="X509"/> for all certificates in the chain from the certificate used for
				  boot integrity to a certificate in the trust store that are not themselves in the trust store.
				  This means that, for each X.509 certificate in this chain that is not a trust store element, the evaluator shall ensure that revocation information is available to the TOE during the bootstrap mechanism (before the TOE becomes fully operational).

 
                </test>
              </testlist>
	      </h:p>
              </Tests>
	    </aactivity>
          </f-element>
          <audit-event>
            <audit-event-descr>Failure of the integrity checking mechanism</audit-event-descr>
          </audit-event>
        </f-component>

	<ext-comp-def fam-id="FPT_TUD_EXT" title="Trusted Update">
	  <fam-behavior>This family defines the ability of the TOE to provide mechanisms for assuring the integrity of updates to
	    the TSF or to non-TOE components that rely on the TSF to function. This is a new family defined for
	    the FPT class.</fam-behavior>
	</ext-comp-def>
	
        <f-component cc-id="fpt_tud_ext.1" name="Integrity for Installation and Update">
          
          <comp-lev> requires the TOE to provide a mechanism to verify the integrity of
            updates to itself.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>Configuration of update checking mechanism</h:li>
            <h:li>Initiation of update</h:li>
          </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Failure of the integrity checking mechanism</h:li>
              <h:li>Successful completion of updates</h:li>
            </h:ul>
          </audit>
          <dependencies>
            <no-link>FCS_COP.1</no-link> Cryptographic Operation
          </dependencies>
          
          <f-element id="fel-os-update">
            <title>The TSF shall provide the ability to check for updates to the OS
              software itself and shall use a digital signature scheme specified in FCS_COP.1<h:b>/SigVer</h:b> to validate the authenticity of the response. </title>
            <ext-comp-def-title>
              <title>
                The TSF shall provide the ability to check for updates to the OS
                software itself and shall use a digital signature scheme specified in FCS_COP.1 to validate the authenticity of the response.
              </title>
            </ext-comp-def-title>
            <note role="application">
				This requirement is about the ability to check for the availability of
			    authentic updates, while the installation of authentic updates is covered by
                FPT_TUD_EXT.1.2.
				Use of the digital signature scheme ensures that an attacker cannot influence the response, 
				regarding of whether updates are available.
			</note>
            <aactivity>
              <TSS>The evaluator shall examine the TSS to verify that it describes how the TSF checks for updates and how it verifies those updates are genuine.</TSS>
              <Guidance>The evaluator shall examine the operational guidance to verify that it describes how to use the TOE to check for and initiate updates to itself and how to determine that an integrity check of the update has failed.</Guidance>
	      <Tests>
              <h:p>The evaluator shall check for an update using procedures described in the
              documentation and verify that the OS provides a list of available updates.
			  Testing this capability may require
			  installing and temporarily placing the system into a
			  configuration in conflict with secure configuration guidance
			  which specifies automatic update.
			  </h:p>
			  <h:p>The evaluator is also to ensure that the response to this query is authentic by using a digital signature scheme specified in FCS_COP.1/SigVer. 
				The digital signature verification may be performed as part of a network protocol that uses a trusted channel as described in FTP_ITC_EXT.1.
				If the signature verification is not performed as part of a trusted channel, the evaluator shall send a query response with a bad signature and verify that the signature verification fails.
				The evaluator shall then send a query response with a good signature and verify that the signature verification is successful.</h:p>
	      <h:p>For the following tests, the evaluator shall initiate the download of an update and
	        capture the update prior to installation.
	        The download could originate from the vendor's website, an enterprise-hosted
	        update repository, or another system (e.g., network peer).
	        All update mechanisms supported by the TOE must be evaluated.  However, this only includes
	        those mechanisms for which the TSF is providing a trusted installation and update functionality.
	        It does not include user or administrator-driven download and installation of arbitrary files.</h:p>
	        <testlist>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature belonging to the vendor prior to its installation.
	            The evaluator shall modify the downloaded update in such a way
	            that the digital signature is no longer valid. The evaluator
	            will then attempt to install the modified update. The
	            evaluator shall ensure that the OS does not install the
	            modified update.
	          </test>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature belonging to the vendor. The evaluator shall then
	            attempt to install the update (or permit installation to continue).
	            The evaluator shall ensure that
	            the OS successfully installs the update.
	          </test>
	        </testlist>
	      </Tests>
	    </aactivity>
          </f-element>
          <f-element id="fel-verify-updates">
            <title>
              The TSF shall 
		<selectables>
			<selectable>cryptographically verify</selectable>
			<selectable>invoke platform-provided functionality to cryptographically verify</selectable>
		</selectables>
              updates to itself using a digital
              signature prior to installation using schemes specified in FCS_COP.1<h:b>/SigVer</h:b>.
	    </title>
            <ext-comp-def-title>
              <title>
                The TSF shall 
                <selectables>
                  <selectable>cryptographically verify</selectable>
                  <selectable>invoke platform-provided functionality to cryptographically verify</selectable>
                </selectables>
                updates to itself using a digital
                signature prior to installation using schemes specified in FCS_COP.1.
              </title>
            </ext-comp-def-title>
		 <note role="application">The intent of the requirement is to ensure that only digitally signed and verified TOE updates are applied to the TOE.</note>
           
          </f-element>
          <audit-event>
            <audit-event-descr>Failure of the integrity checking mechanism</audit-event-descr>
          </audit-event>
          <audit-event>
            <audit-event-descr>Successful completion of updates</audit-event-descr>
          </audit-event>
	
        </f-component>
        <f-component cc-id="fpt_tud_ext.2" name="Integrity for Installation and Update of Application Software">
          
          <comp-lev> requires the TOE to provide a mechanism to
            verify the integrity of updates to non-TSF applications that are running on the TOE.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
            <h:ul>
              <h:li>Configuration of update checking mechanism</h:li>
              <h:li>Initiation of update</h:li>
            </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Failure of the integrity checking mechanism</h:li>
              <h:li>Successful completion of updates</h:li>
            </h:ul>
          </audit>
          <dependencies>
            <no-link>FCS_COP.1</no-link> Cryptographic Operation
          </dependencies>
          
          <f-element id="fel-app-check-update">
            <title>
	          The TSF shall provide the ability to check for updates to
              application software and shall use a digital signature scheme specified in 
              FCS_COP.1<h:b>/SigVer</h:b> to validate the authenticity of the response.
	        </title>
            <ext-comp-def-title>
              <title>
                The TSF shall provide the ability to check for updates to
                application software and shall use a digital signature scheme specified in 
                FCS_COP.1 to validate the authenticity of the response.
              </title>
            </ext-comp-def-title>
            <note role="application">This requirement is about the ability to check for authentic updates,
              while the actual installation of such updates is covered by FPT_TUD_EXT.2.2.
			  Use of the digital signature scheme ensures that an attacker cannot influence the response,
			  regarding of whether updates are available.
            </note>

            <aactivity>
              <TSS>The evaluator shall examine the TSS to verify that it describes the TOE's ability to check for updates to application software and how the authenticity and integrity of these updates are verified.</TSS>
              <Guidance>The evaluator shall examine the operational guidance to verify that it provides instructions for how to use the TOE to check for updates to application software, and how to determine if the check for authenticity or integrity of the update failed.</Guidance>
	      <Tests>
			  <h:p>
	      The evaluator shall check for updates to application software
			  using procedures described in the
			  documentation and verify that the OS provides a list of available
			  updates.  Testing this capability may require
			  temporarily placing the system into a configuration in conflict
			  with secure configuration guidance which specifies automatic
			  update.
			  </h:p>
			  <h:p>
				The evaluator shall also ensure that the response to this query is authentic by using a digital signature scheme specified in FCS_COP.1/SigVer.
    			The digital signature verification may be performed as part of a network protocol that uses a trusted channel as described in FTP_ITC_EXT.1. 
                If the signature verification is not performed as part of a trusted channel, the evaluator shall send a query response with a bad signature and verify that the signature verification fails. 
				The evaluator shall then send a query response with a good signature and verify that the signature verification is successful.
			  </h:p>
	        The evaluator shall initiate an update to an application.  This may vary depending on the application,
	        but it could be through the application vendor's website, a commercial app store, or another system.
	        All update mechanisms supported by the TOE must be evaluated.  However, this only includes
	        those mechanisms for which the TSF is providing a trusted installation and update functionality.
	        It does not include user or administrator-driven download and installation of arbitrary files.
	        <testlist>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature which chains to the OS vendor or another trusted
	            root managed through the OS.  The evaluator shall modify the
	            downloaded update in such a way that the
	            digital signature is no longer valid. The evaluator shall then attempt to install the
	            modified update. The evaluator shall ensure that the OS does not install the modified
	            update.
	          </test>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature belonging to the OS vendor or another trusted root
	            managed through the OS. The evaluator shall then attempt to
	            install the update.  The evaluator shall ensure that the OS
	            successfully installs the update.
	          </test>
	        </testlist>
              </Tests>
	    </aactivity>
          </f-element>
          <f-element id="fel-verify-app-updates">
            <title>
	      The TSF shall cryptographically verify the integrity of updates
	      to applications using a digital signature specified by
	      FCS_COP.1<h:b>/SigVer</h:b> prior to installation.
	    </title>
            <ext-comp-def-title>
              <title>
                The TSF shall cryptographically verify the integrity of updates
                to applications using a digital signature specified by
                FCS_COP.1 prior to installation.
              </title>
            </ext-comp-def-title>
          </f-element>
          <audit-event>
            <audit-event-descr>Failure of the integrity checking mechanism</audit-event-descr>
          </audit-event>
          <audit-event>
            <audit-event-descr>Successful completion of updates</audit-event-descr>
          </audit-event>

        </f-component>


        <ext-comp-def fam-id="FPT_W^X_EXT" title="Write XOR Execute Memory Pages">
          <fam-behavior>
            This family defines the ability of the TOE to implement data execution prevention (DEP) by preventing
            memory from being both writable and executable. This is a new family defined for the FPT class.
          </fam-behavior>
        </ext-comp-def>
        <f-component cc-id="fpt_w^x_ext.1" name="Write XOR Execute Memory Pages" status="optional">
          
          <comp-lev> defines the ability of the TOE to prevent memory
            from being simultaneously writable and executable unless otherwise specified.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-no-rw-mem">
            <title> The TSF shall prevent allocation of any memory region with both write and
              execute permissions except for <assignable>list of exceptions</assignable>.
            </title>
            <note role="application">Requesting a memory mapping with both write and execute
              permissions subverts the platform protection provided by DEP.
              If the OS provides no exceptions (such as for just-in-time compilation),
              then "no exceptions" should be indicated in the assignment.
              Full realization of this requirement requires hardware support, but this is commonly available.
            </note>
            <aactivity>
              <TSS>
                The evaluator shall inspect the vendor-provided developer documentation and
                verify that no memory-mapping can be made with
                write and execute permissions except for the cases listed in the assignment.
              </TSS>
              <Guidance/>           
              <Tests>
                The evaluator shall also perform the following tests.
                <testlist>
                  <test>
                    The evaluator shall acquire or construct a test program which attempts
                    to allocate memory that is both writable and executable.
                    The evaluator shall run the program and confirm that it fails to
                    allocate memory that is both writable and executable.
                  </test>
                  <test>
                    The evaluator shall acquire or construct a test program which
                    allocates memory that is executable and then
                    subsequently requests additional write/modify permissions on that memory.
                    The evaluator shall run the program and confirm that at no time
                    during the lifetime of the process is the memory both writable and executable.
                  </test>
                  <test>
                    The evaluator shall acquire or construct a test program which
                    allocates memory that is writable and then
                    subsequently requests additional execute permissions on that memory.
                    The evaluator shall run the program and confirm that at no time
                    during the lifetime of the process is the memory both writable and executable.
                  </test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

      </section>
 
      <section title="Class FTA: TOE Access" id="fta">
        <f-component cc-id="fta_tab.1" name="Default TOE access banners" status="optional">
          <f-element id="fel-banner">
            <title>
            Before establishing a user session, the [<h:i>TSF</h:i>] shall display an [<h:i>advisory
            warning</h:i>] message <h:b>regarding unauthorized use of the TSF</h:b>.
            </title>
            <aactivity>
        <TSS>The evaluator shall examine the TSS to verify that it identifies the user interfaces to the TOE and specifies that a configurable warning banner can be displayed on each interface.</TSS>
        <Guidance>The evaluator shall verify that the operational guidance includes instructions on how to set the warning banner, and whether different interfaces to the TOE have independently-configurable banner text or share the configured value.</Guidance>
	      <Tests>
            For each mechanism used to configure the banner as specified in the operational guidance and each user interface with which that banner is associated, the evaluator shall configure the banner to a different arbitrary text string, record that string, and access the TOE to verify that the configured banner is displayed prior to user authentication on that particular interface. 
              </Tests>
	    </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
       
      </section>
      <section title="Class FTP: Trusted Path/Channels" id="ftp">

        <ext-comp-def fam-id="FTP_ITC_EXT" title="Trusted Channel Communication">
          <fam-behavior>This family defines the ability of the TOE to use specific trusted communications channels to
            communicate with specific non-TOE entities in the Operational Environment. This family differs from
            FTP_ITC in Part 2 by defining technology-specific details for the implementation of these functions.</fam-behavior>
	</ext-comp-def>
	
      	<f-component cc-id="ftp_itc_ext.1" name="Trusted Channel Communication">
      	  
      	  <comp-lev> defines the specific secure communications protocols
      	    the TSF uses to communicate with a specific set of non-TOE entities in the Operational Environment.</comp-lev>
      	  <management>There are no management functions foreseen.</management>
      	  <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included
      	    in the PP, PP-Module, functional package or ST:
      	    <h:ul>
      	      <h:li>Initiation of trusted channel</h:li>
      	      <h:li>Termination of trusted channel</h:li>
      	      <h:li>Failure of trusted channel functions</h:li>
      	    </h:ul>
      	  </audit>
      	  <dependencies>
      	    <no-link>FCS_DTLSC_EXT.1</no-link> DTLS Client Protocol<h:br/> 
      	    <no-link>FCS_IPSEC_EXT.1</no-link> IPsec<h:br/>
      	    <no-link>FCS_SSH_EXT.1</no-link> SSH Protocol<h:br/>
      	    <no-link>FCS_TLSC_EXT.1</no-link> TLS Client Protocol
      	  </dependencies>
      	  
      	  <f-element id="fel-trust-comms">
      	    <title>
              The TSF shall use
      	      <selectables linebreak="yes">
                <selectable id="s-tls">TLS as conforming to the <xref to="tls"/> as a
    	  	    <selectables>
    	  	      <selectable id="s-tls-client"><readable>client(TLS)</readable>client</selectable>
    	  	      <selectable id="s-tls-server"><readable>server(TLS)</readable>server</selectable>
              </selectables></selectable>
              <selectable id="dtls">DTLS as conforming to the <xref to="tls"/> as a
    	  	    <selectables>
    	  	      <selectable id="s-dtls-client"><readable>client(DTLS)</readable>client</selectable>
    	  	      <selectable id="s-dtls-server"><readable>server(DTLS)</readable>server</selectable>
    	  	    </selectables></selectable>
      	      <selectable id="s-itc-ipsec">IPsec as conforming to the <xref to="mod-vpnclient"/></selectable>
      	      </selectables>
      	        and <selectables linebreak="yes">
      	          <selectable id="s-ftp_ssh"><snip>SSH</snip> as conforming to the <xref to="ssh"/> as a
      	          <selectables>
      	          <selectable id="s-ssh-client"><readable>client(SSH)</readable>client</selectable>
      	            <selectable id="s-ssh-server"><readable>server(SSH)</readable>server</selectable>
      	          </selectables></selectable>
                  <selectable id="itc_mtls"><snip>Mutually authenticated TLS</snip> in accordance with the [<h:i><xref to="tls"/></h:i>] as a 
                  <selectables>
    	  	          <selectable id="itc_mtls-client"><readable>client(mutual TLS)</readable>client</selectable>
    	  	          <selectable id="itc_mtls-server"><readable>server(mutual TLS)</readable>server</selectable>
                  </selectables></selectable>
      	          <selectable id="itc_mdtls"><snip>Mutually authenticated DTLS</snip> in accordance with the [<h:i><xref to="tls"/></h:i>] as a 
                  <selectables>
    	  	          <selectable id="itc_mdtls-client"><readable>client(mutual TLS)</readable>client</selectable>
    	  	          <selectable id="itc_mdtls-server"><readable>server(mutual TLS)</readable>server</selectable>
                  </selectables></selectable>
                  <selectable id="itc_https"><snip>HTTPS</snip></selectable>
      	          <selectable>no other protocols</selectable>
      	        </selectables>
		    to provide a trusted communication channel between itself and
		    authorized IT entities supporting the following capabilities:
		    <selectables>
		      <selectable>audit server</selectable>
		      <selectable>authentication server</selectable>
		      <selectable id="itc_management_server">management server</selectable>
		      <selectable><assignable>other capabilities</assignable></selectable>
		    </selectables> using <selectables>
		      <selectable>certificates as defined in <xref to="X509"/></selectable>
		      <selectable>SSH host keys as defined in <xref to="ssh"/></selectable>
		    </selectables> 
      	     
		    that is logically distinct from other communication
		    channels and provides assured identification of its end points and protection of the channel
		    data from disclosure and detection of modification of the channel data.
      	    </title>
      	    <ext-comp-def-title>
      	      <title>
      	        The TSF shall use
      	        <assignable>trusted protocol</assignable>, to provide a trusted communication channel between itself and authorized IT
      	        entities supporting the following capabilities:
      	        <selectables>
      	          <selectable>audit server</selectable>
      	          <selectable>authentication server</selectable>
      	          <selectable>management server</selectable>
      	          <selectable><assignable>other capabilities</assignable></selectable>
      	        </selectables> using <assignable>peer authentication</assignable> 
      	        that is logically distinct from other communication channels and provides assured identification of its end points and
      	        protection of the channel data from disclosure and detection of modification of the channel data.
      	      </title>
      	    </ext-comp-def-title>
      	    <note role="application">
             <h:p>
               The ST author must include the security functional requirements for the trusted
               channel protocol selected in FTP_ITC_EXT.1.1 as part of the TSF.
             </h:p>
      	     <h:p>
      	       If TLS or DTLS (as well as their mutually authenticated versions) are selected, the TSF must be validated against the appropriate requirements in the <xref to="tls"/>.
      	     </h:p>
      	     <h:p>
      	        If <xref to="s-itc-ipsec"/> is selected, then FDP_IFC_EXT.1 must be included in the ST.
      	    </h:p>
      	    <h:p>
      	        If <xref to="s-ftp_ssh"/> is selected, the TSF must be validated against
      	        the <xref to="ssh"/> and the corresponding selection is expected to be made in FIA_UAU.5.1.
      	        The ST author must include the security functional requirements for the trusted channel protocol
      	        selected in FTP_ITC_EXT.1 as part of the TSF.
      	    </h:p>
            <h:p>
            If <xref to="itc_https"/> is selected, FCS_HTTPS_EXT.1 must be included in the ST.
            </h:p>          
      	      <h:p>
      	        Claims from the <xref to="X509"/> are only required to the extent that they are needed to support the functionality required by the trusted protocols that are claimed.
      	      </h:p><h:p>
      	        If the TSF implements a protocol that requires the validation of a certificate presented by an external entity, FIA_X509_EXT.1 and FIA_X509_EXT.2 will be claimed, as will FIA_TSM_EXT.1 for management of the trust store.
      	      </h:p><h:p>
      	        If the TSF implements a protocol that requires the presentation of any certificates to an external entity, FIA_XCU_EXT.2 will be claimed. FIA_X509_EXT.3 will also be claimed, along with any applicable dependencies, depending on how the certificates presented by the TOE are obtained.  
      	      </h:p>
            <h:p>
           <xref to="itc_management_server"/> should be selected if the TOE interoperates with a server that supports setting group policy objects and settings on the TOE. These classes of management server are different than an MDM in that their scope and capabilities are generally more limited to stationary desktops with limited exposure to threats compared to more mobile devices. If <xref to="itc_management_server"/> is selected then "Mobile Device Management Support" does not necessarily have to be claimed as a supported implementation, but should be claimed if the TOE also supports MDM integration in addition to the traditional management server.
            </h:p>
      	      <!--
	          <h:p>
		          <rule id="r-need-client-tls">
		          <doc ref="tls"><ref-id>tlsc_impl</ref-id></doc>
		          </rule>
		          <rule id="r-tlss">
		          <if><ref-id>s-tls-server</ref-id></if>
		          <then><doc ref="tls"><ref-id>tlss_impl</ref-id></doc></then>
		          </rule>
		          <rule id="r-dtlsc">
		          <if><ref-id>s-dtls-client</ref-id></if>
		          <then><doc ref="tls"><ref-id>dtlsc_impl</ref-id></doc></then>
		          </rule>
		          <rule id="r-dtlss">
		          <if><ref-id>s-dtls-server</ref-id></if>
		          <then><doc ref="tls"><ref-id>dtlss_impl</ref-id></doc></then>
		          </rule>
	         </h:p>
<rule id="r-sshclient">
  <if><ref-id>s-ssh-client</ref-id></if>
  <then><doc ref="ssh"><ref-id>ssh-client</ref-id></doc></then>
</rule>
<rule id="r-sshserver">
  <if><ref-id>s-ssh-server</ref-id></if>
  <then><doc ref="ssh"><ref-id>ssh-server</ref-id></doc></then>
</rule> -->
      	      <!-- this rule isn't associated with the SFR but it was placed here for ordering purposes -->
      	      <!--
      	      <rule id="r-bluetooth-ccm">
      	        <or>
      	          <and><not><ref-id>mod-bluetooth</ref-id></not></and>
      	          <and>
      	            <ref-id>mod-bluetooth</ref-id>
      	            <or>
      	              <and><not><ref-id>p-256-keygen</ref-id></not><not><ref-id>s-aes-ccm</ref-id></not><not><ref-id>s-128</ref-id></not></and>
      	              <and><ref-id>p-256-keygen</ref-id><ref-id>s-aes-ccm</ref-id><ref-id>s-128</ref-id></and>
      	            </or>
      	          </and>
      	        </or>
      	      </rule>
-->

      	    </note>
      	    <aactivity>
      	      <TSS>The evaluator shall examine the TSS to verify that it describes all trusted channels implemented by the TOE and what the purpose is for each channel. The evaluator shall also check to verify that the ST claims conformance to any functional packages or PP-Modules that are needed to implement these protocols (e.g., if the TOE implements TLS, both the <xref to="tls"/> and <xref to="X509"/> shall be included in the ST conformance claims).</TSS>
      	      <Guidance>For each trusted channel, the evaluator shall verify that the operational guidance provides instructions on how to establish the trusted channel with a remote entity and how to specify any configuration options that are related to this.</Guidance>
	      <Tests>
	         The evaluator shall configure the OS to communicate with another trusted IT product as identified in the third selection.
      	   The evaluator shall monitor network traffic while the OS performs communication with each of the servers identified in the
      	   third selection. The evaluator shall ensure that for each session a trusted channel was established in conformance with the
      	   selected protocols.
      	      </Tests>
	    </aactivity>
      	  </f-element>
      	  <audit-event>
      	    <audit-event-descr>Initiation of trusted channel</audit-event-descr>
      	  </audit-event>
      	  <audit-event>
      	    <audit-event-descr>Termination of trusted channel</audit-event-descr>
      	  </audit-event>
      	  <audit-event>
      	    <audit-event-descr>Failure of trusted channel functions</audit-event-descr>      	    
      	  </audit-event>
      	  
      	</f-component>
        <f-component cc-id="ftp_trp.1" name="Trusted Path">
            <f-element id="fel-trust-ends">
	      <title>
The TSF shall provide a communication path between itself and
<selectables><selectable id="s-remote">remote</selectable><selectable id="s-local">local</selectable></selectables>
users that is logically distinct from other communication paths and provides assured
identification of its endpoints and protection of the communicated data from
[<h:i>modification, disclosure</h:i>].
              </title>
	      <note role="application">
		<h:p>
This requirement ensures that all remote administrative actions are protected.
Authorized remote administrators must initiate all communication with the OS via
a trusted path and all communication with the OS by remote administrators must
be performed over this path. The data passed in this trusted communication
channel is encrypted as defined in FTP_ITC_EXT.1.1.
		</h:p><h:p>
If "local" is selected and no unprotected traffic is sent to remote
users, then this requirement is met.
		</h:p><h:p>
If "remote" is selected, the
ST author must include the security functional requirements for the trusted
channel protocol selected in
FTP_ITC_EXT.1.1 as part of the TSF.
		</h:p>
	      </note>
            </f-element>
            <f-element id="fel-trust-users">
              <title> The TSF shall permit
                <selectables>
                  <selectable>the TSF</selectable>
                  <selectable>local users</selectable>
                  <selectable>remote users</selectable>
                </selectables>
                to initiate communication via the trusted path.
              </title>
            </f-element>
            <f-element id="fel-trust-path">
              <title> The TSF shall require use of the trusted path for <selectables>
                <selectable>initial user authentication</selectable>
                <selectable><h:i>[all remote administrative actions]</h:i></selectable>
              </selectables>           
              </title>
              <note role="application">
		    <h:p>
		        This requirement ensures that authorized remote administrators initiate all communication
            with the OS via a trusted path, and that all communication with the OS by remote administrators
            is performed over this path. The data passed in this trusted communication channel is encrypted as
            defined in FTP_ITC_EXT.1.
	      </h:p>
        <h:p>
          If <h:i>"remote"</h:i> is selected in FTP_TRP.1.1, <h:i>"all remote administrative actions"</h:i>
          must be selected in FTP_TRP.1.3.
        </h:p>
        <h:p>
          If <h:i>"local"</h:i> is selected in FTP_TRP.1.1, then <h:i>"initial user authentication"</h:i> must be selected
          in FTP_TRP.1.3.
        </h:p>
              </note>
              <aactivity>
		<TSS>
                <h:p>The evaluator shall examine the TSS to determine that the methods of remote or local OS administration
                  are indicated, along with how those communications are protected.</h:p>
		  <h:p>
                [conditional] If "remote" is selected in FTP_TRP.1.1, the evaluator shall confirm that all protocols listed in the TSS in support of OS
                administration are consistent with those specified in the requirement, and are included in the requirements
                in the ST.</h:p>
		</TSS>
		<Guidance>
		            The evaluator shall confirm that the operational guidance contains instructions for establishing the remote
                administrative sessions or initial user authentication for each supported method.
		</Guidance>
	      <Tests>

The evaluator shall also perform the following tests:
                <testlist>
                  <test>
                    The evaluator shall ensure that communications using each remote or local administration method is
                    tested during the course of the evaluation, setting up the connections or initial user authentication
                    as described in the operational guidance and ensuring that communication is successful.
                  </test>
                  <test>
                    [conditional] If "remote" is selected in FTP_TRP.1.1, for each method of remote administration supported,
                    the evaluator shall follow the operational guidance to ensure that there is no available interface that can be
                    used by a remote user to establish a remote administrative sessions without invoking the trusted path.
                  </test>
                  <test>
                    [Conditional] If “remote” is selected in FTP_TRP.1.1, the evaluator shall ensure, for each method of remote
                    administration, the channel data is not sent in plaintext.
                  </test>
                  <test>
                    [Conditional] If “remote” is selected in FTP_TRP.1.1, the evaluator shall ensure, for each method of remote
                    administration, modification of the channel data is detected by the OS.
                  </test>
                </testlist>
		</Tests>
	      </aactivity>
            </f-element>
          <audit-event/>
        </f-component>
      </section>
    </sec:SFRs>
    
    <sec:Security_Assurance_Requirements>
      <h:p>
	The Security Functional Requirements (SFRs) in <xref to="SFRs"/> are specified to 
        mitigate the threats defined in <xref to="Threats"/>.
	The PP identifies the Security Assurance Requirements (SARs) to frame
	the extent to which the evaluator assesses the documentation applicable for the
	evaluation and performs independent testing.
      </h:p>
      <h:p>
	This section lists the set of SARs from CC part 3
	that are required in evaluations against this PP.
        Individual evaluation activities to be performed are specified both in 
        <xref to="Security_Requirements"/> as well as in this section.
      </h:p>
      <h:p>
      The general model for evaluation of TOEs against STs written to conform to this PP is as follows:
      <h:br/>
      After the ST has been approved for evaluation, the ITSEF
      will obtain the OS, supporting environmental IT, and the administrative/user guides for
      the OS. The ITSEF is expected to perform actions mandated by the Common Evaluation
      Methodology (CEM) for the ASE and ALC SARs.
      The ITSEF also performs the evaluation activities contained within 
      <xref to="Security_Requirements"/>, which are intended to be an interpretation of the
      other CEM assurance requirements as they apply to the specific technology instantiated in the
      OS.
      The evaluation activities that are captured in 
      <xref to="Security_Requirements"/> also provide
      clarification as to what the developer needs to provide to demonstrate the OS is compliant
      with the PP.
      </h:p>
      The TOE Security Assurance Requirements are identified in <xref to="sartable"/>.<h:br/><h:br/> 
      <h:center><h:b><ctr id="sartable" ctr-type="Table">: Security Assurance Requirements</ctr></h:b></h:center>
      <h:table>
        <h:tr class="header">
          <h:td>Assurance Class</h:td><h:td>Assurance Components</h:td>
        </h:tr>
        <h:tr>
          <h:td rowspan="7">Security Target (ASE)</h:td>
          <h:td>Conformance Claims (ASE_CCL.1)</h:td>
        </h:tr>
        <h:tr><h:td>Extended Components Definition (ASE_ECD.1)</h:td></h:tr>
        <h:tr><h:td>ST Introduction (ASE_INT.1)</h:td></h:tr>
        <h:tr><h:td>Security Objectives for the Operational Environment
          (ASE_OBJ.1)</h:td></h:tr>
        <h:tr><h:td>Direct Rationale Security Requirements (ASE_REQ.1)</h:td></h:tr>
        <h:tr><h:td>Security Problem Definition (ASE_SPD.1)</h:td></h:tr>
        <h:tr><h:td>TOE Summary Specification (ASE_TSS.1)</h:td></h:tr>
        <h:tr>
          <h:td>Development (ADV)</h:td>
          <h:td>Basic Functional Specification (ADV_FSP.1)</h:td>
        </h:tr>
        <h:tr>
          <h:td rowspan="2">Guidance Documents (AGD)</h:td>
          <h:td>Operational User Guidance (AGD_OPE.1)</h:td>
        </h:tr>
        <h:tr><h:td>Preparative Procedures (AGD_PRE.1)</h:td></h:tr>
        <h:tr>
          <h:td rowspan="3">Life Cycle Support (ALC)</h:td>
          <h:td>Labeling of the TOE (ALC_CMC.1)</h:td>
        </h:tr>
        <h:tr><h:td>TOE CM Coverage (ALC_CMS.1)</h:td></h:tr>
        <h:tr><h:td>Timely Security Updates (ALC_TSU_EXT.1)</h:td></h:tr>
        <h:tr>
          <h:td>Tests (ATE)</h:td>
          <h:td>Independent Testing – Conformance (ATE_IND.1)</h:td>
        </h:tr>
        <h:tr>
          <h:td>Vulnerability Assessment (AVA)</h:td>
          <h:td>Vulnerability Survey (AVA_VAN.1)</h:td>
        </h:tr>
      </h:table>

      <section title="Class ASE: Security Target" id="ase">
        As per ASE activities defined in [CEM].
      </section>

      <section title="Class ADV: Development" id="adv">The information about the OS is contained in the guidance documentation available to the end user as
        well as the TSS portion of the ST. The OS developer must concur with the description of the product that is
        contained in the TSS as it relates to the functional requirements. The evaluation activities
        contained in <xref to="SFRs"/> should provide the ST authors with
        sufficient information to determine the appropriate content for the TSS section.
          <a-component cc-id="adv_fsp.1" name="Basic Functional Specification (ADV_FSP.1)">The
          functional specification describes the TSFIs. It is not
          necessary to have a formal or complete specification of these interfaces. Additionally,
          because OSes conforming to this PP will necessarily have interfaces to
          the operational environment that are not directly invokable by OS
          users, there is little point specifying that such interfaces be described in and of
          themselves since only indirect testing of such interfaces may be possible. For this PP,
          the activities for this family should focus on understanding the interfaces presented in
          the TSS in response to the functional requirements and the interfaces
          presented in the AGD documentation. No additional "functional specification" documentation
          is necessary to satisfy the evaluation activities specified. The interfaces that need to be
          evaluated are characterized through the information needed to perform the assurance
          activities listed, rather than as an independent, abstract list.

            <a-element type="D">
              <title>The developer shall provide a functional specification.</title>
            </a-element>
            <a-element type="D">
              <title>The developer shall provide a tracing from the functional specification to the
              SFRs.</title>
              <note role="application">As indicated in the introduction to this section, the
              functional specification is comprised of the information contained in the AGD_OPE and
              AGD_PRE documentation. The developer may reference a website accessible to application
              developers and the evaluator. The evaluation activities in the functional requirements
              point to evidence that should exist in the documentation and TSS
              section; since these are directly associated with the SFRs, the tracing in element
              ADV_FSP.1.2D is implicitly already done and no additional documentation is
              necessary.</note>
            </a-element>
	  

            <a-element type="C">
              <title>The functional specification shall describe the purpose and method of use for
              each SFR-enforcing and SFR-supporting TSFI.</title>
            </a-element>
            <a-element type="C">
              <title>The functional specification shall identify all parameters associated with each
              SFR-enforcing and SFR-supporting TSFI.</title>
            </a-element>
            <a-element type="C">
              <title>The functional specification shall provide rationale for the implicit
              categorization of interfaces as SFR-non-interfering.</title>
            </a-element>
            <a-element type="C">
              <title>
		The tracing shall demonstrate that the SFRs trace to TSFIs
		in the functional specification.
	      </title>
            </a-element>
	  
            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
            </a-element>
            <a-element type="E">
              <title>The evaluator shall determine that the functional specification is an accurate
              and complete instantiation of the SFRs.</title>
              <aactivity>There are no specific evaluation activities associated with these SARs, except
              ensuring the information is provided. The functional specification documentation is
              provided to support the evaluation activities described in <xref to="SFRs"/>, and
              other activities described for AGD, ATE, and AVA SARs. The requirements on the content
              of the functional specification information is implicitly assessed by virtue of the
              other evaluation activities being performed; if the evaluator is unable to perform an
              activity because there is insufficient interface information, then an adequate
              functional specification has not been provided.
	      </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="agd" title="Class AGD: Guidance Documentation">The guidance documents will be
        provided with the ST. Guidance must include a description of how the IT
        personnel verifies that the operational environment can fulfill its role for the security
        functionality. The documentation should be in an informal style and readable by the IT
        personnel. Guidance must be provided for every operational environment that the product
        supports as claimed in the ST. This guidance includes instructions to
        successfully install the TSF in that environment; and Instructions to
        manage the security of the TSF as a product and as a component of the
        larger operational environment. Guidance pertaining to particular security functionality is
        also provided; requirements on such guidance are contained in the Evaluation Activities
        specified with each requirement.
	<a-component cc-id="agd_ope.1" name="Operational User Guidance (AGD_OPE.1)">

	    <a-element type="D">
	      <title>The developer shall provide operational user guidance.</title>
	      <note role="application">The operational user guidance does not have to be contained in a
	      single document. Guidance to users, administrators and application developers can be
              spread among documents or web pages.
	      Rather than repeat information here, the developer should
              review the evaluation activities for this component to ascertain the specifics of the
              guidance that the evaluator shall be checking for. This will provide the necessary
              information for the preparation of acceptable guidance.</note>
            </a-element>
          

            <a-element type="C">
              <title>The operational user guidance shall describe, for each user role, the
              user-accessible functions and privileges that should be controlled in a secure
              processing environment, including appropriate warnings.</title>
              <note role="application">User and administrator are to be considered in the definition
              of user role.</note>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall describe, for each user role, how to use the
              available interfaces provided by the <h:b>OS</h:b> in a secure manner.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall describe, for each user role, the available
              functions and interfaces, in particular all security parameters under the control of
              the user, indicating secure values as appropriate.</title>
              <note role="application">
		This portion of the operational user guidance should be presented
		in the form of a checklist that can be quickly executed by IT personnel (or end-users,
		when necessary) and suitable for use in compliance activities.
		When possible, this guidance is to be expressed in the eXtensible Configuration
		Checklist Description Format (XCCDF) to
		support security automation.
		Minimally, it should be presented in a structured
		format which includes a title for each configuration item,
		instructions for achieving the secure configuration, and any relevant rationale.
              </note>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall, for each user role, clearly present each
              type of security-relevant event relative to the user-accessible functions that need to
              be performed, including changing the security characteristics of entities under the
              control of the TSF.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall identify all possible modes of operation of
                the <h:b>OS</h:b> (including operation following failure or operational
              error), their consequences, and implications for maintaining secure operation.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall, for each user role, describe the security
              measures to be followed in order to fulfill the security objectives for the
              operational environment as described in the ST.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall be clear and reasonable.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence. </title>
              <aactivity>Some of the contents of the operational guidance are verified by the
              evaluation activities in <xref to="SFRs"/> and evaluation of the OS according to the <xref to="bibCEM"/>.
              The following additional information is also required.
              If cryptographic functions are provided by the OS, the operational guidance ill contain instructions for configuring
              the cryptographic engine associated with the evaluated configuration of the OS.
              It will provide a warning to the administrator that use of other
              cryptographic engines was not evaluated nor tested during the CC evaluation of the
              OS.
              The documentation must describe the process for verifying
              updates to the OS by verifying a digital signature – this may be
              done by the OS or the underlying platform.
              The evaluator shall
              verify that this process includes the following steps: Instructions for obtaining the
              update itself.
              This should include instructions for making the update accessible to
              the OS (e.g., placement in a specific directory).
              Instructions for initiating the update process, as well as discerning whether the process was
              successful or unsuccessful.
              This includes generation of the hash/digital signature.
              The OS will likely contain security functionality that does not
              fall in the scope of evaluation under this PP.
              The operational guidance will make it
              clear to an administrator which security functionality is covered by the evaluation
              activities. </aactivity>
          </a-element>
	  
        </a-component>
        <a-component cc-id="agd_pre.1" name="Preparative Procedures (AGD_PRE.1)">

            <a-element type="D">
              <title>The developer shall provide the <h:b>OS</h:b>, including its preparative
              procedures.</title>
              <note role="application">As with the operational guidance, the developer should look to
              the evaluation activities to determine the required content with respect to preparative
              procedures.</note>
            </a-element>
	  

            <a-element type="C">
              <title>The preparative procedures shall describe all the steps necessary for secure
                acceptance of the delivered <h:b>OS</h:b> in accordance with the developer's
              delivery procedures.</title>
            </a-element>
            <a-element type="C">
              <title>The preparative procedures shall describe all the steps necessary for secure
                installation of the <h:b>OS</h:b> and for the secure preparation of the
              operational environment in accordance with the security objectives for the operational
              environment as described in the ST.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
            </a-element>
            <a-element type="E">
              <title>The evaluator shall apply the preparative procedures to confirm that the <h:b>OS</h:b> can be prepared securely for operation.</title>
              <aactivity>As indicated in the introduction above, there are significant expectations
              with respect to the documentation—especially when configuring the operational
              environment to support OS functional requirements. The evaluator
              will check to ensure that the guidance provided for the OS
              adequately addresses all platforms claimed for the OS in the ST. </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="alc" title="Class ALC: Life-cycle Support"> At the assurance level provided
        for OSes conformant to this PP, life-cycle support is limited to end-user-visible aspects of
        the life-cycle, rather than an examination of the OS vendor's development and configuration
        management process. This is not meant to diminish the critical role that a developer's
        practices play in contributing to the overall trustworthiness of a product; rather, it is a
        reflection on the information to be made available for evaluation at this assurance level.
          <a-component cc-id="alc_cmc.1" name="Labeling of the TOE (ALC_CMC.1)">This component is
          targeted at identifying the OS such that it can be distinguished from
          other products or versions from the same vendor and can be easily specified when being
          procured by an end user.

            <a-element type="D">
              <title>The developer shall provide the <h:b>OS</h:b> and a reference for the
                <h:b>OS</h:b>.</title>
            </a-element>
	  

            <a-element type="C">
              <title>The TSF shall be labeled with a unique reference.</title>
              <note role="application">Unique reference information includes:
	      <h:ul>
		<h:li>OS Name</h:li>
		<h:li>OS Version</h:li>
		<h:li>OS Description</h:li>
		<h:li>Software Identification (SWID) tags, if available</h:li>
              </h:ul>
              </note>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
              <aactivity>The evaluator shall check the ST to ensure that it contains
              an identifier (such as a product name/version number) that specifically identifies the
              version that meets the requirements of the ST. Further, the
              evaluator shall check the operational guidance and OS samples received for
              testing to ensure that the version number is consistent with that in the ST. If the vendor maintains a web site advertising the OS, the evaluator shall examine the information on the web site to
              ensure that the information in the ST is sufficient to distinguish
              the product.</aactivity>
            </a-element>
	  
        </a-component>
        <a-component cc-id="alc_cms.1" name="TOE CM Coverage (ALC_CMS.1)">
	  Given the scope of the OS and its associated evaluation
	  evidence requirements, this component's evaluation activities are covered
	  by the evaluation activities listed for ALC_CMC.1.

            <a-element type="D">
              <title>
                The developer shall provide a configuration list for the <h:b>OS</h:b>.
	      </title>
            </a-element>
	  

            <a-element type="C">
              <title>The configuration list shall include the following: the <h:b>OS</h:b>
              itself; and the evaluation evidence required by the SARs.</title>
            </a-element>
            <a-element type="C">
              <title>The configuration list shall uniquely identify the configuration items.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
              <aactivity>
		<h:p>
		  The "evaluation evidence required by the SARs" in this PP is limited to the
              information in the ST coupled with the guidance provided to
              administrators and users under the AGD requirements. By ensuring that the OS is specifically identified and that this identification is
              consistent in the ST and in the operational guidance (as done in the
              evaluation activity for ALC_CMC.1), the evaluator implicitly confirms the information
              required by this component. Life-cycle support is targeted aspects of the developer's
              life-cycle and instructions to providers of applications for the developer's devices,
              rather than an in-depth examination of the TSF manufacturer's
              development and configuration management process. This is not meant to diminish the
              critical role that a developer's practices play in contributing to the overall
              trustworthiness of a product; rather, it's a reflection on the information to be made
              available for evaluation.
	      </h:p><h:p>
	      The evaluator shall ensure that the developer has
              identified (in guidance documentation for application developers concerning the
              targeted platform) one or more development environments appropriate for use in
              developing applications for the developer's platform. For each of these development
              environments, the developer will provide information on how to configure the
              environment to ensure that buffer overflow protection mechanisms in the environment(s)
              are invoked (e.g., compiler and linker flags). The evaluator shall ensure that this documentation
              also includes an indication of whether such protections are on by default, or have to
              be specifically enabled. The evaluator shall ensure that the TSF is
              uniquely identified (with respect to other products from the TSF
              vendor), and that documentation provided by the developer in association with the
              requirements in the ST is associated with the TSF
              using this unique identification.
	      </h:p>
	      </aactivity>
          </a-element>
	  
        </a-component>
        
        
        <a-component cc-id="alc_flr.1" name="Basic Flaw Remediation (ALC_FLR.1)" status="optional">
          <a-element type="D">
            <title>The developer shall document and provide flaw remediation procedures addressed to TOE
              developers.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures documentation shall describe the procedures used to
              track all reported security flaws in each release of the TOE.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures shall require that a description of the nature and effect
              of each security flaw be provided, as well as the status of finding a correction to that flaw.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures shall require that corrective actions be identified for
              each of the security flaws.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures documentation shall describe the methods used to
              provide flaw information, corrections and guidance on corrective actions to TOE users.</title>
          </a-element>
          <a-element type="E">
            <title>The evaluator shall confirm that the information provided meets all requirements for
              content and presentation of evidence.</title>
            <aactivity>Evaluated as specified by [CEM].</aactivity>
          </a-element>  
        </a-component>
        
        
        
        <a-component cc-id="alc_flr.2" name="Flaw Reporting Procedures (ALC_FLR.2)" status="optional">
          <a-element type="D">
            <title>
              The developer shall document and provide flaw remediation procedures addressed to TOE
              developers.</title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall establish a procedure for accepting and acting upon all reports of
              security flaws and requests for corrections to those flaws.
            </title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall provide flaw remediation guidance addressed to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the procedures used to track all
              reported security flaws in each release of the TOE.</title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that a description of the nature and effect of each
              security flaw be provided, as well as the status of finding a correction to that flaw.</title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that corrective actions be identified for each of the
              security flaws.</title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the methods used to provide flaw
              information, corrections and guidance on corrective actions to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall describe a means by which the developer receives
              from TOE users reports and enquiries of suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall ensure that any reported
              flaws are remediated and the remediation procedures issued to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall provide safeguards that any
              corrections to these security flaws do not introduce any new flaws.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall describe a means by which TOE users report to the
              developer any suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="E">
            <title>
              The evaluator shall confirm that the information provided meets all requirements for content and
              presentation of evidence.</title>
            <aactivity>Evaluated as specified by [CEM].</aactivity>
          </a-element>  
        </a-component>		
        
        
        <a-component cc-id="alc_flr.3" name="Systematic Flaw Remediation (ALC_FLR.3)" status="optional">
          <a-element type="D">
            <title>
              The developer shall document and provide flaw remediation procedures addressed to TOE
              developers.
            </title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall establish a procedure for accepting and acting upon all reports of security
              flaws and requests for corrections to those flaws.
            </title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall provide flaw remediation guidance addressed to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the procedures used to track all
              reported security flaws in each release of the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that a description of the nature and effect of each
              security flaw be provided, as well as the status of finding a correction to that flaw.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that corrective actions be identified for each of the
              security flaws.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the methods used to provide flaw
              information, corrections and guidance on corrective actions to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall describe a means by which the developer receives from
              TOE users reports and enquiries of suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall include a procedure requiring timely response and
              the automatic distribution of security flaw reports and the associated corrections to
              registered users who might be affected by the security flaw.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall ensure that any reported flaws are
              remediated and the remediation procedures issued to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall provide safeguards that any
              corrections to these security flaws do not introduce any new flaws.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall describe a means by which TOE users report to the
              developer any suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall describe a means by which TOE users may register
              with the developer, to be eligible to receive security flaw reports and corrections.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall identify the specific points of contact for all reports
              and enquiries about security issues involving the TOE.
            </title>
          </a-element>
          <a-element type="E">
            <title>
              The evaluator shall confirm that the information provided meets all requirements for content and
              presentation of evidence.</title>
            <aactivity>Evaluated as specified by [CEM].</aactivity>
          </a-element>  
        </a-component>	

        <!-- <ext-comp-def fam-id="ALC_TSU_EXT" title="Timely Security Updates"> -->
	<!--   <fam-behavior>This family of requirements defines the scenarios when the vendor must issue updates.</fam-behavior> -->
	<!-- </ext-comp-def> -->

	<a-component cc-id="alc_tsu_ext.1" name="Timely Security Updates"> This component requires the
          OS developer, in conjunction with any other necessary parties, to provide information as
          to how the end-user devices are updated to address security issues in a timely manner. The
          documentation describes the process of providing updates to the public from the time a
          security flaw is reported/discovered, to the time an update is released. This description
          includes the parties involved (e.g., the developer, carriers(s)) and the steps that are
          performed (e.g., developer testing, carrier testing), including worst case time periods,
          before an update is made available to the public.

            <a-element type="D">
              <title>The developer shall provide a description in the TSS of how timely security
              updates are made to the OS.</title>
            </a-element>
            <a-element type="D">
              <title> The developer shall provide a description in the TSS of how users are notified
              when updates change security properties or the configuration of the product. </title>
            </a-element>
	  

            <a-element type="C">
              <title>The description shall include the process for creating and deploying security
              updates for the OS software.</title>
            </a-element>
            <a-element type="C">
              <title>The description shall include the mechanisms publicly available for reporting
              security issues pertaining to the OS.</title>
              <note> The reporting mechanism could include web sites, email addresses, as well as a
              means to protect the sensitive nature of the report (e.g., public keys that could be
              used to encrypt the details of a proof-of-concept exploit). </note>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all
              requirements for content and presentation of evidence.</title>
              <aactivity>
		<h:p>
		The evaluator shall verify that the TSS contains a description of the timely
              security update process used by the developer to create and deploy security updates.
              The evaluator shall verify that this description addresses the entire application. The
              evaluator shall also verify that, in addition to the OS developer's process, any
              third-party processes are also addressed in the description. The evaluator shall also
              verify that each mechanism for deployment of security updates is described.
	      </h:p><h:p>
	      The
              evaluator shall verify that, for each deployment mechanism described for the update
              process, the TSS lists a time between public disclosure of a vulnerability and public
              availability of the security update to the OS patching this vulnerability, to include
              any third-party or carrier delays in deployment. The evaluator shall verify that this
              time is expressed in a number or range of days.
	      </h:p><h:p>
	      The evaluator shall verify that
              this description includes the publicly available mechanisms (including either an email
              address or website) for reporting security issues related to the OS. The evaluator
              will verify that the description of this mechanism includes a method for protecting
              the report either using a public key for encrypting email or a trusted channel for a
              website.
	    </h:p>
	    </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="ate" title="Class ATE: Tests">Testing is specified for functional aspects of
        the system as well as aspects that take advantage of design or implementation weaknesses.
        The former is done through the ATE_IND family, while the latter is through the AVA_VAN
        family. At the assurance level specified in this PP, testing is based on advertised
        functionality and interfaces with dependency on the availability of design information. One
        of the primary outputs of the evaluation process is the test report as specified in the
        following requirements.
	<a-component cc-id="ate_ind.1" name="Independent Testing - Conformance (ATE_IND.1)">
	  Testing is performed to confirm the
          functionality described in the TSS as well as the administrative
          (including configuration and operational) documentation provided. The focus of the testing
          is to confirm that the requirements specified in <xref to="SFRs"/> being met,
          although some additional testing is specified for SARs in
          <xref to="Security_Assurance_Requirements"/>. 
          The
          evaluation activities identify the additional testing activities associated with these
          components. The evaluator produces a test report documenting the plan for and results of
          testing, as well as coverage arguments focused on the platform/OS
          combinations that are claiming conformance to this PP.
	  Given the scope of the OS and its associated evaluation evidence requirements, this component's
          evaluation activities are covered by the evaluation activities listed for ALC_CMC.1.

            <a-element type="D">
              <title>The developer shall provide the <h:b>OS</h:b> for testing.</title>
            </a-element>
	  

            <a-element type="C">
              <title>The <h:b>TSF</h:b> shall be suitable for testing.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator <h:i>shall confirm</h:i> that the information provided meets all
              requirements for content and presentation of evidence.</title>
            </a-element>
            <a-element type="E">
              <title>The evaluator shall test a subset of the TSF to confirm that
              the TSF operates as specified.</title>
              <note role="application">The evaluator shall test the OS on the most current fully
              patched version of the platform.</note>
              <aactivity>
		<h:p>
		  The evaluator shall prepare a test plan and report documenting the testing
              aspects of the system, including any application crashes during testing. The evaluator
              will determine the root cause of any application crashes and include that information
              in the report.
              The test plan covers all of the testing actions contained in [CEM]
              and the body of this PP's evaluation activities.
	      </h:p><h:p>
	      While it is
              not necessary to have one test case per test listed in an evaluation activity, the
              evaluator must document in the test plan that each applicable testing requirement in
              the ST is covered. The test plan identifies the platforms to be
              tested, and for those platforms not included in the test plan but included in the
                ST, the test plan provides a justification for not testing the
              platforms. This justification must address the differences between the tested
              platforms and the untested platforms, and make an argument that the differences do not
              affect the testing to be performed. It is not sufficient to merely assert that the
              differences have no affect; rationale must be provided. If all platforms claimed in
              the ST are tested, then no rationale is necessary. The test plan
              describes the composition of each platform to be tested, and any setup that is
              necessary beyond what is contained in the AGD documentation. It should be noted that
              the evaluator is expected to follow the AGD documentation for installation and setup
              of each platform either as part of a test or as a standard pre-test condition. This
              may include special test drivers or tools. For each driver or tool, an argument (not
              just an assertion) should be provided that the driver or tool will not adversely
              affect the performance of the functionality by the OS and its
              platform.
	      </h:p><h:p>
	      This also includes the configuration of the cryptographic engine to be
              used. The cryptographic algorithms implemented by this engine are those specified by
              this PP and used by the cryptographic protocols being evaluated (IPsec, TLS). The test
              plan identifies high-level test objectives as well as the test procedures to be
              followed to achieve those objectives. These procedures include expected results.
	      </h:p><h:p>
              The test report (which could just be an annotated version of the test plan) details
              the activities that took place when the test procedures were executed, and includes
              the actual results of the tests. This will be a cumulative account, so if there was a
              test run that resulted in a failure; a fix installed; and then a successful re-run of
              the test, the report would show a "fail" and "pass" result (and the supporting
              details), and not just the "pass" result.
	    </h:p>
	    </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="ava" title="Class AVA: Vulnerability Assessment">For the first generation of
        this protection profile, the evaluation lab is expected to survey open sources to discover
        what vulnerabilities have been discovered in these types of products. In most cases, these
        vulnerabilities will require sophistication beyond that of a basic attacker. Until
        penetration tools are created and uniformly distributed to the evaluation labs, the
        evaluator shall not be expected to test for these vulnerabilities in the OS.
        The labs will be expected to comment on the likelihood of these vulnerabilities given
        the documentation provided by the vendor. This information will be used in the development
        of penetration testing tools and for the development of future protection profiles.
        <a-component cc-id="ava_van.1" name="Vulnerability Survey (AVA_VAN.1)">

          <a-element type="D">
            <title>The developer shall provide the <h:b>OS</h:b> for testing.</title>
          </a-element>
	  

	  <a-element type="C">
	    <title>The <h:b>TSF</h:b> shall be suitable for testing.</title>
          </a-element>
	  

          <a-element type="E">
            <title>The evaluator shall confirm that the information provided meets all requirements
            for content and presentation of evidence.</title>
          </a-element>
          <a-element type="E">
            <title>The evaluator shall perform a search of public domain sources to identify
              potential vulnerabilities in the <h:b>OS</h:b>.</title>
            <note role="application">Public domain sources include the Common Vulnerabilities
              and Exposures (CVE) dictionary for publicly-known vulnerabilities. Public domain
              sources also include sites which provide free checking of files for viruses.</note>
            <!-- their Usage statement does not permit us to mention VirusTotal by name without permission -->
          </a-element>
          <a-element type="E">
            <title>The evaluator shall conduct penetration testing, based on the identified
              potential vulnerabilities, to determine that the <h:b>OS</h:b> is resistant to
              attacks performed by an attacker possessing Basic attack potential.</title>
            <aactivity>
	      <h:p>
	      The evaluator shall generate a report to document their
              findings with respect to this requirement. This report could physically be part of the
              overall test report mentioned in ATE_IND, or a separate document. The evaluator
              performs a search of public information to find vulnerabilities that have been found
              in similar applications with a particular focus on network protocols the application
              uses and document formats it parses.
              The evaluator documents the sources consulted and
              the vulnerabilities found in the report.
	      </h:p><h:p>
              For each vulnerability found, the evaluator
              either provides a rationale with respect to its non-applicability, or the evaluator
              formulates a test (using the guidelines provided in ATE_IND) to confirm the
              vulnerability, if suitable. Suitability is determined by assessing the attack vector
              needed to take advantage of the vulnerability. If exploiting the vulnerability
              requires expert skills and an electron microscope, for instance, then a test would not
              be suitable and an appropriate justification would be formulated.
	    </h:p>
	    </aactivity>
          </a-element>
	  
        </a-component>
      </section>
    </sec:Security_Assurance_Requirements>
  </sec:Security_Requirements>

  <appendix title="Implicitly Satisfied Requirements" id="satisfiedreqs">
     <h:table>
	<h:tr class="header">
	<h:td>Requirement</h:td>
	<h:td>Rationale for Satisfaction</h:td>
	</h:tr>
	<h:tr>
	<h:td>FIA_UAU.1 - Timing of authentication</h:td>
	<h:td>
	  FIA_AFL.1 implicitly requires that the OS perform all necessary actions,
	  including those on behalf of the user who has not been authenticated,
	  in order to authenticate;
	  therefore it is duplicative to include these actions as a
	  separate assignment and test.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FIA_UID.1 - Timing of identification</h:td>
	<h:td>
	  FIA_AFL.1 implicitly requires that the OS perform all necessary actions,
	  including those on behalf of the user who has not been identified,
	  in order to authenticate;
	  therefore it is duplicative to include these actions as a
	  separate assignment and test.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FMT_SMR.1 - Security roles</h:td>
	<h:td>
	  FMT_MOF.1 specifies role-based management functions that implicitly defines
	  user and privileged accounts;
	  therefore, it is duplicative to include separate role requirements.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FTA_SSL.1 - TSF-initiated session locking</h:td>
	<h:td>
 	  FMT_MOF.1 defines requirements for managing session locking;
	  therefore, it is duplicative to include a separate session locking requirement.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FTA_SSL.2 - User-initiated locking</h:td>
	<h:td>
	  FMT_MOF.1 defines requirements for user-initiated session locking;
	  therefore, it is duplicative to include a separate session locking requirement.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FAU_STG.2 - Protected audit data storage</h:td>
	<h:td>
	  FPT_ACF_EXT.1 defines a requirement to protect audit logs;
	  therefore, it is duplicative to include a separate protection of audit trail requirements.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FAU_GEN.2 - User identity association</h:td>
	<h:td>
	  FAU_GEN.1.2 explicitly requires that the OS record
	  any user account associated with each event; therefore, it is duplicative
	  to include a separate requirement to associate a user account with each
	  event.
	</h:td>
	</h:tr>
	<h:tr>
	  <h:td>FAU_SAR.1 - Audit review</h:td>
	  <h:td>
	    FPT_ACF_EXT.1.2 requires that audit logs (and other objects)
	    are protected from reading by unprivileged users; therefore, it is duplicative
	    to include a separate requirement to protect only the audit information.
	  </h:td>
	</h:tr>
    </h:table>

  </appendix>

  <appendix title="Entropy Documentation and Assessment" id="entropyappendix">
    <h:p>
      This appendix describes the required supplementary information for the entropy source used by the OS.
    </h:p>
    <h:p>
    The documentation of the entropy source should be detailed enough that, after reading, the
    evaluator shall thoroughly understand the entropy source and why it can be relied upon to provide
    sufficient entropy. This documentation should include multiple detailed sections: design
    description, entropy justification, operating conditions, and health testing. This documentation
    is not required to be part of the TSS.
    </h:p>
    <section id="entropydesign" title="Design Description">
      <h:p>
      Documentation will include the design of the entropy source as a whole, including the
      interaction of all entropy source components. Any information that can be shared regarding the
      design should also be included for any third-party entropy sources that are included in the
      product.
      </h:p>
      <h:p> The documentation will describe the operation of the entropy source to include,
      how entropy is produced, and how unprocessed (raw) data can be obtained from within the
      entropy source for testing purposes. The documentation should walk through the entropy source
      design indicating where the entropy comes from, where the entropy output is passed next, any
      post-processing of the raw outputs (hash, XOR, etc.), if/where it is stored, and finally, how
      it is output from the entropy source. Any conditions placed on the process (e.g., blocking)
      should also be described in the entropy source design. Diagrams and examples are encouraged.
      </h:p>
      <h:p> This design must also include a description of the content of the security boundary of
      the entropy source and a description of how the security boundary ensures that an adversary
      outside the boundary cannot affect the entropy rate.
      </h:p>
      <h:p>If implemented, the design
      description will include a description of how third-party applications can add entropy to the
      DRBG. A description of any DRBG state saving between power-off and power-on will be included.
      </h:p>
    </section>
    <section id="entropyjustification" title="Entropy Justification">
      <h:p>
      There should be a technical
      argument for where the unpredictability in the source comes from and why there is confidence
      in the entropy source delivering sufficient entropy for the uses made of the DRBG output (by
      this particular OS). This argument will include a description of the expected min-entropy
      rate (i.e., the minimum entropy (in bits) per bit or byte of source data) and explain that
      sufficient entropy is going into the OS randomizer seeding process. This discussion will be
      part of a justification for why the entropy source can be relied upon to produce bits with
      entropy.
      </h:p>
      <h:p>
	The amount of information necessary to justify the expected min-entropy rate
	depends on the type of entropy source included in the product.
      </h:p>
      <h:p>
	For developer provided
      entropy sources, in order to justify the min-entropy rate, it is expected that a large number
      of raw source bits will be collected, statistical tests will be performed, and the min-entropy
      rate determined from the statistical tests. While no particular statistical tests are required
      at this time, it is expected that some testing is necessary in order to determine the amount
      of min-entropy in each output.
      </h:p>
      <h:p>
	For third-party provided entropy sources, in which the
      OS vendor has limited access to the design and raw entropy data of the source, the
      documentation will indicate an estimate of the amount of min-entropy obtained from this
      third-party source. It is acceptable for the vendor to "assume" an amount of min-entropy,
      however, this assumption must be clearly stated in the documentation provided. In particular,
      the min-entropy estimate must be specified and the assumption included in the ST.
      </h:p>
      <h:p>
	
      Regardless of type of entropy source, the justification will also include how the DRBG is
      initialized with the entropy stated in the ST, for example by verifying that the min-entropy
      rate is multiplied by the amount of source data used to seed the DRBG or that the rate of
      entropy expected based on the amount of source data is explicitly stated and compared to the
      statistical rate. If the amount of source data used to seed the DRBG is not clear or the
      calculated rate is not explicitly related to the seed, the documentation will not be
      considered complete.
      </h:p>
      <h:p>
	The entropy justification will not include any data added from any
	third-party application or from any state saving between restarts.
      </h:p>
    </section>
    <section id="entropyoperatingconditions" title="Operating Conditions"> The entropy rate may be
      affected by conditions outside the control of the entropy source itself. For example, voltage,
      frequency, temperature, and elapsed time after power-on are just a few of the factors that may
      affect the operation of the entropy source. As such, documentation will also include the range
      of operating conditions under which the entropy source is expected to generate random data. It
      will clearly describe the measures that have been taken in the system design to ensure the
      entropy source continues to operate under those conditions. Similarly, documentation will
      describe the conditions under which the entropy source is known to malfunction or become
      inconsistent. Methods used to detect failure or degradation of the source will be included. </section>
    <section id="entropyhealthtesting" title="Health Testing"> More specifically, all entropy source
      health tests and their rationale will be documented. This includes a description of the health
      tests, the rate and conditions under which each health test is performed (e.g., at start,
      continuously, or on-demand), the expected results for each health test, and rationale
      indicating why each test is believed to be appropriate for detecting one or more failures in
      the entropy source.
    </section>
  </appendix>
  
  <appendix title="Validation Guidelines" id="validation_guidelines"/>
  
  <bibliography>
    <cc-entry/>
    <entry id="bibCCerrata">
      <tag>Errata</tag>
      <description>
        <h:a href="https://www.commoncriteriaportal.org/files/ccfiles/CCMB-2025-001-v1_2-Errata_Interpretation_CC_CEM_2022.pdf">Errata and Interpretation for CC:2022 (Release 1) and CEM:2022 (Release 1)</h:a>, Version 1.2
      </description>
    </entry>
    <entry id="bibCCitC">
      <tag>CCitC</tag>
      <description><h:a href="https://commoncriteriaportal.org/files/ccfiles/CCiTC_Guidance_For_Cloud_Evals_v1.1a.pdf">CC in the Cloud Guidance for Cloud Evaluations</h:a>, Version 1.1a</description>
    </entry>
    <entry id="bibOMB">
      <tag>OMB</tag>
      <description>
        <h:a href="http://www.whitehouse.gov/sites/default/files/omb/memoranda/fy2006/m06-19.pdf">Reporting Incidents Involving Personally Identifiable Information and Incorporating the Cost for Security in Agency Information Technology Investments</h:a>, OMB M-06-19, July 12, 2006. </description>
    </entry>   
    
  </bibliography>

</PP>
