[TWDAPI-172] Web TEF API (GlobalPlaform) documentation. 78/151378/20
authorKrzysztof Dynowski <k.dynowski@samsung.com>
Wed, 20 Sep 2017 15:34:56 +0000 (17:34 +0200)
committerKrzysztof Dynowski <k.dynowski@samsung.com>
Fri, 6 Oct 2017 08:14:05 +0000 (10:14 +0200)
Change-Id: I85fde8db7b42b7cef2290809f8dfec59c18fee5f

14 files changed:
org.tizen.guides/html/index.htm
org.tizen.guides/html/web/security/libteec_w.htm [new file with mode: 0644]
org.tizen.guides/html/web/security/security_cover_w.htm
org.tizen.guides/index.xml
org.tizen.training/html/web/details/app_filtering_w.htm
org.tizen.training/html/web/details/sec_privileges_w.htm
org.tizen.web.apireference/html/device_api/mobile/index.html
org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html [new file with mode: 0755]
org.tizen.web.apireference/html/device_api/mobile/tizen/systeminfo_capability_keys.html
org.tizen.web.apireference/html/device_api/tv/index.html
org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html [new file with mode: 0755]
org.tizen.web.apireference/html/device_api/wearable/index.html
org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html [new file with mode: 0644]
org.tizen.web.apireference/html/index.htm

index af33a24..054b7cf 100644 (file)
                <li><a href="web/security/security_cover_w.htm" target="content">Security</a>
                        <ul>
                                <li><a href="web/security/secure_key_w.htm" target="content">Secure Key Management</a></li>
+                               <li><a href="web/security/libteec_w.htm" target="content">TEE Communication</a></li>
                        </ul>
                </li>
                <li><a href="web/error/error_w.htm" target="content">Error Handling</a></li>
diff --git a/org.tizen.guides/html/web/security/libteec_w.htm b/org.tizen.guides/html/web/security/libteec_w.htm
new file mode 100644 (file)
index 0000000..8b4bb05
--- /dev/null
@@ -0,0 +1,242 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+       <title>TEE Communication</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile Web" src="../../images/mobile_s_w.png"/> <img alt="Wearable Web" src="../../images/wearable_s_w.png"/> <img alt="TV Web" src="../../images/tv_s_w.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Dependencies</p>
+               <ul class="toc">
+                       <li>Tizen 4.0 and Higher for Mobile</li>
+                       <li>Tizen 4.0 and Higher for Wearable</li>
+                       <li>Tizen 4.0 and Higher for TV</li>
+               </ul>
+        <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li><a href="#connecting">Connecting Applications</a></li>
+                       <li><a href="#secure_commands">Sending Secure Commands</a></li>
+                       <li><a href="#shared_memory">Using Shared Memory</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html">LibTeec API for Mobile Web</a></li>
+            <li><a href="../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html">LibTeec API for Wearable Web</a></li>
+            <li><a href="../../../../org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html">LibTeec API for TV Web</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>TEE Communication</h1>
+<p>You can create secure communications by executing your application in a trusted execution environment (TEE), and communicating with other applications within that environment. To implement TEE communication, you can use the LibTeec API, which is based on the GlobalPlatform&reg; <a href="https://www.globalplatform.org/specificationsdevice.asp" target="_blank">TEE Client API</a>.</p>
+
+<p>You can run applications in 2 environments: a rich environment (like Linux) with client applications (CA) and a secure environment with trusted applications (TA).</p>
+<p align="center"><strong>Figure: TEE communication architecture</strong></p>
+<p align="center"><img alt="TEE communication architecture" src="../../images/libteec_architecture.png" /></p>
+
+<p>The main features of the LibTeec API include:</p>
+<ul>
+<li>Connecting to a trusted application
+<p>You can securely <a href="#connecting">connect to a trusted application</a> by creating a new session.</p></li>
+<li>Sending commands to a trusted application
+<p>You can <a href="#secure_commands">pass commands from a client application to a trusted application</a>, including <a href="#shared_memory">using shared memory blocks</a>.</p></li>
+</ul>
+<div class="note">
+<strong>Note</strong>
+For security reasons, each device vendor usually uses their own TEE solution. If you intend your LibTeec application to be used on a real device, you must test your application on the TEE solution provided by the specific vendor. When developing and installing your trusted application, refer to the documentation provided by the vendor.
+</div>
+
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To enable your application to use the TEE communication functionality:</p>
+<ul><li>To use the LibTeec API, the application has to request permission by adding the following privilege to the <code>config.xml</code> file:
+<pre class="prettyprint">
+&lt;tizen:privilege name="http://tizen.org/privilege/tee.client"/&gt;
+</pre>
+<div class="note">
+<strong>Note</strong>
+To be able to use this privilege, your application must be signed with a partner-level certificate.
+</div>
+</li>
+<li>The trusted applications must be placed in a non-secure application install or resource directory before they can be discovered and transferred to the TEE.</li>
+</ul>
+
+<h2 id="connecting">Connecting Applications</h2>
+<p>To connect a client application to a trusted application, first create a new TEE context with the <code>getContext()</code> method, and then open a session with the trusted application with the <code>openSession()</code> method of the context, identifying the trusted application by its UUID:</p>
+<div class="note">
+<strong>Note</strong>
+A client application can connect only to its own trusted application. Built-in security rules prevent connecting to other trusted applications.
+</div>
+<pre class="prettyprint">
+try {
+    function sessionSuccess(session) {
+        /* Session opened, the application can now communicate with the trusted application */
+        console.log('session opened');
+
+        session.close();
+    }
+
+    function sessionError(err) {
+        console.log('openSession: ' + err.name + ': ' + err.message);
+    }
+
+    var ta = '123e4567-e89b-12d3-a456-426655440000'; /* UUID of the trusted application */
+    var ctx = tizen.teec.getContext();
+
+    ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+} catch (err) {
+    console.log(err.name + ': ' + err.message);
+}
+</pre>
+
+<h2 id="secure_commands">Sending Secure Commands</h2>
+<p>After opening a session with a trusted application, a client application can execute methods in the trusted application by sending secure commands to the trusted application.</p>
+<p>To send a command, use the <code>invokeCommand()</code> method, with the first parameter identifying the method to be executed by the trusted application, and the second parameter containing an array of the executable method's parameters. The parameter array can have at most 4 elements.</p>
+<p>You can use 3 types of objects in the parameters array:</p>
+<ul>
+<li><code>TeecValue</code> object (in <a href="../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html#TeecValue">mobile</a>, <a href="../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html#TeecValue">wearable</a>, and <a href="../../../../org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html#TeecValue">TV</a> applications), which contains 1 or 2 simple integers.</li>
+<li><code>TeecTempMemory</code> object (in <a href="../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html#TeecTempMemory">mobile</a>, <a href="../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html#TeecTempMemory">wearable</a>, and <a href="../../../../org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html#TeecTempMemory">TV</a> applications), which contains a local memory reference.</li>
+<li><code>TeecRegisteredMemory</code> object (in <a href="../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html#TeecRegisteredMemory">mobile</a>, <a href="../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html#TeecRegisteredMemory">wearable</a>, and <a href="../../../../org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html#TeecRegisteredMemory">TV</a> applications), which contains a registered shared memory reference.</li>
+</ul>
+<pre class="prettyprint">
+try {
+    var gSession;
+
+    function commandError(err) {
+        gSession.close();
+    }
+
+    function commandSuccess(cmd, params) {
+        console.log('command ' + cmd + ': ', params);
+        gSession.close();
+    }
+
+    function sessionSuccess(session) {
+        /* Session opened, the application can now communicate with the trusted application */
+        gSession = session;
+        var data = [1,2,3,4,45,6,7,7,7];
+        var p1 = new TeecValue(10, 100); /* Integer parameters */
+        var p2 = new TeecTempMemory(data); /* Temporary memory reference parameter */
+        session.invokeCommand(1, [p1, p2], commandSuccess, commandError);
+    }
+
+    function sessionError(err) {
+        console.log('openSession: ' + err.name + ': ' + err.message);
+    }
+
+    var ta = '123e4567-e89b-12d3-a456-426655440000';
+    var ctx = tizen.teec.getContext();
+    val cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+} catch (err) {
+    console.log(err.name + ': ' + err.message);
+}
+</pre>
+
+<h2 id="shared_memory">Using Shared Memory</h2>
+<p>You can handle a block of data without copying it to and from the trusted environment. For example, the client application can share a block of encrypted data from a data provider with the trusted application, and the trusted application can decrypt it.</p>
+
+<p>To share a memory block between a client application and a trusted application:</p>
+<ol>
+    <li>Allocate a new memory block as shared memory with the <code>allocateSharedMemory()</code> method:
+<pre class="prettyprint">
+try {
+    var gContext = tizen.teec.getContext();
+    var gCleanup = false;
+    var gSession = null;
+    var ta = '123e4567-e89b-12d3-a456-426655440000';
+    /* Allocate shared memory */
+    var gShm = ctx.allocateSharedMemory(1024*1024, TeecSharedMemoryFlags.INOUT);
+</pre>
+       </li>
+    <li>Fill the memory block with data from the data provider and create a new shared memory reference based on the memory block:
+
+<pre class="prettyprint">
+    function cleanup() {
+        if (gSession !== null) {
+            gSession.close();
+            gSession = null;
+        }
+        gContext.releaseSharedMemory(gShm);
+    }
+
+    function getNextBlockFromDataProvider() {
+        /* Fill the shared memory identified by gShm */
+    }
+
+    function commandError(err) {
+        if (gCleanup === true) cleanup();
+    }
+
+    function commandSuccess(cmd, params) {
+        console.log('command ' + cmd + ': ', params);
+        if (gCleanup === true) cleanup();
+    }
+
+    function sessionSuccess(session) {
+        /* Session opened, the application can now communicate with the trusted application */
+        gSession = session;
+
+        /* Get data from data provider */
+        while (getNextBlockFromDataProvider()) {
+            <span class="highlight">var p1 = new TeecRegisteredMemory(gShm, 0, gShm.size);  /* Shared memory reference parameter */</span>
+</pre>
+       </li>
+       <li>Pass the shared memory reference to the trusted application as a <code>TeecRegisteredMemory</code> object (in <a href="../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html#TeecRegisteredMemory">mobile</a>, <a href="../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html#TeecRegisteredMemory">wearable</a>, and <a href="../../../../org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html#TeecRegisteredMemory">TV</a> applications) in the parameter array of the <code>invokeCommand()</code> method:
+<pre class="prettyprint">
+            <span class="highlight">session.invokeCommand(1, [p1], commandSuccess, commandError);</span>
+        }
+        gCleanup = true;
+        session.invokeCommand(1, [], commandSuccess, commandError);
+    }
+
+    function sessionError(err) {
+        console.log('openSession: ' + err.name + ': ' + err.message);
+    }
+
+    gContext.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+} catch (err) {
+    console.log(err.name + ': ' + err.message);
+}
+</pre>
+       </li>
+</ol>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
index 3fae815..633c6bc 100644 (file)
 <div id="container"><div id="contents"><div class="content">
 <h1>Security</h1>
 
-<p>The security features introduce how you can store and recall data in a secure manner in your application.</p>
+<p>The security features introduce how you can store and recall data, and communicate with other applications in a secure manner in your application.</p>
 
-<p>You can use the following security features in your native applications:</p>
+<p>You can use the following security features in your Web applications:</p>
 <ul>
 <li><a href="secure_key_w.htm">Secure Key Management</a>
-
 <p>You can provide a secure repository for keys, certificates, and sensitive data related to users and their password-protected applications. You can also use secure cryptographic operations for non-exportable keys without revealing the key values to clients.</p></li>
+
+<li><a href="libteec_w.htm">TEE Communication</a>
+<p>You can create secure communications by executing your application in a trusted execution environment (TEE), and communicating with other applications within that environment.</p></li>
 </ul>
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
index 2a0f398..abb6a6f 100644 (file)
        </topic>
        <topic href="html/web/security/security_cover_w.htm" label="Security">
                <topic href="html/web/security/secure_key_w.htm" label="Secure Key Management"></topic>
