[SAMPLE APP][FIDO-CLIENT] Tutorial and guide for tizen_3.0
authorharshdeep <harsh.v@samsung.com>
Tue, 8 Mar 2016 07:12:09 +0000 (12:42 +0530)
committerharshdeep <harsh.v@samsung.com>
Mon, 14 Mar 2016 09:01:25 +0000 (14:31 +0530)
Change-Id: I1183ac061fea9702bc454ac18e8bd8d2b86ca86a
Signed-off-by: harshdeep <harsh.v@samsung.com>
org.tizen.guides/html/images/fido_auth_flow.png [new file with mode: 0644]
org.tizen.guides/html/images/fido_dereg_flow.png [new file with mode: 0644]
org.tizen.guides/html/images/fido_reg_flow.png [new file with mode: 0644]
org.tizen.guides/html/images/fido_uaf_high_level_architecture.png [new file with mode: 0644]
org.tizen.guides/html/native/account/account_guide_n.htm
org.tizen.guides/html/native/account/fido_client_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/guides_n.htm
org.tizen.tutorials/html/native/account/account_tutorials_n.htm
org.tizen.tutorials/html/native/account/fido_client_tutorial_n.htm [new file with mode: 0644]
org.tizen.tutorials/html/native/tutorials_n.htm

diff --git a/org.tizen.guides/html/images/fido_auth_flow.png b/org.tizen.guides/html/images/fido_auth_flow.png
new file mode 100644 (file)
index 0000000..169d1f0
Binary files /dev/null and b/org.tizen.guides/html/images/fido_auth_flow.png differ
diff --git a/org.tizen.guides/html/images/fido_dereg_flow.png b/org.tizen.guides/html/images/fido_dereg_flow.png
new file mode 100644 (file)
index 0000000..2b763f9
Binary files /dev/null and b/org.tizen.guides/html/images/fido_dereg_flow.png differ
diff --git a/org.tizen.guides/html/images/fido_reg_flow.png b/org.tizen.guides/html/images/fido_reg_flow.png
new file mode 100644 (file)
index 0000000..22c90b5
Binary files /dev/null and b/org.tizen.guides/html/images/fido_reg_flow.png differ
diff --git a/org.tizen.guides/html/images/fido_uaf_high_level_architecture.png b/org.tizen.guides/html/images/fido_uaf_high_level_architecture.png
new file mode 100644 (file)
index 0000000..73303bd
Binary files /dev/null and b/org.tizen.guides/html/images/fido_uaf_high_level_architecture.png differ
index 6e66001..3a1ff2d 100644 (file)
@@ -1,70 +1,72 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
-<head>\r
-       <meta http-equiv="content-type" content="text/html; charset=utf-8" />\r
-       <meta http-equiv="X-UA-Compatible" content="IE=9" />\r
-       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />\r
-       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />\r
-       <script type="text/javascript" src="../../scripts/snippet.js"></script> \r
-       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>\r
-       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>\r
-       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>\r
-       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>\r
-\r
-       <title>Account</title>  \r
-</head>\r
-\r
-<body onload="prettyPrint()" style="overflow: auto;">\r
-\r
-<div id="toc-navigation">\r
-       <div id="profile">\r
-               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/></p>\r
-       </div>\r
-       \r
-       <div id="toc_border"><div id="toc">\r
-               <p class="toc-title">Related Info</p>\r
-               <ul class="toc">\r
-                       <li><a href="../../../../org.tizen.tutorials/html/native/account/account_tutorials_n.htm">Account Tutorials</a></li>\r
-                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ACCOUNT__FRAMEWORK.html">Account API for Mobile Native</a></li>\r
-               </ul>\r
-       </div></div>\r
-</div> \r
-\r
-<div id="container"><div id="contents"><div class="content">\r
-<h1>Account</h1> \r
-       <p>Account features include managing various account information, such as receiving sync operation notifications, and obtaining an access token by using the OAuth 2.0 authorization.</p>\r
-        \r
- <p>The following guides apply in <strong>mobile applications only</strong>:</p> \r
- <ul>\r
-       <li><a href="account_manager_n.htm">Account Manager</a> \r
-       <p>Allows you to work with accounts in your application by creating, managing and removing individual accounts.</p></li> \r
-       <li><p><a href="oauth2_n.htm">OAuth 2.0</a></p>\r
-       <p>Enables you to obtain an access token by using the OAuth 2.0 authorization.</p></li>\r
-       <li><p><a href="sync_manager_n.htm">Sync Manager</a></p>\r
-       <p>Enables you to receive notifications in your application about syncing operations between a server and the device.</p></li>\r
- </ul>\r
\r
-<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
-<script type="text/javascript" src="../../scripts/showhide.js"></script>\r
-</div></div></div>\r
-\r
-<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>\r
-\r
-<div id="footer">\r
-<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>\r
-</div>\r
-\r
-<script type="text/javascript">\r
-var _gaq = _gaq || [];\r
-_gaq.push(['_setAccount', 'UA-25976949-1']);\r
-_gaq.push(['_trackPageview']);\r
-(function() {\r
-var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r
-ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r
-var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\r
-})();\r
-</script>\r
-\r
-</body>\r
-</html>\r
-\r
+<!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>Account</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/></p>
+       </div>
+       
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Related Info</p>
+               <ul class="toc">
+                       <li><a href="../../../../org.tizen.tutorials/html/native/account/account_tutorials_n.htm">Account Tutorials</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ACCOUNT__FRAMEWORK.html">Account API for Mobile Native</a></li>
+               </ul>
+       </div></div>
+</div> 
+
+<div id="container"><div id="contents"><div class="content">
+<h1>Account</h1> 
+       <p>Account features include managing various account information, such as receiving sync operation notifications, and obtaining an access token by using the OAuth 2.0 authorization.</p>
+        
+ <p>The following guides apply in <strong>mobile applications only</strong>:</p> 
+ <ul>
+       <li><a href="account_manager_n.htm">Account Manager</a> 
+       <p>Allows you to work with accounts in your application by creating, managing and removing individual accounts.</p></li> 
+       <li><p><a href="oauth2_n.htm">OAuth 2.0</a></p>
+       <p>Enables you to obtain an access token by using the OAuth 2.0 authorization.</p></li>
+       <li><p><a href="sync_manager_n.htm">Sync Manager</a></p>
+       <p>Enables you to receive notifications in your application about syncing operations between a server and the device.</p></li>
+       <li><p><a href="fido_client_n.htm">FIDO Client</a></p>
+       <p>Enables you to authenticate using FIDO framework.</p></li>
+ </ul>
+<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>
+
diff --git a/org.tizen.guides/html/native/account/fido_client_n.htm b/org.tizen.guides/html/native/account/fido_client_n.htm
new file mode 100644 (file)
index 0000000..4a8b4f9
--- /dev/null
@@ -0,0 +1,106 @@
+<!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>FIDO-client</title>
+</head>
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+        <li><a href="../../../../org.tizen.tutorials/html/native/account/fido_client_tutorial_n.htm">FIDO-client Tutorial</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>FIDO client</h1>
+  <p>The FIDO (Fast IDentity Online) Alliance is a organization formed to address the lack of interoperability among strong authentication devices as well as the problems users face with creating and remembering multiple usernames and passwords.</p>
+  <p>FIDO covers both Password-less authentications (Fingerprint, Iris, Voice etc.) and Multi-factor authentication (OTP, USB Dongle etc.). Tizen currently does not support multi factor authentication.</p>
+  <p>FIDO Ready™ : FIDO Alliance provides certification for FIDO compliant products.</p>
+
+<h2 id="fido_uaf_components" name="fido_uaf_components">FIDO UAF Components</h2>
+  <p>UAF authenticators may be connected to a user device via various physical interfaces (SPI, USB, Bluetooth, etc). The UAF Authenticator-Specific module (ASM) is a software interface on top of UAF authenticators which gives a standardized way for FIDO UAF Clients to detect and access the functionality of UAF authenticators, and hides internal communication complexity from clients.</p>
+  <p>The ASM is a platform-specific software component offering an API to FIDO UAF Clients, enabling them to discover and communicate with one or more available authenticators.</p>
+
+  <p> A single ASM may report on behalf of multiple authenticators.</p>
+  <p>The FIDO UAF protocol and its various operations is described in the FIDO UAF Protocol Specification <a href="https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#bib-UAFProtocol" target="_blank">[UAF Protocol]</a>. The following simplified architecture diagram illustrates the interactions and actors this document is concerned with:</p>
+
+  <p style="text-align: center;"> <img alt="UAF High Level Architecture" src="../../images/fido_uaf_high_level_architecture.png" /></p>
+  <p class="figure">Figure: UAF High Level Architecture</p>
+</li>
+
+<p>The following forms the basic of the FIDO components</p>
+<ul>
+  <li><p><strong>FIDO UAF Client</strong></p>
+  <p>A FIDO UAF Client implements the client side of the FIDO UAF protocols, and is responsible for interacting with specific FIDO UAF Authenticators using the FIDO UAF Authenticator Abstraction layer via the FIDO UAF Authenticator API.</p>
+
+  <li><p><strong>FIDO UAF Server</strong></p></li>
+  <p>A FIDO UAF server implements the server side of the FIDO UAF protocols and is responsible for:</p>
+
+    <ul><li><p>Interacting with the Relying Party web server to communicate FIDO UAF protocol messages to a FIDO UAF Client via a device user agent.</p></li>
+    <li><p>Validating FIDO UAF authenticator attestations against the configured authenticator metadata to ensure only trusted authenticators are registered for use.</p></li>
+    <li><p>Manage the association of registered FIDO UAF Authenticators to user accounts at the Relying Party.</p></li>
+    <li><p>Evaluating user authentication and transaction confirmation responses to determine their validity.</p></li></ul>
+
+  <li><p><strong>FIDO UAF Protocols </strong></p></li>
+  <p>The FIDO UAF protocols carry FIDO UAF messages between user devices and Relying Parties. There are protocol messages addressing:</p>
+  <ul><li><p>Authenticator Registration: The FIDO UAF registration protocol enables Relying Parties to discover the FIDO UAF Authenticators available on a user's system or device. Discovery will convey FIDO UAF Authenticator attributes to the Relying Party thus enabling policy decisions and enforcement to take place.</p></li>
+  <p style="text-align: center;"> <img alt="Components" src="../../images/fido_reg_flow.png" /></p>
+  <p class="figure">Figure: FIDO UAF REGISTERATION</p>
+
+  <li><p>User Authentication: Authentication is typically based on cryptographic challenge-response authentication protocols and will facilitate user choice regarding which FIDO UAF Authenticators are employed in an authentication event.</p></li>
+  <p style="text-align: center;"> <img alt="Components" src="../../images/fido_auth_flow.png" /></p>
+  <p class="figure">Figure: FIDO UAF AUTHENTICATION</p>
+
+  <li><p>Authenticator Deregistration: Deregistration is typically required when the user account is removed at the Relying Party. The Relying Party can trigger the deregistration by requesting the Authenticator to delete the associated UAF credential with the user account.</p></li></ul>
+  <p style="text-align: center;"> <img alt="Components" src="../../images/fido_dereg_flow.png" /></p>
+  <p class="figure">Figure: FIDO UAF DEREGISTERATION</p>
+
+  <li><p><strong>FIDO UAF Authenticator Abstraction Layer</strong></p></li>
+  <p>The FIDO UAF Authenticator Abstraction Layer provides a uniform API to FIDO Clients enabling the use of authenticator-based cryptographic services for FIDO-supported operations. It provides a uniform lower-layer "authenticator plugin" API facilitating the deployment of multi-vendor FIDO UAF Authenticators and their requisite drivers.</p>
+
+  <li><p><strong>FIDO UAF Authenticator</strong></p></li>
+  <p>A FIDO UAF Authenticator is a secure entity, connected to or housed within FIDO user devices, that can create key material associated to a Relying Party. The key can then be used to participate in FIDO UAF strong authentication protocols.</p>
+
+  <li><p><strong>FIDO UAF Authenticator Metadata Validation</strong></p></li>
+  <p>In the FIDO UAF context, attestation is how Authenticators make claims to a Relying Party during registration that the keys they generate, and/or certain measurements they report, originate from genuine devices with certified characteristics. An attestation signature, carried in a FIDO UAF registration protocol message is validated by the FIDO UAF Server.</p>
+</li></ul>
+
+  <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 f74a290..cf74a92 100644 (file)
@@ -70,8 +70,8 @@
        <p>Enables you to handle UI extensions, which include managing sound data, such as voice commands, speech-to-text (STT), and text-to-speech (TTS).</p></li>
        <li><a href="web/web_guide_n.htm">Web</a>
        <p>Enables you to access Web content.</p></li>
