7 Nokia Corporation - initial contribution. |
7 Nokia Corporation - initial contribution. |
8 Contributors: |
8 Contributors: |
9 --> |
9 --> |
10 <!DOCTYPE concept |
10 <!DOCTYPE concept |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
12 <concept xml:lang="en" id="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E"><title>Secure Simple Pairing (SSP)</title><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-D51EB888-7908-5F75-80B7-06B47994F22B"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-226FB791-0EA7-5756-893F-2839D4178E1E">Introduction</xref> </p> </li> <li id="GUID-F8B04B59-3A9B-54B5-9D64-A64F6A930A9E"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-2891BA26-F6C3-5F3C-A567-34D806A5DAA4">Overview</xref> </p> </li> <li id="GUID-744E1DDF-2908-569D-9C7A-E29223C6C9E1"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-FC295A44-D8D9-5835-A895-BFB85C5CB8B8">Symbian support for SSP</xref> </p> </li> <li id="GUID-2C9207CF-8924-568A-93F9-340AB3F2A1E4"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-E6541D2E-7881-5670-B0CF-F57AA64AC032">Implementing SSP notifiers</xref> </p> </li> <li id="GUID-3703505F-4F60-534C-B492-D83002FA9577"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-E1A7D7D3-891E-5A90-926D-3F946A5448A3">Using the Out of Band API</xref> </p> </li> <li id="GUID-67BC873E-DC42-5208-AE65-2564B1655C41"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-6C20C226-C4CE-5937-93D2-C1A89F00004C">Using the dedicated bonding API</xref> </p> </li> </ul> <section id="GUID-226FB791-0EA7-5756-893F-2839D4178E1E"><title>Introduction</title> <p>Secure Simple Pairing, introduced into Bluetooth v2.1, simplifies the user experience when pairing Bluetooth devices. </p> <p>This document describes the Symbian OS implementation of SSP. It describes the tasks that must be performed by UI creators to implement SSP and it describes how application developers can use Symbian APIs to pair with Bluetooth enabled devices using SSP. </p> <p><b>Scope</b> </p> <p>This document is intended for Symbian partners and developers implementing SSP on Symbian OS. It assumes that you are familiar with Bluetooth and with developing on Symbian OS. </p> <p><b>Purpose of SSP</b> </p> <p>SSP was introduced to simplify the user experience when pairing Bluetooth devices. Specifically: </p> <ul><li id="GUID-63DD983D-4C9B-55A9-BC1E-B5F590576B51"><p>there is no need for the user to think of a number </p> </li> <li id="GUID-08AFD4B9-4B08-55CD-8A5A-83200F0D75AD"><p>the authentication process may differ for different devices and different services </p> </li> <li id="GUID-AC68A597-36ED-5FE4-8678-21FB8F4498BE"><p>all data transfer is encrypted </p> </li> </ul> </section> <section id="GUID-2891BA26-F6C3-5F3C-A567-34D806A5DAA4"><title>Overview</title> <p><b>The pairing model</b> </p> <p>Pre-SSP pairing is achieved by the user(s) entering a personal identification number (PIN) on one or both devices. Devices with no keypads, such as headsets, have their PINs (typically "0000" or "1234") hard-wired. This is now referred to as Legacy Paring. </p> <p>Under SSP, devices specify their authorisation requirements. The user may have to: </p> <ul><li id="GUID-4B260DAC-E745-5FBE-95D7-3FD721A3F960"><p>press a button in response to a simple yes or no query </p> </li> <li id="GUID-E73EB3E7-5DBC-5326-9728-E086AA58B05A"><p>compare two automatically generated numbers and select 'yes' if they match or 'no' if they do not </p> </li> <li id="GUID-C7AE53AC-037A-5171-AED1-62AB0F0A1953"><p>enter a number on one or both devices </p> </li> <li id="GUID-E4FF8EB0-D0DD-5C39-891E-9732F53B4D7E"><p>do nothing </p> </li> </ul> <p>Once the devices have paired the user may be asked to authorise bonding. Bonded devices can subsequently pair with no user interaction. </p> <p><b>Key concepts</b> </p> <dl><dlentry><dt> Authentication</dt> <dd><p>Verification that a remote device is what it claims to be. Authentication may be unnecessary for some pairings (see Just Works), may require user intervention (see Man in the Middle) or may be performed through another channel (see Out of Band). </p> </dd> </dlentry> <dlentry><dt> Authorisation</dt> <dd><p>In legacy pairing a remote device can be authorised after pairing such that it subsequently connects automatically without user intervention. Authorisation is on a per-service basis. See <b>bonding</b>. </p> </dd> </dlentry> <dlentry><dt>Encryption</dt> <dd><p>Transmission of data between devices after SSP is always encrypted. Under legacy pairing data transmission is not always encrypted. </p> </dd> </dlentry> <dlentry><dt> Man In The Middle (MITM) protection</dt> <dd><p>Authentication explicitly provided by the user before pairing can take place. Under SSP, devices and services have hard-wired authentication requirements as follows: MITM required, MITM not required (see Just Works) and MITM desired (subject to the user interface capabilities of the devices) </p> </dd> </dlentry> <dlentry><dt> Just Works</dt> <dd><p>For some pairings there is little risk of a security breach so SSP provides a mechanism for devices to pair with no explicit user authentication. </p> </dd> </dlentry> <dlentry><dt> Passkey</dt> <dd><p>In the context of a Symbian device, which always has both a display and a keypad, passkey authentication is used when pairing with a remote device which has a keypad but no display. The Symbian device displays a number which the user must enter using the keypad on the remote device </p> </dd> </dlentry> <dlentry><dt> Out Of Band (OOB)</dt> <dd><p>Out of Band authentication is performed using a non-Bluetooth communication channel. The data required to open an MITM protected Bluetooth connection with a remote device is transmitted by other means. </p> </dd> </dlentry> <dlentry><dt> Bonding</dt> <dd><p>Two devices may bond after athentication such that they can reconnect without user intervention. Bonding is achieved on a Symbian device by storing a link key. Symbian devices attempt to bond by default. The user or the remote device may specify that the devices do not bond. </p> </dd> </dlentry> <dlentry><dt> Link key</dt> <dd><p>When a connection is authenticated a link key is created. The link key indicates the strength of authentication (legacy, authenticated or unauthenticated). The link key may be stored by the Symbian device and used to bond (the default behaviour) or discarded when the connection ends. The link key is not displayed to the user. </p> </dd> </dlentry> </dl> </section> <section id="GUID-FC295A44-D8D9-5835-A895-BFB85C5CB8B8"><title>Symbian support for SSP</title> <p><b>Components</b> </p> <p>Support for SSP was added to Symbian OS in v9.5. </p> <p>Most of the changes are internal and transparent to system creators and developers. However, some new APIs added to the Bluetooth User Library allow application developers to use SSP features, and Licensees must implement some SSP specific notifiers. </p> <p>The diagram below shows the interfaces and interface classes required to implement SSP. </p> <p><b> Dedicated Bonding </b> </p> <p>Dedicated bonding is performed by the Bluetooth Pairing Server. Applications can use the <xref href="GUID-8E97F127-DA49-3BB6-B274-348138B425DF.dita"><apiname>RBluetoothDedicatedBondingInitiator</apiname></xref> API to request bonding with a specified Bluetooth device. </p> <p><b> Out of Band Data</b> </p> <p>Out of Band pairing data can be passed to the Bluetooth Pairing Server. The server can use the supplied data to pair with the specified device. Applications can also use the <xref href="GUID-C92BBABD-AE1B-325B-9791-95875272AAAC.dita"><apiname>RBluetoothOobData</apiname></xref> API to retrieve OOB data for the local device to be passed to remote devices. </p> <p><b> Numeric Comparison Notifier </b> </p> <p>The Bluetooth sub-system requires a Numeric Comparison Notifier to be provided by the UI. The notifier must handle <xref href="GUID-D3F5500E-2BCD-3BB9-8B6B-5716C22FAB05.dita"><apiname>TBTNumericComparisonParams</apiname></xref> and return a boolean value which indicates the user's decision. </p> <p><b> Passkey Entry Notifier </b> </p> <p>The Bluetooth sub-system requires a Passkey Entry Notifier to be provided by the UI. The notifier must handle <xref href="GUID-F4DBF857-2192-3177-B431-8499907E41AF.dita"><apiname>TBTPasskeyDisplayParams</apiname></xref> and <xref href="GUID-EB94B14B-F836-3FA1-88CD-51FC0528D76A.dita"><apiname>TBTPasskeyDisplayUpdateParams</apiname></xref>. </p> <p><b> Data Types </b> </p> <p>SSP specific data is stored and manipulated using the following types (significant functions and fields shown only). These types are used in various device and service related APIs. They are defined in <filepath>bt_sock.h</filepath> and <filepath>btdevice.h</filepath>. </p> <p> <codeph>#include <bt_sock.h> </codeph> </p> <codeblock id="GUID-3CF4FEFE-96AC-5CF3-A522-397754161A50" xml:space="preserve"> |
12 <concept id="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E" xml:lang="en"><title>Secure |
|
13 Simple Pairing (SSP)</title><shortdesc>Describes SSP.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
14 <ul> |
|
15 <li id="GUID-D51EB888-7908-5F75-80B7-06B47994F22B"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-226FB791-0EA7-5756-893F-2839D4178E1E">Introduction</xref> </p> </li> |
|
16 <li id="GUID-F8B04B59-3A9B-54B5-9D64-A64F6A930A9E"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-2891BA26-F6C3-5F3C-A567-34D806A5DAA4">Overview</xref> </p> </li> |
|
17 <li id="GUID-744E1DDF-2908-569D-9C7A-E29223C6C9E1"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-FC295A44-D8D9-5835-A895-BFB85C5CB8B8">Symbian support for SSP</xref> </p> </li> |
|
18 <li id="GUID-2C9207CF-8924-568A-93F9-340AB3F2A1E4"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-E6541D2E-7881-5670-B0CF-F57AA64AC032">Implementing SSP notifiers</xref> </p> </li> |
|
19 <li id="GUID-3703505F-4F60-534C-B492-D83002FA9577"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-E1A7D7D3-891E-5A90-926D-3F946A5448A3">Using the Out of Band API</xref> </p> </li> |
|
20 <li id="GUID-67BC873E-DC42-5208-AE65-2564B1655C41"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-6C20C226-C4CE-5937-93D2-C1A89F00004C">Using the dedicated bonding API</xref> </p> </li> |
|
21 </ul> |
|
22 <section id="GUID-226FB791-0EA7-5756-893F-2839D4178E1E"><title>Introduction</title> <p>Secure |
|
23 Simple Pairing, introduced into Bluetooth v2.1, simplifies the user experience |
|
24 when pairing Bluetooth devices. </p> <p>This document describes the Symbian |
|
25 platform implementation of SSP. It describes the tasks that must be performed |
|
26 by UI creators to implement SSP and it describes how application developers |
|
27 can use Symbian APIs to pair with Bluetooth enabled devices using SSP. </p> <p><b>Scope</b> </p> <p>This document is intended for Symbian partners and developers |
|
28 implementing SSP on Symbian platform. It assumes that you are familiar with |
|
29 Bluetooth and with developing on Symbian platform. </p> <p><b>Purpose of SSP</b> </p> <p>SSP was introduced to simplify the user experience |
|
30 when pairing Bluetooth devices. Specifically: </p> <ul> |
|
31 <li id="GUID-63DD983D-4C9B-55A9-BC1E-B5F590576B51"><p>there is no need for |
|
32 the user to think of a number </p> </li> |
|
33 <li id="GUID-08AFD4B9-4B08-55CD-8A5A-83200F0D75AD"><p>the authentication process |
|
34 may differ for different devices and different services </p> </li> |
|
35 <li id="GUID-AC68A597-36ED-5FE4-8678-21FB8F4498BE"><p>all data transfer is |
|
36 encrypted </p> </li> |
|
37 </ul> </section> |
|
38 <section id="GUID-2891BA26-F6C3-5F3C-A567-34D806A5DAA4"><title>Overview</title> <p><b>The pairing model</b> </p> <p>Pre-SSP pairing is achieved by the user(s) |
|
39 entering a personal identification number (PIN) on one or both devices. Devices |
|
40 with no keypads, such as headsets, have their PINs (typically "0000" or "1234") |
|
41 hard-wired. This is now referred to as Legacy Paring. </p> <p>Under SSP, devices |
|
42 specify their authorisation requirements. The user may have to: </p> <ul> |
|
43 <li id="GUID-4B260DAC-E745-5FBE-95D7-3FD721A3F960"><p>press a button in response |
|
44 to a simple yes or no query </p> </li> |
|
45 <li id="GUID-E73EB3E7-5DBC-5326-9728-E086AA58B05A"><p>compare two automatically |
|
46 generated numbers and select 'yes' if they match or 'no' if they do not </p> </li> |
|
47 <li id="GUID-C7AE53AC-037A-5171-AED1-62AB0F0A1953"><p>enter a number on one |
|
48 or both devices </p> </li> |
|
49 <li id="GUID-E4FF8EB0-D0DD-5C39-891E-9732F53B4D7E"><p>do nothing </p> </li> |
|
50 </ul> <p>Once the devices have paired the user may be asked to authorise bonding. |
|
51 Bonded devices can subsequently pair with no user interaction. </p> <p><b>Key concepts</b> </p> <dl> |
|
52 <dlentry> |
|
53 <dt> Authentication</dt> |
|
54 <dd><p>Verification that a remote device is what it claims to be. Authentication |
|
55 may be unnecessary for some pairings (see Just Works), may require user intervention |
|
56 (see Man in the Middle) or may be performed through another channel (see Out |
|
57 of Band). </p> </dd> |
|
58 </dlentry> |
|
59 <dlentry> |
|
60 <dt> Authorisation</dt> |
|
61 <dd><p>In legacy pairing a remote device can be authorised after pairing such |
|
62 that it subsequently connects automatically without user intervention. Authorisation |
|
63 is on a per-service basis. See <b>bonding</b>. </p> </dd> |
|
64 </dlentry> |
|
65 <dlentry> |
|
66 <dt>Encryption</dt> |
|
67 <dd><p>Transmission of data between devices after SSP is always encrypted. |
|
68 Under legacy pairing data transmission is not always encrypted. </p> </dd> |
|
69 </dlentry> |
|
70 <dlentry> |
|
71 <dt> Man In The Middle (MITM) protection</dt> |
|
72 <dd><p>Authentication explicitly provided by the user before pairing can take |
|
73 place. Under SSP, devices and services have hard-wired authentication requirements |
|
74 as follows: MITM required, MITM not required (see Just Works) and MITM desired |
|
75 (subject to the user interface capabilities of the devices) </p> </dd> |
|
76 </dlentry> |
|
77 <dlentry> |
|
78 <dt> Just Works</dt> |
|
79 <dd><p>For some pairings there is little risk of a security breach so SSP |
|
80 provides a mechanism for devices to pair with no explicit user authentication. </p> </dd> |
|
81 </dlentry> |
|
82 <dlentry> |
|
83 <dt> Passkey</dt> |
|
84 <dd><p>In the context of a Symbian device, which always has both a display |
|
85 and a keypad, passkey authentication is used when pairing with a remote device |
|
86 which has a keypad but no display. The Symbian device displays a number which |
|
87 the user must enter using the keypad on the remote device </p> </dd> |
|
88 </dlentry> |
|
89 <dlentry> |
|
90 <dt> Out Of Band (OOB)</dt> |
|
91 <dd><p>Out of Band authentication is performed using a non-Bluetooth communication |
|
92 channel. The data required to open an MITM protected Bluetooth connection |
|
93 with a remote device is transmitted by other means. </p> </dd> |
|
94 </dlentry> |
|
95 <dlentry> |
|
96 <dt> Bonding</dt> |
|
97 <dd><p>Two devices may bond after athentication such that they can reconnect |
|
98 without user intervention. Bonding is achieved on a Symbian device by storing |
|
99 a link key. Symbian devices attempt to bond by default. The user or the remote |
|
100 device may specify that the devices do not bond. </p> </dd> |
|
101 </dlentry> |
|
102 <dlentry> |
|
103 <dt> Link key</dt> |
|
104 <dd><p>When a connection is authenticated a link key is created. The link |
|
105 key indicates the strength of authentication (legacy, authenticated or unauthenticated). |
|
106 The link key may be stored by the Symbian device and used to bond (the default |
|
107 behaviour) or discarded when the connection ends. The link key is not displayed |
|
108 to the user. </p> </dd> |
|
109 </dlentry> |
|
110 </dl> </section> |
|
111 <section id="GUID-FC295A44-D8D9-5835-A895-BFB85C5CB8B8"><title>Symbian support |
|
112 for SSP</title> <p><b>Components</b> </p> <p>Most |
|
113 of the changes are internal and transparent to system creators and developers. |
|
114 However, some new APIs added to the Bluetooth User Library allow application |
|
115 developers to use SSP features, and Licensees must implement some SSP specific |
|
116 notifiers. </p> <p>The diagram below shows the interfaces and interface classes |
|
117 required to implement SSP. </p> <p><b> Dedicated |
|
118 Bonding </b> </p> <p>Dedicated bonding is performed by the Bluetooth Pairing |
|
119 Server. Applications can use the <xref href="GUID-8E97F127-DA49-3BB6-B274-348138B425DF.dita"><apiname>RBluetoothDedicatedBondingInitiator</apiname></xref> API |
|
120 to request bonding with a specified Bluetooth device. </p> <p><b> Out of Band Data</b> </p> <p>Out of Band pairing data can be passed to |
|
121 the Bluetooth Pairing Server. The server can use the supplied data to pair |
|
122 with the specified device. Applications can also use the <xref href="GUID-C92BBABD-AE1B-325B-9791-95875272AAAC.dita"><apiname>RBluetoothOobData</apiname></xref> API |
|
123 to retrieve OOB data for the local device to be passed to remote devices. </p> <p><b> Numeric Comparison Notifier </b> </p> <p>The Bluetooth sub-system requires |
|
124 a Numeric Comparison Notifier to be provided by the UI. The notifier must |
|
125 handle <xref href="GUID-D3F5500E-2BCD-3BB9-8B6B-5716C22FAB05.dita"><apiname>TBTNumericComparisonParams</apiname></xref> and return a boolean |
|
126 value which indicates the user's decision. </p> <p><b> Passkey Entry Notifier </b> </p> <p>The Bluetooth sub-system requires |
|
127 a Passkey Entry Notifier to be provided by the UI. The notifier must handle <xref href="GUID-F4DBF857-2192-3177-B431-8499907E41AF.dita"><apiname>TBTPasskeyDisplayParams</apiname></xref> and <xref href="GUID-EB94B14B-F836-3FA1-88CD-51FC0528D76A.dita"><apiname>TBTPasskeyDisplayUpdateParams</apiname></xref>. </p> <p><b> Data |
|
128 Types </b> </p> <p>SSP specific data is stored and manipulated using the following |
|
129 types (significant functions and fields shown only). These types are used |
|
130 in various device and service related APIs. They are defined in <filepath>bt_sock.h</filepath> and <filepath>btdevice.h</filepath>. </p> <p> <codeph>#include <bt_sock.h> </codeph> </p> <codeblock id="GUID-3CF4FEFE-96AC-5CF3-A522-397754161A50" xml:space="preserve"> |
13 enum TBluetoothMitmProtection |
131 enum TBluetoothMitmProtection |
14 { |
132 { |
15 EMitmNotRequired = 0x0, // No Man-in-the-Middle authentication is not required. |
133 EMitmNotRequired = 0x0, // No Man-in-the-Middle authentication is not required. |
16 EMitmDesired = 0x1, // Man-in-the-Middle authentication should be used where possible. |
134 EMitmDesired = 0x1, // Man-in-the-Middle authentication should be used where possible. |
17 EMitmRequired = 0x2 // Man-in-the-Middle authentication is required. |
135 EMitmRequired = 0x2 // Man-in-the-Middle authentication is required. |
90 EEncrypt = 0x04, // Encrypt the link |
208 EEncrypt = 0x04, // Encrypt the link |
91 EBanned = 0x08, // Don't connect to the device |
209 EBanned = 0x08, // Don't connect to the device |
92 EMitmProtectionRequired = 0x10, // Require the link is MITM protected |
210 EMitmProtectionRequired = 0x10, // Require the link is MITM protected |
93 }; |
211 }; |
94 }; |
212 }; |
95 </codeblock> </section> <section id="GUID-E6541D2E-7881-5670-B0CF-F57AA64AC032"><title>Implementing SSP notifiers</title> <p><b>Introdution</b> </p> <p>The Bluetooth sub-system has no user interface. It uses the Symbian <xref href="GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1.dita">notifier framework</xref> for user interaction when pairing. The UI system must provide a notifier, in plug-in form, for each user interaction required by SSP. The notifier must receive data in a specified format from the Bluetooth sub-system, display appropriate controls in a dialog on the screen, respond to the user's input and send data back to the Bluetooth sub-system in a specified format. </p> <p>This document assumes that you already have Bluetooth notifiers in your system. It describes the key aspects of adding notifiers for SSP. The structures, types and constants described below are defined in <filepath>BTExtNotifiers.h</filepath>. You can add notifiers to an existing plug-in or create a new plug-in. </p> <p>Notifiers are typically implemented as sleeping dialogs. A sleeping dialog has its resources allocated when its application (in this case the Uikon Server) is started. A sleeping dialog can therefore be displayed (roused) safely under low memory conditions. </p> <p><b>Notes: </b> </p> <ul><li id="GUID-8F9A2CA6-0481-55EB-8458-076AA869CF1E"><p>This document does not describe how to implement an ECOM plug-in or a sleeping dialog. </p> </li> <li id="GUID-0BA5CB89-F09C-5150-82C5-2169503FF961"><p>Customisation Kit Licensees can find an example notifier implementation here: <filepath>sf/mw/classicui/commonuisupport/uikon/examples/notifier1/</filepath> </p> </li> </ul> <p><b>Numeric Comparison Notifier</b> </p> <p>A numeric comparison notifier is required for SSP Man in the Middle (MITM) authentication when the remote device is capable of displaying a number to the the user and accepting a yes or no response from the user. The notifier must display an automatically generated number and invite the user to confirm (yes or no) that the number is the same as the number displayed on the remote device. The notifier must return the user's response. </p> <p>The Bluetooth Security Manager uses the following code to ask the notifier framework to display the Numeric Comparison Notifier </p> <codeblock id="GUID-C797A612-4AD7-5DE1-854E-3398945A4957" xml:space="preserve"> |
213 </codeblock> </section> |
|
214 <section id="GUID-E6541D2E-7881-5670-B0CF-F57AA64AC032"><title>Implementing |
|
215 SSP notifiers</title> <p><b>Introdution</b> </p> <p>The |
|
216 Bluetooth sub-system has no user interface. It uses the Symbian <xref href="GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1-GENID-1-10-1-3-1-1-11-1-4-1.dita">notifier |
|
217 framework</xref> for user interaction when pairing. The UI system must provide |
|
218 a notifier, in plug-in form, for each user interaction required by SSP. The |
|
219 notifier must receive data in a specified format from the Bluetooth sub-system, |
|
220 display appropriate controls in a dialog on the screen, respond to the user's |
|
221 input and send data back to the Bluetooth sub-system in a specified format. </p> <p>This |
|
222 document assumes that you already have Bluetooth notifiers in your system. |
|
223 It describes the key aspects of adding notifiers for SSP. The structures, |
|
224 types and constants described below are defined in <filepath>BTExtNotifiers.h</filepath>. |
|
225 You can add notifiers to an existing plug-in or create a new plug-in. </p> <p>Notifiers |
|
226 are typically implemented as sleeping dialogs. A sleeping dialog has its resources |
|
227 allocated when its application (in this case the Uikon Server) is started. |
|
228 A sleeping dialog can therefore be displayed (roused) safely under low memory |
|
229 conditions. </p> <p><b>Notes: </b> </p> <ul> |
|
230 <li id="GUID-8F9A2CA6-0481-55EB-8458-076AA869CF1E"><p>This document does not |
|
231 describe how to implement an ECOM plug-in or a sleeping dialog. </p> </li> |
|
232 <li id="GUID-0BA5CB89-F09C-5150-82C5-2169503FF961"><p>Customisation Kit Licensees |
|
233 can find an example notifier implementation here: <filepath>sf/mw/classicui/commonuisupport/uikon/examples/notifier1/</filepath> </p> </li> |
|
234 </ul> <p><b>Numeric |
|
235 Comparison Notifier</b> </p> <p>A numeric comparison notifier is required |
|
236 for SSP Man in the Middle (MITM) authentication when the remote device is |
|
237 capable of displaying a number to the the user and accepting a yes or no response |
|
238 from the user. The notifier must display an automatically generated number |
|
239 and invite the user to confirm (yes or no) that the number is the same as |
|
240 the number displayed on the remote device. The notifier must return the user's |
|
241 response. </p> <p>The Bluetooth Security Manager uses the following code to |
|
242 ask the notifier framework to display the Numeric Comparison Notifier </p> <codeblock id="GUID-C797A612-4AD7-5DE1-854E-3398945A4957" xml:space="preserve"> |
96 |
243 |
97 // defined in header file(s) |
244 // defined in header file(s) |
98 |
245 |
99 TBTDevAddr iDevAddr ; |
246 TBTDevAddr iDevAddr ; |
100 RNotifier iNotifier ; |
247 RNotifier iNotifier ; |