<?xml version='1.0'?>
<datamodel version="4.0" 
           xmlns="http://www.tresos.de/_projects/DataModel2/10/root.xsd" 
           xmlns:a="http://www.tresos.de/_projects/DataModel2/10/attribute.xsd" 
           xmlns:v="http://www.tresos.de/_projects/DataModel2/06/schema.xsd" 
           xmlns:d="http://www.tresos.de/_projects/DataModel2/06/data.xsd">        
<!--
*   @file    Crypto.xdm
*   @version 1.0.0
*
*   @brief   AUTOSAR Crypto - Tresos Studio plugin schema file
*   @details This file contains the schema configuration for and Crypto Tresos Studio plugin.
-->
<!--
====================================================================================================
*   Project              : AUTOSAR 4.3 MCAL
*   Platform             : PA
*   Peripheral           : Crypto
*   Dependencies         : none
*
*   Autosar Version      : 4.3.1
*   Autosar Revision     : ASR_REL_4_3_REV_0001
*   Autosar Conf.Variant :
*   SW Version           : 1.0.0
*   Build Version        : MPC5777C_MCAL_1_0_0_RTM_ASR_REL_4_3_REV_0001_20190315
*
*   (c) Copyright 2006-2016 Freescale Semiconductor, Inc. 
*       Copyright 2017-2019 NXP
*   All Rights Reserved.
====================================================================================================
====================================================================================================
====================================================================================================
-->

  <d:ctr type="AUTOSAR" factory="autosar" 
         xmlns:ad="http://www.tresos.de/_projects/DataModel2/08/admindata.xsd" 
         xmlns:icc="http://www.tresos.de/_projects/DataModel2/08/implconfigclass.xsd" 
         xmlns:mt="http://www.tresos.de/_projects/DataModel2/11/multitest.xsd"  
         xmlns:variant="http://www.tresos.de/_projects/DataModel2/11/variant.xsd">
    <d:lst type="TOP-LEVEL-PACKAGES">
    <!-- @implements Crypto_Object -->
      <d:ctr name="TS_T2D41M10I0R0" type="AR-PACKAGE">
        <a:a name="UUID" value="ECUC:35cab853-b883-496d-98d6-c2226b4d6856"/>
            <d:lst type="ELEMENTS">
              <d:chc name="Crypto" type="AR-ELEMENT" value="MODULE-DEF">
                <v:ctr type="MODULE-DEF">
                        <a:a name="RELEASE" value="asc:4.3"/>
                  <a:a name="ADMIN-DATA" type="ADMIN-DATA">
                    <ad:ADMIN-DATA>
                      <ad:DOC-REVISIONS>
                        <ad:DOC-REVISION>
                      <ad:REVISION-LABEL>4.3.1</ad:REVISION-LABEL>
                          <ad:ISSUED-BY>AUTOSAR</ad:ISSUED-BY>
                        </ad:DOC-REVISION>
                      </ad:DOC-REVISIONS>
                    </ad:ADMIN-DATA>
                  </a:a>
                  <a:a name="DESC" 
                       value="EN: Configuration of the Crypto (CryptoDriver) module"/>
                  <a:a name="LOWER-MULTIPLICITY" value="0"/>
                  <a:a name="UPPER-MULTIPLICITY" value="*"/>
                  <a:a name="UUID" 
                       value="ECUC:d18a8d52-da03-43ff-b1e2-411451a3d9d5"/>
                  <v:var name="IMPLEMENTATION_CONFIG_VARIANT" 
                         type="ENUMERATION">
                    <a:a name="LABEL" value="Config Variant"/>
                    <a:da name="DEFAULT" value="VariantPreCompile"/>
                    <a:da name="RANGE" value="VariantPreCompile"/>
                  </v:var>
                  
                  <!-- @implements CryptoDriverObjects_Object -->
                  <v:ctr name="CryptoDriverObjects" type="IDENTIFIABLE">
                    <a:a name="DESC" value="EN: Container for CRYPTO Object, there can be only one crypto driver object configured."/>
                    <a:a name="UUID" 
                         value="ECUC:1bfb756a-033d-4cf7-b36f-e427bb567718"/>
                         
                    <v:lst name="CryptoDriverObject" type="MAP">
                    <a:da name="MIN" value="1"/>
                    <a:da name="MAX" value="1"/>
                    <a:a name="COLUMNS"> 
                     <a:v>CryptoDriverObject</a:v>
                     <a:v>CryptoDriverObjectId</a:v>
                     <a:v>CryptoQueueSize</a:v>
                     <a:v>CryptoPrimitiveType</a:v>
                    </a:a>

                      <!-- @implements CryptoDriverObject_Object -->
                      <v:ctr name="CryptoDriverObject" type="IDENTIFIABLE">
                        <a:a name="DESC" 
                             value="EN: Configuration of a CryptoDriverObject"/>
                        <a:a name="UUID" 
                             value="ECUC:f32e21d8-4e16-439c-4782-5f560503fb55"/>
                        
                        <!-- @implements CryptoDriverObjectId_Object -->
                        <v:var name="CryptoDriverObjectId" type="INTEGER">
                          <a:a name="DESC" 
                               value="EN: Identifier of the Crypto Driver Object. The Crypto Driver Object offers different crypto primitives."/>
                          <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                          </a:a>
                          <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                          <a:a name="SCOPE" value="LOCAL"/>
                          <a:a name="SYMBOLICNAMEVALUE" value="true"/>
                          <a:a name="UUID" 
                               value="ECUC:124214e8-30e9-404c-4cce-6ec074c107a2"/>
                          <a:da name="DEFAULT" type="XPath" expr="num:i(node:fallback(node:current()/../@index, num:i(1)) + 1)" />
                          <a:da name="RANGE" type="XPath">
                             <a:tst expr="text:uniq(../../*/CryptoDriverObjectId, .)"
                             false="Duplicated value, CryptoDriverObjectId must be unique."/>
                          </a:da>
                          <a:da name="INVALID" type="Range">
                            <a:tst expr="&lt;=4294967295"/>
                            <a:tst expr="&gt;=1"/>
                          </a:da>
                        </v:var>
                        
                        <!-- @implements CryptoQueueSize_Object -->
                        <v:var name="CryptoQueueSize" type="INTEGER">
                          <a:a name="DESC" 
                               value="EN: Size of the queue in the Crypto Driver. Defines the maximum number of jobs in the Crypto Driver Object queue. If it is set to 0, queueing is disabled in the Crypto Driver Object."/>
                          <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                          </a:a>
                          <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                          <a:a name="SCOPE" value="LOCAL"/>
                          <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                          <a:a name="UUID" 
                               value="ECUC:f6e2780d-0ae8-f4c4-a010-86ad1f6ef922"/>
                          <a:da name="DEFAULT" value="0"/>
                          <a:da name="INVALID" type="Range">
                            <a:tst expr="&lt;=4294967295"/>
                            <a:tst expr="&gt;=0"/>
                          </a:da>
                        </v:var>
                          
                        <!-- @implements CryptoPrimitiveRef_Object -->
                        <v:lst name="CryptoPrimitiveRef">
                          <a:da name="MIN" value="1"/>
                          <a:a name="COLUMNS"> 
                           <a:v>CryptoPrimitiveRef</a:v>
                          </a:a>
                          <v:ref name="CryptoPrimitiveRef" type="REFERENCE">
                            <a:a name="DESC" 
                                 value="EN: Refers to primitive in the CRYPTO."/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="UUID" 
                                 value="ECUC:10edad5c-16b4-4e10-ba96-bd36e02c2cff"/>
                            <a:da name="REF" 
                                  value="ASPathDataOfSchema:/AUTOSAR/EcucDefs/Crypto/CryptoPrimitives/CryptoPrimitive"/>
                            <a:da name="RANGE" type="XPath">
                                <a:tst expr="node:paths(../../CryptoPrimitive/*)"/> <!-- Select for reference only the options available inside the CryptoPrimitives -->
                            </a:da>
                            <a:da name="INVALID" type="XPath">
                                <a:tst expr="node:refvalid(.)" 
                                        false="The configured node does not exist or may not be referenced."/>      
                                <a:tst expr="(
                                                  ( (node:refs(node:value(.))/CryptoPrimitiveAlgorithmFamily)!='CRYPTO_ALGOFAM_AES' ) or
                                                  ( (node:refs(node:value(.))/CryptoPrimitiveAlgorithmFamily)!='CRYPTO_ALGOFAM_RNG' )
                                              )"
                                        false="Incorrect modes, for one crypto driver object you should select only symmetric (AES, random number generator), based on the CryptoPrimitiveType variable."/>                                          
                            </a:da>                                        
                          </v:ref>
                        </v:lst>
                      </v:ctr>
                    </v:lst>
                  </v:ctr>
                  
                  <!-- @implements CryptoGeneral_Object -->
                  <v:ctr name="CryptoGeneral" type="IDENTIFIABLE">
                    <a:a name="DESC" 
                         value="EN: Container for common configuration options"/>
                    <a:a name="UUID" 
                         value="ECUC:12ae2270-d311-464d-ba8f-82edaed0a4e6"/>
                         
                    <!-- @implements CryptoDevErrorDetect_Object -->
                    <v:var name="CryptoDevErrorDetect" type="BOOLEAN">
                      <a:a name="DESC" 
                           value="EN: Switches the development error detection and notification on or off."/>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                           type="IMPLEMENTATIONCONFIGCLASS">
                        <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                      <a:a name="SCOPE" value="LOCAL"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" 
                           value="ECUC:faf0ef6b-1f1e-4818-82d8-9ac859b82c59"/>
                     <a:da name="DEFAULT" value="true"/>
                    </v:var>

                    <v:var name="CryptoTimeoutDuration" type="INTEGER">
                        <a:a name="LABEL" value="Crypto Timeout Duration"/>
                        <a:a name="DESC">
                            <a:v>
                                <![CDATA[EN:<html><p> Vendor specific: Timeout value for the Crypto commands. </p></html>]]>
                            </a:v>
                        </a:a>
                        <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v class="PreCompile">VariantPreCompile</icc:v>
                        </a:a>   
                        <a:a name="ORIGIN" value="NXP"/>
                        <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                        <a:a name="UUID" value="ECUC:89cf6b40-1e18-4786-9376-e471db9a4f66"/>
                        <a:da name="DEFAULT" value="2147483647"/>
                        <a:da name="INVALID" type="Range">
                            <a:tst expr="&lt;=4294967295"/>
                            <a:tst expr="&gt;=0"/>
                        </a:da>
                    </v:var>

                    <!-- @implements CryptoInstanceId_Object -->
                    <v:var name="CryptoInstanceId" type="INTEGER">
                      <a:a name="DESC" 
                           value="EN: Instance ID of the crypto driver. This ID is used to discern several crypto drivers in case more than one driver is used in the same ECU."/>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                           type="IMPLEMENTATIONCONFIGCLASS">
                        <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                      <a:a name="SCOPE" value="LOCAL"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" 
                           value="ECUC:2d5e98b1-25e6-fe2d-a1fd-b43aa3722b80"/>
                      <a:da name="DEFAULT" value="0"/>
                      <a:da name="INVALID" type="Range">
                        <a:tst expr="&lt;=255"/>
                        <a:tst expr="&gt;=0"/>
                      </a:da>
                    </v:var>
                    
                      <!-- @implements CryptoMainFunctionPeriod_Object -->
                      <v:var name="CryptoMainFunctionPeriod" type="FLOAT">
                        <a:a name="OPTIONAL" value="true"/>
                        <a:a name="DESC" 
                             value="EN: Specifies the period of main function Crypto_MainFunction in seconds."/>
                        <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                             type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                          <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                        </a:a>
                        <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                        <a:a name="SCOPE" value="LOCAL"/>
                        <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                        <a:a name="UUID" 
                             value="ECUC:a7196c6e-fbbd-4f8d-fa75-f52584f18fc1"/>
                        <a:da name="DEFAULT" value="1000"/>
                        <a:da name="INVALID" type="Range">
                          <a:tst expr="&lt;99999999"/>
                          <a:tst expr="&gt;0.0"/>
                        </a:da>
                      </v:var>
                      
                    <!-- @implements CryptoVersionInfoApi_Object -->
                    <v:var name="CryptoVersionInfoApi" type="BOOLEAN">
                      <a:a name="DESC" 
                           value="EN: Pre-processor switch to enable and disable availability of the API Crypto_GetVersionInfo()."/>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                           type="IMPLEMENTATIONCONFIGCLASS">
                        <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                      <a:a name="SCOPE" value="LOCAL"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" 
                           value="ECUC:ac156a69-f57a-16b7-2e29-3353983b72fb"/>
                     <a:da name="DEFAULT" value="true"/>
                    </v:var>

                    <v:var name="AsyncJobProcessMethod" type="ENUMERATION">
                        <a:a name="LABEL" value="Asynchronous Process Method"/>
                        <a:a name="DESC">
                            <a:v>
                            <![CDATA[EN:
                                <html>
                                  <p>
                                    Selects one of the process methods for asynchronous jobs
                                  </p>
                                </html>
                                ]]>
                            </a:v>
                        </a:a>
                        <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                        </a:a>
                        <a:a name="ORIGIN" value="NXP"/>
                        <a:a name="SCOPE" value="LOCAL"/>
                        <a:a name="UUID" value="ECUC:3acf241f-a1e0-1932-3f05-1b161c464318"/>
                        <a:da name="DEFAULT" value="POLLING"/>
                           <a:da name="RANGE">
                              <a:v>INTERRUPT</a:v>
                              <a:v>POLLING</a:v>
                            </a:da>
                    </v:var>
                    
                    <!-- @implements TrngClockDivider_Object -->
                    <v:var name="TrngClockDividerSelect" type="STRING">
                        <a:a name="LABEL" value="TRNG Clock Divider Select"/>
                        <a:a name="DESC">
                            <a:v>
                            <![CDATA[EN:
                                <html>
                                  <p>
                                    <li>TRNG Clock Divider Select. Sets the clock divide ratio for the TRNG clock. The TRNG clock is the system </li>
                                    <li>DIV clock divided by a programmable ratio:                                                              </li>
                                    <li>TRNG Clk Freq = Sys Clk Freq / (2*(DIV+1))                                                              </li>
                                    <li>The divide ratio must be set such that the TRNG clock frequency is between 500 kHz and 2MHz.            </li>
                                    <li>0x00 divide by 2                                                                                        </li>
                                    <li>0x01 divide by 4                                                                                        </li>
                                    <li>0x02 divide by 6                                                                                        </li>
                                    <li>...                                                                                                     </li>
                                    <li>0xFE divide by 510                                                                                      </li>
                                    <li>0xFF divide by 512                                                                                      </li>
                                    <li>e.g. to divide by 202 TRNG Clock Divider Select must be set 64.                                         </li>
                                  </p>
                                </html>
                                ]]>
                            </a:v>
                        </a:a>
                        <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                        </a:a>
                        <a:a name="ORIGIN" value="NXP"/>
                        <a:a name="SCOPE" value="LOCAL"/>
                        <a:a name="UUID" value="ECUC:3acf241f-a1e0-1932-3f05-1b161c464317"/>
                        <a:da name="DEFAULT" value="64"/>
                           <a:da name="INVALID" type="XPath">
                              <a:tst expr="(
                                       (text:match(normalize-space(.),'^[0-9a-fA-F]*$')) and
                                       ((num:i(string-length(node:current())) &lt; 3 ))
                                          )"
                                false="This node is an octet, please use 0-9 a-f A-F characters, without spaces."/>
                           </a:da>
                    </v:var>

                    <!--  @implements CryptoEnableUserModeSupport_Object  -->
                    <v:var name="CryptoEnableUserModeSupport" type="BOOLEAN">
                        <a:a name="DESC">
                            <a:v>
                                <![CDATA[EN:<html>
                                    When this parameter is enabled, the Crypto module will adapt to run from User Mode, with the following measures:<p/>
                                    Using 'call trusted function' stubs for all internal function calls that access registers requiring supervisor mode.<p/>
                                    for more information, please see chapter 5.7 User Mode Support in IM <p/>
                                    Note: Implementation Specific Parameter.
                                </html>]]>
                            </a:v>
                        </a:a>
                        <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                        </a:a>
                        <a:a name="LABEL" value="Enable Crypto User Mode Support"/>
                        <a:a name="ORIGIN" value="NXP"/>
                        <a:a name="SCOPE" value="LOCAL"/>
                        <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                        <a:a name="UUID" value="ECUC:2d37b26f-6cb3-4635-b20b-b616fg579f1c"/>
                        <a:da name="DEFAULT" value="false"/>
                        <a:da name="READONLY" value="true"/>
                    </v:var>
                    
                    <a:da name="INVALID" type="XPath">
                    <a:tst expr="(
                                 ( node:exists(../CryptoKeyElements) and node:exists(../CryptoKeyTypes) and node:exists(../CryptoKeys) )
                                 )
                                 or
                                 (
                                 (not(node:exists(../CryptoKeyElements)) and not( node:exists(../CryptoKeyTypes) ) and not(node:exists(../CryptoKeys) ) )
                                  )"
                     false=" Containers CryptoKeyElements, CryptoKeys, CryptoKeyTypes must be simultaneously active or disabled."/>
                    </a:da>
                   </v:ctr>

                    <!-- @implements CryptoKeyElements_Object -->
                    <v:ctr name="CryptoKeyElements" type="IDENTIFIABLE">
                      <a:a name="DESC" 
                           value="EN: Container for Crypto key elements"/>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                           type="IMPLEMENTATIONCONFIGCLASS">
                        <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="OPTIONAL" value="true"/>
                      <a:a name="UUID" 
                           value="ECUC:12e782b3-b272-42cc-fb7c-ff0d09576f7c"/>
                      <v:lst name="CryptoKeyElement" type="MAP">
                        <a:da name="MIN" value="1"/>
                        <a:a name="COLUMNS"> 
                         <a:v>CryptoKeyElement</a:v>
                         <a:v>CryptoKeyElementAllowPartialAccess</a:v>
                         <a:v>CryptoKeyElementFormat</a:v>
                         <a:v>CryptoKeyElementId</a:v>
                         <a:v>CryptoKeyElementInitValue</a:v>
                         <a:v>CryptoKeyElementPersist</a:v>
                         <a:v>CryptoKeyElementReadAccess</a:v>
                         <a:v>CryptoKeyElementSize</a:v>
                         <a:v>CryptoKeyElementWriteAccess</a:v>
                         <a:v>CryptoKeyElementVirtualTargetRef</a:v>
                         <a:v>CryptoKeyHandle</a:v>
                         <a:v>CryptoKeyFlags</a:v>
                       </a:a>
                       
                        <!-- @implements CryptoKeyElement_Object -->
                      <v:ctr name="CryptoKeyElement" type="IDENTIFIABLE">
                          
                          <a:a name="DESC" 
                               value="EN: Configuration of a CryptoKeyElement"/>
                          <a:a name="UUID" 
                               value="ECUC:ff161b28-fb12-7c9b-707a-7f95a35b6041"/>
                          <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v class="PreCompile">VariantPreCompile</icc:v>
                          </a:a> 
                          <!-- @implements CryptoKeyElementAllowPartialAccess_Object -->
                          <v:var name="CryptoKeyElementAllowPartialAccess" type="BOOLEAN">
                            <a:a name="DESC" 
                                 value="EN: Enable or disable writing and reading the key element with data smaller than the size of the element."/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:1546ad2f-2663-4cdc-9688-1056e2934f51"/>
                            <a:da name="DEFAULT" value="false"/>
                          </v:var>
                          
                          <!-- @implements CryptoKeyElementFormat_Object -->
                          <v:var name="CryptoKeyElementFormat" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Defines the format for the key element. This is the format used to provide or extract the key data from the driver."/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:1f151235-b33b-432c-b95f-5345724d71f4"/>
                            <a:da name="RANGE">
                              <a:v>CRYPTO_KE_FORMAT_BIN_CERT_CVC</a:v>
                              <a:v>CRYPTO_KE_FORMAT_BIN_CERT_X509_V3</a:v>
                              <a:v>CRYPTO_KE_FORMAT_BIN_IDENT_PRIVATEKEY_PKCS8</a:v>
                              <a:v>CRYPTO_KE_FORMAT_BIN_IDENT_PUBLICKEY</a:v>
                              <a:v>CRYPTO_KE_FORMAT_BIN_OCTET</a:v>
                              <a:v>CRYPTO_KE_FORMAT_BIN_RSA_PRIVATEKEY</a:v>
                              <a:v>CRYPTO_KE_FORMAT_BIN_RSA_PUBLICKEY</a:v>
                              <a:v>CRYPTO_KE_FORMAT_BIN_SHEKEYS</a:v>
                            </a:da>
                          <a:da name="DEFAULT" value="CRYPTO_KE_FORMAT_BIN_OCTET"/>
                          </v:var>
                          
                          <!-- @implements CryptoKeyElementId_Object -->
                          <v:var name="CryptoKeyElementId" type="INTEGER">
                            <a:a name="DESC" 
                                 value="EN: Identifier of the CRYPTO key element"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="true"/>
                            <a:a name="UUID" 
                                 value="ECUC:13b10c50-dcf8-180d-f7f4-f461605e57eb"/>
                            <a:da name="DEFAULT" value="1"/>
                            <a:da name="INVALID" type="Range">
                              <a:tst expr="&lt;=4294967295"/>
                              <a:tst expr="&gt;=1"/>
                            </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoKeyElementInitValue_Object -->
                          <v:var name="CryptoKeyElementInitValue" type="STRING">
                            <a:a name="DESC" 
                                 value="EN: Value which will be used to fill the element during initialisation, when the element is not already initialized."/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:60b3190e-435c-4288-8e00-ad36c97f40b9"/>  
                            <a:da name="DEFAULT" value=""/>
                            <a:da name="INVALID" type="XPath">
                                <a:tst expr="(
                                       (text:match(normalize-space(.),'^[0-9a-fA-F]*$')) and
                                       (num:i(string-length(node:current())) &lt; ((2 * num:i(node:value(../CryptoKeyElementSize)))) + 1) and
                                       (num:i(string-length(node:current())) mod 2 = 0)
                                      )"
                                false="This node is an octet string. Please use 0-9 a-f A-F characters, without spaces. If this field is configured, it should have a number of bytes equal to CryptoKeyElementSize field."/>
                                   <a:tst expr="(
                                                 ( (node:value(../CryptoKeyElementId) = 1) and (num:i(string-length(.)) = 0) ) or
                                                 (node:value(../CryptoKeyElementId) != 1)
                                                 )
                                               "
                                                                                    
                                false="Key material (key element ID 1) can only be initialized via Crypto_KeyElementSet function.."/>  
                            </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoKeyElementPersist_Object -->
                          <v:var name="CryptoKeyElementPersist" type="BOOLEAN">
                            <a:a name="DESC" 
                                 value="EN: Enable or disable persisting of the key element in non-volatile storage."/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:13e5f9e1-88f2-3dcd-4253-5d65abe6c37e"/>
                            <a:da name="DEFAULT" value="false"/>
                          </v:var>
                          
                          <!-- @implements CryptoKeyElementReadAccess_Object -->
                          <v:var name="CryptoKeyElementReadAccess" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Define the reading access rights of the key element."/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:1fe5b2f2-b2ac-4627-cc61-97a0c5c9598e"/>
                            <a:da name="DEFAULT" value="CRYPTO_RA_ALLOWED"/>
                            <a:da name="RANGE">
                              <a:v>CRYPTO_RA_ALLOWED</a:v>
                              <a:v>CRYPTO_RA_DENIED</a:v>
                              <a:v>CRYPTO_RA_ENCRYPTED</a:v>
                              <a:v>CRYPTO_RA_INTERNAL_COPY</a:v>
                            </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoKeyElementSize_Object -->
                          <v:var name="CryptoKeyElementSize" type="INTEGER">
                            <a:a name="DESC" 
                                 value="EN: Maximum Size size of a CRYPTO key element in bytes"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:1e48d0b6-2ce1-44db-b561-b17abc2b4e1f"/>
                            <a:da name="DEFAULT" value="16"/>
                            <a:da name="INVALID" type="Range">
                              <a:tst expr="&lt;=4294967295"/>
                              <a:tst expr="&gt;=1"/>
                            </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoKeyElementWriteAccess_Object -->
                          <v:var name="CryptoKeyElementWriteAccess" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Define the writing access rights of the key element"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:da name="DEFAULT" value="CRYPTO_WA_ALLOWED"/>
                            <a:a name="UUID" 
                                 value="ECUC:12a68509-d818-4612-af42-c1f514d9f2c3"/>
                            <a:da name="RANGE">
                              <a:v>CRYPTO_WA_ALLOWED</a:v>
                              <a:v>CRYPTO_WA_DENIED</a:v>
                              <a:v>CRYPTO_WA_ENCRYPTED</a:v>
                              <a:v>CRYPTO_WA_INTERNAL_COPY</a:v>
                            </a:da>
                          </v:var>
                          
                            <!-- @implements CryptoKeyElementVirtualTargetRef_Object -->
                            <v:ref name="CryptoKeyElementVirtualTargetRef" type="REFERENCE">
                              <a:a name="OPTIONAL" value="true"/>
                              <a:a name="DESC" 
                                   value="EN: Refers to a key element which will contain the actual data. If the Reference is configured, the key element will be a virtual key element."/>
                              <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                   type="IMPLEMENTATIONCONFIGCLASS">
                                <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                                <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                              </a:a>
                              <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                              <a:a name="POSTBUILDVARIANTVALUE" value="false"/>
                              <a:a name="SCOPE" value="LOCAL"/>
                              <a:a name="UUID" 
                                   value="ECUC:f138b5ba-f5ab-4e81-8b56-1d29b55b27ae"/>
                              <a:da name="REF" 
                                    value="ASPathDataOfSchema:/AUTOSAR/EcucDefs/Crypto/CryptoKeyElements/CryptoKeyElement"/>
                            </v:ref>
                            
                            <v:var name="CryptoKeyHandle" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Memory slots Key ID should be between 0x1 and 0xE"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="NXP"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="UUID" 
                                 value="ECUC:1a2c8a6b-ace1-af13-aa72-ffa821262252"/>
                            <a:da name="DEFAULT" value = "CSE_RAM_KEY" />
                            <a:da name="RANGE">
                              <a:v>CSE_SECRET_KEY</a:v>
                              <a:v>CSE_MASTER_ECU</a:v>
                              <a:v>CSE_BOOT_MAC_KEY</a:v>
                              <a:v>CSE_BOOT_MAC</a:v>
                              <a:v>CSE_KEY_1</a:v>
                              <a:v>CSE_KEY_2</a:v>
                              <a:v>CSE_KEY_3</a:v>
                              <a:v>CSE_KEY_4</a:v>
                              <a:v>CSE_KEY_5</a:v>
                              <a:v>CSE_KEY_6</a:v>
                              <a:v>CSE_KEY_7</a:v>
                              <a:v>CSE_KEY_8</a:v>
                              <a:v>CSE_KEY_9</a:v>
                              <a:v>CSE_KEY_10</a:v>
                              <a:v>CSE_RAM_KEY</a:v>
                              <a:v>CSE_KEY_11</a:v>
                              <a:v>CSE_KEY_12</a:v>
                              <a:v>CSE_KEY_13</a:v>
                              <a:v>CSE_KEY_14</a:v>
                              <a:v>CSE_KEY_15</a:v>
                              <a:v>CSE_KEY_16</a:v>
                              <a:v>CSE_KEY_17</a:v>
                              <a:v>CSE_KEY_18</a:v>
                              <a:v>CSE_KEY_19</a:v>
                              <a:v>CSE_KEY_20</a:v>
                            </a:da>
                          </v:var>
                          
                        <v:lst name="CryptoKeyFlags" type="MAP">                
                            <a:a name="ROWS" value="6"/>
                            <a:da name="MIN" value="0"/> 
                            <a:a name="COLUMNS">
                                <a:v>CryptoKeyFlags</a:v>
                                <a:v>CryptoKeyMask</a:v>
                            </a:a>
                            
                            <v:ctr name="CryptoKeyFlags" type="IDENTIFIABLE">
                                <a:a name="UUID" value="ECUC:125ff4fa-f2f1-314a-1f61-1ca1115297227"/>
                                <a:a name="DESC" 
                                       value="EN: Configuration of Crypto Key permission flags"/>
                                <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                     type="IMPLEMENTATIONCONFIGCLASS">
                                  <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                                </a:a>
                                <v:var name="CryptoKeyMask" type="ENUMERATION">
                                    <a:da name="RANGE">
                                        <a:v>VERIFY_ONLY</a:v>
                                        <a:v>WRITE_PROT</a:v>
                                        <a:v>BOOT_PROT</a:v>
                                        <a:v>DEBUG_PROT</a:v>
                                        <a:v>KEY_USAGE</a:v>
                                        <a:v>WILDCARD</a:v>
                                    </a:da>
                                    <a:a name="DESC">
                                      <a:v>
                                          <![CDATA[EN:
                                              <html>
                                              <p><h1>The memory slot security flags for a specified key are checked against the associated bits in the CSE_SR during command processing as described in the SHE specification.</h1><br>
                                                    
                                                       The key flag required by CSE should have the following format (uint32): <br>
                                                    
                                                       Bit 0  :   VERIFY_ONLY - If set, the memory slot key cannot be used by the GENERATE_MAC command, only by the VERIFY_MAC command. This bit has no effect if KEY_USAGE = 0.<br>
                                                       Bit 1  :   WRITE_PROT  - If set, the memory slot cannot be updated.<br>
                                                       Bit 2  :   BOOT_PROT   - If set, the memory slot is disabled if CSE_SR[BOK] = 0 or CSE_SR[BFN] = 0.<br> 
                                                       Bit 3  :   DEBUG_PROT  - If set, the memory slot is disabled if CSE_SR[EDB] = 1.<br>
                                                       Bit 4  :   KEY_USAGE   - If set, the memory slot holds a MAC key; otherwise, it holds an encryption key.<br>
                                                       Bit 5  :   WILDCARD    - If set, the memory slot cannot be updated with the wildcard UID.<br>
                                                       For example "63" means that all bits are set  
                                                                      
                                               </p>
                                              </html>
                                          ]]>
                                      </a:v>
                                    </a:a>
                                    
                                    <a:a name="COLUMN_TITLE" value="KeySecurityFlag"/>
                                    <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                         type="IMPLEMENTATIONCONFIGCLASS">
                                        <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                                    </a:a>
                                    <a:a name="UUID" 
                                       value="ECUC:14aad210-43a3-5ede-5af2-f3b1656fced6"/>
                                    <a:a name="ORIGIN" value="NXP"/>
                                    <a:da name="DEFAULT" type = "XPath" expr = "node:range(.)[num:i(node:fallback(node:current()/../@index, num:i(0)) + 1)]" />
                                    <a:da name="DEFAULT" value="WILDCARD"/>
                                    <a:da name="INVALID" type="XPath">
                                        <a:tst expr="text:uniq(../../*/CryptoKeyMask, .)"
                                        false="Duplicated value, CryptoKeyMask must be unique."/>
                                    </a:da>
                                </v:var>
                              </v:ctr>  
                              
                        </v:lst> 

                        </v:ctr>
                      </v:lst>
                    </v:ctr>
                    
                    <!-- @implements CryptoKeyTypes_Object -->
                    <v:ctr name="CryptoKeyTypes" type="IDENTIFIABLE">
                      <a:a name="DESC" 
                           value="EN: Container for CRYPTO key types"/>
                      <a:a name="OPTIONAL" value="true"/>
                      <a:a name="UUID" 
                           value="ECUC:f4aad910-b3a3-4ede-baa2-73b16566ced6"/>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                           type="IMPLEMENTATIONCONFIGCLASS">
                        <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                      </a:a>
                      <v:lst name="CryptoKeyType" type="MAP">
                        <a:da name="MIN" value="1"/>
                         <a:a name="COLUMNS"> 
                         <a:v>CryptoKeyType</a:v>
                         <a:v>CryptoKeyElementRef</a:v>
                       </a:a>
                                            
                        <!-- @implements CryptoKeyType_Object -->
                        <v:ctr name="CryptoKeyType" type="IDENTIFIABLE">
                          <a:a name="DESC" 
                               value="EN: Configuration of a CryptoKeyType"/>
                          <a:a name="UUID" 
                               value="ECUC:10a54a5d-0b25-4b73-9bbf-4c9ea7a093a9"/>
                          <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v class="PreCompile">VariantPreCompile</icc:v>
                          </a:a>
                          <v:lst name="CryptoKeyElementRef">
                            <a:da name="MIN" value="1"/>
                            
                            <!-- @implements CryptoKeyElementRef_Object -->
                            <v:ref name="CryptoKeyElementRef" type="REFERENCE">
                              <a:a name="DESC" 
                                   value="EN: Refers to a pointer in the CRYPTOCrypto Key Element, which holds the data of the crypto key element."/>
                              <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                   type="IMPLEMENTATIONCONFIGCLASS">
                                <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                                <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                              </a:a>
                              <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                              <a:a name="SCOPE" value="LOCAL"/>
                              <a:a name="UUID" 
                                   value="ECUC:1846dd86-ac67-46fa-a9fc-0fd997b527b2"/>
                              <a:da name="REF" 
                                    value="ASPathDataOfSchema:/AUTOSAR/EcucDefs/Crypto/CryptoKeyElements/CryptoKeyElement"/>
                              <a:da name="RANGE" type="XPath">
                                <a:tst expr="node:paths(../../CryptoKeyElement/*)"/> <!-- Select for reference only the options available inside the CryptoKeyElement -->
                              </a:da>
                              <a:da name="INVALID" type="XPath">
                                <a:tst expr="node:refvalid(.)" 
                                        false="The configured node does not exist or may not be referenced."/>                                          
                              </a:da>
                            </v:ref>
                          </v:lst>
                        </v:ctr>
                      </v:lst>
                    </v:ctr>
                    
                    <!-- @implements CryptoKeys_Object -->
                    <v:ctr name="CryptoKeys" type="IDENTIFIABLE">
                      <a:a name="DESC" value="EN: Container for CRYPTO keys"/>
                      <a:a name="OPTIONAL" value="true"/>
                      <a:a name="UUID" 
                           value="ECUC:f1a40c6c-7039-b372-a45f-1c39c3f0860c"/>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                      </a:a>
                      <v:lst name="CryptoKey" type="MAP">
                        <a:da name="MIN" value="1"/>
                         <a:a name="COLUMNS"> 
                         <a:v>CryptoKey</a:v>
                         <a:v>CryptoKeyDeriveIterations</a:v>
                         <a:v>CryptoKeyId</a:v>
                         <a:v>CryptoKeyTypeRef</a:v>
                       </a:a>
                           
                        <!-- @implements CryptoKey_Object -->
                        <v:ctr name="CryptoKey" type="IDENTIFIABLE">
                          <a:a name="DESC" 
                               value="EN: Configuration of a CryptoKey"/>
                          <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                          </a:a>
                          <a:a name="UUID" 
                               value="ECUC:fd39e0fa-f470-420a-12b9-c290a22800f2"/>
                               
                          <!-- @implements CryptoKeyDeriveIterations_Object -->
                          <v:var name="CryptoKeyDeriveIterations" type="INTEGER">
                            <a:a name="DESC" 
                                 value="EN: Holds the number of iterations to be performed by the key derivation primitive"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:f8deaa59-a747-4076-b9db-7d8e39108aba"/>
                            <a:da name="DEFAULT" value="1"/>
                            <a:da name="INVALID" type="Range">
                              <a:tst expr="&lt;=4294967295"/>
                              <a:tst expr="&gt;=1"/>
                            </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoKeyId_Object -->
                          <v:var name="CryptoKeyId" type="INTEGER">
                            <a:a name="DESC" 
                                 value="EN: Identifier of the CRYPTO Key"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="true"/>
                            <a:a name="UUID" 
                                 value="ECUC:12238a60-a4ed-4f47-9676-8f68b5a68c96"/>
                            <a:da name="DEFAULT" type="XPath" expr="num:i(node:fallback(node:current()/../@index, num:i(1)) + 1)" />
                            <a:da name="RANGE" type="XPath">
                                <a:tst expr="text:uniq(../../*/CryptoKeyId, .)"
                                false="Duplicated value, CryptoKeyId must be unique."/>
                            </a:da>
                            <a:da name="INVALID" type="Range">
                              <a:tst expr="&lt;=4294967295"/>
                              <a:tst expr="&gt;=1"/>
                            </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoKeyTypeRef_Object -->
                          <v:ref name="CryptoKeyTypeRef" type="REFERENCE">
                            <a:a name="DESC" 
                                 value="EN: Refers to a pointer in the CRYPTOto a CryptoKeyType. The CryptoKeyType provides the information which key elements are contained in a CryptoKey."/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="UUID" 
                                 value="ECUC:f68f7fcd-0b36-48c7-908e-7b3bd4b1bf12"/>
                            <a:da name="REF" 
                                  value="ASPathDataOfSchema:/AUTOSAR/EcucDefs/Crypto/CryptoKeyTypes/CryptoKeyType"/>
                          <a:da name="RANGE" type="XPath">
                                <a:tst expr="node:paths(../CryptoKeyType/*)"/> <!-- Select for reference only the options available inside the CryptoKeyType -->
                          </a:da>
                          <a:da name="INVALID" type="XPath">
                                <a:tst expr="node:refvalid(.)" 
                                        false="The configured node does not exist or may not be referenced."/>                                          
                          </a:da>                        
                          </v:ref>
                        </v:ctr>
                      </v:lst>
                    </v:ctr>
                    
                  <v:lst name="CryptoPrimitives" type="MAP">
                  <a:a name="COLUMNS"> 
                   <a:v>CryptoPrimitives</a:v>
                  </a:a>
                  
                    <!-- @implements CryptoPrimitives_Object -->
                    <v:ctr name="CryptoPrimitives" type="IDENTIFIABLE">
                      <a:a name="DESC" 
                           value="EN: Container for CRYPTO primitives"/>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                           type="IMPLEMENTATIONCONFIGCLASS">
                        <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="UUID" 
                           value="ECUC:f08c73fd-56b3-4938-ad9d-f21ecf987356"/>
      
                      <v:lst name="CryptoPrimitive" type="MAP">
                       <a:a name="COLUMNS"> 
                         <a:v>CryptoPrimitive</a:v>
                         <a:v>CryptoPrimitiveAlgorithmFamily</a:v>
                         <a:v>CryptoPrimitiveAlgorithmMode</a:v>
                         <a:v>CryptoPrimitiveAlgorithmSecondaryFamily</a:v>
                         <a:v>CryptoPrimitiveService</a:v>
                       </a:a> 
                       
                        <!-- @implements CryptoPrimitive_Object -->
                        <v:ctr name="CryptoPrimitive" type="IDENTIFIABLE">
                          <a:a name="DESC" 
                               value="EN: Configuration of a CryptoPrimitive"/>
                          <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                               type="IMPLEMENTATIONCONFIGCLASS">
                            <icc:v mclass="PreCompile">VariantPreCompile</icc:v>
                          </a:a>
                          <a:a name="UUID" 
                               value="ECUC:2111d06f-8a89-2297-8805-9a26208d5279"/>
                               
                          <!-- @implements CryptoPrimitiveAlgorithmFamily_Object -->
                          <v:var name="CryptoPrimitiveAlgorithmFamily" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Determines the algorithm family used for the crypto service"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:1ba3ac89-62cf-437c-8742-b6338b0181f9"/>
                            <a:da name="RANGE">
                              <a:v>CRYPTO_ALGOFAM_AES</a:v>
                              <a:v>CRYPTO_ALGOFAM_CUSTOM</a:v>
                              <a:v>CRYPTO_ALGOFAM_NOT_SET</a:v>
                              <a:v>CRYPTO_ALGOFAM_RNG</a:v>
                              <a:v>CRYPTO_ALGOFAM_CUSTOM_MP_COMP</a:v>
                              <a:v>CRYPTO_ALGOFAM_SHA2_256</a:v>
                            </a:da>
                            <a:da name="DEFAULT" value="CRYPTO_ALGOFAM_NOT_SET"/>
                            <a:da name="INVALID" type="XPath">
                              <a:tst expr="(
                                           (
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'ENCRYPT') or
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'DECRYPT')
                                            )
                                            and
                                            (
                                              (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_AES') and
                                              (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_CUSTOM')
                                            )
                                           )"
                                  true="ENCRYPT and DECRYPT support: CRYPTO_ALGOFAM_AES, CRYPTO_ALGOFAM_CUSTOM. "/>
                              <a:tst expr="(
                                            (
                                              (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'MAC_GENERATE') or
                                              (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'MAC_VERIFY')
                                            )
                                            and
                                            (
                                              (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_AES') and
                                              (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_CUSTOM') and
                                              (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_RNG')
                                            )
                                           )"
                                  true="MAC_GENERATE, MAC_VERIFY support: CRYPTO_ALGOFAM_AES, CRYPTO_ALGOFAM_CUSTOM, CRYPTO_ALGOFAM_RNG."/>
                            <a:tst expr="(
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'RANDOM')
                                            and
                                            (
                                            (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_NOT_SET') and
                                            (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_RNG') and
                                            (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_CUSTOM')
                                            )
                                           )"
                                  true="For RANDOM please choose CRYPTO_ALGOFAM_NOT_SET, CRYPTO_ALGOMODE_NOT_SET"/>
                            <a:tst expr="(
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'CRYPTO_HASH')
                                            and
                                            (
                                            (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_NOT_SET') and
                                            (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_CUSTOM_MP_COMP') and 
                                            (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_CUSTOM') and 
                                            (node:fallback(., 'CRYPTO_ALGOFAM_AES') != 'CRYPTO_ALGOFAM_SHA2_256')
                                            )
                                           )"
                                  true="For Hash please choose CRYPTO_ALGOFAM_CUSTOM_MP_COMP or CRYPTO_ALGOFAM_SHA2_256"/>
                          </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoPrimitiveAlgorithmMode_Object -->
                          <v:var name="CryptoPrimitiveAlgorithmMode" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Determines the algorithm mode used for the crypto service"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:f9fbbf04-ecfb-495a-9de3-5f9340a02e40"/>
                            <a:da name="RANGE">
                              <a:v>CRYPTO_ALGOMODE_CBC</a:v>
                              <a:v>CRYPTO_ALGOMODE_CMAC</a:v>
                              <a:v>CRYPTO_ALGOMODE_CUSTOM</a:v>
                              <a:v>CRYPTO_ALGOMODE_ECB</a:v>
                              <a:v>CRYPTO_ALGOMODE_NOT_SET</a:v>
                              <a:v>CRYPTO_ALGOMODE_RSASSA_PKCS1_v1_5</a:v>
                            </a:da>
                            <a:da name="DEFAULT" value="CRYPTO_ALGOMODE_NOT_SET"/>
                            <a:da name="INVALID" type="XPath">
                            <a:tst expr="(
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'RANDOM')
                                            and
                                            (
                                            (node:fallback(., 'CRYPTO_ALGOMODE_NOT_SET') != 'CRYPTO_ALGOMODE_NOT_SET') and
                                            (node:fallback(., 'CRYPTO_ALGOMODE_NOT_SET') != 'CRYPTO_ALGOMODE_CUSTOM')
                                            )
                                           )"
                                  true="For RANDOM please choose CRYPTO_ALGOFAM_NOT_SET, CRYPTO_ALGOMODE_NOT_SET"/>                                    
                            <a:tst expr="(
                                           (
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'ENCRYPT') or
                                            (node:fallback(../CryptoPrimitiveService, 'DECRYPT') = 'DECRYPT')
                                            )
                                            and
                                            (node:fallback(../CryptoPrimitiveAlgorithmFamily, 'CRYPTO_ALGOFAM_AES') = 'CRYPTO_ALGOFAM_AES')
                                            and
                                            (
                                                (node:fallback(., 'CRYPTO_ALGOMODE_NOT_SET') != 'CRYPTO_ALGOMODE_CBC') and
                                                (node:fallback(., 'CRYPTO_ALGOMODE_NOT_SET') != 'CRYPTO_ALGOMODE_ECB')
                                            )
                                           )"
                                  true="For ENCRYPT/DECRYPT AES mode please select ECB, CBC."/>
                            <a:tst expr="(
                                           (
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'MAC_GENERATE') or
                                            (node:fallback(../CryptoPrimitiveService, 'DECRYPT') = 'MAC_VERIFY')
                                            )
                                            and
                                            (
                                            (node:fallback(../CryptoPrimitiveAlgorithmFamily, 'CRYPTO_ALGOFAM_3DES') = 'CRYPTO_ALGOFAM_AES')
                                            )
                                            and
                                            (
                                                (node:fallback(., 'CRYPTO_ALGOMODE_NOT_SET') != 'CRYPTO_ALGOMODE_CMAC') and
                                                (node:fallback(., 'CRYPTO_ALGOMODE_NOT_SET') != 'CRYPTO_ALGOMODE_CUSTOM') and
                                                (node:fallback(., 'CRYPTO_ALGOMODE_NOT_SET') != 'CRYPTO_ALGOMODE_NOT_SET')
                                            )
                                           )"
                                  true="For MAC_GENERATE or MAC_VERIFY, AES modes, please select: CMAC, CUSTOM, NOT_SET as CryptoPrimitiveAlgorithmMode."/>
                          </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoPrimitiveAlgorithmSecondaryFamily_Object -->
                          <v:var name="CryptoPrimitiveAlgorithmSecondaryFamily" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Determines the algorithm secondary family used for the crypto service"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:1a685378-f161-4118-9ad1-c88293979e9d"/>
                            <a:da name="RANGE">
                              <a:v>CRYPTO_ALGOFAM_AES</a:v>
                              <a:v>CRYPTO_ALGOFAM_CUSTOM</a:v>
                              <a:v>CRYPTO_ALGOFAM_NOT_SET</a:v>
                              <a:v>CRYPTO_ALGOFAM_RNG</a:v>
                            </a:da>
                          <a:da name="DEFAULT" value="CRYPTO_ALGOFAM_NOT_SET"/>
                          <a:da name="INVALID" type="XPath">
                            <a:tst expr="(
                                           (
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'RANDOM') or
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'ENCRYPT') or
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'DECRYPT') or
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'MAC_GENERATE') or
                                            (node:fallback(../CryptoPrimitiveService, 'ENCRYPT') = 'MAC_VERIFY')
                                            )
                                            and
                                            (
                                            (node:fallback(., 'CRYPTO_ALGOFAM_NOT_SET') != 'CRYPTO_ALGOFAM_NOT_SET') and
                                            (node:fallback(., 'CRYPTO_ALGOFAM_NOT_SET') != 'CRYPTO_ALGOFAM_CUSTOM')
                                            )
                                           )"
                                  true="For RANDOM, ENCRYPT, DECRYPT, MAC_GENERATE, MAC_VERIFY please choose CRYPTO_ALGOFAM_NOT_SET, CRYPTO_ALGOFAM_CUSTOM for CryptoPrimitiveAlgorithmSecondaryFamily."/>                               
                          </a:da>
                          </v:var>
                          
                          <!-- @implements CryptoPrimitiveService_Object -->
                          <v:var name="CryptoPrimitiveService" type="ENUMERATION">
                            <a:a name="DESC" 
                                 value="EN: Determines the crypto service used for defining the capabilities"/>
                            <a:a name="IMPLEMENTATIONCONFIGCLASS" 
                                 type="IMPLEMENTATIONCONFIGCLASS">
                              <icc:v vclass="PreCompile">VariantPreCompile</icc:v>
                            </a:a>
                            <a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
                            <a:a name="SCOPE" value="LOCAL"/>
                            <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                            <a:a name="UUID" 
                                 value="ECUC:15750a9c-2708-4203-bc13-2e2a104ee4be"/>
                            <a:da name="DEFAULT" value="RANDOM"/>
                            <a:da name="RANGE">
                              <a:v>DECRYPT</a:v>
                              <a:v>ENCRYPT</a:v>
                              <a:v>MAC_GENERATE</a:v>
                              <a:v>MAC_VERIFY</a:v>
                              <a:v>RANDOM</a:v>
                              <a:v>HASH</a:v>
                            </a:da>
                          </v:var>
                        </v:ctr>
                      </v:lst>
                    </v:ctr>
                  </v:lst>
                
              <!-- @implements CommonPublishedInformation_Object -->
              <v:ctr name="CommonPublishedInformation" type="IDENTIFIABLE">
                  <a:a name="LABEL" value="Common Published Information"/>
                  <a:a name="DESC">
                      <a:v>
                          <![CDATA[EN:
                              <html>
                              <p>Common container, aggregated by all modules. It contains published information about vendor and versions.</p>
                              </html>
                          ]]>
                      </a:v>
                  </a:a>
                  <a:a name="UUID" value="ECUC:9956f1f1-bff6-45ea-a7e9-ccaa70599727"/>
                
                  <v:var name="ArReleaseMajorVersion" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="AUTOSAR Major Version"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Vendor specific: Major version number of AUTOSAR specification on which the appropriate implementation is based on.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:66b8f123-9bf5-4365-a866-6c1beaaa2a9f"/>
                      <a:da name="DEFAULT" value="4"/>                       
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=4"/>
                          <a:tst expr="&lt;=4"/>
                      </a:da>                    
                  </v:var>
                
                  <v:var name="ArReleaseMinorVersion" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="AUTOSAR Minor Version"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Vendor specific: Minor version number of AUTOSAR specification on which the appropriate implementation is based on.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:d21a16d5-553c-4da2-893d-11edcc80e3f2"/>
                      <a:da name="DEFAULT" value="3"/>                       
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=3"/>
                          <a:tst expr="&lt;=3"/>
                      </a:da>                    
                  </v:var>
                
                  <v:var name="ArReleaseRevisionVersion" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="AUTOSAR Patch Version"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Vendor specific: Patch version number of AUTOSAR specification on which the appropriate implementation is based on.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:b676214d-048d-4372-9e45-1120274094e9"/>
                      <a:da name="DEFAULT" value="1"/>                       
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=1"/>
                          <a:tst expr="&lt;=1"/>
                      </a:da>  
                  </v:var>
                
                  <v:var name="ModuleId" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="Numeric Module ID"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Vendor specific: Module ID of this module.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:81e50058-1c3a-464f-88c2-14534833f201"/>
                      <a:da name="DEFAULT" value="114"/>
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=114"/>
                          <a:tst expr="&lt;=114"/>
                      </a:da>                          
                  </v:var>
                
                  <v:var name="SwMajorVersion" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="Software Major Version"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Major version number of the vendor specific implementation of the module. The numbering is vendor specific.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:f7e52441-a341-495d-a311-56319dbe48ab"/>
                      <a:da name="DEFAULT" value="1"/>
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=1"/>
                          <a:tst expr="&lt;=1"/>
                      </a:da>                          
                  </v:var>
                
                  <v:var name="SwMinorVersion" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="Software Minor Version"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Minor version number of the vendor specific implementation of the module. The numbering is vendor specific.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:9023bc4f-82f2-4011-bc46-6228805c7e78"/>
                      <a:da name="DEFAULT" value="0"/>
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=0"/>
                          <a:tst expr="&lt;=0"/>
                      </a:da>                             
                  </v:var>
                
                  <v:var name="SwPatchVersion" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="Software Patch Version"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Patch level version number of the vendor specific implementation of the module. The numbering is vendor specific.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                     </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:16c1307a-4de3-4609-82f6-7e1100f78160"/>
                      <a:da name="DEFAULT" value="0"/>
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=0"/>
                          <a:tst expr="&lt;=0"/>
                      </a:da>                            
                  </v:var>
                
                  <v:var name="VendorApiInfix" type="STRING_LABEL">
                      <a:a name="LABEL" value="Vendor Api Infix"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>In driver modules which can be instantiated several times on a single ECU, BSW00347 requires that the name of APIs is extended by the VendorId and a vendor specific name.
                                  This parameter is used to specify the vendor specific name. In total, the implementation specific name is generated as follows:
                                  &lt;ModuleName&gt;_&gt;VendorId&gt;_&lt;VendorApiInfix&gt;&lt;Api name from SWS&gt;.
                                  E.g.  assuming that the VendorId of the implementor is 123 and the implementer chose a VendorApiInfix of &quot;v11r456&quot; a api name Can_Write defined in the SWS will translate to Can_123_v11r456Write.
                                  This parameter is mandatory for all modules with upper multiplicity &gt; 1. It shall not be used for modules with upper multiplicity =1.
                                  </p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                         <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:c2017351-3b3d-4fb6-b504-7792754b1fc2"/>
                      <a:da name="DEFAULT" value=""/>
                      <a:a name="OPTIONAL" value="true"/>
                      <a:da name="READONLY" value="true"/>
                  </v:var>
                
                  <v:var name="VendorId" type="INTEGER_LABEL">
                      <a:a name="LABEL" value="Vendor ID"/>
                      <a:a name="DESC">
                          <a:v>
                              <![CDATA[EN:
                                  <html>
                                  <p>Vendor ID of the dedicated implementation of this module according to the AUTOSAR vendor list.</p>
                                  </html>
                              ]]>
                          </a:v>
                      </a:a>
                      <a:a name="IMPLEMENTATIONCONFIGCLASS" type="IMPLEMENTATIONCONFIGCLASS">
                          <icc:v class="PublishedInformation">VariantPreCompile</icc:v>
                      </a:a>
                      <a:a name="ORIGIN" value="NXP"/>
                      <a:a name="SYMBOLICNAMEVALUE" value="false"/>
                      <a:a name="UUID" value="ECUC:6e8602ce-59d0-4f63-924d-3411dd0fbe7f"/>
                      <a:da name="DEFAULT" value="43"/>
                      <a:da name="INVALID" type="Range">
                          <a:tst expr="&gt;=43"/>
                          <a:tst expr="&lt;=43"/>
                      </a:da>                            
                  </v:var>                  
              </v:ctr>
             <d:ref type="REFINED_MODULE_DEF" value="ASPath:/AUTOSAR/EcucDefs/Crypto"/>              
            </v:ctr>
          </d:chc>
        <d:chc name="M4_XDM_AR_MODULE_NAME_EcuParameterDefinition" 
             type="AR-ELEMENT" value="ECU_PARAMETER_DEFINITION">
        <d:ctr type="AR-ELEMENT">
          <a:a name="UUID" value="ECUC:f23762d6-4749-4f48-a7b5-c2cb915659ca"/>
          <a:a name="DEF" 
               value="ASPath:/AR_PACKAGE_SCHEMA/ECU_PARAMETER_DEFINITION"/>
          <d:lst name="MODULE_REF">
            <d:ref type="MODULE_REF" value="ASPath:/TS_T2D41M10I0R0/Crypto"/>
          </d:lst>
        </d:ctr>
        </d:chc>
          <d:chc name="Crypto_ModuleDescription" type="AR-ELEMENT" value="BSW_MODULE_DESCRIPTION">
            <d:ctr type="AR-ELEMENT">
                <a:a name="DEF"
                    value="ASPath:/AR_PACKAGE_SCHEMA/BSW_MODULE_DESCRIPTION"/>
                <d:var name="MODULE_ID" type="INTEGER" >
                    <a:a name="EDITABLE" value="false"/>
                    <a:a name="IMPORTER_INFO" value="@DEF"/>
                </d:var>
                <d:ref type="RECOMMENDED_CONFIGURATION" >
                    <a:a name="EDITABLE" value="false"/>
                    <a:a name="IMPORTER_INFO" value="@DEF"/>
                </d:ref>
                <d:ref type="PRE_CONFIGURED_CONF" >
                    <a:a name="EDITABLE" value="false"/>
                    <a:a name="IMPORTER_INFO" value="@DEF"/>
                </d:ref>
                <d:ref type="VENDOR_SPECIFIC_MODULE_DEF"
                    value="ASPath:/TS_T2D41M10I0R0/Crypto"/>
            </d:ctr>
          </d:chc>
        </d:lst>
      </d:ctr>
    </d:lst>
  </d:ctr>

</datamodel>