+               <topic href="html/web/security/libteec_w.htm" label="TEE Communication"></topic>
        </topic>
        <topic href="html/web/error/error_w.htm" label="Error Handling"></topic>
        <topic href="html/web/w3c/w3c_cover_w.htm" label="W3C/HTML5/Supplementary Features">
index 3f95bd1..4544d90 100644 (file)
         <td>2.2.1</td>
     </tr>
 <tr>
+<td><code>http://tizen.org/feature/security.tee</code></td>
+     <td>Specify this key, if the application requires the Trusted Execution Environment feature.</td>
+     <td>4.0</td>
+    </tr>
+<tr>
 <td><code>http://tizen.org/feature/sensor.accelerometer</code></td>
      <td>Specify this key, if the application requires an acceleration sensor.</td>
         <td>4.0</td>
         <td>2.2.1</td>
     </tr>
 <tr>
+<td><code>http://tizen.org/feature/security.tee</code></td>
+     <td>Specify this key, if the application requires the Trusted Execution Environment feature.</td>
+     <td>4.0</td>
+    </tr>
+<tr>
 <td><code>http://tizen.org/feature/sensor.accelerometer</code></td>
      <td>Specify this key, if the application requires an acceleration sensor.</td>
         <td>4.0</td>
index 5eb7cfc..616218f 100644 (file)
@@ -396,6 +396,13 @@ tr.partner-level, tr.platform-level { background-color: #cff }
     <td>2.2.1</td>
        <td>The application can read system information.</td>
 </tr>
+<tr class="partner-level">
+       <td class="key">http://tizen.org/privilege/tee.client</td>
+       <td>partner</td>
+       <td>-</td>
+    <td>4.0</td>
+       <td>The application can communicate with a Trusted Application.</td>
+</tr>
 <tr>
        <td class="key">http://tizen.org/privilege/telephony</td>
        <td>public</td>
@@ -755,6 +762,13 @@ tr.partner-level, tr.platform-level { background-color: #cff }
     <td>2.2.1</td>
        <td>The application can read system information.</td>
 </tr>
+<tr class="partner-level">
+       <td class="key">http://tizen.org/privilege/tee.client</td>
+       <td>partner</td>
+       <td>-</td>
+    <td>4.0</td>
+       <td>The application can communicate with a Trusted Application.</td>
+</tr>
 <tr>
        <td class="key">http://tizen.org/privilege/telephony</td>
        <td>public</td>
@@ -862,6 +876,23 @@ tr.partner-level, tr.platform-level { background-color: #cff }
 </tbody>
 </table>
 
+<p align="center" class="Table"><strong>Table: TV Web Device API privileges</strong></p>
+<table>
+       <tbody>
+               <tr>
+                       <th>Privilege</th>
+                       <th>Level</th>
+                       <th>Since</th>
+                       <th>Description</th>
+               </tr>
+               <tr class="partner-level">
+                       <td class="key">http://tizen.org/privilege/tee.client</td>
+                       <td>partner</td>
+                       <td>4.0</td>
+                       <td>The application can communicate with a Trusted Application.</td>
+               </tr>
+       </tbody>
+</table>
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
 </div></div></div>
index 1403beb..e4a4d08 100644 (file)
                 <td>3.0</td>
                 <td>Mandatory</td>
                 <td>Yes</td>
+                </tr>
+
+                <tr><td><a href="tizen/libteec.html" data-origin="tizen" data-domain="pim" data-category="core" data-status="S" data-version="">
+                        LibTeec</a></td>
+                <td>This API provides interfaces and methods (LibTeec API) for a Trust Zone</td>
+                <td>4.0</td>
+                <td>Mandatory</td>
+                <td>Yes</td>
 
                 </tr></tbody></table><h4 id="Social">Social</h4>
              <table class="api-list"><thead><tr><th>API</th><th>Description</th><th>Version (Since)</th><th>Mobile</th><th>Supported on<br>Mobile Emulator</th></tr>
diff --git a/org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html b/org.tizen.web.apireference/html/device_api/mobile/tizen/libteec.html
new file mode 100755 (executable)
index 0000000..f69ad2e
--- /dev/null
@@ -0,0 +1,1510 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>LibTeec API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::LibTeec">
+<div class="supported-platforms"><img class="mobile-mandatory emulator" title="Mandatory, Supported by Tizen Mobile emulator" src="mobile_s_w.png"></div>
+<div class="title"><h1>LibTeec API</h1></div>
+<div class="brief">
+ The LibTeec API provides functionality to communicate with application executed in trusted environment.
+        </div>
+<div class="description">
+        <p>
+Libteec can be understood as a universal API for communication with trusted execution environment (TEE).
+This API follows GlobalPlatform (GP) specification.<br>The original documentation (TEE_Client_API_Specification-xxx.pdf)
+is available to download from <a href="https://www.globalplatform.org">GlobalPlatform.org</a> under <em>Device</em> section.
+        </p>
+        <p>
+The Libteec provides a set of functions for executing application in TrustZone and communicating with it.
+This way we have, so called, two worlds: rich world (like Linux) with Client Application (CA) and
+secure world with Trusted Application (TA).
+        </p>
+       </div>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc">
+<li>
+                    1.1. <a href="#TeecLoginMethod">TeecLoginMethod</a>
+</li>
+<li>
+                    1.2. <a href="#TeecValueType">TeecValueType</a>
+</li>
+<li>
+                    1.3. <a href="#TeecTempMemoryType">TeecTempMemoryType</a>
+</li>
+<li>
+                    1.4. <a href="#TeecRegisteredMemoryType">TeecRegisteredMemoryType</a>
+</li>
+<li>
+                    1.5. <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a>
+</li>
+<li>
+                    1.6. <a href="#TeecUuid">TeecUuid</a>
+</li>
+<li>
+                    1.7. <a href="#TeecTaskId">TeecTaskId</a>
+</li>
+</ul>
+</li>
+<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>2.1. <a href="#LibTeecManagerObject">LibTeecManagerObject</a>
+</li>
+<li>2.2. <a href="#LibTeecManager">LibTeecManager</a>
+</li>
+<li>2.3. <a href="#TeecContext">TeecContext</a>
+</li>
+<li>2.4. <a href="#TeecSession">TeecSession</a>
+</li>
+<li>2.5. <a href="#TeecSharedMemory">TeecSharedMemory</a>
+</li>
+<li>2.6. <a href="#TeecParameter">TeecParameter</a>
+</li>
+<li>2.7. <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a>
+</li>
+<li>2.8. <a href="#TeecTempMemory">TeecTempMemory</a>
+</li>
+<li>2.9. <a href="#TeecValue">TeecValue</a>
+</li>
+<li>2.10. <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a>
+</li>
+<li>2.11. <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a>
+</li>
+</ul>
+</li>
+<li>3. <a href="#api-features">Related Feature</a>
+</li>
+<li>4. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#LibTeecManagerObject">LibTeecManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#LibTeecManager">LibTeecManager</a></td>
+<td><div>
+<a href="#TeecContext">TeecContext</a> <a href="#LibTeecManager::getContext">getContext</a> (optional DOMString? name)</div></td>
+</tr>
+<tr>
+<td><a href="#TeecContext">TeecContext</a></td>
+<td>
+<div>
+<a href="#TeecTaskId">TeecTaskId</a> <a href="#TeecContext::openSession">openSession</a> (<a href="#TeecUuid">TeecUuid</a> taUUID, <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod, unsigned long? connectionData, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback, optional ? errorCallback)</div>
+<div>void <a href="#TeecContext::revokeCommand">revokeCommand</a> (<a href="#TeecTaskId">TeecTaskId</a> id)</div>
+<div>
+<a href="#TeecSharedMemory">TeecSharedMemory</a> <a href="#TeecContext::allocateSharedMemory">allocateSharedMemory</a> (unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags)</div>
+<div>
+<a href="#TeecSharedMemory">TeecSharedMemory</a> <a href="#TeecContext::registerSharedMemory">registerSharedMemory</a> (unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags)</div>
+<div>void <a href="#TeecContext::releaseSharedMemory">releaseSharedMemory</a> (<a href="#TeecSharedMemory">TeecSharedMemory</a> shm)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecSession">TeecSession</a></td>
+<td>
+<div>void <a href="#TeecSession::close">close</a> ()</div>
+<div>
+<a href="#TeecTaskId">TeecTaskId</a> <a href="#TeecSession::invokeCommand">invokeCommand</a> (long cmd, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback, optional ? errorCallback)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecSharedMemory">TeecSharedMemory</a></td>
+<td>
+<div>void <a href="#TeecSharedMemory::setData">setData</a> (byte[] data, unsigned long long offset)</div>
+<div>void <a href="#TeecSharedMemory::getData">getData</a> (byte[] data, unsigned long long offset)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecParameter">TeecParameter</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecRegisteredMemory">TeecRegisteredMemory</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecTempMemory">TeecTempMemory</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecValue">TeecValue</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a></td>
+<td><div>void <a href="#TeecOpenSuccessCallback::onsuccess">onsuccess</a> (<a href="#TeecSession">TeecSession</a> session)</div></td>
+</tr>
+<tr>
+<td><a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a></td>
+<td><div>void <a href="#TeecCommandSuccessCallback::onsuccess">onsuccess</a> (long cmd, <a href="#TeecParameter">TeecParameter</a>[] params)</div></td>
+</tr>
+</tbody>
+</table>
+<div class="typedefs" id="typedefs-section">
+<h2>1. Type Definitions</h2>
+<div class="enum" id="TeecLoginMethod">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecLoginMethod"></a><h3>1.1. TeecLoginMethod</h3>
+<div class="brief">
+ This type denotes Session Login Method used in OpenSession.
+          </div>
+<pre class="webidl prettyprint">  enum TeecLoginMethod {
+    "PUBLIC",
+    "USER",
+    "GROUP",
+    "APPLICATION"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <p>
+The following methods are supported:
+          </p>
+          <ul>
+            <li>
+PUBLIC - No login data is provided.            </li>
+            <li>
+USER - Login data about the user running the Client Application process is provided.            </li>
+            <li>
+GROUP - Login data about the group running the Client Application process is provided.            </li>
+            <li>
+APPLICATION - Login data about the running Client Application itself is provided.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecValueType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecValueType"></a><h3>1.2. TeecValueType</h3>
+<div class="brief">
+ This type denotes Value parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecValueType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as input.            </li>
+            <li>
+OUTPUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as output.            </li>
+            <li>
+INOUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecTempMemoryType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTempMemoryType"></a><h3>1.3. TeecTempMemoryType</h3>
+<div class="brief">
+ This type denotes TempMemory parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecTempMemoryType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as input.            </li>
+            <li>
+OUTPUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as output.            </li>
+            <li>
+INOUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecRegisteredMemoryType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecRegisteredMemoryType"></a><h3>1.4. TeecRegisteredMemoryType</h3>
+<div class="brief">
+ This type denotes RegisteredMemory parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecRegisteredMemoryType {
+    "WHOLE",
+    "PARTIAL_INPUT",
+    "PARTIAL_OUTPUT",
+    "PARTIAL_INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+WHOLE - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to the entire Shared Memory block.            </li>
+            <li>
+PARTIAL_INPUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as input.            </li>
+            <li>
+PARTIAL_OUTPUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as output.            </li>
+            <li>
+PARTIAL_INOUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecSharedMemoryFlags">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemoryFlags"></a><h3>1.5. TeecSharedMemoryFlags</h3>
+<div class="brief">
+ This type denotes SharedMemory access direction.
+          </div>
+<pre class="webidl prettyprint">  enum TeecSharedMemoryFlags {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be read.            </li>
+            <li>
+OUTPUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be written.            </li>
+            <li>
+INOUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be read and written.            </li>
+          </ul>
+         </div>
+</div>
+<div class="typedef" id="TeecUuid">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecUuid"></a><h3>1.6. TeecUuid</h3>
+<div class="brief">
+ This type contains a Universally Unique Resource Identifier (UUID) type as defined in RFC 4122.
+These UUID values are used to identify Trusted Applications.
+Example UUID strig representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+          </div>
+<pre class="webidl prettyprint">  typedef DOMString TeecUuid;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+<div class="typedef" id="TeecTaskId">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTaskId"></a><h3>1.7. TeecTaskId</h3>
+<div class="brief">
+ Background process id.
+          </div>
+<pre class="webidl prettyprint">  typedef unsigned long TeecTaskId;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+</div>
+<div class="interfaces" id="interfaces-section">
+<h2>2. Interfaces</h2>
+<div class="interface" id="LibTeecManagerObject">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManagerObject"></a><h3>2.1. LibTeecManagerObject</h3>
+<div class="brief">
+ The LibTeecObject interface gives access to the LibTeec API from the <em>tizen.teec</em> object.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface LibTeecManagerObject {
+    readonly attribute <a href="#LibTeecManager">LibTeecManager</a> teec;
+  };</pre>
+<pre class="webidl prettyprint">   implements <a href="#LibTeecManagerObject">LibTeecManagerObject</a>;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+<div class="interface" id="LibTeecManager">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManager"></a><h3>2.2. LibTeecManager</h3>
+<div class="brief">
+ The LibTeecManager interface provides methods to access Context and Session for GlobalPlatform libteec.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface LibTeecManager {
+
+    <a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name) raises ();
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <p>
+Once a context object is obtained, it is possible to open a session to Trusted Application (TA) .
+          </p>
+         </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="LibTeecManager::getContext">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManager::getContext"></a><code><b><span class="methodName">getContext</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Get TEE context by name.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">name</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ describes the TEE to connect to, when not given (or null) connects to default TEE.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ Context The created <em>TeecContext</em>              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext(); /* Get default TEE context */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecContext">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext"></a><h3>2.3. TeecContext</h3>
+<div class="brief">
+ This type denotes a TEE Context, the main logical container linking a Client Application with a particular TEE.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecContext {
+    <a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID,
+                           <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod,
+                           unsigned long? connectionData,
+                           <a href="#TeecParameter">TeecParameter</a>[] params,
+                           <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback,
+                           optional ? errorCallback) raises ();
+
+    void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm) raises ();
+  };</pre>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecContext::openSession">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::openSession"></a><code><b><span class="methodName">openSession</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Open session with TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID, <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod, unsigned long? connectionData, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback, optional ? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+            </p>
+            <ul>
+              <li>
+InvalidValuesError - If any of the input parameters contain an invalid value as decided by TA.              </li>
+              <li>
+OperationCanceledError - If it fails due to request cancellation              </li>
+              <li>
+AbortError - If any other error occurs.              </li>
+            </ul>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">taUUID</span>:
+ the UUID of destination TA.
+                </li>
+          <li class="param">
+<span class="name">loginMethod</span>:
+ the authentication algorithm see <a href="#TeecLoginMethod">TeecLoginMethod</a>.
+                </li>
+          <li class="param">
+<span class="name">connectionData</span><span class="optional"> [nullable]</span>:
+ the value required for login method or null.
+                </li>
+          <li class="param">
+<span class="name">params</span>:
+ the array of parameters (note. max is 4 items).
+                </li>
+          <li class="param">
+<span class="name">successCallback</span>:
+ callback function triggered when sucessfully done.
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ callback function triggered when error occured.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ TeecTaskId The id of scheduled task which can be used to revoke (see revokeCommand).
+              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     console.log("session opened");
+     /* ... */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::revokeCommand">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::revokeCommand"></a><code><b><span class="methodName">revokeCommand</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Revoke last operation identified by id.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">id</span>:
+ the identifier of scheduled task see openSession, invokeCommand
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   function commandSuccess(cmd, params)
+   {
+     console.log("command " + cmd + ": ", params);
+   }
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     var data = [1,2,3,4,45,6,7,7,7];
+     var p1 = new TeecValue(10, 100);    /* Command parameter 1 */
+     var p2 = new TeecTempMemory(data);  /* Command parameter 2 */
+     var id = session.invokeCommand(1, [p1, p2], commandSuccess);
+     ctx.revokeCommand(id); /* Cancel above command */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+   /* The cid can be used to revoke openSession request */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::allocateSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::allocateSharedMemory"></a><code><b><span class="methodName">allocateSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Allocate shared memory.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">size</span>:
+ the size of memory block to be allocated
+                </li>
+          <li class="param">
+<span class="name">flags</span>:
+ the access flags see SharedMemoryFlags
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.allocateSharedMemory(1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::registerSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::registerSharedMemory"></a><code><b><span class="methodName">registerSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Register shared memory.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">addr</span>:
+ the address of memory block to share
+                </li>
+          <li class="param">
+<span class="name">size</span>:
+ the size of memory block to be allocated
+                </li>
+          <li class="param">
+<span class="name">flags</span>:
+ the access flags see SharedMemoryFlags
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.registerSharedMemory(0x1234567, 1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::releaseSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::releaseSharedMemory"></a><code><b><span class="methodName">releaseSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint">void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Release shared memory, previously allocated or registered.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">shm</span>:
+ the shared memory description object
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.allocateSharedMemory(1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecSession">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession"></a><h3>2.4. TeecSession</h3>
+<div class="brief">
+ This type denotes a TEE Session, the logical link between Client Application and a particular Trusted Application.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecSession {
+    void close() raises ();
+
+    <a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd,
+                             <a href="#TeecParameter">TeecParameter</a>[] params,
+                             <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback,
+                             optional ? errorCallback) raises ();
+  };</pre>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecSession::close">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession::close"></a><code><b><span class="methodName">close</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Close session with TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void close();
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   val cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+   /* Call to openSession can be revoked also */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecSession::invokeCommand">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession::invokeCommand"></a><code><b><span class="methodName">invokeCommand</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Send command to TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback, optional ? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+            </p>
+            <ul>
+              <li>
+NotSupportedError - If the requested operation is not supported              </li>
+              <li>
+InvalidValuesError - If any of the input parameters contain an invalid value as decided by TA.              </li>
+              <li>
+OperationCanceledError - If it fails due to request cancellation              </li>
+              <li>
+AbortError - If any other error occurs.              </li>
+            </ul>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">cmd</span>:
+ the command.
+                </li>
+          <li class="param">
+<span class="name">params</span>:
+ the array of parameters (max 4 items).
+                </li>
+          <li class="param">
+<span class="name">successCallback</span>:
+ callback function triggered when sucessfully done.
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ callback function triggered when error occured.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ TeecTaskId The id of scheduled task which can be used to revoke (see revokeCommand).
+              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid, like
+<em>params</em> contains more then 4 elements.
+                </p></li>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var gSession;
+   function commandError(err)
+   {
+     gSession.close();
+   }
+   function commandSuccess(cmd, params)
+   {
+     console.log("command " + cmd + ": ", params);
+     gSession.close();
+   }
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     gSession = session;
+     var data = [1,2,3,4,45,6,7,7,7];
+     var p1 = new TeecValue(10, 100);    /* Command parameter 1 */
+     var p2 = new TeecTempMemory(data);  /* Command parameter 2 */
+     session.invokeCommand(1, [p1, p2], commandSuccess, commandError);
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   val cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory"></a><h3>2.5. TeecSharedMemory</h3>
+<div class="brief">
+ Shared memory reference object.
+Instance of this object can be obtained from <em>TeecSession</em> with one of methods:
+<em>allocateSharedMemory</em> or <em>registerSharedMemory</em>          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecSharedMemory {
+    readonly attribute unsigned long long size;
+
+    void setData(byte[] data, unsigned long long offset) raises ();
+
+    void getData(byte[] data, unsigned long long offset) raises ();
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecSharedMemory::size">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">unsigned long long </span><span class="name">size</span></span><div class="brief">
+ Size of this shared memory block.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecSharedMemory::setData">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory::setData"></a><code><b><span class="methodName">setData</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Convenient method to set some bytes in shared memory.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void setData(byte[] data, unsigned long long offset);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">data</span>:
+ sequence of bytes (buffer size is data.length)
+                </li>
+          <li class="param">
+<span class="name">offset</span>:
+ offset in shared memory to start writing
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if a parameter has incorrect type.
+                </p></li></ul>
+</li></ul>
+        </div>
+</dd>
+<dt class="method" id="TeecSharedMemory::getData">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory::getData"></a><code><b><span class="methodName">getData</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Convenient method to get some bytes from shared memory.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void getData(byte[] data, unsigned long long offset);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">data</span>:
+ buffer for bytes (buffer size is data.length)
+                </li>
+          <li class="param">
+<span class="name">offset</span>:
+ offset in shared memory to start reading
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if a parameter has incorrect type.
+                </p></li></ul>
+</li></ul>
+        </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecParameter">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecParameter"></a><h3>2.6. TeecParameter</h3>
+<div class="brief">
+ Abstract parameter type.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecParameter {
+    attribute DOMString type;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecParameter::type">
+<span class="attrName"><span class="type">DOMString </span><span class="name">type</span></span><div class="brief">
+ The type of parameter - abstract class for all parameteres.
+This can be one of TeecValueType, TeecTempMemoryType, TeecRegisteredMemoryType
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="TeecRegisteredMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecRegisteredMemory"></a><h3>2.7. TeecRegisteredMemory</h3>
+<div class="brief">
+ Registered memory parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size)]
+  interface TeecRegisteredMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute <a href="#TeecSharedMemory">TeecSharedMemory</a> shm;
+
+    attribute unsigned long long offset;
+
+    attribute unsigned long long size;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecRegisteredMemory::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecRegisteredMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="TeecRegisteredMemory::shm">
+<span class="attrName"><span class="type">TeecSharedMemory </span><span class="name">shm</span></span><div class="brief">
+ Referred shared memory.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecRegisteredMemory::offset">
+<span class="attrName"><span class="type">unsigned long long </span><span class="name">offset</span></span><div class="brief">
+ Offset in shared memory (start of accessed block).
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecRegisteredMemory::size">
+<span class="attrName"><span class="type">unsigned long long </span><span class="name">size</span></span><div class="brief">
+ Size of block in shared memory (length of the block).
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="TeecTempMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTempMemory"></a><h3>2.8. TeecTempMemory</h3>
+<div class="brief">
+ Temporary memory parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(byte[] mem)]
+  interface TeecTempMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute byte[] mem;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecTempMemory::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecTempMemory(byte[] mem);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecTempMemory::mem">
+<span class="attrName"><span class="type">byte[]
+                      </span><span class="name">mem</span></span><div class="brief">
+ Local memory block.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="TeecValue">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecValue"></a><h3>2.9. TeecValue</h3>
+<div class="brief">
+ Value parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(long a, long b)]
+  interface TeecValue : <a href="#TeecParameter">TeecParameter</a> {
+    attribute long a;
+    attribute long b;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecValue::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecValue(long a, long b);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="TeecValue::a">
+<span class="attrName"><span class="type">long </span><span class="name">a</span></span><div class="brief">
+ Integer number to be delivered.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecValue::b">
+<span class="attrName"><span class="type">long </span><span class="name">b</span></span><div class="brief">
+ Integer number to be delivered.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="TeecOpenSuccessCallback">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecOpenSuccessCallback"></a><h3>2.10. TeecOpenSuccessCallback</h3>
+<div class="brief">
+ The success callback to be invoked when session was opened.
+          </div>
+<pre class="webidl prettyprint">  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecOpenSuccessCallback {
+    void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecOpenSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecOpenSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the session is opened successfully.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">session</span>:
+ <em>TeecSession</em> object
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecCommandSuccessCallback">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecCommandSuccessCallback"></a><h3>2.11. TeecCommandSuccessCallback</h3>
+<div class="brief">
+ The success callback to be invoked when command performed on TA is finished.
+          </div>
+<pre class="webidl prettyprint">  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecCommandSuccessCallback {
+    void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecCommandSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecCommandSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the command is done successfully.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param"><span class="name">cmd</span></li>
+          <li class="param">
+<span class="name">params</span>:
+ array of <em>TeecParam</em> objects
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="api-features">3. Related Feature</h2>
+<div id="def-api-features" class="def-api-features">
+        You can check if this API is supported with <em>tizen.systeminfo.getCapability()</em> and decide enable/disable codes that need this API.
+                    <div class="def-api-feature">
+<p><div class="description">
+            <p>
+To guarantee that the CA is running on a device with TrustZone support, declare following feature in the config.
+            </p>
+           </div></p>
+<li class="feature">http://tizen.org/feature/security.tee</li>
+</div>
+<p></p>
+                    For more information, see <a href="https://developer.tizen.org/development/getting-started/web-application/understanding-tizen-programming/application-filtering">Application Filtering.</a>
+</div>
+<h2 id="full-webidl">4. Full WebIDL</h2>
+<pre class="webidl prettyprint">module LibTeec {
+
+
+  enum TeecLoginMethod {
+    "PUBLIC",
+    "USER",
+    "GROUP",
+    "APPLICATION"
+  };
+
+  enum TeecValueType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  enum TeecTempMemoryType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  enum TeecRegisteredMemoryType {
+    "WHOLE",
+    "PARTIAL_INPUT",
+    "PARTIAL_OUTPUT",
+    "PARTIAL_INOUT"
+  };
+
+  enum TeecSharedMemoryFlags {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  typedef DOMString TeecUuid;
+
+  typedef unsigned long TeecTaskId;
+
+  [NoInterfaceObject] interface LibTeecManagerObject {
+    readonly attribute <a href="#LibTeecManager">LibTeecManager</a> teec;
+  };
+   implements <a href="#LibTeecManagerObject">LibTeecManagerObject</a>;
+
+  [NoInterfaceObject] interface LibTeecManager {
+
+    <a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecContext {
+    <a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID,
+                           <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod,
+                           unsigned long? connectionData,
+                           <a href="#TeecParameter">TeecParameter</a>[] params,
+                           <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback,
+                           optional ? errorCallback) raises ();
+
+    void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecSession {
+    void close() raises ();
+
+    <a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd,
+                             <a href="#TeecParameter">TeecParameter</a>[] params,
+                             <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback,
+                             optional ? errorCallback) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecSharedMemory {
+    readonly attribute unsigned long long size;
+
+    void setData(byte[] data, unsigned long long offset) raises ();
+
+    void getData(byte[] data, unsigned long long offset) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecParameter {
+    attribute DOMString type;
+  };
+
+  [Constructor(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size)]
+  interface TeecRegisteredMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute <a href="#TeecSharedMemory">TeecSharedMemory</a> shm;
+
+    attribute unsigned long long offset;
+
+    attribute unsigned long long size;
+  };
+
+  [Constructor(byte[] mem)]
+  interface TeecTempMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute byte[] mem;
+  };
+
+  [Constructor(long a, long b)]
+  interface TeecValue : <a href="#TeecParameter">TeecParameter</a> {
+    attribute long a;
+    attribute long b;
+  };
+
+  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecOpenSuccessCallback {
+    void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+  };
+
+  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecCommandSuccessCallback {
+    void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+  };
+
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+         Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. <br>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.
+            </div>
+<script type="text/javascript">
+
+              var _gaq = _gaq || [];
+              _gaq.push(['_setAccount', 'UA-25976949-1']);
+              _gaq.push(['_setDomainName', 'tizen.org']);
+              _gaq.push(['_trackPageview']);
+
+              (function() {
+                var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+                ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+              })();
+
+            </script>
+</div>
+</body>
+</html>
index 921f721..4d3e8be 100755 (executable)
@@ -47,6 +47,7 @@ Tizen</div>-->
   <li><a href="#graphics">Graphics</a></li>
   <li><a href="#input">Input</a></li>
   <li><a href="#led">Led</a></li>
+  <li><a href="#libteec">LibTeec</a></li>
   <li><a href="#location">Location</a></li>
   <li><a href="#mediatranscoder">Multimedia transcoder</a></li>
   <li><a href="#microphone">Microphone</a></li>
@@ -446,6 +447,28 @@ Tizen</div>-->
 </table>
 
 <br>
+<p>The following table lists the libteec feature key.</p>
+   <table id="libteec" border="1" style="width:95%">
+<caption>
+     Table: LibTeec feature keys
+   </caption>
+   <tbody>
+<tr>
+<th style="width:27%">Key</th>
+     <th style="width:7%">Type</th>
+     <th>Description</th>
+     <th style="width:7%">Version</th>
+    </tr>
+<tr>
+<td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/security.tee</span></td>
+     <td><span style="font-family: Courier New,Courier,monospace">boolean</span></td>
+     <td>The platform returns <span style="font-family: Courier New,Courier,monospace">true</span> for this key, if the device supports libteec.</td>
+     <td>4.0</td>
+    </tr>
+</tbody>
+</table>
+
+<br>
 <p>The following table lists the location feature keys.</p>
 <table id="location" border="1" style="width:95%">
 <caption>
index 22b64cb..393721e 100755 (executable)
                 <td>This API provides a secure repository for keys, certificates, and sensitive data of users and/or their applications.</td>
                 <td>2.4</td>
                 </tr>
+
+                <tr><td><a href="tizen/libteec.html" data-origin="tizen" data-domain="pim" data-category="core" data-status="S" data-version="">
+                        LibTeec</a></td>
+                <td>This API provides interfaces and methods (LibTeec API) for a Trust Zone</td>
+                <td>4.0</td>
+
+                </tr>
                 </tbody>
               </table>
 
diff --git a/org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html b/org.tizen.web.apireference/html/device_api/tv/tizen/libteec.html
new file mode 100755 (executable)
index 0000000..b636b96
--- /dev/null
@@ -0,0 +1,1509 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>LibTeec API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::LibTeec">
+<div class="title"><h1>LibTeec API</h1></div>
+<div class="brief">
+ The LibTeec API provides functionality to communicate with application executed in trusted environment.
+        </div>
+<div class="description">
+        <p>
+Libteec can be understood as a universal API for communication with trusted execution environment (TEE).
+This API follows GlobalPlatform (GP) specification.<br>The original documentation (TEE_Client_API_Specification-xxx.pdf)
+is available to download from <a href="https://www.globalplatform.org">GlobalPlatform.org</a> under <em>Device</em> section.
+        </p>
+        <p>
+The Libteec provides a set of functions for executing application in TrustZone and communicating with it.
+This way we have, so called, two worlds: rich world (like Linux) with Client Application (CA) and
+secure world with Trusted Application (TA).
+        </p>
+       </div>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc">
+<li>
+                    1.1. <a href="#TeecLoginMethod">TeecLoginMethod</a>
+</li>
+<li>
+                    1.2. <a href="#TeecValueType">TeecValueType</a>
+</li>
+<li>
+                    1.3. <a href="#TeecTempMemoryType">TeecTempMemoryType</a>
+</li>
+<li>
+                    1.4. <a href="#TeecRegisteredMemoryType">TeecRegisteredMemoryType</a>
+</li>
+<li>
+                    1.5. <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a>
+</li>
+<li>
+                    1.6. <a href="#TeecUuid">TeecUuid</a>
+</li>
+<li>
+                    1.7. <a href="#TeecTaskId">TeecTaskId</a>
+</li>
+</ul>
+</li>
+<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>2.1. <a href="#LibTeecManagerObject">LibTeecManagerObject</a>
+</li>
+<li>2.2. <a href="#LibTeecManager">LibTeecManager</a>
+</li>
+<li>2.3. <a href="#TeecContext">TeecContext</a>
+</li>
+<li>2.4. <a href="#TeecSession">TeecSession</a>
+</li>
+<li>2.5. <a href="#TeecSharedMemory">TeecSharedMemory</a>
+</li>
+<li>2.6. <a href="#TeecParameter">TeecParameter</a>
+</li>
+<li>2.7. <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a>
+</li>
+<li>2.8. <a href="#TeecTempMemory">TeecTempMemory</a>
+</li>
+<li>2.9. <a href="#TeecValue">TeecValue</a>
+</li>
+<li>2.10. <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a>
+</li>
+<li>2.11. <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a>
+</li>
+</ul>
+</li>
+<li>3. <a href="#api-features">Related Feature</a>
+</li>
+<li>4. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#LibTeecManagerObject">LibTeecManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#LibTeecManager">LibTeecManager</a></td>
+<td><div>
+<a href="#TeecContext">TeecContext</a> <a href="#LibTeecManager::getContext">getContext</a> (optional DOMString? name)</div></td>
+</tr>
+<tr>
+<td><a href="#TeecContext">TeecContext</a></td>
+<td>
+<div>
+<a href="#TeecTaskId">TeecTaskId</a> <a href="#TeecContext::openSession">openSession</a> (<a href="#TeecUuid">TeecUuid</a> taUUID, <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod, unsigned long? connectionData, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback, optional ? errorCallback)</div>
+<div>void <a href="#TeecContext::revokeCommand">revokeCommand</a> (<a href="#TeecTaskId">TeecTaskId</a> id)</div>
+<div>
+<a href="#TeecSharedMemory">TeecSharedMemory</a> <a href="#TeecContext::allocateSharedMemory">allocateSharedMemory</a> (unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags)</div>
+<div>
+<a href="#TeecSharedMemory">TeecSharedMemory</a> <a href="#TeecContext::registerSharedMemory">registerSharedMemory</a> (unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags)</div>
+<div>void <a href="#TeecContext::releaseSharedMemory">releaseSharedMemory</a> (<a href="#TeecSharedMemory">TeecSharedMemory</a> shm)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecSession">TeecSession</a></td>
+<td>
+<div>void <a href="#TeecSession::close">close</a> ()</div>
+<div>
+<a href="#TeecTaskId">TeecTaskId</a> <a href="#TeecSession::invokeCommand">invokeCommand</a> (long cmd, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback, optional ? errorCallback)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecSharedMemory">TeecSharedMemory</a></td>
+<td>
+<div>void <a href="#TeecSharedMemory::setData">setData</a> (byte[] data, unsigned long long offset)</div>
+<div>void <a href="#TeecSharedMemory::getData">getData</a> (byte[] data, unsigned long long offset)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecParameter">TeecParameter</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecRegisteredMemory">TeecRegisteredMemory</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecTempMemory">TeecTempMemory</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecValue">TeecValue</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a></td>
+<td><div>void <a href="#TeecOpenSuccessCallback::onsuccess">onsuccess</a> (<a href="#TeecSession">TeecSession</a> session)</div></td>
+</tr>
+<tr>
+<td><a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a></td>
+<td><div>void <a href="#TeecCommandSuccessCallback::onsuccess">onsuccess</a> (long cmd, <a href="#TeecParameter">TeecParameter</a>[] params)</div></td>
+</tr>
+</tbody>
+</table>
+<div class="typedefs" id="typedefs-section">
+<h2>1. Type Definitions</h2>
+<div class="enum" id="TeecLoginMethod">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecLoginMethod"></a><h3>1.1. TeecLoginMethod</h3>
+<div class="brief">
+ This type denotes Session Login Method used in OpenSession.
+          </div>
+<pre class="webidl prettyprint">  enum TeecLoginMethod {
+    "PUBLIC",
+    "USER",
+    "GROUP",
+    "APPLICATION"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <p>
+The following methods are supported:
+          </p>
+          <ul>
+            <li>
+PUBLIC - No login data is provided.            </li>
+            <li>
+USER - Login data about the user running the Client Application process is provided.            </li>
+            <li>
+GROUP - Login data about the group running the Client Application process is provided.            </li>
+            <li>
+APPLICATION - Login data about the running Client Application itself is provided.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecValueType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecValueType"></a><h3>1.2. TeecValueType</h3>
+<div class="brief">
+ This type denotes Value parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecValueType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as input.            </li>
+            <li>
+OUTPUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as output.            </li>
+            <li>
+INOUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecTempMemoryType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTempMemoryType"></a><h3>1.3. TeecTempMemoryType</h3>
+<div class="brief">
+ This type denotes TempMemory parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecTempMemoryType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as input.            </li>
+            <li>
+OUTPUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as output.            </li>
+            <li>
+INOUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecRegisteredMemoryType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecRegisteredMemoryType"></a><h3>1.4. TeecRegisteredMemoryType</h3>
+<div class="brief">
+ This type denotes RegisteredMemory parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecRegisteredMemoryType {
+    "WHOLE",
+    "PARTIAL_INPUT",
+    "PARTIAL_OUTPUT",
+    "PARTIAL_INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+WHOLE - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to the entire Shared Memory block.            </li>
+            <li>
+PARTIAL_INPUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as input.            </li>
+            <li>
+PARTIAL_OUTPUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as output.            </li>
+            <li>
+PARTIAL_INOUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecSharedMemoryFlags">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemoryFlags"></a><h3>1.5. TeecSharedMemoryFlags</h3>
+<div class="brief">
+ This type denotes SharedMemory access direction.
+          </div>
+<pre class="webidl prettyprint">  enum TeecSharedMemoryFlags {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be read.            </li>
+            <li>
+OUTPUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be written.            </li>
+            <li>
+INOUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be read and written.            </li>
+          </ul>
+         </div>
+</div>
+<div class="typedef" id="TeecUuid">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecUuid"></a><h3>1.6. TeecUuid</h3>
+<div class="brief">
+ This type contains a Universally Unique Resource Identifier (UUID) type as defined in RFC 4122.
+These UUID values are used to identify Trusted Applications.
+Example UUID strig representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+          </div>
+<pre class="webidl prettyprint">  typedef DOMString TeecUuid;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+<div class="typedef" id="TeecTaskId">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTaskId"></a><h3>1.7. TeecTaskId</h3>
+<div class="brief">
+ Background process id.
+          </div>
+<pre class="webidl prettyprint">  typedef unsigned long TeecTaskId;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+</div>
+<div class="interfaces" id="interfaces-section">
+<h2>2. Interfaces</h2>
+<div class="interface" id="LibTeecManagerObject">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManagerObject"></a><h3>2.1. LibTeecManagerObject</h3>
+<div class="brief">
+ The LibTeecObject interface gives access to the LibTeec API from the <em>tizen.teec</em> object.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface LibTeecManagerObject {
+    readonly attribute <a href="#LibTeecManager">LibTeecManager</a> teec;
+  };</pre>
+<pre class="webidl prettyprint">   implements <a href="#LibTeecManagerObject">LibTeecManagerObject</a>;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+<div class="interface" id="LibTeecManager">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManager"></a><h3>2.2. LibTeecManager</h3>
+<div class="brief">
+ The LibTeecManager interface provides methods to access Context and Session for GlobalPlatform libteec.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface LibTeecManager {
+
+    <a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name) raises ();
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <p>
+Once a context object is obtained, it is possible to open a session to Trusted Application (TA) .
+          </p>
+         </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="LibTeecManager::getContext">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManager::getContext"></a><code><b><span class="methodName">getContext</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Get TEE context by name.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">name</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ describes the TEE to connect to, when not given (or null) connects to default TEE.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ Context The created <em>TeecContext</em>              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext(); /* Get default TEE context */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecContext">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext"></a><h3>2.3. TeecContext</h3>
+<div class="brief">
+ This type denotes a TEE Context, the main logical container linking a Client Application with a particular TEE.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecContext {
+    <a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID,
+                           <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod,
+                           unsigned long? connectionData,
+                           <a href="#TeecParameter">TeecParameter</a>[] params,
+                           <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback,
+                           optional ? errorCallback) raises ();
+
+    void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm) raises ();
+  };</pre>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecContext::openSession">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::openSession"></a><code><b><span class="methodName">openSession</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Open session with TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID, <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod, unsigned long? connectionData, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback, optional ? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+            </p>
+            <ul>
+              <li>
+InvalidValuesError - If any of the input parameters contain an invalid value as decided by TA.              </li>
+              <li>
+OperationCanceledError - If it fails due to request cancellation              </li>
+              <li>
+AbortError - If any other error occurs.              </li>
+            </ul>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">taUUID</span>:
+ the UUID of destination TA.
+                </li>
+          <li class="param">
+<span class="name">loginMethod</span>:
+ the authentication algorithm see <a href="#TeecLoginMethod">TeecLoginMethod</a>.
+                </li>
+          <li class="param">
+<span class="name">connectionData</span><span class="optional"> [nullable]</span>:
+ the value required for login method or null.
+                </li>
+          <li class="param">
+<span class="name">params</span>:
+ the array of parameters (note. max is 4 items).
+                </li>
+          <li class="param">
+<span class="name">successCallback</span>:
+ callback function triggered when sucessfully done.
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ callback function triggered when error occured.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ TeecTaskId The id of scheduled task which can be used to revoke (see revokeCommand).
+              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     console.log("session opened");
+     /* ... */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::revokeCommand">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::revokeCommand"></a><code><b><span class="methodName">revokeCommand</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Revoke last operation identified by id.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">id</span>:
+ the identifier of scheduled task see openSession, invokeCommand
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   function commandSuccess(cmd, params)
+   {
+     console.log("command " + cmd + ": ", params);
+   }
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     var data = [1,2,3,4,45,6,7,7,7];
+     var p1 = new TeecValue(10, 100);    /* Command parameter 1 */
+     var p2 = new TeecTempMemory(data);  /* Command parameter 2 */
+     var id = session.invokeCommand(1, [p1, p2], commandSuccess);
+     ctx.revokeCommand(id); /* Cancel above command */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+   /* The cid can be used to revoke openSession request */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::allocateSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::allocateSharedMemory"></a><code><b><span class="methodName">allocateSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Allocate shared memory.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">size</span>:
+ the size of memory block to be allocated
+                </li>
+          <li class="param">
+<span class="name">flags</span>:
+ the access flags see SharedMemoryFlags
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.allocateSharedMemory(1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::registerSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::registerSharedMemory"></a><code><b><span class="methodName">registerSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Register shared memory.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">addr</span>:
+ the address of memory block to share
+                </li>
+          <li class="param">
+<span class="name">size</span>:
+ the size of memory block to be allocated
+                </li>
+          <li class="param">
+<span class="name">flags</span>:
+ the access flags see SharedMemoryFlags
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.registerSharedMemory(0x1234567, 1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::releaseSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::releaseSharedMemory"></a><code><b><span class="methodName">releaseSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint">void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Release shared memory, previously allocated or registered.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">shm</span>:
+ the shared memory description object
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.allocateSharedMemory(1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecSession">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession"></a><h3>2.4. TeecSession</h3>
+<div class="brief">
+ This type denotes a TEE Session, the logical link between Client Application and a particular Trusted Application.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecSession {
+    void close() raises ();
+
+    <a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd,
+                             <a href="#TeecParameter">TeecParameter</a>[] params,
+                             <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback,
+                             optional ? errorCallback) raises ();
+  };</pre>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecSession::close">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession::close"></a><code><b><span class="methodName">close</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Close session with TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void close();
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   val cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+   /* Call to openSession can be revoked also */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecSession::invokeCommand">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession::invokeCommand"></a><code><b><span class="methodName">invokeCommand</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Send command to TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback, optional ? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+            </p>
+            <ul>
+              <li>
+NotSupportedError - If the requested operation is not supported              </li>
+              <li>
+InvalidValuesError - If any of the input parameters contain an invalid value as decided by TA.              </li>
+              <li>
+OperationCanceledError - If it fails due to request cancellation              </li>
+              <li>
+AbortError - If any other error occurs.              </li>
+            </ul>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">cmd</span>:
+ the command.
+                </li>
+          <li class="param">
+<span class="name">params</span>:
+ the array of parameters (max 4 items).
+                </li>
+          <li class="param">
+<span class="name">successCallback</span>:
+ callback function triggered when sucessfully done.
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ callback function triggered when error occured.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ TeecTaskId The id of scheduled task which can be used to revoke (see revokeCommand).
+              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid, like
+<em>params</em> contains more then 4 elements.
+                </p></li>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var gSession;
+   function commandError(err)
+   {
+     gSession.close();
+   }
+   function commandSuccess(cmd, params)
+   {
+     console.log("command " + cmd + ": ", params);
+     gSession.close();
+   }
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     gSession = session;
+     var data = [1,2,3,4,45,6,7,7,7];
+     var p1 = new TeecValue(10, 100);    /* Command parameter 1 */
+     var p2 = new TeecTempMemory(data);  /* Command parameter 2 */
+     session.invokeCommand(1, [p1, p2], commandSuccess, commandError);
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   val cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory"></a><h3>2.5. TeecSharedMemory</h3>
+<div class="brief">
+ Shared memory reference object.
+Instance of this object can be obtained from <em>TeecSession</em> with one of methods:
+<em>allocateSharedMemory</em> or <em>registerSharedMemory</em>          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecSharedMemory {
+    readonly attribute unsigned long long size;
+
+    void setData(byte[] data, unsigned long long offset) raises ();
+
+    void getData(byte[] data, unsigned long long offset) raises ();
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecSharedMemory::size">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">unsigned long long </span><span class="name">size</span></span><div class="brief">
+ Size of this shared memory block.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecSharedMemory::setData">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory::setData"></a><code><b><span class="methodName">setData</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Convenient method to set some bytes in shared memory.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void setData(byte[] data, unsigned long long offset);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">data</span>:
+ sequence of bytes (buffer size is data.length)
+                </li>
+          <li class="param">
+<span class="name">offset</span>:
+ offset in shared memory to start writing
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if a parameter has incorrect type.
+                </p></li></ul>
+</li></ul>
+        </div>
+</dd>
+<dt class="method" id="TeecSharedMemory::getData">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory::getData"></a><code><b><span class="methodName">getData</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Convenient method to get some bytes from shared memory.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void getData(byte[] data, unsigned long long offset);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">data</span>:
+ buffer for bytes (buffer size is data.length)
+                </li>
+          <li class="param">
+<span class="name">offset</span>:
+ offset in shared memory to start reading
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if a parameter has incorrect type.
+                </p></li></ul>
+</li></ul>
+        </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecParameter">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecParameter"></a><h3>2.6. TeecParameter</h3>
+<div class="brief">
+ Abstract parameter type.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecParameter {
+    attribute DOMString type;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecParameter::type">
+<span class="attrName"><span class="type">DOMString </span><span class="name">type</span></span><div class="brief">
+ The type of parameter - abstract class for all parameteres.
+This can be one of TeecValueType, TeecTempMemoryType, TeecRegisteredMemoryType
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="TeecRegisteredMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecRegisteredMemory"></a><h3>2.7. TeecRegisteredMemory</h3>
+<div class="brief">
+ Registered memory parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size)]
+  interface TeecRegisteredMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute <a href="#TeecSharedMemory">TeecSharedMemory</a> shm;
+
+    attribute unsigned long long offset;
+
+    attribute unsigned long long size;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecRegisteredMemory::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecRegisteredMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="TeecRegisteredMemory::shm">
+<span class="attrName"><span class="type">TeecSharedMemory </span><span class="name">shm</span></span><div class="brief">
+ Referred shared memory.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecRegisteredMemory::offset">
+<span class="attrName"><span class="type">unsigned long long </span><span class="name">offset</span></span><div class="brief">
+ Offset in shared memory (start of accessed block).
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecRegisteredMemory::size">
+<span class="attrName"><span class="type">unsigned long long </span><span class="name">size</span></span><div class="brief">
+ Size of block in shared memory (length of the block).
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="TeecTempMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTempMemory"></a><h3>2.8. TeecTempMemory</h3>
+<div class="brief">
+ Temporary memory parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(byte[] mem)]
+  interface TeecTempMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute byte[] mem;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecTempMemory::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecTempMemory(byte[] mem);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecTempMemory::mem">
+<span class="attrName"><span class="type">byte[]
+                      </span><span class="name">mem</span></span><div class="brief">
+ Local memory block.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="TeecValue">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecValue"></a><h3>2.9. TeecValue</h3>
+<div class="brief">
+ Value parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(long a, long b)]
+  interface TeecValue : <a href="#TeecParameter">TeecParameter</a> {
+    attribute long a;
+    attribute long b;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecValue::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecValue(long a, long b);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="TeecValue::a">
+<span class="attrName"><span class="type">long </span><span class="name">a</span></span><div class="brief">
+ Integer number to be delivered.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecValue::b">
+<span class="attrName"><span class="type">long </span><span class="name">b</span></span><div class="brief">
+ Integer number to be delivered.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="TeecOpenSuccessCallback">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecOpenSuccessCallback"></a><h3>2.10. TeecOpenSuccessCallback</h3>
+<div class="brief">
+ The success callback to be invoked when session was opened.
+          </div>
+<pre class="webidl prettyprint">  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecOpenSuccessCallback {
+    void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecOpenSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecOpenSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the session is opened successfully.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">session</span>:
+ <em>TeecSession</em> object
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecCommandSuccessCallback">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecCommandSuccessCallback"></a><h3>2.11. TeecCommandSuccessCallback</h3>
+<div class="brief">
+ The success callback to be invoked when command performed on TA is finished.
+          </div>
+<pre class="webidl prettyprint">  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecCommandSuccessCallback {
+    void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecCommandSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecCommandSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the command is done successfully.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param"><span class="name">cmd</span></li>
+          <li class="param">
+<span class="name">params</span>:
+ array of <em>TeecParam</em> objects
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="api-features">3. Related Feature</h2>
+<div id="def-api-features" class="def-api-features">
+        You can check if this API is supported with <em>tizen.systeminfo.getCapability()</em> and decide enable/disable codes that need this API.
+                    <div class="def-api-feature">
+<p><div class="description">
+            <p>
+To guarantee that the CA is running on a device with TrustZone support, declare following feature in the config.
+            </p>
+           </div></p>
+<li class="feature">http://tizen.org/feature/security.tee</li>
+</div>
+<p></p>
+                    For more information, see <a href="https://developer.tizen.org/development/getting-started/web-application/understanding-tizen-programming/application-filtering">Application Filtering.</a>
+</div>
+<h2 id="full-webidl">4. Full WebIDL</h2>
+<pre class="webidl prettyprint">module LibTeec {
+
+
+  enum TeecLoginMethod {
+    "PUBLIC",
+    "USER",
+    "GROUP",
+    "APPLICATION"
+  };
+
+  enum TeecValueType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  enum TeecTempMemoryType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  enum TeecRegisteredMemoryType {
+    "WHOLE",
+    "PARTIAL_INPUT",
+    "PARTIAL_OUTPUT",
+    "PARTIAL_INOUT"
+  };
+
+  enum TeecSharedMemoryFlags {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  typedef DOMString TeecUuid;
+
+  typedef unsigned long TeecTaskId;
+
+  [NoInterfaceObject] interface LibTeecManagerObject {
+    readonly attribute <a href="#LibTeecManager">LibTeecManager</a> teec;
+  };
+   implements <a href="#LibTeecManagerObject">LibTeecManagerObject</a>;
+
+  [NoInterfaceObject] interface LibTeecManager {
+
+    <a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecContext {
+    <a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID,
+                           <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod,
+                           unsigned long? connectionData,
+                           <a href="#TeecParameter">TeecParameter</a>[] params,
+                           <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback,
+                           optional ? errorCallback) raises ();
+
+    void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecSession {
+    void close() raises ();
+
+    <a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd,
+                             <a href="#TeecParameter">TeecParameter</a>[] params,
+                             <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback,
+                             optional ? errorCallback) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecSharedMemory {
+    readonly attribute unsigned long long size;
+
+    void setData(byte[] data, unsigned long long offset) raises ();
+
+    void getData(byte[] data, unsigned long long offset) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecParameter {
+    attribute DOMString type;
+  };
+
+  [Constructor(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size)]
+  interface TeecRegisteredMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute <a href="#TeecSharedMemory">TeecSharedMemory</a> shm;
+
+    attribute unsigned long long offset;
+
+    attribute unsigned long long size;
+  };
+
+  [Constructor(byte[] mem)]
+  interface TeecTempMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute byte[] mem;
+  };
+
+  [Constructor(long a, long b)]
+  interface TeecValue : <a href="#TeecParameter">TeecParameter</a> {
+    attribute long a;
+    attribute long b;
+  };
+
+  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecOpenSuccessCallback {
+    void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+  };
+
+  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecCommandSuccessCallback {
+    void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+  };
+
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+         Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. <br>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.
+            </div>
+<script type="text/javascript">
+
+              var _gaq = _gaq || [];
+              _gaq.push(['_setAccount', 'UA-25976949-1']);
+              _gaq.push(['_setDomainName', 'tizen.org']);
+              _gaq.push(['_trackPageview']);
+
+              (function() {
+                var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+                ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+              })();
+
+            </script>
+</div>
+</body>
+</html>
index 232fb93..f469a8b 100644 (file)
                 <td>3.0</td>
                 <td>Mandatory</td>
                 <td>Yes</td>
+                </tr>
+
+                <tr><td><a href="tizen/libteec.html" data-origin="tizen" data-domain="pim" data-category="core" data-status="S" data-version="">
+                        LibTeec</a></td>
+                <td>This API provides interfaces and methods (LibTeec API) for a Trust Zone</td>
+                <td>4.0</td>
+                <td>Mandatory</td>
+                <td>Yes</td>
 
                 </tr></tbody></table><h4 id="Social">Social</h4>
              <table class="api-list"><thead><tr><th>API</th><th>Description</th><th>Version (Since)</th><th>Wearable</th><th>Supported on<br>Wearable Emulator</th></tr>
diff --git a/org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html b/org.tizen.web.apireference/html/device_api/wearable/tizen/libteec.html
new file mode 100644 (file)
index 0000000..960f756
--- /dev/null
@@ -0,0 +1,1510 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script><title>LibTeec API</title>
+</head>
+<body id="page-content" onload="prettyPrint()">
+<div class="api" id="::LibTeec">
+<div class="supported-platforms"><img class="wearable-mandatory emulator" title="Mandatory, Supported by Tizen Wearable emulator" src="wearable_s_w.png"></div>
+<div class="title"><h1>LibTeec API</h1></div>
+<div class="brief">
+ The LibTeec API provides functionality to communicate with application executed in trusted environment.
+        </div>
+<div class="description">
+        <p>
+Libteec can be understood as a universal API for communication with trusted execution environment (TEE).
+This API follows GlobalPlatform (GP) specification.<br>The original documentation (TEE_Client_API_Specification-xxx.pdf)
+is available to download from <a href="https://www.globalplatform.org">GlobalPlatform.org</a> under <em>Device</em> section.
+        </p>
+        <p>
+The Libteec provides a set of functions for executing application in TrustZone and communicating with it.
+This way we have, so called, two worlds: rich world (like Linux) with Client Application (CA) and
+secure world with Trusted Application (TA).
+        </p>
+       </div>
+<h2>Table of Contents</h2>
+<ul class="toc">
+<li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc">
+<li>
+                    1.1. <a href="#TeecLoginMethod">TeecLoginMethod</a>
+</li>
+<li>
+                    1.2. <a href="#TeecValueType">TeecValueType</a>
+</li>
+<li>
+                    1.3. <a href="#TeecTempMemoryType">TeecTempMemoryType</a>
+</li>
+<li>
+                    1.4. <a href="#TeecRegisteredMemoryType">TeecRegisteredMemoryType</a>
+</li>
+<li>
+                    1.5. <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a>
+</li>
+<li>
+                    1.6. <a href="#TeecUuid">TeecUuid</a>
+</li>
+<li>
+                    1.7. <a href="#TeecTaskId">TeecTaskId</a>
+</li>
+</ul>
+</li>
+<li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+<li>2.1. <a href="#LibTeecManagerObject">LibTeecManagerObject</a>
+</li>
+<li>2.2. <a href="#LibTeecManager">LibTeecManager</a>
+</li>
+<li>2.3. <a href="#TeecContext">TeecContext</a>
+</li>
+<li>2.4. <a href="#TeecSession">TeecSession</a>
+</li>
+<li>2.5. <a href="#TeecSharedMemory">TeecSharedMemory</a>
+</li>
+<li>2.6. <a href="#TeecParameter">TeecParameter</a>
+</li>
+<li>2.7. <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a>
+</li>
+<li>2.8. <a href="#TeecTempMemory">TeecTempMemory</a>
+</li>
+<li>2.9. <a href="#TeecValue">TeecValue</a>
+</li>
+<li>2.10. <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a>
+</li>
+<li>2.11. <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a>
+</li>
+</ul>
+</li>
+<li>3. <a href="#api-features">Related Feature</a>
+</li>
+<li>4. <a href="#full-webidl">Full WebIDL</a>
+</li>
+</ul>
+<hr>
+<h2 id="method-summary">Summary of Interfaces and Methods</h2>
+<table class="informaltable">
+<thead><tr>
+<th>Interface</th>
+<th>Method</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><a href="#LibTeecManagerObject">LibTeecManagerObject</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#LibTeecManager">LibTeecManager</a></td>
+<td><div>
+<a href="#TeecContext">TeecContext</a> <a href="#LibTeecManager::getContext">getContext</a> (optional DOMString? name)</div></td>
+</tr>
+<tr>
+<td><a href="#TeecContext">TeecContext</a></td>
+<td>
+<div>
+<a href="#TeecTaskId">TeecTaskId</a> <a href="#TeecContext::openSession">openSession</a> (<a href="#TeecUuid">TeecUuid</a> taUUID, <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod, unsigned long? connectionData, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback, optional ? errorCallback)</div>
+<div>void <a href="#TeecContext::revokeCommand">revokeCommand</a> (<a href="#TeecTaskId">TeecTaskId</a> id)</div>
+<div>
+<a href="#TeecSharedMemory">TeecSharedMemory</a> <a href="#TeecContext::allocateSharedMemory">allocateSharedMemory</a> (unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags)</div>
+<div>
+<a href="#TeecSharedMemory">TeecSharedMemory</a> <a href="#TeecContext::registerSharedMemory">registerSharedMemory</a> (unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags)</div>
+<div>void <a href="#TeecContext::releaseSharedMemory">releaseSharedMemory</a> (<a href="#TeecSharedMemory">TeecSharedMemory</a> shm)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecSession">TeecSession</a></td>
+<td>
+<div>void <a href="#TeecSession::close">close</a> ()</div>
+<div>
+<a href="#TeecTaskId">TeecTaskId</a> <a href="#TeecSession::invokeCommand">invokeCommand</a> (long cmd, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback, optional ? errorCallback)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecSharedMemory">TeecSharedMemory</a></td>
+<td>
+<div>void <a href="#TeecSharedMemory::setData">setData</a> (byte[] data, unsigned long long offset)</div>
+<div>void <a href="#TeecSharedMemory::getData">getData</a> (byte[] data, unsigned long long offset)</div>
+</td>
+</tr>
+<tr>
+<td><a href="#TeecParameter">TeecParameter</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecRegisteredMemory">TeecRegisteredMemory</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecTempMemory">TeecTempMemory</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecValue">TeecValue</a></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a></td>
+<td><div>void <a href="#TeecOpenSuccessCallback::onsuccess">onsuccess</a> (<a href="#TeecSession">TeecSession</a> session)</div></td>
+</tr>
+<tr>
+<td><a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a></td>
+<td><div>void <a href="#TeecCommandSuccessCallback::onsuccess">onsuccess</a> (long cmd, <a href="#TeecParameter">TeecParameter</a>[] params)</div></td>
+</tr>
+</tbody>
+</table>
+<div class="typedefs" id="typedefs-section">
+<h2>1. Type Definitions</h2>
+<div class="enum" id="TeecLoginMethod">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecLoginMethod"></a><h3>1.1. TeecLoginMethod</h3>
+<div class="brief">
+ This type denotes Session Login Method used in OpenSession.
+          </div>
+<pre class="webidl prettyprint">  enum TeecLoginMethod {
+    "PUBLIC",
+    "USER",
+    "GROUP",
+    "APPLICATION"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <p>
+The following methods are supported:
+          </p>
+          <ul>
+            <li>
+PUBLIC - No login data is provided.            </li>
+            <li>
+USER - Login data about the user running the Client Application process is provided.            </li>
+            <li>
+GROUP - Login data about the group running the Client Application process is provided.            </li>
+            <li>
+APPLICATION - Login data about the running Client Application itself is provided.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecValueType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecValueType"></a><h3>1.2. TeecValueType</h3>
+<div class="brief">
+ This type denotes Value parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecValueType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as input.            </li>
+            <li>
+OUTPUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as output.            </li>
+            <li>
+INOUT - The Parameter is a <a href="#TeecValue">TeecValue</a> tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecTempMemoryType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTempMemoryType"></a><h3>1.3. TeecTempMemoryType</h3>
+<div class="brief">
+ This type denotes TempMemory parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecTempMemoryType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as input.            </li>
+            <li>
+OUTPUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as output.            </li>
+            <li>
+INOUT - The Parameter is a <a href="#TeecTempMemory">TeecTempMemory</a> tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecRegisteredMemoryType">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecRegisteredMemoryType"></a><h3>1.4. TeecRegisteredMemoryType</h3>
+<div class="brief">
+ This type denotes RegisteredMemory parameter.
+          </div>
+<pre class="webidl prettyprint">  enum TeecRegisteredMemoryType {
+    "WHOLE",
+    "PARTIAL_INPUT",
+    "PARTIAL_OUTPUT",
+    "PARTIAL_INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+WHOLE - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to the entire Shared Memory block.            </li>
+            <li>
+PARTIAL_INPUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as input.            </li>
+            <li>
+PARTIAL_OUTPUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as output.            </li>
+            <li>
+PARTIAL_INOUT - The Parameter is a <a href="#TeecRegisteredMemory">TeecRegisteredMemory</a> that refers to a part of SharedMemory and is tagged as both input and output.            </li>
+          </ul>
+         </div>
+</div>
+<div class="enum" id="TeecSharedMemoryFlags">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemoryFlags"></a><h3>1.5. TeecSharedMemoryFlags</h3>
+<div class="brief">
+ This type denotes SharedMemory access direction.
+          </div>
+<pre class="webidl prettyprint">  enum TeecSharedMemoryFlags {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <ul>
+            <li>
+INPUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be read.            </li>
+            <li>
+OUTPUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be written.            </li>
+            <li>
+INOUT - A flag indicates <a href="#TeecSharedMemory">TeecSharedMemory</a> can be read and written.            </li>
+          </ul>
+         </div>
+</div>
+<div class="typedef" id="TeecUuid">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecUuid"></a><h3>1.6. TeecUuid</h3>
+<div class="brief">
+ This type contains a Universally Unique Resource Identifier (UUID) type as defined in RFC 4122.
+These UUID values are used to identify Trusted Applications.
+Example UUID strig representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+          </div>
+<pre class="webidl prettyprint">  typedef DOMString TeecUuid;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+<div class="typedef" id="TeecTaskId">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTaskId"></a><h3>1.7. TeecTaskId</h3>
+<div class="brief">
+ Background process id.
+          </div>
+<pre class="webidl prettyprint">  typedef unsigned long TeecTaskId;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+</div>
+<div class="interfaces" id="interfaces-section">
+<h2>2. Interfaces</h2>
+<div class="interface" id="LibTeecManagerObject">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManagerObject"></a><h3>2.1. LibTeecManagerObject</h3>
+<div class="brief">
+ The LibTeecObject interface gives access to the LibTeec API from the <em>tizen.teec</em> object.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface LibTeecManagerObject {
+    readonly attribute <a href="#LibTeecManager">LibTeecManager</a> teec;
+  };</pre>
+<pre class="webidl prettyprint">   implements <a href="#LibTeecManagerObject">LibTeecManagerObject</a>;</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+</div>
+<div class="interface" id="LibTeecManager">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManager"></a><h3>2.2. LibTeecManager</h3>
+<div class="brief">
+ The LibTeecManager interface provides methods to access Context and Session for GlobalPlatform libteec.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface LibTeecManager {
+
+    <a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name) raises ();
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="description">
+          <p>
+Once a context object is obtained, it is possible to open a session to Trusted Application (TA) .
+          </p>
+         </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="LibTeecManager::getContext">
+<a class="backward-compatibility-anchor" name="::LibTeec::LibTeecManager::getContext"></a><code><b><span class="methodName">getContext</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Get TEE context by name.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">name</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ describes the TEE to connect to, when not given (or null) connects to default TEE.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ Context The created <em>TeecContext</em>              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext(); /* Get default TEE context */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecContext">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext"></a><h3>2.3. TeecContext</h3>
+<div class="brief">
+ This type denotes a TEE Context, the main logical container linking a Client Application with a particular TEE.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecContext {
+    <a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID,
+                           <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod,
+                           unsigned long? connectionData,
+                           <a href="#TeecParameter">TeecParameter</a>[] params,
+                           <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback,
+                           optional ? errorCallback) raises ();
+
+    void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm) raises ();
+  };</pre>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecContext::openSession">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::openSession"></a><code><b><span class="methodName">openSession</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Open session with TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID, <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod, unsigned long? connectionData, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback, optional ? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+            </p>
+            <ul>
+              <li>
+InvalidValuesError - If any of the input parameters contain an invalid value as decided by TA.              </li>
+              <li>
+OperationCanceledError - If it fails due to request cancellation              </li>
+              <li>
+AbortError - If any other error occurs.              </li>
+            </ul>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">taUUID</span>:
+ the UUID of destination TA.
+                </li>
+          <li class="param">
+<span class="name">loginMethod</span>:
+ the authentication algorithm see <a href="#TeecLoginMethod">TeecLoginMethod</a>.
+                </li>
+          <li class="param">
+<span class="name">connectionData</span><span class="optional"> [nullable]</span>:
+ the value required for login method or null.
+                </li>
+          <li class="param">
+<span class="name">params</span>:
+ the array of parameters (note. max is 4 items).
+                </li>
+          <li class="param">
+<span class="name">successCallback</span>:
+ callback function triggered when sucessfully done.
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ callback function triggered when error occured.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ TeecTaskId The id of scheduled task which can be used to revoke (see revokeCommand).
+              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     console.log("session opened");
+     /* ... */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::revokeCommand">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::revokeCommand"></a><code><b><span class="methodName">revokeCommand</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Revoke last operation identified by id.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">id</span>:
+ the identifier of scheduled task see openSession, invokeCommand
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   function commandSuccess(cmd, params)
+   {
+     console.log("command " + cmd + ": ", params);
+   }
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     var data = [1,2,3,4,45,6,7,7,7];
+     var p1 = new TeecValue(10, 100);    /* Command parameter 1 */
+     var p2 = new TeecTempMemory(data);  /* Command parameter 2 */
+     var id = session.invokeCommand(1, [p1, p2], commandSuccess);
+     ctx.revokeCommand(id); /* Cancel above command */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+   /* The cid can be used to revoke openSession request */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::allocateSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::allocateSharedMemory"></a><code><b><span class="methodName">allocateSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Allocate shared memory.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">size</span>:
+ the size of memory block to be allocated
+                </li>
+          <li class="param">
+<span class="name">flags</span>:
+ the access flags see SharedMemoryFlags
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.allocateSharedMemory(1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::registerSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::registerSharedMemory"></a><code><b><span class="methodName">registerSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Register shared memory.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">addr</span>:
+ the address of memory block to share
+                </li>
+          <li class="param">
+<span class="name">size</span>:
+ the size of memory block to be allocated
+                </li>
+          <li class="param">
+<span class="name">flags</span>:
+ the access flags see SharedMemoryFlags
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.registerSharedMemory(0x1234567, 1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecContext::releaseSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecContext::releaseSharedMemory"></a><code><b><span class="methodName">releaseSharedMemory</span></b></code>
+</dt>
+<dd>
+<div class="synopsis"><pre class="signature prettyprint">void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+Release shared memory, previously allocated or registered.
+            </p>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">shm</span>:
+ the shared memory description object
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var ctx = tizen.teec.getContext();
+   var shm = ctx.allocateSharedMemory(1024*1024, TeecSharedMemoryFlags.INOUT);
+   ctx.releaseSharedMemory(shm);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecSession">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession"></a><h3>2.4. TeecSession</h3>
+<div class="brief">
+ This type denotes a TEE Session, the logical link between Client Application and a particular Trusted Application.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecSession {
+    void close() raises ();
+
+    <a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd,
+                             <a href="#TeecParameter">TeecParameter</a>[] params,
+                             <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback,
+                             optional ? errorCallback) raises ();
+  };</pre>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecSession::close">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession::close"></a><code><b><span class="methodName">close</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Close session with TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void close();
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     session.close();
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   val cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+   /* Call to openSession can be revoked also */
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+<dt class="method" id="TeecSession::invokeCommand">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSession::invokeCommand"></a><code><b><span class="methodName">invokeCommand</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Send command to TA.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint"><a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params, <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback, optional ? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="description">
+            <p>
+The <em>ErrorCallback()</em> is launched with these error types:
+            </p>
+            <ul>
+              <li>
+NotSupportedError - If the requested operation is not supported              </li>
+              <li>
+InvalidValuesError - If any of the input parameters contain an invalid value as decided by TA.              </li>
+              <li>
+OperationCanceledError - If it fails due to request cancellation              </li>
+              <li>
+AbortError - If any other error occurs.              </li>
+            </ul>
+           </div>
+<p><span class="privilegelevel">
+            Privilege level: </span>
+ partner
+            </p>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/tee.client
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">cmd</span>:
+ the command.
+                </li>
+          <li class="param">
+<span class="name">params</span>:
+ the array of parameters (max 4 items).
+                </li>
+          <li class="param">
+<span class="name">successCallback</span>:
+ callback function triggered when sucessfully done.
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
+ callback function triggered when error occured.
+                </li>
+        </ul>
+</div>
+<div class="returntype">
+<p><span class="return">Return value:</span></p>
+ TeecTaskId The id of scheduled task which can be used to revoke (see revokeCommand).
+              </div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type SecurityError, if application does not have privilege to access this method.
+                </p></li>
+<li class="list"><p>
+ with error type NotSupportedError, if required feature is not supported.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidValuesError, if any of input arguments is invalid, like
+<em>params</em> contains more then 4 elements.
+                </p></li>
+<li class="list"><p>
+ with error type TypeMismatchError, if the input parameter
+is not compatible with the expected type for that parameter.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint"> try
+ {
+   var gSession;
+   function commandError(err)
+   {
+     gSession.close();
+   }
+   function commandSuccess(cmd, params)
+   {
+     console.log("command " + cmd + ": ", params);
+     gSession.close();
+   }
+   function sessionSuccess(session)
+   {
+     /* Session opened, now can communicate with TA */
+     gSession = session;
+     var data = [1,2,3,4,45,6,7,7,7];
+     var p1 = new TeecValue(10, 100);    /* Command parameter 1 */
+     var p2 = new TeecTempMemory(data);  /* Command parameter 2 */
+     session.invokeCommand(1, [p1, p2], commandSuccess, commandError);
+   }
+   function sessionError(err)
+   {
+     console.log("openSession: " + err.name + ":" + err.message);
+   }
+   var ta = "123e4567-e89b-12d3-a456-426655440000";
+   var ctx = tizen.teec.getContext();
+   val cid = ctx.openSession(ta, TeecLoginMethod.PUBLIC, null, null, sessionSuccess, sessionError);
+ }
+ catch (err)
+ {
+   console.log(err.name + ": " + err.message);
+ }
+ </pre>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecSharedMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory"></a><h3>2.5. TeecSharedMemory</h3>
+<div class="brief">
+ Shared memory reference object.
+Instance of this object can be obtained from <em>TeecSession</em> with one of methods:
+<em>allocateSharedMemory</em> or <em>registerSharedMemory</em>          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecSharedMemory {
+    readonly attribute unsigned long long size;
+
+    void setData(byte[] data, unsigned long long offset) raises ();
+
+    void getData(byte[] data, unsigned long long offset) raises ();
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecSharedMemory::size">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">unsigned long long </span><span class="name">size</span></span><div class="brief">
+ Size of this shared memory block.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecSharedMemory::setData">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory::setData"></a><code><b><span class="methodName">setData</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Convenient method to set some bytes in shared memory.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void setData(byte[] data, unsigned long long offset);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">data</span>:
+ sequence of bytes (buffer size is data.length)
+                </li>
+          <li class="param">
+<span class="name">offset</span>:
+ offset in shared memory to start writing
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if a parameter has incorrect type.
+                </p></li></ul>
+</li></ul>
+        </div>
+</dd>
+<dt class="method" id="TeecSharedMemory::getData">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecSharedMemory::getData"></a><code><b><span class="methodName">getData</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Convenient method to get some bytes from shared memory.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void getData(byte[] data, unsigned long long offset);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">data</span>:
+ buffer for bytes (buffer size is data.length)
+                </li>
+          <li class="param">
+<span class="name">offset</span>:
+ offset in shared memory to start reading
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul><li class="list"><p>
+ with error type TypeMismatchError, if a parameter has incorrect type.
+                </p></li></ul>
+</li></ul>
+        </div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecParameter">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecParameter"></a><h3>2.6. TeecParameter</h3>
+<div class="brief">
+ Abstract parameter type.
+          </div>
+<pre class="webidl prettyprint">  [NoInterfaceObject] interface TeecParameter {
+    attribute DOMString type;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecParameter::type">
+<span class="attrName"><span class="type">DOMString </span><span class="name">type</span></span><div class="brief">
+ The type of parameter - abstract class for all parameteres.
+This can be one of TeecValueType, TeecTempMemoryType, TeecRegisteredMemoryType
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="TeecRegisteredMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecRegisteredMemory"></a><h3>2.7. TeecRegisteredMemory</h3>
+<div class="brief">
+ Registered memory parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size)]
+  interface TeecRegisteredMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute <a href="#TeecSharedMemory">TeecSharedMemory</a> shm;
+
+    attribute unsigned long long offset;
+
+    attribute unsigned long long size;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecRegisteredMemory::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecRegisteredMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="TeecRegisteredMemory::shm">
+<span class="attrName"><span class="type">TeecSharedMemory </span><span class="name">shm</span></span><div class="brief">
+ Referred shared memory.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecRegisteredMemory::offset">
+<span class="attrName"><span class="type">unsigned long long </span><span class="name">offset</span></span><div class="brief">
+ Offset in shared memory (start of accessed block).
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecRegisteredMemory::size">
+<span class="attrName"><span class="type">unsigned long long </span><span class="name">size</span></span><div class="brief">
+ Size of block in shared memory (length of the block).
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="TeecTempMemory">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecTempMemory"></a><h3>2.8. TeecTempMemory</h3>
+<div class="brief">
+ Temporary memory parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(byte[] mem)]
+  interface TeecTempMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute byte[] mem;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecTempMemory::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecTempMemory(byte[] mem);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul><li class="attribute" id="TeecTempMemory::mem">
+<span class="attrName"><span class="type">byte[]
+                      </span><span class="name">mem</span></span><div class="brief">
+ Local memory block.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li></ul>
+</div>
+</div>
+<div class="interface" id="TeecValue">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecValue"></a><h3>2.9. TeecValue</h3>
+<div class="brief">
+ Value parameter.
+          </div>
+<pre class="webidl prettyprint">  [Constructor(long a, long b)]
+  interface TeecValue : <a href="#TeecParameter">TeecParameter</a> {
+    attribute long a;
+    attribute long b;
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+        
+      <div class="constructors">
+<h4 id="TeecValue::constructor">Constructors</h4>
+<dl><pre class="webidl prettyprint">TeecValue(long a, long b);</pre></dl>
+</div>
+<div class="attributes">
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="TeecValue::a">
+<span class="attrName"><span class="type">long </span><span class="name">a</span></span><div class="brief">
+ Integer number to be delivered.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+<li class="attribute" id="TeecValue::b">
+<span class="attrName"><span class="type">long </span><span class="name">b</span></span><div class="brief">
+ Integer number to be delivered.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+</li>
+</ul>
+</div>
+</div>
+<div class="interface" id="TeecOpenSuccessCallback">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecOpenSuccessCallback"></a><h3>2.10. TeecOpenSuccessCallback</h3>
+<div class="brief">
+ The success callback to be invoked when session was opened.
+          </div>
+<pre class="webidl prettyprint">  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecOpenSuccessCallback {
+    void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecOpenSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecOpenSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the session is opened successfully.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">session</span>:
+ <em>TeecSession</em> object
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="TeecCommandSuccessCallback">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecCommandSuccessCallback"></a><h3>2.11. TeecCommandSuccessCallback</h3>
+<div class="brief">
+ The success callback to be invoked when command performed on TA is finished.
+          </div>
+<pre class="webidl prettyprint">  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecCommandSuccessCallback {
+    void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+  };</pre>
+<p><span class="version">
+            Since: </span>
+ 4.0
+          </p>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="TeecCommandSuccessCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::LibTeec::TeecCommandSuccessCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the command is done successfully.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 4.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param"><span class="name">cmd</span></li>
+          <li class="param">
+<span class="name">params</span>:
+ array of <em>TeecParam</em> objects
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<h2 id="api-features">3. Related Feature</h2>
+<div id="def-api-features" class="def-api-features">
+        You can check if this API is supported with <em>tizen.systeminfo.getCapability()</em> and decide enable/disable codes that need this API.
+                    <div class="def-api-feature">
+<p><div class="description">
+            <p>
+To guarantee that the CA is running on a device with TrustZone support, declare following feature in the config.
+            </p>
+           </div></p>
+<li class="feature">http://tizen.org/feature/security.tee</li>
+</div>
+<p></p>
+                    For more information, see <a href="https://developer.tizen.org/development/getting-started/web-application/understanding-tizen-programming/application-filtering">Application Filtering.</a>
+</div>
+<h2 id="full-webidl">4. Full WebIDL</h2>
+<pre class="webidl prettyprint">module LibTeec {
+
+
+  enum TeecLoginMethod {
+    "PUBLIC",
+    "USER",
+    "GROUP",
+    "APPLICATION"
+  };
+
+  enum TeecValueType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  enum TeecTempMemoryType {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  enum TeecRegisteredMemoryType {
+    "WHOLE",
+    "PARTIAL_INPUT",
+    "PARTIAL_OUTPUT",
+    "PARTIAL_INOUT"
+  };
+
+  enum TeecSharedMemoryFlags {
+    "INPUT",
+    "OUTPUT",
+    "INOUT"
+  };
+
+  typedef DOMString TeecUuid;
+
+  typedef unsigned long TeecTaskId;
+
+  [NoInterfaceObject] interface LibTeecManagerObject {
+    readonly attribute <a href="#LibTeecManager">LibTeecManager</a> teec;
+  };
+   implements <a href="#LibTeecManagerObject">LibTeecManagerObject</a>;
+
+  [NoInterfaceObject] interface LibTeecManager {
+
+    <a href="#TeecContext">TeecContext</a> getContext(optional DOMString? name) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecContext {
+    <a href="#TeecTaskId">TeecTaskId</a> openSession(<a href="#TeecUuid">TeecUuid</a> taUUID,
+                           <a href="#TeecLoginMethod">TeecLoginMethod</a> loginMethod,
+                           unsigned long? connectionData,
+                           <a href="#TeecParameter">TeecParameter</a>[] params,
+                           <a href="#TeecOpenSuccessCallback">TeecOpenSuccessCallback</a> successCallback,
+                           optional ? errorCallback) raises ();
+
+    void revokeCommand(<a href="#TeecTaskId">TeecTaskId</a> id) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> allocateSharedMemory(unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    <a href="#TeecSharedMemory">TeecSharedMemory</a> registerSharedMemory(unsigned long long addr, unsigned long size, <a href="#TeecSharedMemoryFlags">TeecSharedMemoryFlags</a> flags) raises ();
+
+    void releaseSharedMemory(<a href="#TeecSharedMemory">TeecSharedMemory</a> shm) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecSession {
+    void close() raises ();
+
+    <a href="#TeecTaskId">TeecTaskId</a> invokeCommand(long cmd,
+                             <a href="#TeecParameter">TeecParameter</a>[] params,
+                             <a href="#TeecCommandSuccessCallback">TeecCommandSuccessCallback</a> successCallback,
+                             optional ? errorCallback) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecSharedMemory {
+    readonly attribute unsigned long long size;
+
+    void setData(byte[] data, unsigned long long offset) raises ();
+
+    void getData(byte[] data, unsigned long long offset) raises ();
+  };
+
+  [NoInterfaceObject] interface TeecParameter {
+    attribute DOMString type;
+  };
+
+  [Constructor(<a href="#TeecSharedMemory">TeecSharedMemory</a> memory, unsigned long long offset, unsigned long long size)]
+  interface TeecRegisteredMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute <a href="#TeecSharedMemory">TeecSharedMemory</a> shm;
+
+    attribute unsigned long long offset;
+
+    attribute unsigned long long size;
+  };
+
+  [Constructor(byte[] mem)]
+  interface TeecTempMemory : <a href="#TeecParameter">TeecParameter</a> {
+    attribute byte[] mem;
+  };
+
+  [Constructor(long a, long b)]
+  interface TeecValue : <a href="#TeecParameter">TeecParameter</a> {
+    attribute long a;
+    attribute long b;
+  };
+
+  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecOpenSuccessCallback {
+    void onsuccess(<a href="#TeecSession">TeecSession</a> session);
+  };
+
+  [Callback=FunctionOnly, NoInterfaceObject]
+  interface TeecCommandSuccessCallback {
+    void onsuccess(long cmd, <a href="#TeecParameter">TeecParameter</a>[] params);
+  };
+
+};</pre>
+</div>
+<div id="page-footer">
+<div class="copyright" align="center">
+         Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. <br>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.
+            </div>
+<script type="text/javascript">
+
+              var _gaq = _gaq || [];
+              _gaq.push(['_setAccount', 'UA-25976949-1']);
+              _gaq.push(['_setDomainName', 'tizen.org']);
+              _gaq.push(['_trackPageview']);
+
+              (function() {
+                var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+                ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+              })();
+
+            </script>
+</div>
+</body>
+</html>
index 6fa8462..029d1df 100644 (file)
@@ -87,6 +87,7 @@
                                                <li><a href="device_api/mobile/index.html#Security">Security</a>
                                                        <ul>
                                                                <li><a href="device_api/mobile/tizen/keymanager.html">Key Manager</a>
+                                                               <li><a href="device_api/mobile/tizen/libteec.html">LibTeec</a>
                                                        </ul>
                                                </li>
                                                <li><a href="device_api/mobile/index.html#Social">Social</a>
                                                <li><a href="device_api/wearable/index.html#Security">Security</a>
                                                        <ul>
                                                                <li><a href="device_api/wearable/tizen/keymanager.html">Key Manager</a>
+                                                               <li><a href="device_api/wearable/tizen/libteec.html">LibTeec</a>
                                                        </ul>
                                                </li>
                                                <li><a href="device_api/wearable/index.html#System">System</a>
                                                <li><a href="device_api/tv/index.html#Security">Security</a>
                                                        <ul>
                                                                <li><a href="device_api/tv/tizen/keymanager.html">Key Manager</a>
+                                                               <li><a href="device_api/tv/tizen/libteec.html">LibTeec</a>
                                                        </ul>
                                                </li>
                                                <li><a href="device_api/tv/index.html#System">System</a>