-       <li><a href="account/account_guide_n.htm">Account</a> <strong>in mobile applications only</strong> 
-       <p>Enables you to manage account information, such as receive sync operation notifications, and obtain an access token by using the OAuth 2.0 authorization.</p></li>
+       <li><a href="account/account_guide_n.htm">Account</a>
+       <p>Enables you to manage account information, such as receive sync operation notifications, obtain an access token by using the OAuth 2.0 authorization and authenticate users using FIDO framework.</p></li>
        <li><a href="social/social_guide_n.htm">Social</a> <strong>in mobile applications only</strong>
        <p>Enables you to manage the user&#39;s personal data, such as contacts, calendars, and accounts.</p></li>      
        <li><a href="ui/ui_guide_n.htm">UI Framework</a> <strong>in mobile applications only</strong>
index 029b2e6..a4efcf8 100644 (file)
@@ -1,68 +1,71 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
-<head>\r
-    <meta http-equiv="content-type" content="text/html; charset=utf-8" />\r
-    <meta http-equiv="X-UA-Compatible" content="IE=9" />\r
-    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />\r
-    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />\r
-    <script type="text/javascript" src="../../scripts/snippet.js"></script>\r
-    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>\r
-    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>\r
-    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>\r
-    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>\r
-  <title>Account: Managing Account Data</title>\r
- </head>\r
-<body onload="prettyPrint()" style="overflow: auto;">\r
-\r
-<div id="toc-navigation">\r
-    <div id="profile">\r
-        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/></p>\r
-    </div>\r
-    <div id="toc_border"><div id="toc">\r
-        <p class="toc-title">Related Info</p>\r
-        <ul class="toc">\r
-            <li><a href="../../../../org.tizen.guides/html/native/account/account_guide_n.htm">Account Guides</a></li>\r
-                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ACCOUNT__FRAMEWORK.html">Account API for Mobile Native</a></li>              \r
-        </ul>\r
-    </div></div>\r
-</div>\r
-\r
-<div id="container"><div id="contents"><div class="content">\r
-\r
- <h1>Account: Managing Account Data</h1>\r
-\r
- <p>The account tutorials demonstrate how to use the following features in creating Tizen native applications.</p>\r
\r
- <p>The following tutorials apply in <strong>mobile applications only</strong>:</p>  \r
-  <ul>\r
-       <li><a href="account_tutorial_n.htm">Account Manager: Managing Account Information on the Device</a> <p>Demonstrates how you can connect to and disconnect from the Account Service, create, delete, and update accounts in the account database, and manage account information.</p></li>\r
-    <li><a href="oauth2_tutorial_n.htm">OAuth 2.0: Using the Authorization Framework</a>\r
-    <p>Demonstrates how you can obtain access tokens using OAuth 2.0 authorization.</p></li>\r
-       <li><a href="sync_manager_tutorial_n.htm">Sync Manager: Scheduling for Application Data Syncing</a>\r
-       <p>Demonstrates how you can receive notifications about syncing operations between a server and the device.</p></li>\r
-  </ul>\r
-\r
-<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
-<script type="text/javascript" src="../../scripts/showhide.js"></script>\r
-\r
-</div></div></div>\r
-\r
-<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>\r
-\r
-<div id="footer">\r
-<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>\r
-</div>\r
-\r
-<script type="text/javascript">\r
-var _gaq = _gaq || [];\r
-_gaq.push(['_setAccount', 'UA-25976949-1']);\r
-_gaq.push(['_trackPageview']);\r
-(function() {\r
-var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r
-ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r
-var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\r
-})();\r
-</script>\r
-\r
-</body>\r
+<!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>Account: Managing Account Data</title>
+ </head>
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/account/account_guide_n.htm">Account Guides</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ACCOUNT__FRAMEWORK.html">Account API for Mobile Native</a></li>              
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+ <h1>Account: Managing Account Data</h1>
+
+ <p>The account tutorials demonstrate how to use the following features in creating Tizen native applications.</p>
+ <p>The following tutorials apply in <strong>mobile applications only</strong>:</p>  
+  <ul>
+       <li><a href="account_tutorial_n.htm">Account Manager: Managing Account Information on the Device</a> 
+       <p>Demonstrates how you can connect to and disconnect from the Account Service, create, delete, and update accounts in the account database, and manage account information.</p></li>
+       <li><a href="oauth2_tutorial_n.htm">OAuth 2.0: Using the Authorization Framework</a>
+       <p>Demonstrates how you can obtain access tokens using OAuth 2.0 authorization.</p></li>
+       <li><a href="sync_manager_tutorial_n.htm">Sync Manager: Scheduling for Application Data Syncing</a>
+       <p>Demonstrates how you can receive notifications about syncing operations between a server and the device.</p></li>
+       <li><a href="fido_client_tutorial_n.htm">FIDO Client: Authenticating users using FIDO Framework</a>
+       <p>Demonstrates how you can authenticate users using the FIDO framework.</p></li>
+  </ul>
+
+<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>
\ No newline at end of file
diff --git a/org.tizen.tutorials/html/native/account/fido_client_tutorial_n.htm b/org.tizen.tutorials/html/native/account/fido_client_tutorial_n.htm
new file mode 100644 (file)
index 0000000..f1ce450
--- /dev/null
@@ -0,0 +1,239 @@
+<!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>FIDO Client Tutorial</title>
+ </head>
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#find_auth">Find FIDO authenticator</a></li>
+                       <li><a href="#check_uaf_msg_supported">Check UAF Message Supported</a></li>
+                       <li><a href="#protocol_conversation">Protocol Conversation</a></li>
+                       <li><a href="#set_server_result">Set Server Result</a></li>
+               </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.guides/html/native/account/fido_client_n.htm">FIDO Client Guide</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+<h1>FIDO Client</h1>
+
+<p>This tutorial demonstrates how you can find the authenticator supported by the device, register the user, authenticate the user and then de-register the user.</p>
+<p>Please make sure that FIDO UAF feature is supported by the device.</p>
+
+<h2>Warm-up</h2>
+
+<p>Become familiar with FIDO Framework API basics by learning about:</p>
+<ul>
+               <li><a href="#find_auth">Find FIDO authenticator</a>
+               <p>Find the authenticators supported by the device.</p></li>
+
+               <li><a href="#check_uaf_msg_supported">Check UAF Message Supported</a>
+               <p>This function checks whether the given UAF protocol message can be processed by the device.</p></li>
+
+               <li><a href="#protocol_conversation">Protocol Conversation</a>
+               <p>The core UAF protocol consists of conceptual conversations between a FIDO UAF Client and FIDO Server, that are Registeration, Authenticatction and Derigesteration.</p></li>
+
+               <li><a href="#set_server_result">Set Server Result</a>
+               <p>Set Server Result is used to indicate the status code resulting from a FIDO UAF message delivered to the remote server.</p></li>
+</ul>
+
+<h2 id="find_auth" name="find_auth">Find FIDO authenticator</h2>
+
+<p>Find Authenticator function is used to obtain the list of all available authenticators.</p>
+<pre class="prettyprint">
+void
+start_discover(void *data, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;int ret = fido_foreach_authenticator(auth_list_cb, data);
+}
+
+static void
+auth_list_cb(const fido_authenticator_h auth, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;appdata_s *ad = user_data;
+&nbsp;&nbsp;&nbsp;__print_authinfo(auth, ad);
+}
+
+static void
+__print_authinfo(fido_authenticator_h auth, appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;char *title =  NULL;
+&nbsp;&nbsp;&nbsp;fido_authenticator_get_title(auth, &title);
+
+&nbsp;&nbsp;&nbsp;char *aaid = NULL;
+&nbsp;&nbsp;&nbsp;fido_authenticator_get_aaid(auth, &aaid);
+}
+</pre>
+
+ <h2 id="check_uaf_msg_supported" name="check_uaf_msg_supported">Check UAF Message Supported</h2>
+
+<p>This function checks whether the given UAF protocol message can be processed by the device.</p>
+
+<li><p>After you click <strong>Check UAF Message Supported</strong> on the main screen, on success <strong>'TRUE'</strong> will be displayed in a pop up (as shown in the above figure).</p></li>
+
+<pre class="prettyprint">
+void
+start_check_policy(void *data, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;bool is_supported = false;
+&nbsp;&nbsp;&nbsp;int ret = fido_uaf_is_supported(json_reg, &is_supported);
+
+&nbsp;&nbsp;&nbsp;char str[2048] = {0,};
+&nbsp;&nbsp;&nbsp;str[0] = '\0';
+
+&nbsp;&nbsp;&nbsp;strcpy(str, "CHECK POLICY RESPONSE | ");
+&nbsp;&nbsp;&nbsp;if (is_supported == true)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(str, "TRUE");
+&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(str, "FALSE");
+
+&nbsp;&nbsp;&nbsp;create_popup(str, (appdata_s *) user_data);
+&nbsp;&nbsp;&nbsp;free(error_string);
+}
+</pre>
+
+<h2 id="protocol_conversation" name="protocol_conversation">Protocol Conversation</h2>
+
+<p>The core UAF protocol consists of conceptual conversations between a FIDO UAF Client and FIDO Server.</p>
+
+<ol><li><p><strong> Registeration.</strong></p></li>
+<p>UAF allows the relying party to register a FIDO Authenticator with the user's account at the relying party. The relying party can specify a policy for supporting various FIDO Authenticator types. A FIDO UAF Client will only register existing authenticators in accordance with that policy.</p>
+
+<pre class="prettyprint">
+void
+start_registration(void *data, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;int ret = fido_uaf_get_response_message(json_reg, NULL, _process_cb, data);
+}
+
+static void
+_process_cb(fido_error_e tizen_error_code, const char *uaf_response, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;char str[2048] = {0,};
+&nbsp;&nbsp;&nbsp;if (tizen_error_code == 0 && uaf_response != NULL) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const int max_popup_str_len = strlen(uaf_response) + 500;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *popup_str = calloc(1, max_popup_str_len);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(popup_str, max_popup_str_len - 1, "UAF Response =%s", uaf_response);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create_popup(popup_str, (appdata_s *) user_data);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(popup_str);
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+
+<li><p><strong>Authentication.</strong></p></li>
+<p>UAF allows the relying party to prompt the end user to authenticate using a previously registered FIDO Authenticator. This authentication can be invoked any time, at the relying party's discretion.</p>
+
+<pre class="prettyprint">
+void
+start_auth(void *data, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;int ret = fido_uaf_get_response_message(json_auth, NULL, _process_cb, data);
+}
+</pre>
+
+<li><p><strong>Deregistration.</strong></p></li>
+<p>The relying party can trigger the deletion of the account-related authentication key material.</p>
+
+<pre class="prettyprint">
+void
+start_de_registration(void *data, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;int ret = fido_uaf_get_response_message(json_dereg, NULL, _process_dereg_cb, data);
+}
+
+static void
+_process_dereg_cb(int tizen_error_code, char *uaf_response, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;char *error_string = get_error_code(tizen_error_code);
+&nbsp;&nbsp;&nbsp;create_popup(error_string, (appdata_s *) user_data);
+&nbsp;&nbsp;&nbsp;free(error_string);
+}
+</pre></ol>
+<h2 id="set_server_result" name="set_server_result" class="items-tit-h2">Set Server Result</h2>
+
+<p>Set Server Result is used to indicate the status code resulting from a FIDO UAF message delivered to the remote server.</p>
+<ol><li><p><strong>Set Server Result with Success</strong></p></li>
+
+
+<pre class="prettyprint">
+void
+start_notify_pos(void *data, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;if (json_reg != NULL)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int ret = fido_uaf_get_response_message(json_reg, NULL, _process_cb_for_notify_pos, data);
+}
+
+static void
+_process_cb_for_notify_pos(fido_error_e tizen_error_code, const char *uaf_response, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;int ret = fido_uaf_set_server_result(FIDO_SERVER_STATUS_CODE_OK, uaf_response);
+
+&nbsp;&nbsp;&nbsp;char *error_string = get_error_code(tizen_error_code);
+&nbsp;&nbsp;&nbsp;create_popup(error_string, (appdata_s *) user_data);
+&nbsp;&nbsp;&nbsp;free(error_string);
+}
+</pre>
+
+<li><p><strong>Set Server Result with Failure</strong></p></li>
+
+<pre class="prettyprint">
+void
+start_notify_neg(void *data, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;int ret = fido_uaf_get_response_message(json_reg, NULL, _process_cb_for_notify_neg, data);
+}
+
+static void
+_process_cb_for_notify_neg(fido_error_e tizen_error_code, const char *uaf_response, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;int ret = fido_uaf_set_server_result(0, uaf_response);
+
+&nbsp;&nbsp;&nbsp;char *error_string = get_error_code(tizen_error_code);
+&nbsp;&nbsp;&nbsp;create_popup(error_string, (appdata_s *) user_data);
+&nbsp;&nbsp;&nbsp;free(error_string);
+}
+</pre></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 f1f6462..60452bc 100644 (file)
        <p>Demonstrates how you can recognize and synthesize speech, and handle voice commands.</p></li>        
        <li><a href="web/web_tutorials_n.htm">Web: Managing Web Pages and Web Content</a>
        <p>Demonstrates how you can create a simple web browser</p></li>
-       <li><a href="account/account_tutorials_n.htm">Account</a> <strong>in mobile applications only</strong>
-       <p>Demonstrates how you can manage account information, such as receive sync operation notifications, and obtain an access token by using the OAuth 2.0 authorization.</p></li> 
+       <li><a href="account/account_tutorials_n.htm">Account</a>
+       <p>Demonstrates how you can manage account information, such as receive sync operation notifications, obtain an access token by using the OAuth 2.0 authorization and authenticate users using FIDO framework.</p></li>
        <li><a href="social/social_tutorials_n.htm">Social: Managing Personal Data</a> <strong>in mobile applications only</strong>
-       <p>Demonstrates how you can manage the user&#39;s personal data, such as contacts, calendars, and call history, on the device.</p></li> 
+       <p>Demonstrates how you can manage the user&#39;s personal data, such as contacts, calendars, and call history, on the device.</p></li>
        <li><a href="ui/ui_tutorials_n.htm">UI Framework: Creating the Application UI</a> <strong>in mobile applications only</strong>
        <p>Demonstrates how you can create a visual outlook for your application to ensure the best possible user experience.</p></li>  
 </ul>